w-web-perm 1.1.12 → 1.1.13

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.
Files changed (124) hide show
  1. package/README.md +158 -123
  2. package/dist/css/app.f09c7433.css +1 -0
  3. package/dist/index.tmp +1 -1
  4. package/dist/js/app-legacy.8af87052.js +1 -0
  5. package/dist/js/app.8af87052.js +1 -0
  6. package/dist/js/{chunk-vendors.3e9e3ef1.js → chunk-vendors-legacy.ece5a361.js} +1 -1
  7. package/dist/js/{chunk-vendors-legacy.3e9e3ef1.js → chunk-vendors.ece5a361.js} +1 -1
  8. package/dist/w-web-perm.umd.js +2 -2
  9. package/dist/w-web-perm.umd.js.map +1 -1
  10. package/docs/WWebPerm.html +84 -4
  11. package/docs/global.html +23023 -1125
  12. package/docs/index.html +2 -2
  13. package/docs/server_WWebPerm.mjs.html +232 -32
  14. package/docs/server_cascadeWrite.mjs.html +225 -0
  15. package/docs/server_dataChannel.mjs.html +2 -2
  16. package/docs/server_keyCheck.mjs.html +353 -0
  17. package/docs/server_lockSave.mjs.html +2 -2
  18. package/docs/server_maskLog.mjs.html +2 -2
  19. package/docs/server_procCore.mjs.html +180 -41
  20. package/docs/server_staLogs_resolveShellWorker.mjs.html +2 -2
  21. package/docs/server_syncKeep.mjs.html +311 -0
  22. package/docs/server_tools_authRefsAudit.mjs.html +247 -0
  23. package/docs/server_tools_authRefsClean.mjs.html +335 -0
  24. package/docs/server_tools_fromTools.mjs.html +797 -0
  25. package/docs/server_tools_isMain.mjs.html +103 -0
  26. package/docs/server_tools_nameDupReport.mjs.html +280 -0
  27. package/docs/server_validateRows.mjs.html +2 -2
  28. package/docs/server_wrapInjected.mjs.html +3 -3
  29. package/docs/src_fetchJson.mjs.html +2 -2
  30. package/docs/src_js_cvKpToArr.mjs.html +2 -2
  31. package/docs/src_js_cvKpToObj.mjs.html +44 -33
  32. package/docs/src_js_draftSync.mjs.html +142 -0
  33. package/docs/src_js_eachOwn.mjs.html +3 -3
  34. package/docs/src_js_editorRefRows.mjs.html +356 -0
  35. package/docs/src_js_externalRows.mjs.html +338 -0
  36. package/docs/src_js_externalUi.mjs.html +230 -0
  37. package/docs/src_js_findRefRows.mjs.html +107 -0
  38. package/docs/src_js_findTouchedDup.mjs.html +150 -0
  39. package/docs/src_js_fmtLossyMsg.mjs.html +2 -2
  40. package/docs/src_js_fromAudit.mjs.html +489 -0
  41. package/docs/src_js_getAddImpact.mjs.html +269 -0
  42. package/docs/src_js_getAuthWarn.mjs.html +463 -0
  43. package/docs/src_js_getCascadePreview.mjs.html +258 -0
  44. package/docs/src_js_getDelRefCount.mjs.html +210 -0
  45. package/docs/src_js_getEffMode.mjs.html +92 -0
  46. package/docs/src_js_getKpLossy.mjs.html +47 -52
  47. package/docs/src_js_getNameErrs.mjs.html +266 -0
  48. package/docs/src_js_getOwn.mjs.html +3 -3
  49. package/docs/src_js_getPropKey.mjs.html +109 -0
  50. package/docs/src_js_getRuleEnable.mjs.html +2 -2
  51. package/docs/src_js_isAuthMode.mjs.html +4 -4
  52. package/docs/src_js_joinNames.mjs.html +2 -2
  53. package/docs/src_js_legendFit.mjs.html +2 -2
  54. package/docs/src_js_pairRowsToSnapshot.mjs.html +156 -0
  55. package/docs/src_js_refAudit.mjs.html +359 -0
  56. package/docs/src_js_refCascade.mjs.html +572 -0
  57. package/docs/src_js_relDialogSend.mjs.html +199 -0
  58. package/docs/src_js_rowDigest.mjs.html +265 -0
  59. package/docs/src_plugins_dataReloadGuard.mjs.html +109 -0
  60. package/docs/src_plugins_reuseDeletedIds.mjs.html +2 -2
  61. package/docs/src_plugins_submitGuard.mjs.html +2 -2
  62. package/g_authRefsClean.mjs +79 -0
  63. package/g_fixFromType.mjs +92 -0
  64. package/g_initialData.mjs +3 -3
  65. package/g_purgeFrom.mjs +127 -0
  66. package/package.json +1 -1
  67. package/server/WWebPerm.mjs +230 -30
  68. package/server/cascadeWrite.mjs +153 -0
  69. package/server/keyCheck.mjs +281 -0
  70. package/server/procCore.mjs +178 -39
  71. package/server/procLang.mjs +270 -3
  72. package/server/syncKeep.mjs +239 -0
  73. package/server/tools/authRefsAudit.mjs +175 -0
  74. package/server/tools/authRefsClean.mjs +263 -0
  75. package/server/tools/fromTools.mjs +725 -0
  76. package/server/tools/isMain.mjs +31 -0
  77. package/server/tools/nameDupReport.mjs +208 -0
  78. package/server/wrapInjected.mjs +1 -1
  79. package/src/components/LayoutContentGrups.vue +396 -75
  80. package/src/components/LayoutContentPemis.vue +395 -75
  81. package/src/components/LayoutContentTargets.vue +261 -25
  82. package/src/components/LayoutContentUsers.vue +334 -97
  83. package/src/components/VeCgrups.vue +88 -129
  84. package/src/components/VeCpemis.vue +86 -129
  85. package/src/components/VeCrules.vue +15 -5
  86. package/src/components/VeGrupBlngUsers.vue +202 -89
  87. package/src/components/VePemiBlngGrups.vue +209 -99
  88. package/src/js/cvKpToObj.mjs +42 -31
  89. package/src/js/draftSync.mjs +70 -0
  90. package/src/js/eachOwn.mjs +1 -1
  91. package/src/js/editorRefRows.mjs +284 -0
  92. package/src/js/externalRows.mjs +266 -0
  93. package/src/js/externalUi.mjs +158 -0
  94. package/src/js/findRefRows.mjs +35 -0
  95. package/src/js/findTouchedDup.mjs +78 -0
  96. package/src/js/fromAudit.mjs +417 -0
  97. package/src/js/getAddImpact.mjs +197 -0
  98. package/src/js/getAuthWarn.mjs +391 -0
  99. package/src/js/getCascadePreview.mjs +186 -0
  100. package/src/js/getDelRefCount.mjs +138 -0
  101. package/src/js/getEffMode.mjs +20 -0
  102. package/src/js/getKpLossy.mjs +44 -49
  103. package/src/js/getNameErrs.mjs +194 -0
  104. package/src/js/getOwn.mjs +1 -1
  105. package/src/js/getPropKey.mjs +37 -0
  106. package/src/js/isAuthMode.mjs +2 -2
  107. package/src/js/pairRowsToSnapshot.mjs +84 -0
  108. package/src/js/refAudit.mjs +287 -0
  109. package/src/js/refCascade.mjs +500 -0
  110. package/src/js/relDialogSend.mjs +127 -0
  111. package/src/js/rowDigest.mjs +193 -0
  112. package/src/plugins/dataReloadGuard.mjs +37 -0
  113. package/src/plugins/mShare.mjs +144 -140
  114. package/src/plugins/mUI.mjs +3 -8
  115. package/src/schema/tables/users.mjs +152 -152
  116. package/dist/css/app.6918ec45.css +0 -1
  117. package/dist/js/app-legacy.7cb7e394.js +0 -1
  118. package/dist/js/app.7cb7e394.js +0 -1
  119. package/docs/src_js_getKeyOrderLost.mjs.html +0 -121
  120. package/docs/src_js_getKpWriteLost.mjs.html +0 -100
  121. package/docs/src_js_keepKeyOrder.mjs.html +0 -139
  122. package/src/js/getKeyOrderLost.mjs +0 -49
  123. package/src/js/getKpWriteLost.mjs +0 -28
  124. package/src/js/keepKeyOrder.mjs +0 -67
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * w-web-perm v1.1.12
2
+ * w-web-perm v1.1.13
3
3
  * (c) 2018-2021 yuda-lyu(semisphere)
4
4
  * Released under the MIT License.
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("util"),require("url"),require("pino"),require("module"),require("readline")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","util","url","pino","module","readline"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-perm"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.util$2,e.url,e.pino,e.module$1,e.readline)}(this,function(e,t,r,n,s,i,u,o,l,a,c,d){"use strict";var D="undefined"!=typeof document?document.currentScript:null,M=Array.isArray,w="object"==typeof global&&global&&global.Object===Object&&global,y="object"==typeof self&&self&&self.Object===Object&&self,g=w||y||Function("return this")(),I=g.Symbol,m=Object.prototype,C=m.hasOwnProperty,p=m.toString,f=I?I.toStringTag:void 0;var L=Object.prototype.toString;var h=I?I.toStringTag:void 0;function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?function(e){var t=C.call(e,f),r=e[f];try{e[f]=void 0;var n=!0}catch(e){}var s=p.call(e);return n&&(t?e[f]=r:delete e[f]),s}(e):function(e){return L.call(e)}(e)}function N(e){return null!=e&&"object"==typeof e}function A(e){return"symbol"==typeof e||N(e)&&"[object Symbol]"==b(e)}var x=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,E=/^\w*$/;function T(e,t){if(M(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!A(e))||(E.test(e)||!x.test(e)||null!=t&&e in Object(t))}function S(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Z(e){if(!S(e))return!1;var t=b(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var v,Y=g["__core-js_shared__"],X=(v=/[^.]+$/.exec(Y&&Y.keys&&Y.keys.IE_PROTO||""))?"Symbol(src)_1."+v:"";var j=Function.prototype.toString;function z(e){if(null!=e){try{return j.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var G=/^\[object .+?Constructor\]$/,W=Function.prototype,K=Object.prototype,F=W.toString,k=K.hasOwnProperty,V=RegExp("^"+F.call(k).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function H(e){return!(!S(e)||(t=e,X&&X in t))&&(Z(e)?V:G).test(z(e));var t}function U(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return H(r)?r:void 0}var B=U(Object,"create");var Q=Object.prototype.hasOwnProperty;var R=Object.prototype.hasOwnProperty;function O(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function P(e,t){return e===t||e!=e&&t!=t}function J(e,t){for(var r=e.length;r--;)if(P(e[r][0],t))return r;return-1}O.prototype.clear=function(){this.__data__=B?B(null):{},this.size=0},O.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},O.prototype.get=function(e){var t=this.__data__;if(B){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return Q.call(t,e)?t[e]:void 0},O.prototype.has=function(e){var t=this.__data__;return B?void 0!==t[e]:R.call(t,e)},O.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=B&&void 0===t?"__lodash_hash_undefined__":t,this};var $=Array.prototype.splice;function _(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}_.prototype.clear=function(){this.__data__=[],this.size=0},_.prototype.delete=function(e){var t=this.__data__,r=J(t,e);return!(r<0)&&(r==t.length-1?t.pop():$.call(t,r,1),--this.size,!0)},_.prototype.get=function(e){var t=this.__data__,r=J(t,e);return r<0?void 0:t[r][1]},_.prototype.has=function(e){return J(this.__data__,e)>-1},_.prototype.set=function(e,t){var r=this.__data__,n=J(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var q=U(g,"Map");function ee(e,t){var r,n,s=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?s["string"==typeof t?"string":"hash"]:s.map}function te(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}te.prototype.clear=function(){this.size=0,this.__data__={hash:new O,map:new(q||_),string:new O}},te.prototype.delete=function(e){var t=ee(this,e).delete(e);return this.size-=t?1:0,t},te.prototype.get=function(e){return ee(this,e).get(e)},te.prototype.has=function(e){return ee(this,e).has(e)},te.prototype.set=function(e,t){var r=ee(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function re(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,s=t?t.apply(this,n):n[0],i=r.cache;if(i.has(s))return i.get(s);var u=e.apply(this,n);return r.cache=i.set(s,u)||i,u};return r.cache=new(re.Cache||te),r}re.Cache=te;var ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/\\(\\)?/g,ie=function(e){var t=re(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ne,function(e,r,n,s){t.push(n?s.replace(se,"$1"):r||e)}),t}),ue=ie;function oe(e,t){for(var r=-1,n=null==e?0:e.length,s=Array(n);++r<n;)s[r]=t(e[r],r,e);return s}var le=I?I.prototype:void 0,ae=le?le.toString:void 0;function ce(e){if("string"==typeof e)return e;if(M(e))return oe(e,ce)+"";if(A(e))return ae?ae.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function de(e){return null==e?"":ce(e)}function De(e,t){return M(e)?e:T(e,t)?[e]:ue(de(e))}function Me(e){if("string"==typeof e||A(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function we(e,t){for(var r=0,n=(t=De(t,e)).length;null!=e&&r<n;)e=e[Me(t[r++])];return r&&r==n?e:void 0}function ye(e,t,r){var n=null==e?void 0:we(e,t);return void 0===n?r:n}function ge(e){var t=this.__data__=new _(e);this.size=t.size}ge.prototype.clear=function(){this.__data__=new _,this.size=0},ge.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ge.prototype.get=function(e){return this.__data__.get(e)},ge.prototype.has=function(e){return this.__data__.has(e)},ge.prototype.set=function(e,t){var r=this.__data__;if(r instanceof _){var n=r.__data__;if(!q||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new te(n)}return r.set(e,t),this.size=r.size,this};function Ie(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new te;++t<r;)this.add(e[t])}function me(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function Ce(e,t){return e.has(t)}Ie.prototype.add=Ie.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Ie.prototype.has=function(e){return this.__data__.has(e)};function pe(e,t,r,n,s,i){var u=1&r,o=e.length,l=t.length;if(o!=l&&!(u&&l>o))return!1;var a=i.get(e),c=i.get(t);if(a&&c)return a==t&&c==e;var d=-1,D=!0,M=2&r?new Ie:void 0;for(i.set(e,t),i.set(t,e);++d<o;){var w=e[d],y=t[d];if(n)var g=u?n(y,w,d,t,e,i):n(w,y,d,e,t,i);if(void 0!==g){if(g)continue;D=!1;break}if(M){if(!me(t,function(e,t){if(!Ce(M,t)&&(w===e||s(w,e,r,n,i)))return M.push(t)})){D=!1;break}}else if(w!==y&&!s(w,y,r,n,i)){D=!1;break}}return i.delete(e),i.delete(t),D}var fe=g.Uint8Array;function Le(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function he(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var be=I?I.prototype:void 0,Ne=be?be.valueOf:void 0;function Ae(e,t){for(var r=-1,n=t.length,s=e.length;++r<n;)e[s+r]=t[r];return e}function xe(e,t,r){var n=t(e);return M(e)?n:Ae(n,r(e))}function Ee(e,t){for(var r=-1,n=null==e?0:e.length,s=0,i=[];++r<n;){var u=e[r];t(u,r,e)&&(i[s++]=u)}return i}function Te(){return[]}var Se=Object.prototype.propertyIsEnumerable,Ze=Object.getOwnPropertySymbols,ve=Ze?function(e){return null==e?[]:(e=Object(e),Ee(Ze(e),function(t){return Se.call(e,t)}))}:Te;function Ye(e){return N(e)&&"[object Arguments]"==b(e)}var Xe=Object.prototype,je=Xe.hasOwnProperty,ze=Xe.propertyIsEnumerable,Ge=Ye(function(){return arguments}())?Ye:function(e){return N(e)&&je.call(e,"callee")&&!ze.call(e,"callee")},We=Ge;var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Fe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,ke=Fe&&Fe.exports===Ke?g.Buffer:void 0,Ve=(ke?ke.isBuffer:void 0)||function(){return!1},He=/^(?:0|[1-9]\d*)$/;function Ue(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&He.test(e))&&e>-1&&e%1==0&&e<t}function Be(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Qe={};function Re(e){return function(t){return e(t)}}Qe["[object Float32Array]"]=Qe["[object Float64Array]"]=Qe["[object Int8Array]"]=Qe["[object Int16Array]"]=Qe["[object Int32Array]"]=Qe["[object Uint8Array]"]=Qe["[object Uint8ClampedArray]"]=Qe["[object Uint16Array]"]=Qe["[object Uint32Array]"]=!0,Qe["[object Arguments]"]=Qe["[object Array]"]=Qe["[object ArrayBuffer]"]=Qe["[object Boolean]"]=Qe["[object DataView]"]=Qe["[object Date]"]=Qe["[object Error]"]=Qe["[object Function]"]=Qe["[object Map]"]=Qe["[object Number]"]=Qe["[object Object]"]=Qe["[object RegExp]"]=Qe["[object Set]"]=Qe["[object String]"]=Qe["[object WeakMap]"]=!1;var Oe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Pe=Oe&&"object"==typeof module&&module&&!module.nodeType&&module,Je=Pe&&Pe.exports===Oe&&w.process,$e=function(){try{var e=Pe&&Pe.require&&Pe.require("util").types;return e||Je&&Je.binding&&Je.binding("util")}catch(e){}}(),_e=$e&&$e.isTypedArray,qe=_e?Re(_e):function(e){return N(e)&&Be(e.length)&&!!Qe[b(e)]},et=Object.prototype.hasOwnProperty;function tt(e,t){var r=M(e),n=!r&&We(e),s=!r&&!n&&Ve(e),i=!r&&!n&&!s&&qe(e),u=r||n||s||i,o=u?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],l=o.length;for(var a in e)!t&&!et.call(e,a)||u&&("length"==a||s&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ue(a,l))||o.push(a);return o}var rt=Object.prototype;function nt(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||rt)}function st(e,t){return function(r){return e(t(r))}}var it=st(Object.keys,Object),ut=Object.prototype.hasOwnProperty;function ot(e){if(!nt(e))return it(e);var t=[];for(var r in Object(e))ut.call(e,r)&&"constructor"!=r&&t.push(r);return t}function lt(e){return null!=e&&Be(e.length)&&!Z(e)}function at(e){return lt(e)?tt(e):ot(e)}function ct(e){return xe(e,at,ve)}var dt=Object.prototype.hasOwnProperty;var Dt=U(g,"DataView"),Mt=U(g,"Promise"),wt=U(g,"Set"),yt=U(g,"WeakMap"),gt="[object Map]",It="[object Promise]",mt="[object Set]",Ct="[object WeakMap]",pt="[object DataView]",ft=z(Dt),Lt=z(q),ht=z(Mt),bt=z(wt),Nt=z(yt),At=b;(Dt&&At(new Dt(new ArrayBuffer(1)))!=pt||q&&At(new q)!=gt||Mt&&At(Mt.resolve())!=It||wt&&At(new wt)!=mt||yt&&At(new yt)!=Ct)&&(At=function(e){var t=b(e),r="[object Object]"==t?e.constructor:void 0,n=r?z(r):"";if(n)switch(n){case ft:return pt;case Lt:return gt;case ht:return It;case bt:return mt;case Nt:return Ct}return t});var xt=At,Et="[object Arguments]",Tt="[object Array]",St="[object Object]",Zt=Object.prototype.hasOwnProperty;function vt(e,t,r,n,s,i){var u=M(e),o=M(t),l=u?Tt:xt(e),a=o?Tt:xt(t),c=(l=l==Et?St:l)==St,d=(a=a==Et?St:a)==St,D=l==a;if(D&&Ve(e)){if(!Ve(t))return!1;u=!0,c=!1}if(D&&!c)return i||(i=new ge),u||qe(e)?pe(e,t,r,n,s,i):function(e,t,r,n,s,i,u){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new fe(e),new fe(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return P(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=Le;case"[object Set]":var l=1&n;if(o||(o=he),e.size!=t.size&&!l)return!1;var a=u.get(e);if(a)return a==t;n|=2,u.set(e,t);var c=pe(o(e),o(t),n,s,i,u);return u.delete(e),c;case"[object Symbol]":if(Ne)return Ne.call(e)==Ne.call(t)}return!1}(e,t,l,r,n,s,i);if(!(1&r)){var w=c&&Zt.call(e,"__wrapped__"),y=d&&Zt.call(t,"__wrapped__");if(w||y){var g=w?e.value():e,I=y?t.value():t;return i||(i=new ge),s(g,I,r,n,i)}}return!!D&&(i||(i=new ge),function(e,t,r,n,s,i){var u=1&r,o=ct(e),l=o.length;if(l!=ct(t).length&&!u)return!1;for(var a=l;a--;){var c=o[a];if(!(u?c in t:dt.call(t,c)))return!1}var d=i.get(e),D=i.get(t);if(d&&D)return d==t&&D==e;var M=!0;i.set(e,t),i.set(t,e);for(var w=u;++a<l;){var y=e[c=o[a]],g=t[c];if(n)var I=u?n(g,y,c,t,e,i):n(y,g,c,e,t,i);if(!(void 0===I?y===g||s(y,g,r,n,i):I)){M=!1;break}w||(w="constructor"==c)}if(M&&!w){var m=e.constructor,C=t.constructor;m==C||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof C&&C instanceof C||(M=!1)}return i.delete(e),i.delete(t),M}(e,t,r,n,s,i))}function Yt(e,t,r,n,s){return e===t||(null==e||null==t||!N(e)&&!N(t)?e!=e&&t!=t:vt(e,t,r,n,Yt,s))}function Xt(e){return e==e&&!S(e)}function jt(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function zt(e){var t=function(e){for(var t=at(e),r=t.length;r--;){var n=t[r],s=e[n];t[r]=[n,s,Xt(s)]}return t}(e);return 1==t.length&&t[0][2]?jt(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var s=r.length,i=s,u=!n;if(null==e)return!i;for(e=Object(e);s--;){var o=r[s];if(u&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++s<i;){var l=(o=r[s])[0],a=e[l],c=o[1];if(u&&o[2]){if(void 0===a&&!(l in e))return!1}else{var d=new ge;if(n)var D=n(a,c,l,e,t,d);if(!(void 0===D?Yt(c,a,3,n,d):D))return!1}}return!0}(r,e,t)}}function Gt(e,t){return null!=e&&t in Object(e)}function Wt(e,t){return null!=e&&function(e,t,r){for(var n=-1,s=(t=De(t,e)).length,i=!1;++n<s;){var u=Me(t[n]);if(!(i=null!=e&&r(e,u)))break;e=e[u]}return i||++n!=s?i:!!(s=null==e?0:e.length)&&Be(s)&&Ue(u,s)&&(M(e)||We(e))}(e,t,Gt)}function Kt(e){return e}function Ft(e){return function(t){return null==t?void 0:t[e]}}function kt(e){return T(e)?Ft(Me(e)):function(e){return function(t){return we(t,e)}}(e)}function Vt(e){return"function"==typeof e?e:null==e?Kt:"object"==typeof e?M(e)?function(e,t){return T(e)&&Xt(t)?jt(Me(e),t):function(r){var n=ye(r,e);return void 0===n&&n===t?Wt(r,e):Yt(t,n,3)}}(e[0],e[1]):zt(e):kt(e)}var Ht,Ut=function(e,t,r){for(var n=-1,s=Object(e),i=r(e),u=i.length;u--;){var o=i[Ht?u:++n];if(!1===t(s[o],o,s))break}return e};var Bt=function(e,t){return function(r,n){if(null==r)return r;if(!lt(r))return e(r,n);for(var s=r.length,i=t?s:-1,u=Object(r);(t?i--:++i<s)&&!1!==n(u[i],i,u););return r}}(function(e,t){return e&&Ut(e,t,at)}),Qt=Bt;function Rt(e,t){var r=-1,n=lt(e)?Array(e.length):[];return Qt(e,function(e,s,i){n[++r]=t(e,s,i)}),n}function Ot(e,t){return(M(e)?oe:Rt)(e,Vt(t))}var Pt=Array.prototype.join;function Jt(e,t){return null==e?"":Pt.call(e,t)}function $t(e){return"[object Object]"===Object.prototype.toString.call(e)}function _t(e){if($t(e)){for(let t in e)return!0;return!1}return!1}function qt(e){return"[object String]"===Object.prototype.toString.call(e)}function er(e){return!!(qt(e)&&e.length>0)}var tr=/\s/;var rr=/^\s+/;function nr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&tr.test(e.charAt(t)););return t}(e)+1).replace(rr,""):e}var sr=/^[-+]0x[0-9a-f]+$/i,ir=/^0b[01]+$/i,ur=/^0o[0-7]+$/i,or=parseInt;function lr(e){if("number"==typeof e)return e;if(A(e))return NaN;if(S(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=S(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=nr(e);var r=ir.test(e);return r||ur.test(e)?or(e.slice(2),r?2:8):sr.test(e)?NaN:+e}var ar=1/0;function cr(e){return e?(e=lr(e))===ar||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function dr(e){var t=cr(e),r=t%1;return t==t?r?t-r:t:0}function Dr(e){return!0===(t=e)||!1===t||N(t)&&"[object Boolean]"==b(t);var t}function Mr(e){if(e!=e)return!0;if(null!==e&&"object"==typeof e)try{let t=Number.prototype.valueOf.call(e);return Number.isNaN(t)}catch(e){return!1}return!1}function wr(e){let t=!1;if(er(e)){if(""===e.trim())return!1;t=!isNaN(Number(e))}else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Mr(e))return!1;t=!0}return t}function yr(e){if(!wr(e))return 0;return cr(e)}function gr(e,t={}){let r=ye(t,"useLimitSafe",null);return Dr(r)||(r=!1),!!wr(e)&&(e=yr(e),r?Number.isSafeInteger(e):"number"==typeof(n=e)&&n==dr(n));var n}var Ir=g.isFinite,mr=Math.min;var Cr,pr=(Cr=Math["round"],function(e,t){if(e=lr(e),(t=null==t?0:mr(dr(t),292))&&Ir(e)){var r=(de(e)+"e").split("e");return+((r=(de(Cr(r[0]+"e"+(+r[1]+t)))+"e").split("e"))[0]+"e"+(+r[1]-t))}return Cr(e)});function fr(e,t={}){let r=ye(t,"useClampSafe",null);Dr(r)||(r=!1);let n=ye(t,"useLimitSafe",null);Dr(n)||(n=!1);let s=ye(t,"returnWithStateAndMsg",null);Dr(s)||(s=!1);let i=e=>s?{state:"success",msg:e}:e,u=e=>{if(s)return{state:"error",msg:e};throw new Error(e)};if(!wr(e))return i(0);let o=null;try{e=yr(e),o=pr(e),r&&(o>Number.MAX_SAFE_INTEGER?o=Number.MAX_SAFE_INTEGER:o<Number.MIN_SAFE_INTEGER&&(o=Number.MIN_SAFE_INTEGER))}catch(e){return u(e.toString())}return n&&!Number.isSafeInteger(Number(o))?u(`v[${e}] is not a safe integer`):("0"===String(o)&&(o=0),i(o))}function Lr(e,t={}){if(!gr(e,t))return!1;return fr(e)>0}function hr(e){return"[object Array]"===Object.prototype.toString.call(e)}function br(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Nr(e){if($t(e)){for(let t in e)return!1;return!0}return!1}function Ar(e){return!!hr(e)&&0===e.length}function xr(e){return!!br(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Nr(e)||(!!function(e){return!(!qt(e)||0!==e.length)}(e)||(!!Ar(e)||!!Mr(e)))))}function Er(e){return!!hr(e)&&(0!==e.length&&(1!==e.length||!xr(e[0])))}var Tr=st(Object.getPrototypeOf,Object),Sr=Function.prototype,Zr=Object.prototype,vr=Sr.toString,Yr=Zr.hasOwnProperty,Xr=vr.call(Object);function jr(e){if(!N(e)||"[object Object]"!=b(e))return!1;var t=Tr(e);if(null===t)return!0;var r=Yr.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&vr.call(r)==Xr}function zr(e){return function(e){if(!N(e))return!1;var t=b(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!jr(e)}(e)}function Gr(e){return Z(e)}function Wr(e){let t,r;try{r=Object.prototype.toString.call(e)}catch(e){return!1}if(t="[object Promise]"===r,t)return!0;if("[object Function]"!==r)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kr(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!er(e))return n("invalid v");let s={};try{s=JSON.parse(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Fr(e,t={}){if(!gr(e,t))return!1;return fr(e)>=0}function kr(e,t){return er(e)&&Fr(t)?0===(t=fr(t))?"":e.substring(0,t):""}function Vr(e,t){if(!er(e))return"";if(!Fr(t))return"";if(0===(t=fr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Hr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}let Ur=function(e){if(!Gr(e))throw new Error("fn is not a function");return function(){let t,r=Hr();try{t=e.apply(this,arguments)}catch(e){return r.resolve({state:"error",msg:e}),r}let n=e=>{let t=!1;try{t="cancelled"===ye(e,"reason")}catch(e){}t?r.resolve({state:"cancelled",msg:""}):r.resolve({state:"error",msg:e})};try{Wr(t)?t.then(e=>{r.resolve({state:"success",msg:e})},n):r.resolve({state:"success",msg:t})}catch(e){r.resolve({state:"error",msg:e})}return r}};function Br(e,t={}){let r=ye(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function Qr(e,t={}){let r=ye(t,"fs");if(!Br(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Rr(e){return Qr(e,{fs:t})}function Or(e,t={}){let r=ye(t,"fs");return!!Br(e,{fs:r})&&(!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink())}function Pr(e){return Or(e,{fs:t})}function Jr(e,t,r){if(!er(e))return"";if(!er(t))return"";if(!qt(r))return"";return String(e).replaceAll(t,r)}function $r(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}function _r(e,t){var r;return(M(e)?$r:Qt)(e,"function"==typeof(r=t)?r:Kt)}function qr(e,t,r=""){if(!Er(t))return{};let n={};return _r(t,function(t){n[t]=ye(e,t,r)}),n}function en(e,t,r=""){if(!Er(e))return[];if(!Er(t))return[];return Ot(e,e=>qr(e,t,r))}let tn=2147483647;var rn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function nn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function sn(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){if(this instanceof e){var r=[null];return r.push.apply(r,arguments),new(Function.bind.apply(t,r))}return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var un={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0===--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}(un);var on=nn(un.exports);function ln(){return new on}function an(e,t,r=[],n={}){let s=n.funSettle,i=n.tag||"evem",u=(t,...r)=>e.emit(t,...r);Gr(n.funEmit)&&(u=n.funEmit);try{return u(t,...r)}catch(n){if(Gr(s))try{s(n)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?u("error",{fun:"listener",name:t,msg:n,args:r}):console.error(`[wsemi ${i}] listener of '${String(t)}' threw:`,n)}catch(e){try{console.error(`[wsemi ${i}] listener of '${String(t)}' threw, and reporting it also threw:`,e,n)}catch(e){}}return!1}}async function cn(e,t={}){let r=null,n=Hr();if(!Gr(e))return n.reject("waitfunction需輸入函數f"),n;let s=async()=>{let t=e();return Wr(t)&&(t=await t),t};if(r=await s(),!0===r)return n.resolve(),n;let i=ye(t,"attemptNum",null);Lr(i)||(i=200);let u=ye(t,"timeInterval",null);Lr(u)||(u=1e3),u=Math.min(u,tn);let o=0,l=!1,a=setInterval(async()=>{if(o+=1,l)o>i&&clearInterval(a);else{l=!0;try{r=await s()}catch(e){return clearInterval(a),void n.reject(e)}finally{l=!1}if(!0===r)return clearInterval(a),void n.resolve();o>i&&(clearInterval(a),n.reject(`exceeded attemptNum[${i}]`))}},u);return n}function dn(e,t){return!!$t(e)&&(!(!er(t)&&!wr(t))&&t in e)}function Dn(e={}){let t=ye(e,"timeExpire",null);Lr(t)||(t=18e5),t=fr(t),t=Math.min(t,tn);let r=ye(e,"timeDetect",null);Lr(r)||(r=2e3),r=fr(r),r=Math.min(r,tn);let n=ln(),s=Object.create(null),i=e=>{if(dn(s,e)){return an(n,"checkWithSet",[{state:"error",msg:`checkWithSet: key in use: ${e}`}],{tag:"cacheSt"}),!1}return s[e]={time:Date.now(),value:!0},an(n,"checkWithSet",[{state:"success",msg:`checkWithSet: ${e}`}],{tag:"cacheSt"}),!0},u=setInterval(()=>{an(n,"detect",[{state:"start"}],{tag:"cacheSt"});let e=Date.now();for(let r of Object.keys(s)){let n=s[r];n&&e-n.time>t&&delete s[r]}an(n,"detect",[{state:"finish"}],{tag:"cacheSt"})},r);return n.checkWithSet=i,n.setWithFree=async(e,t)=>{an(n,"setWithFree",[{state:"start"}],{tag:"cacheSt"});let r=[];for(let t of e){if(!i(t)){for(let e of r)delete s[e];let e=`setWithFree: key in use: ${t}`;return an(n,"setWithFree",[{state:"error",msg:e}],{tag:"cacheSt"}),Promise.reject(e)}r.push(t)}try{let r=await t(),s=`setWithFree: ${e.join(", ")}`;return an(n,"setWithFree",[{state:"success",msg:s}],{tag:"cacheSt"}),r}catch(e){let t="";try{t=`${e&&e.message||e}`}catch(e){}throw an(n,"setWithFree",[{state:"error",msg:`setWithFree: fn threw: ${t}`}],{tag:"cacheSt"}),e}finally{for(let e of r)delete s[e]}},n.set=async(e,t=!0)=>{s[e]={time:Date.now(),value:t},an(n,"set",[{state:"success",msg:`set: ${e}`}],{tag:"cacheSt"})},n.get=async e=>{let t=s[e],r=void 0===t?null:t.value;return an(n,"get",[{state:"success",msg:`get: ${e}`}],{tag:"cacheSt"}),r},n.check=async e=>{let t=dn(s,e);return an(n,"check",[{state:"success",msg:`check: ${e} = ${t}`}],{tag:"cacheSt"}),t},n.del=async e=>{delete s[e],an(n,"del",[{state:"success",msg:`del: ${e}`}],{tag:"cacheSt"})},n.waitExist=async(e,t={})=>{let r=ye(t,"attemptNum",null);Lr(r)||(r=30),r=fr(r);let i=ye(t,"timeInterval",null);Lr(i)||(i=100),i=fr(i),an(n,"waitExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitExist timeout (${r*i}ms): ${e}`;return an(n,"waitExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitExist",[{state:"success",msg:`waitExist resolved: ${e}`}],{tag:"cacheSt"})},n.waitNotExist=async(e,t={})=>{let r=ye(t,"attemptNum",null);Lr(r)||(r=30),r=fr(r);let i=ye(t,"timeInterval",null);Lr(i)||(i=100),i=fr(i),an(n,"waitNotExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>!dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitNotExist timeout (${r*i}ms): ${e}`;return an(n,"waitNotExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitNotExist",[{state:"success",msg:`waitNotExist resolved: ${e}`}],{tag:"cacheSt"})},n.clear=()=>{clearInterval(u)},n}function Mn(e,t,r=[],n={}){let s=n.ms;return Lr(s)||(s=1),s=fr(s),s=Math.min(s,tn),setTimeout(()=>{an(e,t,r,n)},s)}function wn(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function yn(e,t){try{let r=new WeakSet,n=[],s=JSON.stringify(e,function(e,s){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.length>=t)return"[Deep]";if("bigint"==typeof s)return String(s);if(null!==s&&"object"==typeof s){if(r.has(s))return"[Circular]";r.add(s),n.push(s)}return s});return"string"==typeof s?s:""}catch(e){return""}}function gn(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=wn(()=>JSON.parse(e));if(""!==t)return t}return e}function In(e,t){if(void 0===e)return"";if(null===e)return"null";let r=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==r)return r;let n=yn(e,t);if(""!==n&&"{}"!==n)return gn(n);let s=wn(()=>String(e));return""!==s&&"[object Object]"!==s?s:n}function mn(e,t){let r=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||r.add(e);let n=e,s=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=n.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(r.has(e))break;r.add(e)}let i=pn(e,{...t,useCause:!1,useAggregate:!1});""!==i&&s.push(i),n=e}return s.join(" <- ")}function Cn(e,t){let r=null;try{r=e.errors}catch(e){return""}if(!Array.isArray(r)||0===r.length)return"";let n=[];for(let s=0;s<r.length&&s<t.levelCauseMax;s++){if(r[s]===e)continue;let i=pn(r[s],{...t,useCause:!1,useAggregate:!1});""!==i&&n.push(i)}return n.join("; ")}function pn(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let r=null,n=!1;try{r=e.message,n=!0}catch(e){n=!1}if(n&&"string"==typeof r){if(""!==r){let n=r;if(t.useCause){let r=mn(e,t);""!==r&&(n=`${n} <- ${r}`)}if(t.useAggregate){let r=Cn(e,t);""!==r&&(n=`${n} [${r}]`)}return n}let n=mn(e,t);return""!==n?n:""}if(n){let e=In(r,t.levelJsonMax);if(""!==e)return e}let s=mn(e,t);if(""!==s)return s;if(t.useAggregate){let r=Cn(e,t);if(""!==r)return r}let i=yn(e,t.levelJsonMax),u=gn(i);if(""!==u&&"{}"!==u)return u;let o=wn(()=>String(e));if(""!==o&&"[object Object]"!==o)return o;let l=wn(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==i?i:""}function fn(e,t={}){let r=ye(t,"useCause",null);Dr(r)||(r=!1);let n=ye(t,"useAggregate",null);Dr(n)||(n=!1);let s=ye(t,"levelCauseMax",null);Lr(s,{useLimitSafe:!0})||(s=8),s=fr(s);let i=ye(t,"levelJsonMax",null);Lr(i,{useLimitSafe:!0})||(i=6),i=fr(i);let u=ye(t,"lengthMessageMax",null);Lr(u,{useLimitSafe:!0})||(u=0),u=fr(u);let o={useCause:r,useAggregate:n,levelCauseMax:s,levelJsonMax:i,lengthMessageMax:u},l="";try{l=pn(e,o)}catch(e){return l="",l}return er(l)?(o.lengthMessageMax>0&&l.length>o.lengthMessageMax&&(l=o.lengthMessageMax>3?l.slice(0,o.lengthMessageMax-3)+"...":l.slice(0,o.lengthMessageMax)),l):(l="",l)}function Ln(e){if(!(er(e)||wr(e)||A(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var hn={exports:{}};var bn,Nn={exports:{}},An=sn(Object.freeze({__proto__:null,default:{}}));function xn(){return bn||(bn=1,function(e){var t;e.exports=(t=t||function(e,t){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),"undefined"!=typeof self&&self.crypto&&(r=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(r=globalThis.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==rn&&rn.crypto&&(r=rn.crypto),!r)try{r=An}catch(e){}var n=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),i={},u=i.lib={},o=u.Base={extend:function(e){var t=s(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=u.WordArray=o.extend({init:function(e,r){e=this.words=e||[],this.sigBytes=r!=t?r:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,s=e.sigBytes;if(this.clamp(),n%4)for(var i=0;i<s;i++){var u=r[i>>>2]>>>24-i%4*8&255;t[n+i>>>2]|=u<<24-(n+i)%4*8}else for(var o=0;o<s;o+=4)t[n+o>>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r<e;r+=4)t.push(n());return new l.init(t,e)}}),a=i.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n+=2)r[n>>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new l.init(r,t/2)}},d=a.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push(String.fromCharCode(i))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n++)r[n>>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new l.init(r,t)}},D=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(d.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return d.parse(unescape(encodeURIComponent(e)))}},M=u.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=D.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,n=this._data,s=n.words,i=n.sigBytes,u=this.blockSize,o=i/(4*u),a=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*u,c=e.min(4*a,i);if(a){for(var d=0;d<a;d+=u)this._doProcessBlock(s,d);r=s.splice(0,a),n.sigBytes-=c}return new l.init(r,c)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});u.Hasher=M.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){M.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function(e){return function(t,r){return new w.HMAC.init(e,r).finalize(t)}}});var w=i.algo={};return i}(Math),t)}(Nn)),Nn.exports}!function(e){e.exports=xn().enc.Utf8}(hn);var En=nn(hn.exports),Tn={exports:{}};!function(e){var t;e.exports=(t=xn(),function(){var e=t,r=e.lib.WordArray;function n(e,t,n){for(var s=[],i=0,u=0;u<t;u++)if(u%4){var o=n[e.charCodeAt(u-1)]<<u%4*2|n[e.charCodeAt(u)]>>>6-u%4*2;s[i>>>2]|=o<<24-i%4*8,i++}return r.create(s,i)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var s=[],i=0;i<r;i+=3)for(var u=(t[i>>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o<r;o++)s.push(n.charAt(u>>>6*(3-o)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var i=0;i<r.length;i++)s[r.charCodeAt(i)]=i}var u=r.charAt(64);if(u){var o=e.indexOf(u);-1!==o&&(t=o)}return n(e,t,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Tn);var Sn=nn(Tn.exports);function Zn(e){try{return String(e)}catch(e){}try{let t=e.message;if("string"==typeof t&&""!==t)return t}catch(e){}return"unknown error"}function vn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Yn(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Xn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function jn(e){if(!(vn(e)||function(e){let t=Object.prototype.toString.call(e);if("[object Blob]"===t||"[object File]"===t)return!0;try{if("undefined"!=typeof Blob&&e instanceof Blob)return!0}catch(e){}return!1}(e)||Yn(e)||Xn(e)))return null;try{if(wr(e.byteLength))return e.byteLength}catch(e){}try{if(wr(e.length))return e.length}catch(e){}try{if(wr(e.size))return e.size}catch(e){}return null}function zn(e){if(null===e||"object"!=typeof e)return!1;if(e instanceof Error)return!0;if("function"==typeof Error.isError)return Error.isError(e);if(Symbol.toStringTag in e)return!1;let t=Object.prototype.toString.call(e);return"[object Error]"===t||"[object DOMException]"===t}function Gn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{results:"",binarys:[]};if(!$t(e)&&!hr(e))return n("invalid data, data is not an object or array");if(Nr(e)||Ar(e))return n("invalid data, data is an empty object or empty array");let s=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,i="",u=[];try{let t=-1;i=JSON.stringify(e,function(e,r){if(Yn(r)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return u.push(r),e}if(Xn(r)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return u.push(r),e}if(vn(r)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return u.push(r),e}return er(r=function(e){if(!zn(e))return e;let t=e.toString;return t===Object.prototype.toString||"function"!=typeof t?Error.prototype.toString.call(e):t.call(e)}(r))&&91===r.charCodeAt(0)&&s.test(r)?"[BlazeForPreventEscape]"+r:r})}catch(e){return n(Zn(e))}return r?{state:"success",msg:{results:i,binarys:u}}:{results:i,binarys:u}}let Wn=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]/;function Kn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:new Uint8Array;if(!er(e))return n("invalid str");if(!("function"==typeof e.isWellFormed?e.isWellFormed():!Wn.test(e)))return n("invalid str, contains lone surrogates");let s=null;try{s=(new TextEncoder).encode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Fn(e,t,r=0,n=!0,s=52,i=8){return function(e,t,r,n,s,i){if(!wr(e))return null;if(!Yn(t))return null;if(!gr(r))return null;if(!Dr(n))return null;if(!gr(s))return null;if(!gr(i))return null;let u,o,l;e=yr(e);let a=8*i-s-1,c=(1<<a)-1,d=c>>1,D=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,M=n?i-1:0,w=n?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,u=c):(u=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-u))<1&&(u--,l*=2),(e+=u+d>=1?D/l:D*Math.pow(2,1-d))*l>=2&&(u++,l/=2),u+d>=c?(o=0,u=c):u+d>=1?(o=(e*l-1)*Math.pow(2,s),u+=d):(o=e*Math.pow(2,d-1)*Math.pow(2,s),u=0));s>=8;t[r+M]=255&o,M+=w,o/=256,s-=8);for(u=u<<s|o,a+=s;a>0;t[r+M]=255&u,M+=w,u/=256,a-=8);return t[r+M-w]|=128*y,null}(e,t,r,n,s,i)}function kn(e){let t=0;_r(e,e=>{t+=jn(e)});let r=new Uint8Array(t),n=0;return _r(e,e=>{let t=function(e){return vn(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);r.set(t,n),n+=t.length}),r}function Vn(e,t={}){let r=[],n=new Uint8Array,s=ye(t,"returnWithStateAndMsg",null);Dr(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:new Uint8Array;if(!(u=e,hr(u)&&u.length>=1||_t(e)))return i("invalid data, data is not an effective object or a non-empty array");var u;let o=[],l=[];function a(e){o.push(jn(e)),l.push(e)}try{let t=Gn(e,{returnWithStateAndMsg:!0});if("error"===t.state)return i(`obj2stru8arr: ${t.msg}`);let s=t.msg;a(Kn(s.results)),_r(s.binarys,e=>{a(e)});let u=o,c=Kn(JSON.stringify(u)),d=new Uint8Array(8);Fn(jn(c),d),r.push(d),r.push(c),_r(l,e=>{r.push(e)}),n=kn(r)}catch(e){return i(Zn(e))}return s?{state:"success",msg:n}:n}function Hn(e,t=0,r=!0,n=52,s=8){return function(e,t,r,n,s){if(!Yn(e))return null;if(!gr(t))return null;if(!Dr(r))return null;if(!gr(n))return null;if(!gr(s))return null;let i,u,o=8*s-n-1,l=(1<<o)-1,a=l>>1,c=-7,d=r?0:s-1,D=r?1:-1,M=e[t+d];for(d+=D,i=M&(1<<-c)-1,M>>=-c,c+=o;c>0;i=256*i+e[t+d],d+=D,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=n;c>0;u=256*u+e[t+d],d+=D,c-=8);if(0===i)i=1-a;else{if(i===l)return u?NaN:1/0*(M?-1:1);u+=Math.pow(2,n),i-=a}return(M?-1:1)*u*Math.pow(2,i-n)}(e,t,r,n,s)}function Un(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!Yn(e))return n("invalid u8a");let s="";try{s=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Bn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!_t(e))return n("invalid data");let s=null,i=null;try{s=e.results,i=e.binarys}catch(e){return n(Zn(e))}if(!er(s))return n("invalid results");if(!hr(i))return n("invalid binarys");let u=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,o=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l=new Set,a={};try{a=JSON.parse(s,function(e,t){if(!er(t)||91!==t.charCodeAt(0))return t;let r=u.exec(t);if(null===r)return o.test(t)?t.slice(23):t;let n=Number(r[2]);if(n>=i.length)throw new Error(`binary index out of range[${n}], binarys.length[${i.length}]`);if(l.has(n))throw new Error(`binary index referenced more than once[${n}]`);return l.add(n),((e,t,r)=>{if("Uint16Array"===e&&!Xn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(r.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${r.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===r.byteOffset&&r.byteLength===r.buffer.byteLength?r:new Uint8Array(r);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!vn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}return r})(r[1],n,i[n])})}catch(e){return n(Zn(e))}return r?{state:"success",msg:a}:a}function Qn(e,t={}){let r={},n=ye(t,"returnWithStateAndMsg",null);Dr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!Yn(e))return s("invalid u8a");try{let t=8,n=e.slice(0,t),i=e.slice(t,jn(e)),u=Hn(n),o=i.slice(0,u),l=i.slice(u,jn(i)),a=Un(o,{returnWithStateAndMsg:!0});if("error"===a.state)return s(`u8arr2str: ${a.msg}`);let c=a.msg,d=JSON.parse(c),D=function(e,t){if(!Array.isArray(e))return"not an array";for(let t=0;t<e.length;t++){let r=e[t];if(!Number.isInteger(r)||r<0)return"every item must be a non-negative finite integer"}let r=0;for(let n=0;n<e.length;n++)if(r+=e[n],r>t)return"total length exceeds the packet";return e.length>1&&25*(e.length-1)>e[0]?"too many chunks for the main block":""}(d,jn(l));if(""!==D)return s(`invalid pks, ${D}`);let M=function(e,t){let r=0,n=0,s=[];for(let i=0;i<t.length;i++){n=r+t[i];let u=e.slice(r,n);r=n,s.push(u)}return s}(l,d),w=Un(M.shift(),{returnWithStateAndMsg:!0});if("error"===w.state)return s(`u8arr2str: ${w.msg}`);let y=Bn({results:w.msg,binarys:M},{returnWithStateAndMsg:!0});if("error"===y.state)return s(`stru8arr2obj: ${y.msg}`);r=y.msg}catch(e){return s(Zn(e))}return n?{state:"success",msg:r}:r}function Rn(e){let t=!1;try{t=zn(e)}catch(e){}if(t)return e;if("string"==typeof e&&""!==e)return e;let r=Zn(e);return""!==r?r:"unknown error"}function On(e){return function(e,t={}){try{let r=ye(t,"fs");if(Qr(e,{fs:r}))return{success:"input folder is already exists: "+e};if(Br(e,{fs:r}))return{error:"input path already exists: "+e};r.mkdirSync(e,{recursive:!0})}catch(e){return{error:Rn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Pn(e){return function(e,t={}){try{let r=ye(t,"fs");if(!Br(e,{fs:r}))return{success:"file does not exist: "+e};if(!Or(e,{fs:r}))return{error:"input path is not a file: "+e};r.unlinkSync(e)}catch(e){return{error:Rn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Jn(e){return er(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let $n={permission:200,param:200,app:200,output:200,packet:200,internal:200},_n={main:{event:"execute",apiType:"main",api:"apiMain",authFrom:"header",statusOf:$n},ulctr:{event:"upload",apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:$n},slc:{event:"upload",apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:$n},dwgfn:{event:"download",apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{event:"download",apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{event:"download",apiType:"download",api:"apiDownload",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var qn=Ft("length"),es=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ts(e){return es.test(e)}var rs="\\ud800-\\udfff",ns="["+rs+"]",ss="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",is="\\ud83c[\\udffb-\\udfff]",us="[^"+rs+"]",os="(?:\\ud83c[\\udde6-\\uddff]){2}",ls="[\\ud800-\\udbff][\\udc00-\\udfff]",as="(?:"+ss+"|"+is+")"+"?",cs="[\\ufe0e\\ufe0f]?",ds=cs+as+("(?:\\u200d(?:"+[us,os,ls].join("|")+")"+cs+as+")*"),Ds="(?:"+[us+ss+"?",ss,os,ls,ns].join("|")+")",Ms=RegExp(is+"(?="+is+")|"+Ds+ds,"g");function ws(e){return ts(e)?function(e){for(var t=Ms.lastIndex=0;Ms.test(e);)++t;return t}(e):qn(e)}function ys(e){if(null==e)return 0;if(lt(e))return"string"==typeof(t=e)||!M(t)&&N(t)&&"[object String]"==b(t)?ws(e):e.length;var t,r=xt(e);return"[object Map]"==r||"[object Set]"==r?e.size:ot(e).length}var gs={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,r=36e5,n="millisecond",s="second",i="minute",u="hour",o="day",l="week",a="month",c="quarter",d="year",D="date",M="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"}},I=function(e,t,r){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(r)+e},m={s:I,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),s=r%60;return(t<=0?"+":"-")+I(n,2,"0")+":"+I(s,2,"0")},m:function e(t,r){if(t.date()<r.date())return-e(r,t);var n=12*(r.year()-t.year())+(r.month()-t.month()),s=t.clone().add(n,a),i=r-s<0,u=t.clone().add(n+(i?-1:1),a);return+(-(n+(r-s)/(i?s-u:u-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:a,y:d,w:l,d:o,D:D,h:u,m:i,s:s,ms:n,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},C="en",p={};p[C]=g;var f="$isDayjsObject",L=function(e){return e instanceof A||!(!e||!e[f])},h=function e(t,r,n){var s;if(!t)return C;if("string"==typeof t){var i=t.toLowerCase();p[i]&&(s=i),r&&(p[i]=r,s=i);var u=t.split("-");if(!s&&u.length>1)return e(u[0])}else{var o=t.name;p[o]=t,s=o}return!n&&s&&(C=s),s||!n&&C},b=function(e,t){if(L(e))return e.clone();var r="object"==typeof t?t:{};return r.date=e,r.args=arguments,new A(r)},N=m;N.l=h,N.i=L,N.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var A=function(){function g(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var I=g.prototype;return I.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(N.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var n=t.match(w);if(n){var s=n[2]-1||0,i=(n[7]||"0").substring(0,3);return r?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)}}return new Date(t)}(e),this.init()},I.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},I.$utils=function(){return N},I.isValid=function(){return!(this.$d.toString()===M)},I.isSame=function(e,t){var r=b(e);return this.startOf(t)<=r&&r<=this.endOf(t)},I.isAfter=function(e,t){return b(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<b(e)},I.$g=function(e,t,r){return N.u(e)?this[t]:this.set(r,e)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(e,t){var r=this,n=!!N.u(t)||t,c=N.p(e),M=function(e,t){var s=N.w(r.$u?Date.UTC(r.$y,t,e):new Date(r.$y,t,e),r);return n?s:s.endOf(o)},w=function(e,t){return N.w(r.toDate()[e].apply(r.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(t)),r)},y=this.$W,g=this.$M,I=this.$D,m="set"+(this.$u?"UTC":"");switch(c){case d:return n?M(1,0):M(31,11);case a:return n?M(1,g):M(0,g+1);case l:var C=this.$locale().weekStart||0,p=(y<C?y+7:y)-C;return M(n?I-p:I+(6-p),g);case o:case D:return w(m+"Hours",0);case u:return w(m+"Minutes",1);case i:return w(m+"Seconds",2);case s:return w(m+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var r,l=N.p(e),c="set"+(this.$u?"UTC":""),M=(r={},r[o]=c+"Date",r[D]=c+"Date",r[a]=c+"Month",r[d]=c+"FullYear",r[u]=c+"Hours",r[i]=c+"Minutes",r[s]=c+"Seconds",r[n]=c+"Milliseconds",r)[l],w=l===o?this.$D+(t-this.$W):t;if(l===a||l===d){var y=this.clone().set(D,1);y.$d[M](w),y.init(),this.$d=y.set(D,Math.min(this.$D,y.daysInMonth())).$d}else M&&this.$d[M](w);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[N.p(e)]()},I.add=function(n,c){var D,M=this;n=Number(n);var w=N.p(c),y=function(e){var t=b(M);return N.w(t.date(t.date()+Math.round(e*n)),M)};if(w===a)return this.set(a,this.$M+n);if(w===d)return this.set(d,this.$y+n);if(w===o)return y(1);if(w===l)return y(7);var g=(D={},D[i]=t,D[u]=r,D[s]=e,D)[w]||1,I=this.$d.getTime()+n*g;return N.w(I,this)},I.subtract=function(e,t){return this.add(-1*e,t)},I.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return r.invalidDate||M;var n=e||"YYYY-MM-DDTHH:mm:ssZ",s=N.z(this),i=this.$H,u=this.$m,o=this.$M,l=r.weekdays,a=r.months,c=r.meridiem,d=function(e,r,s,i){return e&&(e[r]||e(t,n))||s[r].slice(0,i)},D=function(e){return N.s(i%12||12,e,"0")},w=c||function(e,t,r){var n=e<12?"AM":"PM";return r?n.toLowerCase():n};return n.replace(y,function(e,n){return n||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return N.s(t.$y,4,"0");case"M":return o+1;case"MM":return N.s(o+1,2,"0");case"MMM":return d(r.monthsShort,o,a,3);case"MMMM":return d(a,o);case"D":return t.$D;case"DD":return N.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(r.weekdaysMin,t.$W,l,2);case"ddd":return d(r.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(i);case"HH":return N.s(i,2,"0");case"h":return D(1);case"hh":return D(2);case"a":return w(i,u,!0);case"A":return w(i,u,!1);case"m":return String(u);case"mm":return N.s(u,2,"0");case"s":return String(t.$s);case"ss":return N.s(t.$s,2,"0");case"SSS":return N.s(t.$ms,3,"0");case"Z":return s}return null}(e)||s.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(n,D,M){var w,y=this,g=N.p(D),I=b(n),m=(I.utcOffset()-this.utcOffset())*t,C=this-I,p=function(){return N.m(y,I)};switch(g){case d:w=p()/12;break;case a:w=p();break;case c:w=p()/3;break;case l:w=(C-m)/6048e5;break;case o:w=(C-m)/864e5;break;case u:w=C/r;break;case i:w=C/t;break;case s:w=C/e;break;default:w=C}return M?w:N.a(w)},I.daysInMonth=function(){return this.endOf(a).$D},I.$locale=function(){return p[this.$L]},I.locale=function(e,t){if(!e)return this.$L;var r=this.clone(),n=h(e,t,!0);return n&&(r.$L=n),r},I.clone=function(){return N.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},g}(),x=A.prototype;return b.prototype=x,[["$ms",n],["$s",s],["$m",i],["$H",u],["$W",o],["$M",a],["$y",d],["$D",D]].forEach(function(e){x[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),b.extend=function(e,t){return e.$i||(e(t,A,b),e.$i=!0),b},b.locale=h,b.isDayjs=L,b.unix=function(e){return b(1e3*e)},b.en=p[C],b.Ls=p,b.p={},b}()}(gs);var Is=nn(gs.exports);let ms="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Cs=ms.length;function ps(e=32){let t=[];e=Lr(e)?fr(e):32;for(let r=0;r<e;r++)t[r]=ms[0|Math.random()*Cs];return t.join("")}function fs(e,t,r){var n=-1,s=e.length;t<0&&(t=-t>s?0:s+t),(r=r>s?s:r)<0&&(r+=s),s=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(s);++n<s;)i[n]=e[n+t];return i}function Ls(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:fs(e,t,r)}function hs(e){return e!=e}function bs(e,t,r){return t==t?function(e,t,r){for(var n=r-1,s=e.length;++n<s;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var s=e.length,i=r+(n?1:-1);n?i--:++i<s;)if(t(e[i],i,e))return i;return-1}(e,hs,r)}var Ns="\\ud800-\\udfff",As="["+Ns+"]",xs="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Es="\\ud83c[\\udffb-\\udfff]",Ts="[^"+Ns+"]",Ss="(?:\\ud83c[\\udde6-\\uddff]){2}",Zs="[\\ud800-\\udbff][\\udc00-\\udfff]",vs="(?:"+xs+"|"+Es+")"+"?",Ys="[\\ufe0e\\ufe0f]?",Xs=Ys+vs+("(?:\\u200d(?:"+[Ts,Ss,Zs].join("|")+")"+Ys+vs+")*"),js="(?:"+[Ts+xs+"?",xs,Ss,Zs,As].join("|")+")",zs=RegExp(Es+"(?="+Es+")|"+js+Xs,"g");function Gs(e){return ts(e)?function(e){return e.match(zs)||[]}(e):function(e){return e.split("")}(e)}function Ws(e,t,r){if((e=de(e))&&(r||void 0===t))return nr(e);if(!e||!(t=ce(t)))return e;var n=Gs(e),s=Gs(t),i=function(e,t){for(var r=-1,n=e.length;++r<n&&bs(t,e[r],0)>-1;);return r}(n,s),u=function(e,t){for(var r=e.length;r--&&bs(t,e[r],0)>-1;);return r}(n,s)+1;return Ls(n,i,u).join("")}function Ks(e,t){if(!er(e))return[];if(!er(t))return[];let r=function(e,t){return er(e)&&er(t)?e.split(t):[]}(e,t);r=Ot(r,Ws);let n=[];return _r(r,function(e){er(e)&&n.push(e)}),n}const Fs=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function ks(e,t={}){let r=Hr();try{let n=ye(t,"fs"),s=ye(t,"chunkSize");if(Lr(s)||(s=67108864),s=fr(s),s>2**30&&(s=67108864),!Or(e,{fs:n}))return r.reject("fp is not a file"),r;let{create64:i}=await async function(){return function(e){const{exports:{mem:t,xxh32:r,xxh64:n,init32:s,update32:i,digest32:u,init64:o,update64:l,digest64:a}}=e;let c=new Uint8Array(t.buffer);function d(e,r){if(t.buffer.byteLength<e+r){const n=Math.ceil((e+r-t.buffer.byteLength)/65536);t.grow(n),c=new Uint8Array(t.buffer)}}function D(e,t,r,n,s,i){d(e);const u=new Uint8Array(e);return c.set(u),r(0,t),u.set(c.subarray(0,e)),{update(t){let r;return c.set(u),"string"==typeof t?(d(3*t.length,e),r=g.encodeInto(t,c.subarray(e)).written):(d(t.byteLength,e),c.set(t,e),r=t.byteLength),n(0,e,r),u.set(c.subarray(0,e)),this},digest:()=>(c.set(u),i(s(0)))}}function M(e){return e>>>0}const w=2n**64n-1n;function y(e){return e&w}const g=new TextEncoder;function I(e,t=0){return d(3*e.length,0),M(r(0,g.encodeInto(e,c).written,t))}function m(e,t=0n){return d(3*e.length,0),y(n(0,g.encodeInto(e,c).written,t))}return{h32:I,h32ToString:(e,t=0)=>I(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(d(e.byteLength,0),c.set(e),M(r(0,e.byteLength,t))),create32:(e=0)=>D(48,e,s,i,u,M),h64:m,h64ToString:(e,t=0n)=>m(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(d(e.byteLength,0),c.set(e),y(n(0,e.byteLength,t))),create64:(e=0n)=>D(88,e,o,l,a,y)}}((await WebAssembly.instantiate(Fs)).instance)}(),u=i(),o=n.createReadStream(e,{highWaterMark:s}),l=e=>{r.reject(Zn(e));try{o.destroy()}catch(e){}};o.on("data",e=>{try{u.update(e)}catch(e){l(e)}}),o.on("end",()=>{try{let e=u.digest().toString(16).padStart(16,"0");r.resolve(e)}catch(e){l(e)}}),o.on("error",e=>{r.reject(Zn(e))})}catch(e){r.reject(Zn(e))}return r}var Vs={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LG89Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGk9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PW98fGl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUsZj1jLmhhc093blByb3BlcnR5LHM9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIixnPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDpnJiZnIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1mLmNhbGwodCxsKSxlPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1zLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbbF09ZTpkZWxldGUgdFtsXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZ2KHQpPT1kfXZhciBqPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLFM9L15cdyokLztmdW5jdGlvbiBtKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciB3PSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLHg9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyICQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLFA9T2JqZWN0LnByb3RvdHlwZSxGPXoudG9TdHJpbmcsTD1QLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitGLmNhbGwoTCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighbSh0KXx8KHI9dCx4JiZ4IGluIHIpKXJldHVybiExO3ZhciByLGU9ZnVuY3Rpb24odCl7aWYoIW0odCkpcmV0dXJuITE7dmFyIHI9dih0KTtyZXR1cm4gcj09T3x8cj09RXx8cj09d3x8cj09Tn0odCk/VDpJO3JldHVybiBlLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiAkLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LHIpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19KHQscik7cmV0dXJuIE0oZSk/ZTp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxyKXtmb3IodmFyIGUsbixvPXQubGVuZ3RoO28tLTspaWYoKGU9dFtvXVswXSk9PT0obj1yKXx8ZSE9ZSYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gQy5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PXJbdF06Ry5jYWxsKHIsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09VSYmdm9pZCAwPT09cj8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6cix0aGlzfTt2YXIgRD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIFgodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19WC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxYLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXEocix0KTtyZXR1cm4hKGU8MCkmJihlPT1yLmxlbmd0aC0xP3IucG9wKCk6RC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LFgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9cShyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LFgucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxYLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fLG49cShlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTt2YXIgQj1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxyKXt2YXIgZSxuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihlPXIpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1lOm51bGw9PT1lKT9vWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIEoodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoQnx8WCksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPUgodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0saT1lLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gZS5jYWNoZT1uZXcoUS5DYWNoZXx8SiksZX1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csZXQ9KFY9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOmV8fHQpfSkpLHJ9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9ZXQ7dmFyIG90PTEvMCxpdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1pdD9pdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LW90PyItMCI6cn1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBmdCh0LHIpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihuKHQpKXJldHVybiExO3ZhciBlPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPWUmJiJzeW1ib2wiIT1lJiYiYm9vbGVhbiIhPWUmJm51bGwhPXQmJiFfKHQpKXx8Uy50ZXN0KHQpfHwhai50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06bnQoY3QodCkpfXZhciBzdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zdD8iLTAiOnJ9ZnVuY3Rpb24gaHQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1mdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbbHQocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIHB0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKSxuPSExO3RyeXtlLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LHI9e30pe2xldCBlPWh0KHIsImZzIik7cmV0dXJuISFwdCh0LHtmczplfSkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGd0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IHI9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihyKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhYnQodCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEoIWR0KHQpfHwwIT09dC5sZW5ndGgpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISF2dCh0KSYmMD09PXQubGVuZ3RofSh0KXx8ISFfdCh0KSkpKSl9ZnVuY3Rpb24gU3QodCl7cmV0dXJuISEoZHQodCkmJnQubGVuZ3RoPjApfXZhciBtdD0vXHMvO3ZhciB3dD0vXlxzKy87ZnVuY3Rpb24gT3QodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJm10LnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2Uod3QsIiIpOnR9dmFyIEV0PU5hTixOdD0vXlstK10weFswLTlhLWZdKyQvaSxBdD0vXjBiWzAxXSskL2ksUnQ9L14wb1swLTddKyQvaSx4dD1wYXJzZUludDtmdW5jdGlvbiAkdCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoXyh0KSlyZXR1cm4gRXQ7aWYobSh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9bShyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9T3QodCk7dmFyIGU9QXQudGVzdCh0KTtyZXR1cm4gZXx8UnQudGVzdCh0KT94dCh0LnNsaWNlKDIpLGU/Mjo4KTpOdC50ZXN0KHQpP0V0Oit0fXZhciBJdD0xLzAsenQ9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIFB0KHQpe3JldHVybiB0Pyh0PSR0KHQpKT09PUl0fHx0PT09LUl0Pyh0PDA/LTE6MSkqenQ6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEZ0KHQpe3ZhciByPVB0KHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH12YXIgTHQ9IltvYmplY3QgQm9vbGVhbl0iO2Z1bmN0aW9uIFR0KHQpe3JldHVybiEwPT09KHI9dCl8fCExPT09cnx8YihyKSYmdihyKT09THQ7dmFyIHJ9ZnVuY3Rpb24gTXQodCl7bGV0IHI9ITE7aWYoU3QodCkpe2lmKCIiPT09dC50cmltKCkpcmV0dXJuITE7cj0haXNOYU4oTnVtYmVyKHQpKX1lbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoX3QodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBrdCh0KXtpZighTXQodCkpcmV0dXJuIDA7cmV0dXJuIFB0KHQpfWZ1bmN0aW9uIFV0KHQscj17fSl7bGV0IGU9aHQociwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gVHQoZSl8fChlPSExKSwhIU10KHQpJiYodD1rdCh0KSxlP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09RnQobikpO3ZhciBufXZhciBDdD11LmlzRmluaXRlLEd0PU1hdGgubWluO3ZhciBXdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9JHQodCksKGU9bnVsbD09ZT8wOkd0KEZ0KGUpLDI5MikpJiZDdCh0KSl7dmFyIG49KGN0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShjdChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxxdD1XdDtmdW5jdGlvbiBEdCh0LHI9e30pe2xldCBlPWh0KHIsInVzZUNsYW1wU2FmZSIsbnVsbCk7VHQoZSl8fChlPSExKTtsZXQgbj1odChyLCJ1c2VMaW1pdFNhZmUiLG51bGwpO1R0KG4pfHwobj0hMSk7bGV0IG89aHQociwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTtUdChvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFNdCh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWt0KHQpLGE9cXQodCksZSYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gWHQodCxyPXt9KXtpZighVXQodCxyKSlyZXR1cm4hMTtyZXR1cm4gRHQodCk+PTB9ZnVuY3Rpb24gQnQodCxyKXtpZighU3QodCkpcmV0dXJuIiI7aWYoIVh0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1EdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gSHQodCxyKXtyZXR1cm4gU3QodCkmJlh0KHIpPzA9PT0ocj1EdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBTdCh0KSYmWHQocik/MD09PShyPUR0KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIEp0KHQpe2lmKCFTdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUJ0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4iOiI9PT1CdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEt0KHQpe2lmKCFTdCh0KSlyZXR1cm4iIjtsZXQgcj1KdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFF0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKTtpZighcHQodCx7ZnM6ZX0pKXJldHVybiExO2xldCBuPWUubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIFZ0KHQpe3RyeXtyZXR1cm4gU3RyaW5nKHQpfWNhdGNoKHQpe310cnl7bGV0IHI9dC5tZXNzYWdlO2lmKCJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yKXJldHVybiByfWNhdGNoKHQpe31yZXR1cm4idW5rbm93biBlcnJvciJ9ZnVuY3Rpb24gWXQodCl7bGV0IHI9ITE7dHJ5e3I9ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4hMTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuITA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEVycm9yLmlzRXJyb3IpcmV0dXJuIEVycm9yLmlzRXJyb3IodCk7aWYoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHQpcmV0dXJuITE7bGV0IHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO3JldHVybiJbb2JqZWN0IEVycm9yXSI9PT1yfHwiW29iamVjdCBET01FeGNlcHRpb25dIj09PXJ9KHQpfWNhdGNoKHQpe31pZihyKXJldHVybiB0O2lmKCJzdHJpbmciPT10eXBlb2YgdCYmIiIhPT10KXJldHVybiB0O2xldCBlPVZ0KHQpO3JldHVybiIiIT09ZT9lOiJ1bmtub3duIGVycm9yIn1mdW5jdGlvbiBadCh0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKCFwdCh0LHtmczplfSkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIXl0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiB0cih0LHIsbj17fSl7bGV0IG89IiI7aWYoIXZ0KGk9dCl8fDA9PT1pLmxlbmd0aHx8MT09PWkubGVuZ3RoJiZqdChpWzBdKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgaTtsZXQgdT1mdW5jdGlvbih0KXtpZighU3QodCkpcmV0dXJuIiI7bGV0IHI9SnQodCk7aWYoci5pc1Jvb3QpcmV0dXJuIHIucGF0aDtsZXQgZT1LdCh0PXIucGF0aCk7aWYoIVN0KGUpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KHIpLGE9Z3QoKTthLmNhdGNoKCgoKT0+e30pKTtsZXQgYz1udWxsLGY9bnVsbCxzPSExLGw9Z3QoKTtsLmNhdGNoKCgoKT0+e30pKTtsZXQgaD10PT57bGV0IHI7dHJ5e3I9dC5tZXNzYWdlfWNhdGNoKHQpe31yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHI/cjpWdCh0KX07dHJ5e2xldCBpPWh0KG4sImZzIikscD1odChuLCJmbk91dCIsIiIpO1N0KHApfHwocD1LdChyKSksUXQodSx7ZnM6aX0pfHxmdW5jdGlvbih0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKFF0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX19KHUse2ZzOml9KSxjPWkuY3JlYXRlV3JpdGVTdHJlYW0ociksYy5vbigiZXJyb3IiLCh0PT57cz0hMCxmPXQsbz1oKHQpLGwucmVqZWN0KHQpLGEucmVqZWN0KG8pfSkpLGMub24oImZpbmlzaCIsKCgpPT57bGV0IHQ9e2ZpbGVuYW1lOnAscGF0aDpyfTthLnJlc29sdmUodCl9KSk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2lmKHMpdGhyb3cgZjtsZXQgbj10W3JdO2lmKCF5dChuLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7bn1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgbz1hc3luYygpPT57bGV0IHQ9aS5jcmVhdGVSZWFkU3RyZWFtKG4pLHI9bnVsbDtmb3IgYXdhaXQobGV0IG4gb2YgdCl7aWYocyl0aHJvdyBmO2xldCB0PSExLG89bmV3IFByb21pc2UoKChyLGUpPT57dD0hYy53cml0ZShuLCh0PT57dD9lKHQpOnIoKX0pKX0pKTtvLmNhdGNoKCgoKT0+e30pKSxyPW8sdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtlLm9uY2UoYywiZHJhaW4iKSxsXSl9aWYobnVsbCE9PXImJmF3YWl0IHIscyl0aHJvdyBmO1p0KG4se2ZzOml9KX07YXdhaXQgbygpfWMuZW5kKCl9Y2F0Y2godCl7bz1oKHQpO3RyeXtjLmRlc3Ryb3koKX1jYXRjaCh0KXt9YS5yZWplY3Qobyl9cmV0dXJuIGF9Y29uc3QgcnI9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gZXIodCxyPXt9KXtsZXQgZT1ndCgpO3RyeXtsZXQgbj1odChyLCJmcyIpLG89aHQociwiY2h1bmtTaXplIik7aWYoZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4hIVV0KHQscikmJkR0KHQpPjB9KG8pfHwobz02NzEwODg2NCksbz1EdChvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXl0KHQse2ZzOm59KSlyZXR1cm4gZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxlO2xldHtjcmVhdGU2NDppfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06cix4eGgzMjplLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpO2Z1bmN0aW9uIGwodCxlKXtpZihyLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrZSl7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrZS1yLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ci5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpfX1mdW5jdGlvbiBoKHQscixlLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLGUoMCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUocil7bGV0IGU7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2Ygcj8obCgzKnIubGVuZ3RoLHQpLGU9di5lbmNvZGVJbnRvKHIscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoci5ieXRlTGVuZ3RoLHQpLHMuc2V0KHIsdCksZT1yLmJ5dGVMZW5ndGgpLG4oMCx0LGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiBnKHQpe3JldHVybiB0Jnl9Y29uc3Qgdj1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LHI9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKGUoMCx2LmVuY29kZUludG8odCxzKS53cml0dGVuLHIpKX1mdW5jdGlvbiBqKHQscj1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGcobigwLHYuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4scikpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxyPWIpPT5fKHQscikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQscj1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAoZSgwLHQuYnl0ZUxlbmd0aCxyKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsbyxpLHUscCksaDY0OmosaDY0VG9TdHJpbmc6KHQscj1kKT0+aih0LHIpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxyPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksZyhuKDAsdC5ieXRlTGVuZ3RoLHIpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMsZixnKX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShycikpLmluc3RhbmNlKX0oKSx1PWkoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntlLnJlamVjdChWdCh0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e3UudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ZS5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e2UucmVqZWN0KFZ0KHQpKX0pKX1jYXRjaCh0KXtlLnJlamVjdChWdCh0KSl9cmV0dXJuIGV9bW9kdWxlLmV4cG9ydHM9YXN5bmMoZSxuLG8saSk9PntsZXQgdT1bXTtmb3IobGV0IGk9MDtpPG47aSsrKXtsZXQgbj10LnJlc29sdmUobyxgJHtlfV8ke2l9YCk7aWYoIXl0KG4se2ZzOnJ9KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO3UucHVzaChuKX1sZXQgYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbj17fSl7dHJ5e3JldHVybiB0cih0LGUse2ZzOnIsLi4ubn0pfWNhdGNoKHQpe2xldCByO3RyeXtyPXQubWVzc2FnZX1jYXRjaCh0KXt9cmV0dXJuIFByb21pc2UucmVqZWN0KCJzdHJpbmciPT10eXBlb2Ygcj9yOlZ0KHQpKX19KHUsaSk7cmV0dXJuey4uLmEsaGFzaDphd2FpdCBmdW5jdGlvbih0LGU9e30pe3RyeXtyZXR1cm4gZXIodCx7ZnM6ciwuLi5lfSl9Y2F0Y2godCl7cmV0dXJuIFByb21pc2UucmVqZWN0KFZ0KHQpKX19KGkpfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(Vs);var Hs=nn(Vs.exports);let Us=new Set,Bs=new Map,Qs=(t,r,n="")=>{let s=e.resolve(r,t);return{fp:s,fpm:`${s}.merging`,fpd:`${s}.done`,fpe:`${s}.error`,fpr:er(n)?`${s}.q${n}.ro`:""}},Rs=e=>{let t=Pn(e);if(Pr(e))throw new Error(`can not remove ${e}: ${fn(ye(t,"error"))}`)},Os=async(e,r)=>{Us.add(r.fp);try{let n=await function(e,r={}){try{return ks(e,{fs:t,...r})}catch(e){return Promise.reject(Zn(e))}}(r.fp);if(n===e)return t.writeFileSync(r.fpd,"","utf8"),{state:"done"};let s=`merged file[${r.fp}] is incomplete: hash[${n}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(r.fpe,s,"utf8")}catch(e){console.log(`can not write ${r.fpe}`,e)}return{state:"mismatch",reason:s}}catch(e){return{state:"error",reason:`verify merged file[${r.fp}] error: ${fn(e)}`}}finally{Us.delete(r.fp)}},Ps=async(e,r,n)=>{let s=`${function(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYYMMDDHHmmss")}()}|${ps(6)}|${e}`,i=Qs(e,n);if(Us.has(i.fp))return s;let u=Pr(i.fpe),o=Pr(i.fp);if(!u&&o){let t=await Os(e,i);if("done"===t.state)return s;if("error"===t.state)throw new Error(t.reason)}return Rs(i.fpd),Rs(i.fpe),Us.add(i.fp),setTimeout(()=>{Hs(e,r,n,i.fpm).then(r=>{let n=ye(r,"hash","");if(n!==e)throw new Error(`merged file hash[${n}] != fileHash[${e}]`);t.renameSync(i.fpm,i.fp),t.writeFileSync(i.fpd,"","utf8")}).catch(e=>{console.log(e),Pn(i.fpm);let r=fn(e);try{t.writeFileSync(i.fpe,r,"utf8")}catch(e){console.log(`can not write ${i.fpe}`,e)}}).finally(()=>{Us.delete(i.fp)})},1),s},Js=async(e,r,n={})=>{let s=ye(n,"funConsume"),i=ye(n,"funLog");Gr(i)||(i=e=>{console.log(e)});let u=Ks(e,"|"),o=ye(u,0,""),l=ye(u,1,""),a=ye(u,2,"");if(3!==ys(u)||!Jn(o)||!Jn(l)||!Jn(a)){let t=`invalid queueId[${fn(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let c=Qs(a,r,`${o}${l}`);if(Pr(c.fpr)){let e=((e,r)=>{try{let n=Qn(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==ye(n,"state"))return r(`stored result ${e.fpr} is corrupted, treat as not stored: ${ye(n,"msg","unknown error")}`),{ok:!1};let s=n.msg;return $t(s)&&dn(s,"ro")?{ok:!0,ro:s.ro}:(r(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return r(`can not read stored result ${e.fpr}: ${fn(t)}`),{ok:!1}}})(c,i);if(e.ok)return{state:"success",msg:e.ro,path:c.fp,from:"stored"}}if(Pr(c.fpe)){let e="";try{e=t.readFileSync(c.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:c.fp}}if(Us.has(c.fp))return{state:"merging",msg:"",path:c.fp};let d=Pr(c.fp),D=Pr(c.fpd);if(d&&!D){let e=await Os(a,c);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:c.fp};D=!0}if(d&&D){if(!Gr(s))return{state:"success",msg:"",path:c.fp};let e=await((e,r,n)=>{let s=e.fpr,i=Bs.get(s);return i||(i=Promise.resolve().then(()=>r(e.fp)).then(r=>{r=void 0===r?null:r;try{let n=Vn({ro:r},{returnWithStateAndMsg:!0});if("success"!==ye(n,"state"))return r;t.writeFileSync(e.fpr,Buffer.from(n.msg));let s=Qn(n.msg,{returnWithStateAndMsg:!0});if("success"===ye(s,"state")&&$t(s.msg)&&dn(s.msg,"ro"))return s.msg.ro}catch(t){n(`can not store consumed result to ${e.fpr}: ${fn(t)}`)}return r}).finally(()=>{Bs.delete(s)}),Bs.set(s,i),i)})(c,s,i);return{state:"success",msg:e,path:c.fp,from:"consumed"}}return!d&&D?{state:"error",msg:"merged file already consumed",reason:`merged file[${c.fp}] no longer exists and no stored result for queueId[${e}]`,path:c.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${a}] (never pushed, or artifacts removed)`,path:c.fp}};var $s={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLGg9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgcD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LGgpLHI9dFtoXTt0cnl7dFtoXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtoXT1yOmRlbGV0ZSB0W2hdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gcC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sTj05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/TjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIGh0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHB0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PXB0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6aHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4gTnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBoZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxoZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LGhlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gcGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1wZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBoZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBoZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxoPSEwLHA9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtoPSExO2JyZWFrfWlmKHApe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhcC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gcC5wdXNoKGUpO3ZhciBpfSkpKXtoPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtoPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSksaH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLE5lPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxoPWM9PWY7aWYoaCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKGgmJiFzKXJldHVybiB1fHwodT1uZXcgcGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBOZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgcD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8dil7dmFyIHk9cD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBwZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIWgmJih1fHwodT1uZXcgcGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLGg9dS5nZXQoZSk7aWYobCYmaClyZXR1cm4gbD09ZSYmaD09dDt2YXIgcD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7cD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihwJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KHA9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBwZTtpZihuKXZhciBoPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09aD9LZShzLGYsUWV8WWUsbixsKTpoKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxoZSkscn1jci5DYWNoZT1oZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxocj1scixwcj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tcHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpocihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gTnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKE8odCk/cmU6TnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISEoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpJiZ0Lmxlbmd0aD4wKX1mdW5jdGlvbiBZcih0LGUpe2lmKCFRcih0KSlyZXR1cm5bXTtpZighUXIoZSkpcmV0dXJuW107bGV0IHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUXIodCkmJlFyKGUpP3Quc3BsaXQoZSk6W119KHQsZSk7cj1GcihyLEtyKTtsZXQgbj1bXTtyZXR1cm4gaXQociwoZnVuY3Rpb24odCl7UXIodCkmJm4ucHVzaCh0KX0pKSxufXZhciBacj1OYU4sdG49L15bLStdMHhbMC05YS1mXSskL2ksZW49L14wYlswMV0rJC9pLHJuPS9eMG9bMC03XSskL2ksbm49cGFyc2VJbnQ7ZnVuY3Rpb24gb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG5yKHQpKXJldHVybiBacjtpZihKKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1KKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kcih0KTt2YXIgcj1lbi50ZXN0KHQpO3JldHVybiByfHxybi50ZXN0KHQpP25uKHQuc2xpY2UoMikscj8yOjgpOnRuLnRlc3QodCk/WnI6K3R9dmFyIHVuPTEvMCxhbj0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gY24odCl7cmV0dXJuIHQ/KHQ9b24odCkpPT09dW58fHQ9PT0tdW4/KHQ8MD8tMToxKSphbjp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gZm4odCl7dmFyIGU9Y24odCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciBzbj0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gbG4odCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxnKGUpJiZkKGUpPT1zbjt2YXIgZX1mdW5jdGlvbiBobih0KXtsZXQgZT0hMTtpZihRcih0KSl7aWYoIiI9PT10LnRyaW0oKSlyZXR1cm4hMTtlPSFpc05hTihOdW1iZXIodCkpfWVsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtpZih0IT10KXJldHVybiEwO2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpdHJ5e2xldCBlPU51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHQpO3JldHVybiBOdW1iZXIuaXNOYU4oZSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITF9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gcG4odCl7aWYoIWhuKHQpKXJldHVybiAwO3JldHVybiBjbih0KX1mdW5jdGlvbiB2bih0LGU9e30pe2xldCByPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIGxuKHIpfHwocj0hMSksISFobih0KSYmKHQ9cG4odCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWZuKG4pKTt2YXIgbn12YXIgeW49YS5pc0Zpbml0ZSxibj1NYXRoLm1pbjt2YXIgZG49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PW9uKHQpLChyPW51bGw9PXI/MDpibihmbihyKSwyOTIpKSYmeW4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZ249ZG47ZnVuY3Rpb24gX24odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO2xuKHIpfHwocj0hMSk7bGV0IG49d3IoZSwidXNlTGltaXRTYWZlIixudWxsKTtsbihuKXx8KG49ITEpO2xldCBvPXdyKGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7bG4obyl8fChvPSExKTtsZXQgdT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsaT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighaG4odCkpcmV0dXJuIHUoMCk7bGV0IGE9bnVsbDt0cnl7dD1wbih0KSxhPWduKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gaSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT9pKGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLHUoYSkpfWZ1bmN0aW9uIGpuKHQsZT17fSl7aWYoIXZuKHQsZSkpcmV0dXJuITE7cmV0dXJuIF9uKHQpPj0wfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFtbih0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIFNuKHQpe3JldHVybiB3bih0LHtmczplfSl9ZnVuY3Rpb24gT24odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBBbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT4wfWZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighbW4odCx7ZnM6cn0pKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIEVuKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmQW4oZSkmJihlPV9uKGUpKTwxJiYoZT0xKSxmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiB6bihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShPKGk9dSk/VGU6T24pKGkseHIoYSkpLHU9RnIodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiBObih0KXt0cnl7cmV0dXJuIFN0cmluZyh0KX1jYXRjaCh0KXt9dHJ5e2xldCBlPXQubWVzc2FnZTtpZigic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZSlyZXR1cm4gZX1jYXRjaCh0KXt9cmV0dXJuInVua25vd24gZXJyb3IifWFzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0IG49d3IoZSwiZnMiKSxvPXdyKGUsImNodW5rU2l6ZSIpO2lmKEFuKG8pfHwobz02NzEwODg2NCksbz1fbihvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXduKHQse2ZzOm59KSlyZXR1cm4gci5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxyO2xldHtjcmVhdGU2NDp1fT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5oKDQ4LHQsbyx1LGkscCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PmgoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSxpPXUoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntyLnJlamVjdChObih0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e2kudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PWkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ci5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e3IucmVqZWN0KE5uKHQpKX0pKX1jYXRjaCh0KXtyLnJlamVjdChObih0KSl9cmV0dXJuIHJ9bW9kdWxlLmV4cG9ydHM9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LnJlc29sdmUodSxvKSxhPSExO2lmKGE9U24oaSksIWpuKHIse3VzZUxpbWl0U2FmZTohMH0pKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fXI9X24ocik7bGV0IGM9ITE7aWYoYSl7bGV0IHQ9LTE7dHJ5e3Q9ZS5zdGF0U3luYyhpKS5zaXplfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJjaGVjayB0b3RhbCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsaSx0KX1jPXI9PT10fWxldCBmPSExO2EmJmMmJmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7dHJ5e3JldHVybiBGbih0LHtmczplLC4uLnJ9KX1jYXRjaCh0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoTm4odCkpfX0oaSkudGhlbigodD0+e2Y9bz09PXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUocGF0aEZpbGUpIixpLFNuKGkpKSxjb25zb2xlLmxvZyh0KSxmPSExfSkpO2xldCBzPVtdO2lmKCFmKXtpdChmdW5jdGlvbihyLG49MSl7cmV0dXJuIEVuKHIsbix7cGF0aDp0LGZzOmV9KX0odSksKHQ9PntsZXQgcj10Lm5hbWUuc3RhcnRzV2l0aChgJHtvfV9gKSx1PSExO3RyeXtsZXQgcj1lLnN0YXRTeW5jKHQucGF0aCk7dT1yLnNpemU+MCYmci5zaXplPD1ufWNhdGNoKGUpe2NvbnNvbGUubG9nKCJjaGVjayBlYWNoIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIix0LnBhdGgsZSl9aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZigham4ocikpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coYHNraXAgZmlsZVske3QubmFtZX1dOiBjYW4gbm90IHBhcnNlIGNodW5rIGluZGV4YCk7cj1fbihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCiAgICB9KS5jYWxsKG1kVXNlci5leHBvcnRzLCBtZFVzZXIsIG1kVXNlci5leHBvcnRzKQoKICAgIC8v6aCQ6Kit5Yyv5Ye6OiByb2xsdXDku6VfX2VzTW9kdWxl5qiZ56S66aCQ6Kit6IiH5YW35ZCN5Lim5a2Y6ICFLCDlj5blhbZkZWZhdWx0OyDlkKbliYdtb2R1bGUuZXhwb3J0c+WNs+mgkOioreWMr+WHuijlj6rmnInlhbflkI3ljK/lh7rogIXngrrlkb3lkI3nqbrplpPnianku7YpCiAgICByZXR1cm4gKG1kVXNlci5leHBvcnRzICYmIG1kVXNlci5leHBvcnRzLl9fZXNNb2R1bGUgJiYgJ2RlZmF1bHQnIGluIG1kVXNlci5leHBvcnRzKSA/IG1kVXNlci5leHBvcnRzLmRlZmF1bHQgOiBtZFVzZXIuZXhwb3J0cwoKfSkoKSkKCg==",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}($s);var _s=nn($s.exports),qs={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmdih0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gTih0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT12KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBFLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oRT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrRToiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBCKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihOKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gQihyKT9yOnZvaWQgMH12YXIgVT1rKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPWsoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB5dD1PYmplY3QucHJvdG90eXBlO3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9dnQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx5dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1rKGksIkRhdGFWaWV3IiksanQ9ayhpLCJQcm9taXNlIiksU3Q9ayhpLCJTZXQiKSx3dD1rKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsTnQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD12OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1OdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gTnR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFOKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIgQnQsa3Q9KEJ0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W0J0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTprdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnYoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB5ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gdmUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ2KGUpPT15ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hIShmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkmJnQubGVuZ3RoPjApfWZ1bmN0aW9uIGRlKHQpe2xldCBlPSExO2lmKGJlKHQpKXtpZigiIj09PXQudHJpbSgpKXJldHVybiExO2U9IWlzTmFOKE51bWJlcih0KSl9ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IGU9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihlKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX1mdW5jdGlvbiBnZSh0KXtpZighZGUodCkpcmV0dXJuIDA7cmV0dXJuIHBlKHQpfWZ1bmN0aW9uIF9lKHQsZT17fSl7bGV0IHI9aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gdmUocil8fChyPSExKSwhIWRlKHQpJiYodD1nZSh0KSxyP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09aGUobikpO3ZhciBufXZhciBqZT1pLmlzRmluaXRlLFNlPU1hdGgubWluO3ZhciB3ZT1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9ZmUodCksKHI9bnVsbD09cj8wOlNlKGhlKHIpLDI5MikpJiZqZSh0KSl7dmFyIG49KGZ0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShmdChlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxtZT13ZTtmdW5jdGlvbiBPZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUNsYW1wU2FmZSIsbnVsbCk7dmUocil8fChyPSExKTtsZXQgbj1odChlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3ZlKG4pfHwobj0hMSk7bGV0IG89aHQoZSwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTt2ZShvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFkZSh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWdlKHQpLGE9bWUodCksciYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gQWUodCxlPXt9KXtpZighX2UodCxlKSlyZXR1cm4hMTtyZXR1cm4gT2UodCk+PTB9Y29uc3QgTmU9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gRWUodCxlPXt9KXtpZighZnVuY3Rpb24odCl7bGV0IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO2lmKCJbb2JqZWN0IEJsb2JdIj09PWV8fCJbb2JqZWN0IEZpbGVdIj09PWUpcmV0dXJuITA7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2IpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiExfSh0KSYmKHI9dCwiW29iamVjdCBGaWxlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPWh0KGUsImNodW5rU2l6ZSIpO2RlKG4pfHwobj02NzEwODg2NCksbj1nZShuKTtsZXR7Y3JlYXRlNjQ6b309YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOmksZGlnZXN0MzI6dSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8saSl7bCh0KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldCh1KSxyKDAsZSksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldCh1KSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KHUpLGkobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gdih0KXtyZXR1cm4gdCZ5fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx2KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8saSx1LGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHYobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsdil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoTmUpKS5pbnN0YW5jZSl9KCksaT1vKCksdT0wO2Zvcig7dTx0LnNpemU7KXtsZXQgZT10LnNsaWNlKHUsdStuKSxyPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpLnVwZGF0ZShuZXcgVWludDhBcnJheShyKSksdSs9bn1yZXR1cm4gaS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKX1tb2R1bGUuZXhwb3J0cz1hc3luYyhyLG4sbyk9PntpZighKGJlKGk9bikmJmkubGVuZ3RoPD0xMjgmJi9eW0EtWmEtejAtOV0rJC8udGVzdChpKSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlSGFzaCJ9fXZhciBpO2lmKCFBcnJheS5pc0FycmF5KHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNsaWNlSGFzaHMifX1pZigwPT09dGUocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgdT1gJHtufV9gLGE9ZS5yZWFkZGlyU3luYyhvKSxjPW5ldyBTZXQ7Zm9yKGxldCB0IG9mIGEpe2lmKCF0LnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5zbGljZSh1Lmxlbmd0aCk7QWUoZSkmJlN0cmluZyhPZShlKSk9PT1lJiZjLmFkZChPZShlKSl9bGV0IGY9W10scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgdT1yW2ldLGE9aHQodSwiaSIpO2lmKCFBZShhKSljb250aW51ZTtpZihhPU9lKGEpLCFjLmhhcyhhKXx8cy5oYXMoYSkpY29udGludWU7cy5hZGQoYSk7bGV0IGw9dC5yZXNvbHZlKG8sYCR7bn1fJHthfWApLHA9IiI7dHJ5e3A9YXdhaXQgRWUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGwpXSkpfWNhdGNoKHQpe2NvbnRpbnVlfWh0KHUsImgiKT09PXAmJmYucHVzaChhKX1yZXR1cm57c2xrczpmfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(qs);var ei=nn(qs.exports);function ti(e,t){try{return{ok:!0,value:t()}}catch(t){let r=fn(t);return{ok:!1,stage:e,cause:er(r)?r:"unknown error"}}}function ri(e,t){try{return i.validateHeaderValue(e,t),!0}catch(e){return!1}}function ni(e,t,r,n={}){let i=!0===ye(n,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let u=ti("identify streamRead",()=>e instanceof s.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!u.ok)return{error:"invalid streamRead",reason:`${u.stage} failed: ${u.cause}`};if(u.value.isReadable){if(u.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(u.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(i)return{source:e};let n=ti("setup pipeline",()=>{let n=0,i=!1,u=new s.Transform({transform(e,r,s){if(n+=e.length,n>t)return i=!0,void s(new Error(`streamRead sent more than fileSize[${t}] bytes`));s(null,e)},flush(e){if(n!==t)return i=!0,void e(new Error(`streamRead ended at ${n} bytes but fileSize is ${t}`));e()}});return s.pipeline(e,u,e=>{e&&i&&r(fn(e))}),u});return n.ok?{source:n.value}:{error:"invalid streamRead",reason:`${n.stage} failed: ${n.cause}`}}let o=ti("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(qt(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||Dr(e)||"object"==typeof e&&!1===function(e){try{return Gr(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:fn(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(dn(o.value,"unserializable")){let e=o.value.unserializable;return{error:"invalid streamRead",reason:er(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===o.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=o.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let si=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function ii(e,t){let r=ti(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Fr(e,{useLimitSafe:!0})}(t)?{ok:!0,value:fr(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!er(t))return{ok:!1};let r=Ln(t);return er(r)?"fileType"===e?ri("Content-Type",r)?{ok:!0,value:r}:{ok:!1}:{ok:!0,value:si(r)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return r.ok?{ok:r.value.ok,value:r.value.value,cause:""}:{ok:!1,value:void 0,cause:r.cause}}function ui(e){try{e&&Gr(e.pipe)&&Gr(e.destroy)&&e.destroy()}catch(e){}}function oi(e){let t=typeof e;return void 0===e||"function"===t||"symbol"===t?null:e}function li(e,t,r={}){let n=new s.Readable;n._read=()=>{},n.push(t),n.push(null);let i=ye(r,"returnType",""),u=ye(r,"returnMsg",""),o=e.response(n).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",n.readableLength);return er(i)&&o.header("Return-Type",i),er(u)&&ri("Return-Msg",u)&&o.header("Return-Msg",u),o}function ai(e,t){return 0===e.listenerCount(t)?`no listener for event[${t}]`:""}function ci(i={}){let u={useLimitSafe:!0},o=!!ye(i,"serverHapi"),l=[],a=ye(i,"port");(!Lr(a,u)||fr(a)>65535)&&(a=8080),a=fr(a);let c=ye(i,"useInert");null==c?c=!0:Dr(c)||(o||l.push("invalid useInert: must be a boolean, static files are not served"),c=!1);let d=ye(i,"pathStaticFiles");null==d?d="dist":er(d)||(c&&!o&&l.push("invalid pathStaticFiles: must be a non-empty string, static files are not served"),c=!1,d="dist");let D=ye(i,"pathUploadTemp");er(D)||(D="./uploadTemp");let M="";if(!Rr(D)){let e=On(D);dn(e,"error")&&(M=fn(e.error))}let w=ye(i,"apiName");er(w)||(w="api");let y=ye(i,"tokenType");er(y)||(y="Bearer");let g=ye(i,"sizeSlice");Lr(g,u)||(g=1048576),g=fr(g);let I=ye(i,"sizeMsg");Lr(I,u)||(I=104857600),I=fr(I);let m=ye(i,"verifyConn");if(null==m)m=()=>!0;else{let e=!1;try{e=Gr(m)}catch(e){}e||(l.push("invalid verifyConn: must be a function (sync or async), all API requests will be denied"),m=()=>!1)}let C="invalid corsOrigins: must be an array of origin strings ('*' must be the only element if present), or false to disable; CORS is disabled",p=ye(i,"corsOrigins"),f=null!=p;f?o?l.push("corsOrigins has no effect with serverHapi: the cross-origin policy is decided by the external server"):!1===p||""===p?p=null:er(p)?p=[p]:hr(p)?(p=p.filter(e=>""!==e),0===p.length&&(p=null)):(l.push(C),p=null):p=["*"];let L=ye(i,"delayForSlice","");(!Fr(L,u)||fr(L)>2147483647)&&(L=100),L=fr(L);let h=null;if(o)h=i.serverHapi;else{let e=e=>{let t=!1;return null!==e&&(t={origin:e,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}),{port:a,routes:{timeout:{server:!1,socket:!1},cors:t}}};try{h=r.server(e(p))}catch(t){if(!f||null===p)throw t;console.log("invalid corsOrigins",t),l.push(C),p=null,h=r.server(e(p))}}let b=ln(),N={tag:"w-converhp"},A=(e,...t)=>an(b,e,t,{...N,funSettle:()=>{let r=t[t.length-1];Wr(r)&&r.reject(`listener of event[${e}] error`)},funEmit:E}),x=(e,...t)=>Mn(b,e,t,{...N,funEmit:E});function E(e,...t){if("error"===e&&_t(t[0])&&"listener"===t[0].fun){let e=ye(t[0],"name",""),r=ye(t[0],"msg");return console.log(`listener of event[${e}] error`,r),b.emit("error",`listener of event[${e}] error: ${fn(r)}`)}return b.emit(e,...t)}er(M)&&x("error",`create pathUploadTemp[${D}] error: ${M}`);for(let e of l)x("error",e);let T=(e,t,r)=>{let n=Hr(),s=Hr();return s.then(t=>{void 0===t&&(t=null);let s=typeof t;if("function"===s||"symbol"===s)return n.reject("output can not be serialized"),void A("error",`event[${e}] output can not be serialized: output is a ${s}`);n.resolve(Gr(r)?r(t):t)}).catch(e=>{n.reject(e)}),function(e,t,r,n,s,i){let u=ai(e,r);er(u)?(s.reject(u),i(u)):t(r,...n,s)}(b,A,e,t,s,e=>{A("error",e)}),n};async function S(e){return T("upload",[e])}async function Z(e){return T("download",[e])}let v=`${Ln(y)} `,Y=(e,t)=>{let r=ye(e,"headers");r=_t(r)?r:"";let n=ye(e,"query");n=_t(n)?n:"";let s="",i="";return"query"===t.authFrom?(i=ye(n,"token",""),i=er(i)?i:"",er(i)&&(s=`${y} ${i}`)):(s=ye(r,"authorization",""),s=er(s)?s:"",i=s.startsWith(v)?s.slice(v.length):""),{headers:r,query:n,authorization:s,token:i}},X=(e,t)=>{let r=(r,n,s)=>function(e,t,r={}){er(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let n=ye(r,"retryable",!0),s={error:t};!1===n&&(s.retryable=!1);let i=li(e,Vn(s),{returnType:"error",returnMsg:t});return!1===n&&i.header("Return-Retryable","false"),i}(e,n,s).code(t.statusOf[r]);return{permission:()=>r("permission","permission denied"),param:e=>r("param",e,{retryable:!1}),app:e=>r("app",e),output:e=>r("output",e),packet:e=>r("packet",e),internal:e=>r("internal",e)}},j=async(e,t,r,n)=>!0!==await async function(e){let t=!1;try{t=m(e),Wr(t)&&(t=await t)}catch(r){t=!1,console.log(`verifyConn error for apiType[${ye(e,"apiType","")}]`,r),A("error",`verifyConn error for apiType[${ye(e,"apiType","")}]: ${fn(r)}`)}return!0===t}({apiType:r.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?n.permission():(A("handler",{api:r.api,headers:t.headers,query:t.query}),null),z=(e,t)=>{let r=ai(b,e.event);if(!er(r))return null;let n=t.app(r);return A("error",r),n},G=(e,t,r,n)=>{let s=function(e,t){let r={};for(let n of t){let t=ti(`read field[${n}]`,()=>ye(e,n));if(!t.ok)return{ok:!1,field:n,cause:t.cause,fields:r};r[n]=t.value}return{ok:!0,fields:r}}(e,r.fields.map(e=>e.name));if(!s.ok)return ui(ye(s.fields,"streamRead")),A("error",`download fileId[${t}] output error: can not read field[${s.field}]: ${s.cause}`),{ok:!1,res:n.output("invalid streamRead")};let i={streamRead:s.fields.streamRead};for(let e of r.fields){if("streamRead"===e.name)continue;let r=ii(e.name,s.fields[e.name]);if(r.ok){i[e.name]=r.value;continue}if(!0===e.optional&&!er(r.cause)){i[e.name]="";continue}ui(i.streamRead);let u="fileSize"===e.name?`[${fn(s.fields.fileSize)}]`:"";return A("error",`download fileId[${t}] output error: invalid ${e.name}${u}${er(r.cause)?`: ${r.cause}`:""}`),{ok:!1,res:n.output(`invalid ${e.name}`)}}return{ok:!0,v:i}},W=async(e,t,r,n)=>{let s={},i="";await r.then(e=>{s.success=e,i="success"}).catch(e=>{s.error=e,i="error"});let u=function(e,t){let r={};for(let t of Object.keys(e))r[t]=oi(e[t]);let n=Vn(r,{returnWithStateAndMsg:!0});return"success"!==ye(n,"state")?(t(ye(n,"msg","unknown error")),null):n.msg}(s,e=>{A("error",`${n} output can not be serialized: ${e}`)});return null===u?t.internal("output can not be serialized"):li(e,u,{returnType:i,returnMsg:"need to parse"})},K=e=>(t,r,n)=>{if(413===ye(n,"output.statusCode"))throw n;return A("error",`invalid request packet for ${e.api}: ${fn(n)}`),X(r,e).packet("invalid request packet").takeover()},F={path:`/${w}/main`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.main,n=X(t,r),i=Y(e,r),u=await j(e,i,r,n);if(u)return u;let o=null;try{o=await(()=>{let t=Hr(),r=[],n=0,i=!1,u=new s.Writable({write(e,t,s){if(n+=e.length,n>I)return r=[],i=!0,void s();r.push(e),s()}});return u.on("finish",()=>{}),e.payload.pipe(u),e.payload.on("end",()=>{if(i)return void t.reject("payload too large");let e=Buffer.concat(r);r=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),A("error",`receive payload error: ${fn(e)}`),t.reject(`receive payload error: ${fn(e)}`)}),e.payload.destroyed&&(A("error","receive payload error: closed before receive"),t.reject("receive payload error: closed before receive")),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${I}`}).code(413);throw e}let l=Qn(new Uint8Array(o),{returnWithStateAndMsg:!0});if("success"!==ye(l,"state")||!_t(l.msg)){let e=fn(ye(l,"msg",""));return A("error",`invalid request packet for apiMain: ${er(e)?e:"not an effective object"}`),n.packet("invalid request packet")}let a=l.msg;return W(t,n,async function(e){return T("execute",[ye(e,"func",""),ye(e,"input",null)],t=>(e.output=t,delete e.input,e))}(a),`execute func[${fn(ye(a,"func",""))}]`)}},k={path:`/${w}/ulctr`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.ulctr,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.mode","");if("check-total-hash"!==u&&"check-slices-hash"!==u&&"merge-slices-push"!==u&&"merge-slices-get"!==u)return n.param(`invalid mode[${fn(u)}] in payload`);let o=ye(e,"payload.fileHash","");if(!Jn(o))return n.param("invalid fileHash in payload");let l=ye(e,"payload.chunkTotal","");if("merge-slices-push"===u){if(!Lr(l))return n.param("invalid chunkTotal in payload");l=fr(l)}if("merge-slices-get"!==u){let e=z(r,n);if(e)return e}let a=ye(e,"payload.filename",""),c=function(e,t="unknown"){if(!er(e))return t;let r=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return r=r.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),r=r.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(r)&&(r=`_${r}`),""===r?t:r}(a,""),d=e=>_t(e)&&dn(e,"error")?`${u}: ${Ln(e.error)}`:"",M=async(e,t)=>{try{return await t()}catch(t){return A("error",`upload-controller mode[${u}] ${e} error: ${fn(t)}`),Promise.reject(`${u} failed`)}};return W(t,n,(async()=>{let t=null;if("check-total-hash"===u){let r=ye(e,"payload.fileSize","");t=await M("check total hash",()=>_s(r,g,o,D));let n=d(t);if(er(n))return Promise.reject(n);if(t.bAllHash){let e={from:"check-total-hash",filename:a,filenameSafe:c,path:t.path},r=await S(e);t={...t,msg:r}}delete t.path,t.sizeSlice=g}else if("check-slices-hash"===u){let r=ye(e,"payload.fileSliceHashs",[]);t=await M("check slices hash",()=>ei(r,o,D));let n=d(t);if(er(n))return Promise.reject(n)}else if("merge-slices-push"===u){t={queueId:await M("push merge task",()=>Ps(o,l,D))}}else if("merge-slices-get"===u){let r=ye(e,"payload.queueId",""),n=await Js(r,D,{funConsume:async e=>await S({from:"merge-slices-get",filename:a,filenameSafe:c,path:e}),funLog:e=>{A("error",e)}});t={state:n.state,msg:n.msg,queueId:r,filename:a},"error"===n.state&&er(n.reason)&&A("error",`${n.msg} for fileHash[${o}]: ${n.reason}`)}return t})(),`upload-controller mode[${u}]`)}},V={path:`/${w}/slc`,method:"POST",options:{payload:{maxBytes:g,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(r,n){let s=_n.slc,i=X(n,s),u=Y(r,s),o=await j(r,u,s,i);if(o)return o;let l=ye(u.headers,"chunk-index",""),a=ye(u.headers,"chunk-total",""),c=ye(u.headers,"package-id","");if(!Fr(l))return i.param("invalid chunkIndex in headers");if(l=fr(l),!Fr(a))return i.param("invalid chunkTotal in headers");if(a=fr(a),!Jn(c))return i.param("invalid packageId in headers");let d=z(s,i);if(d)return d;let M=e.resolve(D,`${c}_${l}`),w=t.createWriteStream(M),y=()=>{let e=Hr(),t=0,n=!1,s=!1,i=!1,u=!1;w.on("error",t=>{s||n||i||(s=!0,r.payload.unpipe(w),r.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${a}] of packageId[${c}] err`,t),A("error",`write chunk[${l+1}/${a}] of packageId[${c}] error: ${fn(t)}`),e.reject(`write chunk[${l+1}/${a}] of packageId[${c}] error`))}),w.on("close",()=>{n||s||i?Pn(M):u&&!0===w.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${a}] of packageId[${c}] done`)},L)}),r.payload.on("data",e=>{n||(t+=e.length,t>g&&(n=!0,r.payload.unpipe(w),r.payload.resume(),w.destroy()))}),r.payload.pipe(w),r.payload.on("end",()=>{u=!0,s||n&&e.reject("payload too large")});let o=t=>{i||u||s||(i=!0,w.destroy(),A("error",`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`),e.reject(`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`))};return r.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${a}] of packageId[${c}] err`,e),o(fn(e))}),r.payload.on("close",()=>{o("closed before end")}),r.payload.destroyed&&o("closed before receive"),e},I={},m="",C="";try{let e=await y();I.success=e,m="success",C="need to parse"}catch(e){if("payload too large"===e)return n.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${g}`}).code(413);I.error=e,m="error",C="need to parse"}return li(n,Vn(I),{returnType:m,returnMsg:C})}},H={path:`/${w}/dwgfn`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.dwgfn,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.fileId","");if(!er(u))return n.param("invalid fileId in payload");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);return a.ok?(ui(a.v.streamRead),W(t,n,Promise.resolve({filename:a.v.filename}),`download fileId[${u}]`)):a.res}},U={path:`/${w}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dwgf,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(s.query,"fileId","");if(u=er(u)?u:"",!er(u))return n.param("invalid fileId in query");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=a.v.fileSize,D=a.v.fileType,M=a.v.filename,w=ni(c,d,e=>{A("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===Ln(ye(e,"method","")).toLowerCase()});if(w.error)return ui(c),A("error",`download fileId[${u}] output error: ${w.reason}`),n.output(w.error);let y=t.response(w.source).type(D).header("Content-Encoding","identity").header("Content-Length",d).header("Content-Disposition",er(M)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(Ln(e)),r="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}r+=t}return r.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(M)}`:"attachment");return y}},B={path:`/${w}/dw`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dw,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.fileId","");if(!er(u))return n.param("invalid fileId in payload");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=function(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!er(e))return n("invalid str");let s="";try{let t=En.parse(e);s=Sn.stringify(t)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}(a.v.filename),D=a.v.fileSize,M=a.v.fileType,w=ni(c,D,e=>{A("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===Ln(ye(e,"method","")).toLowerCase()});return w.error?(ui(c),A("error",`download fileId[${u}] output error: ${w.reason}`),n.output(w.error)):t.response(w.source).type(M).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",D)}};let Q=null;if(o)try{h.route([F,k,V,H,U,B])}catch(e){console.log("register routes error",e),x("error",`register routes error: ${fn(e)}`)}else Q=async function(){c&&await h.register(n);let e=[];if(c){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}};e=[...e,t]}e=[...e,F,k,V,H,U,B],h.route(e),await h.start(),console.log(`Server running at: ${h.info.uri}`)}().catch(e=>{console.log("start server error",e),x("error",`start server error: ${fn(e)}`)});return b.stop=async()=>{try{Wr(Q)&&await Q,await h.stop()}catch(e){console.log("stop server error",e),A("error",`stop server error: ${fn(e)}`)}},b}function di(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYY-MM-DDTHH:mm:ssZ")}var Di=function(){return g.Date.now()},Mi=Math.max,wi=Math.min;function yi(e,t,r){var n,s,i,u,o,l,a=0,c=!1,d=!1,D=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function M(t){var r=n,i=s;return n=s=void 0,a=t,u=e.apply(i,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||d&&e-a>=i}function y(){var e=Di();if(w(e))return g(e);o=setTimeout(y,function(e){var r=t-(e-l);return d?wi(r,i-(e-a)):r}(e))}function g(e){return o=void 0,D&&n?M(e):(n=s=void 0,u)}function I(){var e=Di(),r=w(e);if(n=arguments,s=this,l=e,r){if(void 0===o)return function(e){return a=e,o=setTimeout(y,t),c?M(e):u}(l);if(d)return clearTimeout(o),o=setTimeout(y,t),M(l)}return void 0===o&&(o=setTimeout(y,t)),u}return t=lr(t)||0,S(r)&&(c=!!r.leading,i=(d="maxWait"in r)?Mi(lr(r.maxWait)||0,t):i,D="trailing"in r?!!r.trailing:D),I.cancel=function(){void 0!==o&&clearTimeout(o),a=0,n=l=s=o=void 0},I.flush=function(){return void 0===o?u:g(Di())},I}var gi=function(){try{var e=U(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ii=gi;function mi(e,t,r){"__proto__"==t&&Ii?Ii(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function Ci(e,t,r){(void 0!==r&&!P(e[t],r)||void 0===r&&!(t in e))&&mi(e,t,r)}var pi="object"==typeof exports&&exports&&!exports.nodeType&&exports,fi=pi&&"object"==typeof module&&module&&!module.nodeType&&module,Li=fi&&fi.exports===pi?g.Buffer:void 0,hi=Li?Li.allocUnsafe:void 0;function bi(e,t){if(t)return e.slice();var r=e.length,n=hi?hi(r):new e.constructor(r);return e.copy(n),n}function Ni(e){var t=new e.constructor(e.byteLength);return new fe(t).set(new fe(e)),t}function Ai(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function xi(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}var Ei=Object.create,Ti=function(){function e(){}return function(t){if(!S(t))return{};if(Ei)return Ei(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();function Si(e){return"function"!=typeof e.constructor||nt(e)?{}:Ti(Tr(e))}function Zi(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var vi=Object.prototype.hasOwnProperty;function Yi(e,t,r){var n=e[t];vi.call(e,t)&&P(n,r)&&(void 0!==r||t in e)||mi(e,t,r)}function Xi(e,t,r,n){var s=!r;r||(r={});for(var i=-1,u=t.length;++i<u;){var o=t[i],l=n?n(r[o],e[o],o,r,e):void 0;void 0===l&&(l=e[o]),s?mi(r,o,l):Yi(r,o,l)}return r}var ji=Object.prototype.hasOwnProperty;function zi(e){if(!S(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=nt(e),r=[];for(var n in e)("constructor"!=n||!t&&ji.call(e,n))&&r.push(n);return r}function Gi(e){return lt(e)?tt(e,!0):zi(e)}function Wi(e,t,r,n,s,i,u){var o=Zi(e,r),l=Zi(t,r),a=u.get(l);if(a)Ci(e,r,a);else{var c,d=i?i(o,l,r+"",e,t,u):void 0,D=void 0===d;if(D){var w=M(l),y=!w&&Ve(l),g=!w&&!y&&qe(l);d=l,w||y||g?M(o)?d=o:N(c=o)&&lt(c)?d=xi(o):y?(D=!1,d=bi(l,!0)):g?(D=!1,d=Ai(l,!0)):d=[]:jr(l)||We(l)?(d=o,We(o)?d=function(e){return Xi(e,Gi(e))}(o):S(o)&&!Z(o)||(d=Si(l))):D=!1}D&&(u.set(l,d),s(d,l,n,i,u),u.delete(l)),Ci(e,r,d)}}function Ki(e,t,r,n,s){e!==t&&Ut(t,function(i,u){if(s||(s=new ge),S(i))Wi(e,t,u,r,Ki,n,s);else{var o=n?n(Zi(e,u),i,u+"",e,t,s):void 0;void 0===o&&(o=i),Ci(e,u,o)}},Gi)}var Fi=Math.max;var ki=Ii?function(e,t){return Ii(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:Kt,Vi=ki,Hi=Date.now;var Ui=function(e){var t=0,r=0;return function(){var n=Hi(),s=16-(n-r);if(r=n,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Vi),Bi=Ui;function Qi(e,t){return Bi(function(e,t,r){return t=Fi(void 0===t?e.length-1:t,0),function(){for(var n=arguments,s=-1,i=Fi(n.length-t,0),u=Array(i);++s<i;)u[s]=n[t+s];s=-1;for(var o=Array(t+1);++s<t;)o[s]=n[s];return o[t]=r(u),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,o)}}(e,t,Kt),e+"")}function Ri(e,t,r){if(!S(r))return!1;var n=typeof t;return!!("number"==n?lt(r)&&Ue(t,r.length):"string"==n&&t in r)&&P(r[t],e)}var Oi,Pi=(Oi=function(e,t,r){Ki(e,t,r)},Qi(function(e,t){var r=-1,n=t.length,s=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(s=Oi.length>3&&"function"==typeof s?(n--,s):void 0,i&&Ri(t[0],t[1],i)&&(s=n<3?void 0:s,n=1),e=Object(e);++r<n;){var u=t[r];u&&Oi(e,u,r,s)}return e}));let Ji="w-sync-webdata";function $i(e,r={}){let n={},s=!1,i=!1,u=null;if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let o=ye(r,"fpTableTags","");er(o)||(o="./tableTags.json");let l=ye(r,"genTag");Gr(l)||(l=()=>di()+"|"+ps(6));let{emit:a,emitNow:c,clear:d}=function(e,t){let r=t=>Gr(e.listenerCount)?e.listenerCount(t):1,n={emit:(t,...r)=>e.emit(t,...r),listenerCount:r},s=(t,...n)=>{if("error"!==t)return e.emit(t,...n);let s=n[0];return $t(s)&&"listener"===s.fun&&(s={msg:`listener of event[${s.name}] error`,err:s.msg}),0===r("error")?(console.error(`[${Ji}]`,s),!1):e.emit("error",s)},i=new Set,u=(e,t,r)=>{let s=null,u=r.funEmit;s=Mn(n,e,t,{...r,tag:Ji,funEmit:(e,...t)=>(i.delete(s),u(e,...t))}),i.add(s)};return{emit:(e,...r)=>{t()||u(e,r,{funEmit:(e,...r)=>!t()&&s(e,...r)})},emitPm:(n,i,o={})=>{let l=i.pm;if(t())return;let a=!1,c=!1,d=l.resolve,D=l.reject;l.resolve=e=>{a=!0,d(e)},l.reject=e=>{a=!0,D(e)},u(n,[i],{funSettle:e=>{a||(a=!0,c=!0,D(e))},funEmit:(i,...u)=>i!==n?!!c||!t()&&s(i,...u):!t()&&(!Gr(o.beforeDispatch)||!1!==o.beforeDispatch())&&(0===r(i)?(a=!0,c=!0,D(new Error(`no listener for event[${i}]`)),!1):e.emit(i,...u))})},emitNow:(e,...t)=>an(n,e,t,{tag:Ji,funEmit:s}),clear:()=>{i.forEach(e=>{clearTimeout(e)}),i.clear()}}}(e,()=>s);function D(){let e={};try{if(t.existsSync(o)){let r=Kr(t.readFileSync(o,"utf8"));_t(r)&&(e=r)}}catch(e){a("error",{msg:"readTableTags catch",err:e})}return e}let M=()=>{let e=function(e,t=!1,r={}){let n=ye(r,"returnWithStateAndMsg",null);Dr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(br(e))return s("invalid v");let i="";try{i=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return s(Zn(e))}return n?{state:"success",msg:i}:i}(n,!1,{returnWithStateAndMsg:!0});if("success"!==ye(e,"state"))return new Error(`can not serialize tableTags: ${ye(e,"msg")}`);try{t.writeFileSync(o,e.msg,"utf8")}catch(e){return e}return u=e.msg,i=!1,null};function w(){if(s)return;let e=M();e&&a("error",{msg:"writeTableTags catch",err:e})}let y=yi(()=>{w(),a("changeTableTags",n)},200);return e.readTableTags=D,e.writeTableTags=w,e.initTableTags=function(e={},t="useInputFirst"){if(!s)if(null===e&&(e={}),$t(e)){if("useInputOnly"===t)n=e;else if("useStorageOnly"===t)n=D();else if("useInputFirst"===t)n=Pi(D(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);n=Pi(e,D())}w()}else a("error",{msg:"invalid tableTags for initTableTags",err:e})},e.setTableTags=function(e={}){s||(null===e&&(e={}),$t(e)?(n=Pi(n,e),w()):a("error",{msg:"invalid tableTags for setTableTags",err:e}))},e.getTableTags=function(){return n},e.updateTableTag=function(e){s||(er(e)?(n[e]=l(),i=!0,y()):a("error",{msg:"invalid tableName",err:e}))},e.clearSync=function(){if(s)return;y.cancel();let e=null;if(i){let r=null;try{t.existsSync(o)&&(r=t.readFileSync(o,"utf8"))}catch(e){r=void 0}null!==r&&r!==u||(e=M())}s=!0,d(),e&&c("error",{msg:"writeTableTags catch",err:e})},e}var _i=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Ae(t,ve(e)),e=Tr(e);return t}:Te;function qi(e){return xe(e,Gi,_i)}var eu=Object.prototype.hasOwnProperty;var tu=/\w*$/;var ru=I?I.prototype:void 0,nu=ru?ru.valueOf:void 0;function su(e,t,r){var n,s,i,u=e.constructor;switch(t){case"[object ArrayBuffer]":return Ni(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return function(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ai(e,r);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return(i=new(s=e).constructor(s.source,tu.exec(s))).lastIndex=s.lastIndex,i;case"[object Symbol]":return n=e,nu?Object(nu.call(n)):{}}}var iu=$e&&$e.isMap,uu=iu?Re(iu):function(e){return N(e)&&"[object Map]"==xt(e)};var ou=$e&&$e.isSet,lu=ou?Re(ou):function(e){return N(e)&&"[object Set]"==xt(e)},au="[object Arguments]",cu="[object Function]",du="[object Object]",Du={};function Mu(e,t,r,n,s,i){var u,o=1&t,l=2&t,a=4&t;if(r&&(u=s?r(e,n,s,i):r(e)),void 0!==u)return u;if(!S(e))return e;var c=M(e);if(c){if(u=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&eu.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!o)return xi(e,u)}else{var d=xt(e),D=d==cu||"[object GeneratorFunction]"==d;if(Ve(e))return bi(e,o);if(d==du||d==au||D&&!s){if(u=l||D?{}:Si(e),!o)return l?function(e,t){return Xi(e,_i(e),t)}(e,function(e,t){return e&&Xi(t,Gi(t),e)}(u,e)):function(e,t){return Xi(e,ve(e),t)}(e,function(e,t){return e&&Xi(t,at(t),e)}(u,e))}else{if(!Du[d])return s?e:{};u=su(e,d,o)}}i||(i=new ge);var w=i.get(e);if(w)return w;i.set(e,u),lu(e)?e.forEach(function(n){u.add(Mu(n,t,r,n,e,i))}):uu(e)&&e.forEach(function(n,s){u.set(s,Mu(n,t,r,s,e,i))});var y=c?void 0:(a?l?qi:ct:l?Gi:at)(e);return $r(y||e,function(n,s){y&&(n=e[s=n]),Yi(u,s,Mu(n,t,r,s,e,i))}),u}Du[au]=Du["[object Array]"]=Du["[object ArrayBuffer]"]=Du["[object DataView]"]=Du["[object Boolean]"]=Du["[object Date]"]=Du["[object Float32Array]"]=Du["[object Float64Array]"]=Du["[object Int8Array]"]=Du["[object Int16Array]"]=Du["[object Int32Array]"]=Du["[object Map]"]=Du["[object Number]"]=Du[du]=Du["[object RegExp]"]=Du["[object Set]"]=Du["[object String]"]=Du["[object Symbol]"]=Du["[object Uint8Array]"]=Du["[object Uint8ClampedArray]"]=Du["[object Uint16Array]"]=Du["[object Uint32Array]"]=!0,Du["[object Error]"]=Du[cu]=Du["[object WeakMap]"]=!1;function wu(e){return Mu(e,5)}function yu(e={}){let t=ln(),r=Object.create(null),n=null,s=new Set,i=new Set,u=!1,o=ye(e,"timeAlive");Lr(o)||(o=1e4),o=fr(o),o=Math.min(o,tn);let l=ye(e,"timeDetect");return Lr(l)||(l=50),l=fr(l),l=Math.min(l,tn),t.trigger=function(e,a){if(!u)if(er(e)){if(!dn(r,e)){let n=setTimeout(()=>{s.delete(n),dn(r,e)&&i.add(e),an(t,"message",[{eventName:"enter",key:e,data:a,now:ys(r)}],{tag:"alive"})},1);s.add(n)}r[e]={data:a,time:Date.now()},u||null===n&&(n=setInterval(()=>{_r(r,(e,n)=>{if(Date.now()-e.time>o){let e=wu(r[n]);if(delete r[n],i.delete(n),an(t,"message",[{eventName:"leave",key:n,data:e.data,now:ys(r)}],{tag:"alive"}),u)return!1}}),u||_t(r)||(clearInterval(n),n=null)},l))}else console.log("trigger need key")},t.get=function(){let e=[];return _r(r,(t,r)=>{e.push({key:r,data:t.data})}),e=wu(e),e},t.clear=function(){if(u)return[];u=!0,null!==n&&(clearInterval(n),n=null);for(let e of s)clearTimeout(e);s.clear();let e=[];return _r(r,(t,r)=>{i.has(r)&&e.push({key:r,data:t.data})}),e=wu(e),r=Object.create(null),i.clear(),e},t}function gu(e,t={}){let r=t.isCleared;Gr(r)||(r=()=>!1);let n=t.onDeliver;Gr(n)||(n=null);let s=e=>{console.error(`[w-serv-broadcast] ${e.msg}`,e.err)},i=t=>(i,...u)=>{let o=u[0];if("error"===i&&_t(o)&&"listener"===o.fun){let t={msg:`listener of event[${o.name}] error`,err:o.msg};return r()?(s(t),!1):e.emit("error",t)}return(!t||!r())&&("error"===i&&0===(t=>Gr(e.listenerCount)?e.listenerCount(t):1)("error")?(s(o),!1):(null!==n&&n(i,u),e.emit(i,...u)))},u=i(!0),o=i(!1),l=(t,...n)=>{r()||Mn(e,t,n,{tag:"w-serv-broadcast",funEmit:u})};return l.final=(t,...r)=>{Mn(e,t,r,{tag:"w-serv-broadcast",funEmit:o})},l}function Iu(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let r=new Map,n=!1,s=new Map,i=gu(e,{isCleared:()=>n,onDeliver:(e,t)=>{"clientEnter"===e?s.set(t[0],t[1]):"clientLeave"===e&&s.delete(t[0])}}),u=yu();u.on("message",function({eventName:e,key:t,data:r,now:n}){"enter"===e?i("clientEnter",t,r):"leave"===e&&(s.has(t)&&s.set(t,r),i("clientLeave",t,r)),i("clientChange",n)});let o=function(e,t,s){if(!n&&"[sys:polling]"===e)try{let e=ye(t,"clientId");if(!er(e))return void s.reject("[sys:polling] invalid clientId");let n=r.get(e)||[];r.set(e,[]),u.trigger(e,t),s.resolve(n)}catch(e){i("error",{msg:"[sys:polling] error",err:e}),s.reject("[sys:polling] error")}},l=null;return e.getClients=u.get,e.getMessages=()=>Object.fromEntries(Array.from(r,([e,t])=>[e,wu(t)])),e.broadcast=e=>{if(n)return;let t={mode:"broadcast",data:wu(e)};r.forEach(e=>{e.push(t)})},e.clearBroadcast=()=>{if(n)return;n=!0,null!==l&&(clearInterval(l),l=null),e.off("execute",o);let t=new Map(Ot(u.get(),e=>[e.key,e.data]));u.clear();let a=s.size;for(let[e,r]of Array.from(s))a--,i.final("clientLeave",e,t.has(e)?t.get(e):r),i.final("clientChange",a);s.clear(),r=new Map},e.on("execute",o),l=setInterval(()=>{let e=new Set(Ot(u.get(),"key"));for(let t of Array.from(r.keys()))e.has(t)||r.delete(t)},1e3),e}let mu=(e,t)=>{let r={};return _r(e,e=>{let n=e,s=ye(t,e,"");er(s)&&(r[n]=s)}),r};function Cu(e){_r(e,({ev:e,name:t,h:r})=>{try{Gr(e.removeListener)?e.removeListener(t,r):Gr(e.off)&&e.off(t,r)}catch(e){}})}function pu(e,t){return 0!==ys(e)&&(!!_t(t)&&(_r(e,e=>{let r=t[e];if(!r)throw new Error(`invalid kpOrm[${e}]`);if(!Gr(r.on))throw new Error(`kpOrm[${e}] can not listen to change events`)}),!0))}function fu(e,t,r,n={}){if(!_t(e))throw new Error("invalid instWConverServer");if(!pu(t,r))return e;let s=ye(n,"genTag");Gr(s)||(s=()=>di()+"|"+ps(6));let i={};_r(t,e=>{i[e]=s()}),_r(i,e=>{if(!er(e))throw new Error("invalid opt.genTag")});let u=[];try{_r(t,t=>{let n=r[t],s=()=>{e.updateTableTag(t)};try{n.on("change",s)}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}u.push({ev:n,name:"change",h:s})});let n=r=>{e.broadcast({mode:"syncKpTable",data:mu(t,r)})};e.on("changeTableTags",n),u.push({ev:e,name:"changeTableTags",h:n})}catch(e){throw Cu(u),e}let o=e.clearSync;return e.clearSync=()=>{Cu(u),u=[],o()},e.initTableTags(i,"useInputOnly"),e}function Lu(e,t){return!!(null==e?0:e.length)&&bs(e,t,0)>-1}function hu(e,t,r){for(var n=-1,s=null==e?0:e.length;++n<s;)if(r(t,e[n]))return!0;return!1}var bu=wt&&1/he(new wt([,-0]))[1]==1/0?function(e){return new wt(e)}:function(){};function Nu(e){return e&&e.length?function(e,t,r){var n=-1,s=Lu,i=e.length,u=!0,o=[],l=o;if(r)u=!1,s=hu;else if(i>=200){var a=t?null:bu(e);if(a)return he(a);u=!1,s=Ce,l=new Ie}else l=t?[]:o;e:for(;++n<i;){var c=e[n],d=t?t(c):c;if(c=r||0!==c?c:0,u&&d==d){for(var D=l.length;D--;)if(l[D]===d)continue e;t&&l.push(d),o.push(c)}else s(l,d,r)||(l!==o&&l.push(d),o.push(c))}return o}(e):[]}function Au(e,t,r,n){for(var s=r-1,i=e.length;++s<i;)if(n(e[s],t))return s;return-1}var xu=Array.prototype.splice;function Eu(e,t){return e&&e.length&&t&&t.length?function(e,t,r,n){var s=n?Au:bs,i=-1,u=t.length,o=e;for(e===t&&(t=xi(t)),r&&(o=oe(e,Re(r)));++i<u;)for(var l=0,a=t[i],c=r?r(a):a;(l=s(o,c,l,n))>-1;)o!==e&&xu.call(o,l,1),xu.call(e,l,1);return e}(e,t):e}let Tu=["__proto__","constructor","prototype"];function Su(e){return M(t=e)?oe(t,Me):A(t)?[t]:xi(ue(de(t)));var t}function Zu(e){let t=Su(e);if(0===t.length)return!1;for(let e of t)if(""===e||Tu.includes(e))return!1;return!0}const vu=/^[\p{L}_][\p{L}\p{M}\p{N}_]*$/u,Yu=["prototype","length"];function Xu(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||null===t)&&(0===Object.getOwnPropertySymbols(e).length&&Object.getOwnPropertyNames(e).length===Object.keys(e).length)}function ju(e){return"string"==typeof e?e.length<=1024&&e.indexOf("\0")<0:"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)}function zu(e,t={}){try{return function(e,t){let r=e=>({ok:!1,reason:e});if(void 0===e)return!0===t.requireKey?r("emptyFind"):{ok:!0,find:e};if(!Xu(e))return r("notObject");let n=Object.keys(e);if(n.length>64)return r("tooManyKeys");if(!0===t.requireKey&&0===n.length)return r("emptyFind");let s={},i=0;for(let t of n){if(t.length>128||Yu.includes(t)||t in Object.prototype||!vu.test(t))return r("badKey");let n=e[t];if(ju(n))s[t]=n;else{if(!Xu(n))return r("badValue");{let e=Object.keys(n);if(1!==e.length||"$in"!==e[0])return r("badOperator");let u=n.$in;if(!Array.isArray(u)||Object.getOwnPropertySymbols(u).length>0)return r("badIn");let o=u.length;if(i+=o,i>1e3)return r("tooManyIn");if(Object.getOwnPropertyNames(u).length!==o+1)return r("badIn");let l=[];for(let e=0;e<o;e++){if(!Object.prototype.hasOwnProperty.call(u,e))return r("badIn");let t=u[e];if(!ju(t))return r("badIn");l.push(t)}s[t]=Object.freeze({$in:Object.freeze(l)})}}}return{ok:!0,find:Object.freeze(s)}}(e,t)}catch(e){return{ok:!1,reason:"notObject"}}}let Gu=e=>null!=e,Wu=["select","delAll"];function Ku(e={}){let t=ye(e,"getUserIdByToken",null);if(Gu(t)&&!Gr(t))throw new Error("invalid opt.getUserIdByToken");Gr(t)||(t=async()=>"");let r=ye(e,"useDbOrm",null);Dr(r)||(r=!1);let n=null;if(r&&(n=ye(e,"operOrm",null),!Gr(n)))throw new Error("invalid opt.operOrm when useDbOrm=true");let s=[];if(r){if(s=ye(e,"tableNames",null),!hr(s))throw new Error("invalid opt.tableNamesExec when useDbOrm=true");_r(s,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesExec[${t}] when useDbOrm=true`)}),s=[...s]}let i=[];if(r){if(i=ye(e,"methods",null),null===i)i=["select","insert","save","del"];else if(!hr(i))throw new Error("invalid opt.methodsExec when useDbOrm=true");_r(i,(e,t)=>{if(!er(e))throw new Error(`invalid opt.methodsExec[${t}] when useDbOrm=true`)}),i=[...i]}let u=null;if(r&&(u=ye(e,"authorizeExec",null),!Gr(u)))throw new Error("invalid opt.authorizeExec when useDbOrm=true");let o=ye(e,"kpFunExt",null);if(Gu(o)&&!$t(o))throw new Error("invalid opt.kpFunExt");$t(o)||(o={}),_r(o,(e,t)=>{if(!Gr(e))throw new Error(`invalid opt.kpFunExt[${t}]`)});let l=ye(e,"kpFunSys",null),a=[];r&&(_r(s,e=>{_r(i,t=>{a.push(`${e}.${t}`)})}),a=Nu(a)),_r(a,e=>{if(!Zu(e))throw new Error(`table operation[${e}] can not be bound by the client`)});let c=Nu(Ot(a,e=>Su(e)[0]));_r(o,(e,t)=>{if(t.startsWith("[sys:"))throw new Error(`kpFunExt[${t}] can not use the reserved prefix [sys:`);if(!Zu(t))throw new Error(`kpFunExt[${t}] can not be bound by the client`);let r=Su(t)[0];if(c.includes(r))throw new Error(`kpFunExt[${t}] conflicts with the table operations of table[${r}]`)});let d=function(e){let t=()=>({leaf:null,kids:new Map}),r=e=>{if(null!==e.leaf)return e.leaf;for(let t of e.kids.values()){let e=r(t);if(null!==e)return e}return null},n=t();for(let s of e){let e=n;for(let r of Su(s)){if(null!==e.leaf)return[e.leaf,s];e.kids.has(r)||e.kids.set(r,t()),e=e.kids.get(r)}if(null===e.leaf){if(e.kids.size>0)return[r(e),s];e.leaf=s}else if(e.leaf!==s)return[e.leaf,s]}return null}([...a,...at(o)]);if(null!==d){let e=e=>a.includes(e)?"table operation":"kpFunExt";throw new Error(`${e(d[1])}[${d[1]}] conflicts with ${e(d[0])}[${d[0]}] on the client binding path`)}return{getUserIdByToken:t,useDbOrm:r,operOrm:n,tableNames:s,methods:i,authorizeExec:u,kpFunExt:o,kpFunSys:l,pathNames:a}}function Fu(e,t={}){if(!_t(e))throw new Error("invalid instWConverServer");let{getUserIdByToken:r,useDbOrm:n,operOrm:s,tableNames:i,methods:u,authorizeExec:o,kpFunExt:l,kpFunSys:a}=Ku(t),c={};async function d(t,n,s){if(!er(t))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!dn(n,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=Ln(n.__sysToken__),!dn(n,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;if(n=n.__sysInputArgs__,!Array.isArray(n))return s.resolve({state:"error",msg:"invalid input"}),s;let u="";try{u=await r(i)}catch(t){return s.resolve({state:"error",msg:t}),an(e,"error",[t]),s}if(er(u)||(u=""),"[sys:getFuncList]"===t){let e=at(c);e=function(e,t){if(!Er(e))return[];if(($t(t)||wr(t)||qt(t)||Dr(t))&&(t=[t]),!Er(t))return e;let r=wu(e);return Eu(r,t),r}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!Object.prototype.hasOwnProperty.call(c,t))return s.resolve({state:"error",msg:`invalid func[${t}]`}),s;let o=c[t];try{let e=await Ur(o)(u,...n);s.resolve(e)}catch(e){s.resolve({state:"error",msg:`call func[${t}] has an error: ${fn(e)}`})}return s}return n&&(c=function(e,t,r,n){let s={};return _r(e,e=>{_r(t,t=>{s[`${e}.${t}`]=async function(s,i){if(Wu.includes(t)){let e=zu(i);if(!e.ok)return Promise.reject(`invalid find[${e.reason}]`);i=e.find}return!0!==await n({userId:s,tableName:e,methodName:t,input:i})?Promise.reject("permission denied"):await r(s,e,t,i)}})}),s}(i,u,s,o)),_r(l,(e,t)=>{c[t]=e}),_t(a)&&_r(a,(e,t)=>{c[t]=e}),e.on("execute",function(t,r,n){d(t,r,n).catch(r=>{n.resolve({state:"error",msg:`execFun func[${t}] has an error: ${fn(r)}`}),an(e,"error",[r])})}),e}let ku=e=>null!=e;function Vu(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let{fpTableTags:r,genTag:n,useDbOrm:s,kpOrm:i,tableNamesSync:u,optExec:o}=function(e={}){let t=ye(e,"fpTableTags",null);if(ku(t)&&!er(t))throw new Error("invalid opt.fpTableTags");er(t)||(t="./tableTags.json");let r=ye(e,"genTag",null);if(ku(r)&&!Gr(r))throw new Error("invalid opt.genTag");Gr(r)||(r=()=>di()+"|"+ps(6));let n=ye(e,"useDbOrm",null),s=Dr(n);s||(n=!1);let i=ye(e,"kpOrm",null),u=ye(e,"operOrm",null),o=ye(e,"tableNamesExec",null),l=ye(e,"methodsExec",null),a=ye(e,"authorizeExec",null),c=ye(e,"tableNamesSync",null),d=ye(e,"getUserIdByToken",null),D=ye(e,"kpFunExt",null);s||_r({operOrm:u,tableNamesExec:o,methodsExec:l,authorizeExec:a,kpOrm:i,tableNamesSync:c},(e,t)=>{if(null!==e)throw new Error(`invalid opt.useDbOrm when opt.${t} is given`)});if(n&&!$t(i))throw new Error("invalid opt.kpOrm when useDbOrm=true");if(n&&ku(c)){if(!hr(c))throw new Error("invalid opt.tableNamesSync when useDbOrm=true");_r(c,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesSync[${t}] when useDbOrm=true`)}),c=[...c]}let M=Ku({getUserIdByToken:d,useDbOrm:n,operOrm:u,tableNames:o,methods:l,authorizeExec:a,kpFunExt:D}),w=!1;return n&&(w=pu(c,i)),w&&_r(c,e=>{if(!M.tableNames.includes(e)||!M.methods.includes("select"))throw new Error(`invalid opt.tableNamesSync when table operation[${e}.select] does not exist`)}),{fpTableTags:t,genTag:r,useDbOrm:n,kpOrm:i,tableNamesSync:c,optExec:{getUserIdByToken:M.getUserIdByToken,useDbOrm:M.useDbOrm,operOrm:M.operOrm,tableNames:M.tableNames,methods:M.methods,authorizeExec:M.authorizeExec,kpFunExt:M.kpFunExt}}}(t);e=new Iu(e=new $i(e,{fpTableTags:r,genTag:n}));let l={"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:mu(u,t)}}};try{e=new Fu(e,{...o,kpFunSys:l}),s&&(e=new fu(e,u,i,{genTag:n}))}catch(t){throw e.clearBroadcast(),e.clearSync(),t}return e}function Hu(e={}){let t=ln(),s=ye(e,"port");(!Lr(s,{useLimitSafe:!0})||fr(s)>65535)&&(s=8080),s=fr(s);let i=(t,r,n)=>{let s=ye(e,t);if(null==s)return r;if(!n(s))throw new Error(`invalid opt.${t}`);return s},u=i("corsOrigins",["http://localhost"],e=>!1===e||qt(e)||hr(e));!1===u&&(u=[]),qt(u)&&(u=[u]),u=u.filter(e=>""!==e);let o=i("useInert",!0,Dr),l=i("pathStaticFiles","dist",er),a=ye(e,"apis");Er(a)||(a=[]);let c=ye(e,"fpTableTags",null);null==c&&(c=ye(e,"fnTableTags",null));let d=ye(e,"useShowLog");Dr(d)||(d=!0);let D=!0,M=[],w=e=>{D?M.push(e):0!==t.listenerCount("error")?an(t,"error",[e],{tag:"w-serv-hapi"}):console.error("[w-serv-hapi]",e)},y=!1;u.length>0&&(y={origin:u,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]});let g=new r.Server({port:s,routes:{timeout:{server:!1,socket:!1},cors:y}}),I=new ci({serverHapi:g,apiName:ye(e,"apiName"),pathUploadTemp:ye(e,"pathUploadTemp"),tokenType:ye(e,"tokenType"),sizeSlice:ye(e,"sizeSlice"),sizeMsg:ye(e,"sizeMsg"),verifyConn:ye(e,"verifyConn"),delayForSlice:ye(e,"delayForSlice")});I.on("error",w),I.on("clientChange",function(e){d&&console.log(`Server[port:${s}]: now clients: ${e}`)});let m=()=>{for(let e of["clearBroadcast","clearSync"])if(Gr(I[e]))try{I[e]()}catch(e){w(e)}};I=new Vu(I,{...e,fpTableTags:c});let C=new Promise(e=>{setTimeout(()=>{D=!1,e();let t=M;M=[];for(let e of t)w(e)},1)}),p=!1,f=(async()=>{await C,o&&await g.register(n);let e=[];return o&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}}]),e=[...e,...a],g.route(e),await g.start(),p=!0,d&&console.log(`Server running at: ${g.info.uri}`),g})();f.catch(e=>{m(),w(e)});let L=null;return t.ready=()=>f,t.stop=()=>(null!==L||(L=(async()=>{if(await f.catch(()=>{}),m(),p)try{await g.stop()}catch(e){w(e)}})()),L),t.getServer=async()=>g,t.getInstWConverServer=async()=>I,t}function Uu(e){try{e instanceof Promise&&Promise.prototype.then.call(e,void 0,()=>{})}catch(e){}}function Bu(e,t){let r=Hr(),n=!1;try{let t=function(e,t=!1){let r=[],n=!1;try{if(Array.isArray(e)){let t=e.length;r.length=t;for(let n=0;n<t;n++)n in e&&(r[n]=e[n])}else{if(t||!$t(e)&&!hr(e))return null;{n=!0;let t=Object.keys(e);for(let n=0;n<t.length;n++)r.push({k:t[n],v:e[t[n]]})}}}catch(e){throw r.forEach(e=>{Uu(n?e.v:e)}),e}return{items:r,useObj:n}}(e);if(null===t)return r.reject("rs is not an array or object"),r;e=t.items,n=t.useObj}catch(e){return r.reject(e),r}Gr(t)||(_r(e,e=>{Uu(n?e.v:e)}),t=function(e){return e});let s=Gr(t),i=-1,u=[];return e.reduce(function(e,r){return e.then(function(e){u.push(e),i+=1;let o=i,l=r;return n&&(o=r.k,l=r.v),s?t(l,o):l})},Promise.resolve()).then(function(e){var t,n,s,i;u.push(e),i=null==(t=u)?0:t.length,u=i?fs(t,(n=s||void 0===n?1:dr(n))<0?0:n,i):[],r.resolve(u)}).catch(function(e){r.reject(e)}),r}function Qu(e){let t="procOrm does not authorize users, authorize where procOrm is exposed to clients",r=[["useCheckUser",t],["getUserById",t],["useExcludeWhenNotAdmin","procOrm does not filter select results by user, use addFunPostProcessing if needed"]];for(let[t,n]of r){let r=ye(e,t);if(null!=r&&!1!==r)throw new Error(`opt.${t} has been removed, ${n}`)}}let Ru={backup:async function(e){if(!_t(e))throw console.log("woItems",e),new Error("invalid woItems");return await Bu(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,r,n,s=!1){if(!Pr(e))throw console.log("fp",e),new Error("fp is not exist");if(!_t(r))throw console.log("woItems",r),new Error("invalid woItems");Gr(n)||(n=null),Dr(s)||(s=!1);let i=t.readFileSync(e,"utf8");i=Ws(i);let u=Kr(i);if(!Er(u))throw new Error("invalid backup data, need a non-empty array");_r(u,(e,t)=>{let n=ye(e,"name");if(!er(n))throw new Error(`invalid backup data, rs[${t}].name is not a string`);if(!Object.prototype.hasOwnProperty.call(r,n))throw new Error(`invalid backup data, table[${n}] is not in woItems`)}),Gr(n)&&n(),await Bu(u,async e=>{console.log("recover...",e.name),s&&(console.log("needCreateStorage"),await r[e.name].createStorage());let t=null;return ys(e.data)>0&&(t=await r[e.name].insert(e.data)),t})}};var Ou=$e&&$e.isRegExp,Pu=Ou?Re(Ou):function(e){return N(e)&&"[object RegExp]"==b(e)},Ju=/\w*$/;function $u(e,t){var r=30,n="...";if(S(t)){var s="separator"in t?t.separator:s;r="length"in t?dr(t.length):r,n="omission"in t?ce(t.omission):n}var i=(e=de(e)).length;if(ts(e)){var u=Gs(e);i=u.length}if(r>=i)return e;var o=r-ws(n);if(o<1)return n;var l=u?Ls(u,0,o).join(""):e.slice(0,o);if(void 0===s)return l+n;if(u&&(o+=l.length-o),Pu(s)){if(e.slice(o).search(s)){var a,c=l;for(s.global||(s=RegExp(s.source,de(Ju.exec(s))+"g")),s.lastIndex=0;a=s.exec(c);)var d=a.index;l=l.slice(0,void 0===d?o:d)}}else if(e.indexOf(ce(s),o)!=o){var D=l.lastIndexOf(s);D>-1&&(l=l.slice(0,D))}return l+n}function _u(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}const qu=[];for(let e=0;e<256;++e)qu.push((e+256).toString(16).slice(1));const eo=new Uint8Array(16);function to(){return crypto.getRandomValues(eo)}const ro={};function no(e,t,r){let n;if(e)n=so(e.random??e.rng?.()??to(),e.msecs,e.seq,t,r);else{const e=Date.now(),s=to();!function(e,t,r){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=io(r),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(ro,e,s),n=so(s,ro.msecs,ro.seq,t,r)}return t??function(e,t=0){return(qu[e[t+0]]+qu[e[t+1]]+qu[e[t+2]]+qu[e[t+3]]+"-"+qu[e[t+4]]+qu[e[t+5]]+"-"+qu[e[t+6]]+qu[e[t+7]]+"-"+qu[e[t+8]]+qu[e[t+9]]+"-"+qu[e[t+10]]+qu[e[t+11]]+qu[e[t+12]]+qu[e[t+13]]+qu[e[t+14]]+qu[e[t+15]]).toLowerCase()}(n)}function so(e,t,r,n,s=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(n){if(s<0||s+16>n.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`)}else n=new Uint8Array(16),s=0;return t??=Date.now(),r??=io(e),n[s++]=t/1099511627776&255,n[s++]=t/4294967296&255,n[s++]=t/16777216&255,n[s++]=t/65536&255,n[s++]=t/256&255,n[s++]=255&t,n[s++]=112|r>>>28&15,n[s++]=r>>>20&255,n[s++]=128|r>>>14&63,n[s++]=r>>>6&255,n[s++]=r<<2&255|3&e[10],n[s++]=e[11],n[s++]=e[12],n[s++]=e[13],n[s++]=e[14],n[s++]=e[15],n}function io(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function uo(){return no()}var oo={exports:{}},lo={},ao={exports:{}},co={};function Do(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Mo=/javascript\s*\:/gim;co.whiteList=Do(),co.getDefaultWhiteList=Do,co.onAttr=function(e,t,r){},co.onIgnoreAttr=function(e,t,r){},co.safeAttrValue=function(e,t){return Mo.test(t)?"":t};var wo={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var yo=function(e,t){";"!==(e=wo.trimRight(e))[e.length-1]&&(e+=";");var r=e.length,n=!1,s=0,i=0,u="";function o(){if(!n){var r=wo.trim(e.slice(s,i)),o=r.indexOf(":");if(-1!==o){var l=wo.trim(r.slice(0,o)),a=wo.trim(r.slice(o+1));if(l){var c=t(s,u.length,l,a,r);c&&(u+=c+"; ")}}}s=i+1}for(;i<r;i++){var l=e[i];if("/"===l&&"*"===e[i+1]){var a=e.indexOf("*/",i+2);if(-1===a)break;s=(i=a+1)+1,n=!1}else"("===l?n=!0:")"===l?n=!1:";"===l?n||o():"\n"===l&&o()}return wo.trim(u)},go=co,Io=yo;function mo(e){return null==e}function Co(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).whiteList=e.whiteList||go.whiteList,e.onAttr=e.onAttr||go.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||go.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||go.safeAttrValue,this.options=e}Co.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onAttr,s=t.onIgnoreAttr,i=t.safeAttrValue;return Io(e,function(e,t,u,o,l){var a=r[u],c=!1;if(!0===a?c=a:"function"==typeof a?c=a(o):a instanceof RegExp&&(c=a.test(o)),!0!==c&&(c=!1),o=i(u,o)){var d,D={position:t,sourcePosition:e,source:l,isWhite:c};return c?mo(d=n(u,o,D))?u+":"+o:d:mo(d=s(u,o,D))?void 0:d}})};var po=Co;!function(e,t){var r=co,n=po;for(var s in(t=e.exports=function(e,t){return new n(t).process(e)}).FilterCSS=n,r)t[s]=r[s];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(ao,ao.exports);var fo=ao.exports,Lo={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},ho=fo.FilterCSS,bo=fo.getDefaultWhiteList,No=Lo;function Ao(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var xo=new ho;function Eo(e){return e.replace(To,"&lt;").replace(So,"&gt;")}var To=/</g,So=/>/g,Zo=/"/g,vo=/&quot;/g,Yo=/&#([a-zA-Z0-9]*);?/gim,Xo=/&colon;?/gim,jo=/&newline;?/gim,zo=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,Go=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Wo=/u\s*r\s*l\s*\(.*/gi;function Ko(e){return e.replace(Zo,"&quot;")}function Fo(e){return e.replace(vo,'"')}function ko(e){return e.replace(Yo,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function Vo(e){return e.replace(Xo,":").replace(jo," ")}function Ho(e){for(var t="",r=0,n=e.length;r<n;r++)t+=e.charCodeAt(r)<32?" ":e.charAt(r);return No.trim(t)}function Uo(e){return e=Ho(e=Vo(e=ko(e=Fo(e))))}function Bo(e){return e=Eo(e=Ko(e))}lo.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},lo.getDefaultWhiteList=Ao,lo.onTag=function(e,t,r){},lo.onIgnoreTag=function(e,t,r){},lo.onTagAttr=function(e,t,r){},lo.onIgnoreTagAttr=function(e,t,r){},lo.safeAttrValue=function(e,t,r,n){if(r=Uo(r),"href"===t||"src"===t){if("#"===(r=No.trim(r)))return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"tel:"!==r.substr(0,4)&&"data:image/"!==r.substr(0,11)&&"ftp://"!==r.substr(0,6)&&"./"!==r.substr(0,2)&&"../"!==r.substr(0,3)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===t){if(zo.lastIndex=0,zo.test(r))return""}else if("style"===t){if(Go.lastIndex=0,Go.test(r))return"";if(Wo.lastIndex=0,Wo.test(r)&&(zo.lastIndex=0,zo.test(r)))return"";!1!==n&&(r=(n=n||xo).process(r))}return r=Bo(r)},lo.escapeHtml=Eo,lo.escapeQuote=Ko,lo.unescapeQuote=Fo,lo.escapeHtmlEntities=ko,lo.escapeDangerHtml5Entities=Vo,lo.clearNonPrintableCharacter=Ho,lo.friendlyAttrValue=Uo,lo.escapeAttrValue=Bo,lo.onIgnoreTagStripAll=function(){return""},lo.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),n=[],s=!1;return{onIgnoreTag:function(i,u,o){if(function(t){return!!r||-1!==No.indexOf(e,t)}(i)){if(o.isClosing){var l="[/removed]",a=o.position+10;return n.push([!1!==s?s:o.position,a]),s=!1,l}return s||(s=o.position),"[removed]"}return t(i,u,o)},remove:function(e){var t="",r=0;return No.forEach(n,function(n){t+=e.slice(r,n[0]),r=n[1]}),t+=e.slice(r)}}},lo.stripCommentTag=function(e){for(var t="",r=0;r<e.length;){var n=e.indexOf("\x3c!--",r);if(-1===n){t+=e.slice(r);break}t+=e.slice(r,n);var s=e.indexOf("--\x3e",n);if(-1===s)break;r=s+3}return t},lo.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},lo.attributeWrapSign='"',lo.cssFilter=xo,lo.getDefaultCSSWhiteList=bo;var Qo={},Ro=Lo;function Oo(e){var t,r=Ro.spaceIndex(e);return t=-1===r?e.slice(1,-1):e.slice(1,r+1),"/"===(t=Ro.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Po(e){return"</"===e.slice(0,2)}var Jo=/[^a-zA-Z0-9\\_:.-]/gim;function $o(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"="===r?t:-1}}function _o(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"'"===r||'"'===r?t:-1}}function qo(e,t){for(;t>0;t--){var r=e[t];if(" "!==r)return"="===r?t:-1}}function el(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}Qo.parseTag=function(e,t,r){var n="",s=0,i=!1,u=!1,o=0,l=e.length,a="",c="";e:for(o=0;o<l;o++){var d=e.charAt(o);if(!1===i){if("<"===d){i=o;continue}}else if(!1===u){if("<"===d){n+=r(e.slice(s,o)),i=o,s=o;continue}if(">"===d||o===l-1){n+=r(e.slice(s,i)),a=Oo(c=e.slice(i,o+1)),n+=t(i,n.length,a,c,Po(c)),s=o+1,i=!1;continue}if('"'===d||"'"===d)for(var D=1,M=e.charAt(o-D);""===M.trim()||"="===M;){if("="===M){u=d;continue e}M=e.charAt(o-++D)}}else if(d===u){u=!1;continue}}return s<l&&(n+=r(e.substr(s))),n},Qo.parseAttr=function(e,t){var r=0,n=0,s=[],i=!1,u=e.length;function o(e,r){if(!((e=(e=Ro.trim(e)).replace(Jo,"").toLowerCase()).length<1)){var n=t(e,r||"");n&&s.push(n)}}for(var l=0;l<u;l++){var a,c=e.charAt(l);if(!1!==i||"="!==c)if(!1===i||l!==n)if(/\s|\n|\t/.test(c)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(a=$o(e,l))){o(Ro.trim(e.slice(r,l))),i=!1,r=l+1;continue}l=a-1;continue}if(-1===(a=qo(e,l-1))){o(i,el(Ro.trim(e.slice(r,l)))),i=!1,r=l+1;continue}}else;else{if(-1===(a=e.indexOf(c,l+1)))break;o(i,Ro.trim(e.slice(n+1,a))),i=!1,r=(l=a)+1}else i=e.slice(r,l),r=l+1,n='"'===e.charAt(r)||"'"===e.charAt(r)?r:_o(e,l+1)}return r<e.length&&(!1===i?o(e.slice(r)):o(i,el(Ro.trim(e.slice(r))))),Ro.trim(s.join(" "))};var tl=fo.FilterCSS,rl=lo,nl=Qo,sl=nl.parseTag,il=nl.parseAttr,ul=Lo;function ol(e){return null==e}function ll(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=rl.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(e){return e.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}(e.whiteList||e.allowList):e.whiteList=rl.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":rl.attributeWrapSign,e.onTag=e.onTag||rl.onTag,e.onTagAttr=e.onTagAttr||rl.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||rl.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||rl.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||rl.safeAttrValue,e.escapeHtml=e.escapeHtml||rl.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new tl(e.css))}ll.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,r=t.options,n=r.whiteList,s=r.onTag,i=r.onIgnoreTag,u=r.onTagAttr,o=r.onIgnoreTagAttr,l=r.safeAttrValue,a=r.escapeHtml,c=t.attributeWrapSign,d=t.cssFilter;r.stripBlankChar&&(e=rl.stripBlankChar(e)),r.allowCommentTag||(e=rl.stripCommentTag(e));var D=!1;r.stripIgnoreTagBody&&(D=rl.StripTagBody(r.stripIgnoreTagBody,i),i=D.onIgnoreTag);var M=sl(e,function(e,t,r,D,M){var w={sourcePosition:e,position:t,isClosing:M,isWhite:Object.prototype.hasOwnProperty.call(n,r)},y=s(r,D,w);if(!ol(y))return y;if(w.isWhite){if(w.isClosing)return"</"+r+">";var g=function(e){var t=ul.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var r="/"===(e=ul.trim(e.slice(t+1,-1)))[e.length-1];return r&&(e=ul.trim(e.slice(0,-1))),{html:e,closing:r}}(D),I=n[r],m=il(g.html,function(e,t){var n=-1!==ul.indexOf(I,e),s=u(r,e,t,n);return ol(s)?n?(t=l(r,e,t,d))?e+"="+c+t+c:e:ol(s=o(r,e,t,n))?void 0:s:s});return D="<"+r,m&&(D+=" "+m),g.closing&&(D+=" /"),D+=">"}return ol(y=i(r,D,w))?a(D):y},a);return D&&(M=D.remove(M)),M};var al=ll;!function(e,t){var r=lo,n=Qo,s=al;function i(e,t){return new s(t).process(e)}(t=e.exports=i).filterXSS=i,t.FilterXSS=s,function(){for(var e in r)t[e]=r[e];for(var s in n)t[s]=n[s]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(oo,oo.exports);var cl=nn(oo.exports);function dl(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}let Dl=/<(?=[A-Za-z!/?]|$)/g;function Ml(e){return e.replace(Dl,"&lt;")}let wl={getFilterXSS:function(e=cl){if(Gr(e))return e;let t=dl(),r=ye(t,"filterXSS",null);if(Gr(r))return r;let n=ye(t,"xss",null);if(Gr(n))return n;throw new Error("invalid filterXSS, g.filterXSS, use script for import")},getOpt:function(e){return{escapeHtml:Ml,onIgnoreTagAttr:function(t,r,n,s){if("style"===r)return r+'="'+e.escapeAttrValue(n)+'"'}}}};function yl(e){let t=null,r=null;let n=function e(n){if(Array.isArray(n)){for(let t=0;t<n.length;t++)n[t]=e(n[t]);return n}if($t(n)||hr(n)){for(let t of Object.keys(n))n[t]=e(n[t]);return n}return er(n)?(s=n,null===t&&(t=wl.getFilterXSS(),r=wl.getOpt(t)),t(s,r)):n;var s}(wu(e));return n}function gl(e,t){if(!hr(e))return[];hr(t)||(t=[t]);let r=[];return _r(e,(e,n)=>{0===ye(e,"ok")&&r.push({k:n,id:ye(t,[n,"id"]),err:ye(e,"err","")})}),r}function Il(e,t){var r,n,s;let i=`${e}: ${Jt(Ot((n=10,(r=t)&&r.length?fs(r,0,(n=s||void 0===n?1:dr(n))<0?0:n):[]),e=>er(e.ref)?e.ref:er(e.id)||wr(e.id)?`id[${$u(String(e.id),{length:100,omission:"…"})}]`:`data[${e.k}]`),", ")}`;return ys(t)>10&&(i+=`, ... (${ys(t)} in total)`),i}function ml(e,t){if(t.indexOf("id")<0)return!1;let r=ye(e,"settings",null);if(_t(r)&&!0!==ye(r,"id.pk"))return!1;let n=ye(r,"id.type","")||ye(e,"kpType.id","");return!(er(n)&&["STRING","TEXT","CHAR","UUID","CITEXT"].indexOf(n.split("(")[0].trim().toUpperCase())<0)}function Cl(e,t){return null!==e&&"object"==typeof e&&"string"==typeof t&&Object.prototype.hasOwnProperty.call(e,t)?void 0===e[t]?null:e[t]:null}function pl(e){return"number"==typeof e&&Number.isFinite(e)}function fl(e){return pl(e)?String(e):e}function Ll(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,t(e[r],r)]))}const hl=Object.freeze({proto:"unsupported key[__proto__]",accessor:"unsupported accessor property",unreadable:"unreadable value",deep:"too deep",hidden:"unsupported symbol key or non-enumerable property",irregular:"unsupported irregular object or array"}),bl="function"==typeof WeakRef?Function.prototype.call.bind(WeakRef.prototype.deref):null,Nl="function"==typeof FinalizationRegistry?Function.prototype.call.bind(FinalizationRegistry.prototype.unregister):null,Al={};function xl(e){for(let t=e;null!==t;t=Object.getPrototypeOf(t))if(o.types.isProxy(t)||Object.prototype.hasOwnProperty.call(t,Symbol.toStringTag))return!1;return!0}function El(e){return o.types.isMap(e)||o.types.isSet(e)||o.types.isWeakMap(e)||o.types.isWeakSet(e)||o.types.isPromise(e)||o.types.isAnyArrayBuffer(e)||o.types.isArrayBufferView(e)||o.types.isBoxedPrimitive(e)||o.types.isRegExp(e)||o.types.isNativeError(e)||o.types.isGeneratorObject(e)||o.types.isMapIterator(e)||o.types.isSetIterator(e)||o.types.isModuleNamespaceObject(e)}function Tl(e){if("object"!=typeof e||null===e||!xl(e)||!$t(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t===Object.prototype||function(e){if(null!==Object.getPrototypeOf(e))return!1;let t=Reflect.ownKeys(Object.prototype);if(Reflect.ownKeys(e).length!==t.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r))return!1;let r=Object.getOwnPropertyDescriptor(e,"constructor");if(void 0===r||"function"!=typeof r.value||o.types.isProxy(r.value))return!1;if(Function.prototype.toString.call(r.value)!==Function.prototype.toString.call(Object))return!1;let n=Object.getOwnPropertyDescriptor(r.value,"prototype");return void 0!==n&&n.value===e}(t)}function Sl(e){return"object"!=typeof e||null===e||!xl(e)||El(e)?null:Array.isArray(e)?"arr":$t(e)?"obj":null}function Zl(e){if(null!==bl)try{return bl(e),!0}catch(e){}if(null!==Nl)try{return Nl(e,Al),!0}catch(e){}return!1}function vl(e,...t){try{console.log(e,...t)}catch(t){try{console.log(e,"(unprintable)")}catch(e){}}}function Yl(e,t={n:0},r=0){if(t.n>=200)return"[...]";if(t.n++,"string"==typeof e)return $u(e,{length:200});if("function"==typeof e)return"[Function]";if("symbol"==typeof e)return"[Symbol]";if("object"!=typeof e||null===e)return e;if(o.types.isProxy(e))return"[Proxy]";if(o.types.isDate(e))return"[Date]";if(El(e))return"[Object]";if(r>=8)return"[...]";let n=e=>void 0===e?"[empty]":void 0!==e.get||void 0!==e.set?"[Getter/Setter]":Yl(e.value,t,r+1);if(Array.isArray(e)){let t=Math.min(e.length,50),r=[];for(let s=0;s<t;s++)r.push(n(Object.getOwnPropertyDescriptor(e,s)));return e.length>t&&r.push(`[${e.length-t} more]`),r}let s=Reflect.ownKeys(e),i={};for(let t of s.slice(0,50)){let r=Object.getOwnPropertyDescriptor(e,t),s="symbol"==typeof t?String(t):t;Object.defineProperty(i,r.enumerable?s:`${s} (non-enumerable)`,{value:n(r),enumerable:!0,writable:!0,configurable:!0})}return s.length>50&&Object.defineProperty(i,"[more]",{value:s.length-50,enumerable:!0,writable:!0,configurable:!0}),i}function Xl(e,t){let r;try{r=Yl(t)}catch(e){r="(unprintable)"}vl(e,r)}function jl(e,t=1/0,r=!1){try{let n=new Set,s=[e,1],i=0,u=[];for(;s.length>0;){let e,l=s.pop(),a=s.pop();if(n.has(a))continue;if(r){if("object"==typeof a&&null!==a){if(!xl(a)||El(a))return"irregular";if(o.types.isDate(a)){if(Reflect.ownKeys(a).length>0)return"irregular";continue}}e=Sl(a)}else e=Array.isArray(a)?"arr":$t(a)?"obj":null;if(null===e)continue;let c="arr"===e;if(l>t)return"deep";if(n.add(a),Object.prototype.hasOwnProperty.call(a,"__proto__"))return"proto";let d=c?null:Object.keys(a);if(r&&!c){if(!Tl(a))return"irregular";if(Reflect.ownKeys(a).length!==d.length)return"hidden";u.push(a)}let D=c?a.length:d.length;for(let e=0;e<D;e++){let t=Object.getOwnPropertyDescriptor(a,c?e:d[e]);if(void 0!==t){if(void 0!==t.get||void 0!==t.set)return"accessor";if(r&&c&&!t.enumerable)return"irregular";r&&(i+=c?0:d[e].length,"string"==typeof t.value&&(i+=t.value.length)),"object"==typeof t.value&&null!==t.value&&s.push(t.value,l+1)}else if(r)return"irregular"}if(r&&c&&Reflect.ownKeys(a).length!==D+1)return"irregular"}if(r&&"object"==typeof e&&null!==e)if(i<=4e6&&"function"==typeof structuredClone){if(function(e){if("function"!=typeof structuredClone)return!1;let t;try{t=structuredClone(e)}catch(e){return!0}let r=new Set,n=[t];for(;n.length>0;){let e=n.pop();if("object"!=typeof e||null===e||r.has(e))continue;r.add(e);let t=Object.getPrototypeOf(e);if(t!==Date.prototype){if(t!==Object.prototype&&t!==Array.prototype)return!0;for(let t of Object.keys(e))n.push(e[t])}}return!1}(e))return"irregular"}else for(let e=0;e<u.length;e++)if(Zl(u[e]))return"irregular";return null}catch(e){return"unreadable"}}function zl(e,t){try{if(void 0!==t&&"object"==typeof t&&null!==t&&o.types.isProxy(t))return`invalid find of ${e}, ${hl.irregular}`;if(void 0!==t&&!Tl(t))return`invalid find of ${e}, need an object`;let r=jl(t,64,!0);return null!==r?`invalid find of ${e}, ${hl[r]}`:null}catch(t){return`invalid find of ${e}, ${hl.unreadable}`}}function Gl(e,t){let r=new Map,n=(e,t)=>{r.has(e)||r.set(e,[]),r.get(e).push({k:t})};if(Array.isArray(t))for(let e=0;e<t.length;e++)try{let r=Object.getOwnPropertyDescriptor(t,e);if(void 0===r)continue;if(void 0!==r.get||void 0!==r.set){n("accessor",e);continue}let s=jl(r.value);null!==s&&n(s,e)}catch(t){n("unreadable",e)}else{let e=jl(t);null!==e&&n(e,0)}return Ot([...r],([t,r])=>Il(`${e}, ${hl[t]}`,r))}function Wl(e){let t=!hr(e),r=Ot(t?[e]:e,e=>$t(e)&&pl(e.id)?{...e,id:fl(e.id)}:e);return t?r[0]:r}function Kl(e){return"obj"!==Sl(e)?e:Ll(e,(e,t)=>{return"id"===t?"obj"!==Sl(r=e)?fl(r):Ll(r,(e,t)=>["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"].indexOf(t)>=0?"arr"===Sl(e)?Ot(e,fl):fl(e):e):["$and","$or"].indexOf(t)>=0&&"arr"===Sl(e)?Ot(e,Kl):e;var r})}function Fl(e){let t=[];return _r(hr(e)?e:[e],(e,r)=>{$t(e)||t.push({k:r})}),t}function kl(e){let t=fl(ye(e,"id"));return er(t)?t:null}function Vl(e){let t=[];return _r(hr(e)?e:[e],(e,r)=>{let n=ye(e,"id");er(n)&&yl(n)!==n&&t.push({k:r,id:n})}),t}function Hl(e,t){return Il(`${e}, id contains HTML markup`,Ot(t,e=>({k:e.k})))}function Ul(e,t,r,n,s="save"){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");let i=e[t].keys,u=!1;hr(n)||(u=!0,n=[n]);let o=_u();if(s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&_r(n,(e,t)=>{n[t].userId=r}),i.indexOf("timeCreate")>=0&&_r(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=o})),n=Ot(n,e=>Ll(e,e=>yl(e))),ml(e[t],i)){(u?_t(n[0]):Er(n))&&_r(n,e=>{er(e.id)||(e.id=uo())})}return n=u?n[0]:n}async function Bl(e,t,r,n,s,i){try{return await async function(e,t,r,n,s,i){let u,o=null;if(!_t(t))return Promise.reject("invalid woItems");let l=Cl(t,n);if(null===l)return Promise.reject(`can not find table[${"string"==typeof n?n:""}] in ORM`);let a=function(e,t){let r=Cl(e,t),n=ye(r,"keys",null);return!!hr(n)&&ml(r,n)}(e,n);if("select"===s){let e=zl("select",i);if(null!==e)return Xl(`${n}.select invalid find`,i),Promise.reject(e);if(u=await l.select(a?Kl(i):i).catch(e=>{console.log(`${n}.select catch`,e),o="failed to select data"}),er(o))return Promise.reject(o)}else if("insert"===s||"save"===s){let t=i,c="insert"===s?"failed to insert data":"failed to save data",d=Fl(i);if(ys(d)>0)return console.log(`${n}.${s} data is not an object`,d),Promise.reject(Il(`${c}, not an object`,d));let D=Gl(c,i);if(ys(D)>0)return console.log(`${n}.${s} data has unsupported key`,D),Promise.reject(Jt(D,"; "));a&&(i=Wl(i));let M=Vl(i);if(ys(M)>0)return console.log(`${n}.${s} id changed by clearXSS`,M),Promise.reject(Hl(c,M));try{i=Ul(e,n,r,i,s)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}if("insert"===s?u=await l.insert(i).catch(e=>{console.log(`${n}.insert catch`,e),o="failed to insert data"}):"save"===s&&(u=await l.save(i).catch(e=>{console.log(`${n}.save catch`,e),o="failed to save data"})),er(o))return Promise.reject(o);if("save"===s){let e=gl(u,i);if(ys(e)>0)return console.log(`${n}.save fail`,e),Promise.reject(Il("failed to save data",gl(u,t)))}u=hr(i)?Ot(i,e=>({id:e.id})):{id:i.id}}else if("del"===s){if(a&&(i=Wl(i)),u=await l.del(i).catch(e=>{console.log(`${n}.del catch`,e),o="failed to delete data"}),!er(o)){let e=gl(u,i);ys(e)>0&&(console.log(`${n}.del fail`,e),o=Il("failed to delete data",e))}}else if("delAll"===s){let e=zl("delAll",i);if(null!==e)return Xl(`${n}.delAll invalid find`,i),Promise.reject(e);u=await l.delAll(a?Kl(i):i).catch(e=>{console.log(`${n}.delAll catch`,e),o="failed to delete data"})}else if("mix"===s){if(!_t(i))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");for(let e of["add","del","diff"]){let t=Object.getOwnPropertyDescriptor(i,e);if(void 0!==t&&(void 0!==t.get||void 0!==t.set))return Promise.reject(`invalid input of mix, ${hl.accessor}`)}i={add:i.add,del:i.del,diff:i.diff};for(let e of["add","del","diff"])if(void 0!==i[e]&&!hr(i[e]))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");let t=[];for(let[e,r]of[["add","failed to insert data"],["diff","failed to update data"]]){let s=Fl(ye(i,e,[]));ys(s)>0&&(console.log(`${n}.mix ${e} data is not an object`,s),t.push(Il(`${r}, not an object`,s)))}if(ys(t)>0)return Promise.reject(Jt(t,"; "));let s=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]])s.push(...Gl(t,ye(i,e,[])));if(ys(s)>0)return console.log(`${n}.mix data has unsupported key`,s),Promise.reject(Jt(s,"; "));if(a){i={...i};for(let e of["add","del","diff"])hr(i[e])&&(i[e]=Wl(i[e]))}let c=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]]){let r=Vl(ye(i,e,[]));ys(r)>0&&(console.log(`${n}.mix ${e} id changed by clearXSS`,r),c.push(Hl(t,r)))}if(ys(c)>0)return Promise.reject(Jt(c,"; "));let d,D=function(e){let t=[];for(let[r,n]of[["add","del"],["del","diff"]]){let s=new Map;_r(ye(e,r,[]),(e,t)=>{let r=kl(e);null!==r&&s.set(r,[...s.get(r)||[],t])});let i=[],u=[];if(_r(ye(e,n,[]),(e,t)=>{let r=kl(e);null!==r&&s.has(r)&&(i=[...i,...s.get(r)],u.push(t))}),ys(u)>0){let e=[...Ot([...new Set(i)].sort((e,t)=>e-t),e=>({ref:`${r}[${e}]`})),...Ot(u,e=>({ref:`${n}[${e}]`}))];t.push(Il(`invalid input of mix, same id in ${r} and ${n}`,e))}}return t}(i);if(ys(D)>0)return console.log(`${n}.mix same id across steps`,D),Promise.reject(Jt(D,"; "));u=[];let M=[],w=ye(i,"add",[]);if(ys(w)>0){try{w=Ul(e,n,r,w,"insert+save")}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}if(await l.insert(w).catch(e=>{console.log(`${n}.insert catch`,e),o="failed to insert data"}),er(o))return Promise.reject(o);d=Ot(w,e=>({id:e.id})),u=[...u,...d]}let y=ye(i,"del",[]);if(ys(y)>0){let e=await l.del(y).catch(e=>{console.log(`${n}.del catch`,e),o="failed to delete data"});if(er(o))return Promise.reject(o);let t=gl(e,y);ys(t)>0&&(console.log(`${n}.del fail`,t),M.push(Il("failed to delete data",t))),d=Ot(y,e=>({id:e.id})),u=[...u,...d]}let g=ye(i,"diff",[]);if(ys(g)>0){let t=g;try{g=Ul(e,n,r,g)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}let s=await l.save(g).catch(e=>{console.log(`${n}.save catch`,e),o="failed to update data"});if(er(o))return Promise.reject(o);let i=gl(s,g);ys(i)>0&&(console.log(`${n}.save fail`,i),M.push(Il("failed to update data",gl(s,t)))),d=Ot(g,e=>({id:e.id})),u=[...u,...d]}if(ys(M)>0)return Promise.reject(Jt(M,"; "))}else o=`invalid mode: ${s}`;if(er(o))return Promise.reject(o);return u}(e,t,r,n,s,i)}catch(e){return"string"==typeof e?Promise.reject(e):(vl(`${"string"==typeof n?n:""}.${"string"==typeof s?s:""} mapOrm catch`,e),Promise.reject("failed to process input"))}}function Ql(e,t){return async(r,n,s,i)=>Bl(e,t,r,n,s,i)}function Rl(e,t,r,n=!1){if(!Gr(t)){let s=`${r} needs a function, but got ${typeof t}`;throw n&&e.push(()=>Promise.reject(s)),new Error(s)}setTimeout(()=>{e.push(t)},1)}function Ol(e,t={}){if(Qu(t),!Gr(e))throw new Error("invalid mapOrm");let r={funChecks:[],funPreProcessing:[],funPostProcessing:[],mapOrm:e};return{addFunCheck:e=>{Rl(r.funChecks,e,"addFunCheck",!0)},addFunPreProcessing:e=>{Rl(r.funPreProcessing,e,"addFunPreProcessing")},addFunPostProcessing:e=>{Rl(r.funPostProcessing,e,"addFunPostProcessing")},procOrm:async(e,t,n,s)=>async function(e,t,r,n,s){await Bu(e.funChecks,e=>e({woName:r,userId:t,mode:n,input:s}));for(let i of[...e.funPreProcessing]){let e=await i({woName:r,userId:t,mode:n,input:s});if(!_t(e)||void 0===e.input)return Promise.reject("invalid return of pre-processing, need an object with input");s=e.input}let i=await e.mapOrm(t,r,n,s);for(let u of[...e.funPostProcessing])i=await u({woName:r,userId:t,mode:n,input:s,output:i});return i}(r,e,t,n,s)}}function Pl(e,t,r,n,s={}){Qu(s);let i=function(e,t,r,n){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");if(!Gr(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!er(r))throw console.log("url",r),new Error("invalid url");if(!er(n))throw console.log("db",n),new Error("invalid db");let s={};return _r(at(e),e=>{let i=new t({url:r,db:n,cl:e});Object.defineProperty(s,e,{value:i,enumerable:!0,writable:!0,configurable:!0})}),s}(e,t,r,n),u=Ol(Ql(e,i),s);return{...Ru,woItems:i,closeAll:async()=>{await Bu(i,async e=>{e&&Gr(e.close)&&await e.close()})},...u}}function Jl(e,t){if(!$t(e))return{};if(!Er(t))return{};let r={};return _r(t,function(t){dn(e,t)&&(r[t]=ye(e,t))}),r}let $l="grups",_l={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},cpemis:{name:"權限清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ql=(e={})=>{let t=qr(e,at(_l));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ea="pemis",ta={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},crules:{name:"管控對象清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ra=(e={})=>{let t=qr(e,at(ta));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},na="targets",sa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ia=(e={})=>{let t=qr(e,at(sa));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ua="users",oa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},cgrups:{name:"權限群組清單",type:"TEXT"},isAdmin:{name:"是否為系統管理員",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},la=(e={})=>{let t=qr(e,at(oa));return t.id=`${uo()}`,t.isAdmin="n",t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t};function aa(e,t={}){let r=ye(t,"useCreateStorage");Dr(r)||(r=!1);let{keyTable:n,tableNameCht:s,tableNameEng:i,settings:u,parser:o,funNew:l,funTest:a,ext:c}=e;if(!er(n))throw new Error(`invalid keyTable[${n}]`);if(er(s)||(s=n),er(i)||(i=n),!_t(u))throw new Error("invalid settings");_t(c)||(c=null),_t(o)||(o=null),Gr(l)||(l=null);let d=null;Gr(a)&&(d=async e=>{if(!_t(e))throw new Error("invalid wo");if(!dn(e,n))throw console.log(e),new Error(`keyTable[${n}] is not in wo`);let t=[];try{t=a(),Wr(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${n}] funTest catch`,e),new Error(e)}if(0===ys(t))return;r&&await e[n].createStorage();let s=gl(await e[n].save(t),t);if(ys(s)>0)throw new Error(`failed to write test data into table[${n}]: ${JSON.stringify(s)}`);return t});let D={},M={};return _r(at(u),e=>{let t=ye(u,`${e}.name`,"");er(t)&&(D[e]=t);let r=ye(u,`${e}.type`,"");er(r)&&(M[e]=r)}),{...e,keyTable:n,tableNameCht:s,tableNameEng:i,settings:u,keys:at(u),kpType:M,kpHead:D,parser:o,funNew:l,funTest:a,funTestAndSave:d,ext:c}}let ca={grups:{keyTable:$l,tableNameCht:"權限群組設定",tableNameEng:"Permission groups",settings:_l,funNew:ql,funTest:()=>{let e=[["權限群組M1","\n {\n '權限P1': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M2","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M3","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'AND',\n 'isActive': 'y',\n },\n }\n "],["權限群組M4","\n {\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P4': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "]];return e=Ot(e,([e,t],r)=>{let n=ql({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,cpemis:t});return n.id=`id-for-${e}`,n=Jl(n,at(_l)),n}),console.log(`已產生: ${$l} 測試資料`,e),e}},pemis:{keyTable:ea,tableNameCht:"權限設定",tableNameEng:"Permissions",settings:ta,funNew:ra,funTest:()=>{let e=[["權限P1","{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }"],["權限P2","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }"],["權限P3","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }"],["權限P4","{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }"]];return e=Ot(e,([e,t],r)=>{let n=ra({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,crules:t});return n.id=`id-for-${e}`,n=Jl(n,at(ta)),n}),console.log(`已產生: ${ea} 測試資料`,e),e}},targets:{keyTable:na,tableNameCht:"管控對象",tableNameEng:"Targets",settings:sa,funNew:ia,funTest:()=>{let e=["專案A/頁A/區塊A","專案A/頁A/區塊A/執行按鈕","專案A/頁A/區塊A/分析按鈕","專案A/頁B/區塊A","專案A/頁B/區塊A/執行按鈕","專案A/頁B/區塊A/分析按鈕","專案A/頁B/區塊B/展開按鈕","專案A/頁B/區塊B/下載按鈕","專案A/頁C","專案B/頁A/區塊A","專案B/頁A/區塊A/顯示綜合報表","專案B/頁A/區塊A/顯示當前數據","專案B/頁A/區塊B","專案B/頁A/區塊B/下載報表按鈕","專案B/頁A/區塊B/下載數據按鈕","專案B/頁A/區塊C","專案B/頁B/區塊A","專案B/頁B/區塊A/待辦事項清單","專案B/頁B/區塊A/相關資源清單","專案B/頁B/區塊B","專案B/頁B/區塊B/顯示後台按鈕","專案B/頁B/區塊B/轉跳主站按鈕"];return e=Ot(e,(e,t)=>{let r=ia({userId:"id-for-admin",order:t,description:`${e}的說明`});return r.id=e,r=Jl(r,at(sa)),r}),console.log(`已產生: ${na} 測試資料`,e),e}},users:{keyTable:ua,tableNameCht:"使用者",tableNameEng:"Users",settings:oa,funNew:la,funTest:()=>{let e=[["peter","teamA","\n { \n '權限群組M1': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["mary","teamA","\n { \n '權限群組M2': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["john","teamA","\n { \n '權限群組M3': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["admin","","\n { \n '權限群組M4': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","y"]];return e=Ot(e,([e,t,r,n],s)=>{let i=la({userId:"id-for-admin",order:s,name:e,email:`${e}@example.com`,from:t,cgrups:r,isAdmin:n});return i.id=`id-for-${e}`,i.isAdmin=n,i=Jl(i,at(oa)),i}),console.log(`已產生: ${ua} 測試資料`,e),e}}},da={};for(let e in ca)da[e]=aa(ca[e],{useCreateStorage:!1});var Da={exports:{}};!function(e){e.exports=function(){function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)}),r=e(function(e){var t=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=t)});r.version;var n=function(e){return"object"==typeof e?null!==e:"function"==typeof e},s=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e},i=function(e){try{return!!e()}catch(e){return!0}},u=!i(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),o=t.document,l=n(o)&&n(o.createElement),a=function(e){return l?o.createElement(e):{}},c=!u&&!i(function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}),d=function(e,t){if(!n(e))return e;var r,s;if(t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;if("function"==typeof(r=e.valueOf)&&!n(s=r.call(e)))return s;if(!t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;throw TypeError("Can't convert object to primitive value")},D=Object.defineProperty,M={f:u?Object.defineProperty:function(e,t,r){if(s(e),t=d(t,!0),s(r),c)try{return D(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},w=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=u?function(e,t,r){return M.f(e,t,w(1,r))}:function(e,t,r){return e[t]=r,e},g={}.hasOwnProperty,I=function(e,t){return g.call(e,t)},m=0,C=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++m+C).toString(36))},f=e(function(e){var n="__core-js_shared__",s=t[n]||(t[n]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),L=f("native-function-to-string",Function.toString),h=e(function(e){var n=p("src"),s="toString",i=(""+L).split(s);r.inspectSource=function(e){return L.call(e)},(e.exports=function(e,r,s,u){var o="function"==typeof s;o&&(I(s,"name")||y(s,"name",r)),e[r]!==s&&(o&&(I(s,n)||y(s,n,e[r]?""+e[r]:i.join(String(r)))),e===t?e[r]=s:u?e[r]?e[r]=s:y(e,r,s):(delete e[r],y(e,r,s)))})(Function.prototype,s,function(){return"function"==typeof this&&this[n]||L.call(this)})}),b=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},N=function(e,t,r){if(b(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,s){return e.call(t,r,n,s)}}return function(){return e.apply(t,arguments)}},A="prototype",x=function(e,n,s){var i,u,o,l,a=e&x.F,c=e&x.G,d=e&x.S,D=e&x.P,M=e&x.B,w=c?t:d?t[n]||(t[n]={}):(t[n]||{})[A],g=c?r:r[n]||(r[n]={}),I=g[A]||(g[A]={});for(i in c&&(s=n),s)o=((u=!a&&w&&void 0!==w[i])?w:s)[i],l=M&&u?N(o,t):D&&"function"==typeof o?N(Function.call,o):o,w&&h(w,i,o,e&x.U),g[i]!=o&&y(g,i,l),D&&I[i]!=o&&(I[i]=o)};t.core=r,x.F=1,x.G=2,x.S=4,x.P=8,x.B=16,x.W=32,x.U=64,x.R=128;var E,T=x,S=Math.ceil,Z=Math.floor,v=function(e){return isNaN(e=+e)?0:(e>0?Z:S)(e)},Y=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},X=(E=!1,function(e,t){var r,n,s=String(Y(e)),i=v(t),u=s.length;return i<0||i>=u?E?"":void 0:(r=s.charCodeAt(i))<55296||r>56319||i+1===u||(n=s.charCodeAt(i+1))<56320||n>57343?E?s.charAt(i):r:E?s.slice(i,i+2):n-56320+(r-55296<<10)+65536});T(T.P,"String",{codePointAt:function(e){return X(this,e)}}),r.String.codePointAt;var j=Math.max,z=Math.min,G=function(e,t){return(e=v(e))<0?j(e+t,0):z(e,t)},W=String.fromCharCode,K=String.fromCodePoint;T(T.S+T.F*(!!K&&1!=K.length),"String",{fromCodePoint:function(e){for(var t,r=arguments,n=[],s=arguments.length,i=0;s>i;){if(t=+r[i++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?W(t):W(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}}),r.String.fromCodePoint;var F,k,V,H,U,B,Q,R,O,P,J,$,_,q,ee={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},te={isSpaceSeparator:function(e){return"string"==typeof e&&ee.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||ee.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||ee.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}},re=function(e,t){F=String(e),k="start",V=[],H=0,U=1,B=0,Q=void 0,R=void 0,O=void 0;do{Q=se(),Me[k]()}while("eof"!==Q.type);return"function"==typeof t?ne({"":O},"",t):O};function ne(e,t,r){var n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(var s=0;s<n.length;s++){var i=String(s),u=ne(n,i,r);void 0===u?delete n[i]:Object.defineProperty(n,i,{value:u,writable:!0,enumerable:!0,configurable:!0})}else for(var o in n){var l=ne(n,o,r);void 0===l?delete n[o]:Object.defineProperty(n,o,{value:l,writable:!0,enumerable:!0,configurable:!0})}return r.call(e,t,n)}function se(){for(P="default",J="",$=!1,_=1;;){q=ie();var e=oe[P]();if(e)return e}}function ie(){if(F[H])return String.fromCodePoint(F.codePointAt(H))}function ue(){var e=ie();return"\n"===e?(U++,B=0):e?B+=e.length:B++,e&&(H+=e.length),e}var oe={default:function(){switch(q){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void ue();case"/":return ue(),void(P="comment");case void 0:return ue(),le("eof")}if(!te.isSpaceSeparator(q))return oe[k]();ue()},comment:function(){switch(q){case"*":return ue(),void(P="multiLineComment");case"/":return ue(),void(P="singleLineComment")}throw ge(ue())},multiLineComment:function(){switch(q){case"*":return ue(),void(P="multiLineCommentAsterisk");case void 0:throw ge(ue())}ue()},multiLineCommentAsterisk:function(){switch(q){case"*":return void ue();case"/":return ue(),void(P="default");case void 0:throw ge(ue())}ue(),P="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return ue(),void(P="default");case void 0:return ue(),le("eof")}ue()},value:function(){switch(q){case"{":case"[":return le("punctuator",ue());case"n":return ue(),ae("ull"),le("null",null);case"t":return ue(),ae("rue"),le("boolean",!0);case"f":return ue(),ae("alse"),le("boolean",!1);case"-":case"+":return"-"===ue()&&(_=-1),void(P="sign");case".":return J=ue(),void(P="decimalPointLeading");case"0":return J=ue(),void(P="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return J=ue(),void(P="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",1/0);case"N":return ue(),ae("aN"),le("numeric",NaN);case'"':case"'":return $='"'===ue(),J="",void(P="string")}throw ge(ue())},identifierNameStartEscape:function(){if("u"!==q)throw ge(ue());ue();var e=De();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw me()}J+=e,P="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"‌":case"‍":return void(J+=ue());case"\\":return ue(),void(P="identifierNameEscape")}if(!te.isIdContinueChar(q))return le("identifier",J);J+=ue()},identifierNameEscape:function(){if("u"!==q)throw ge(ue());ue();var e=De();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!te.isIdContinueChar(e))throw me()}J+=e,P="identifierName"},sign:function(){switch(q){case".":return J=ue(),void(P="decimalPointLeading");case"0":return J=ue(),void(P="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return J=ue(),void(P="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",_*(1/0));case"N":return ue(),ae("aN"),le("numeric",NaN)}throw ge(ue())},zero:function(){switch(q){case".":return J+=ue(),void(P="decimalPoint");case"e":case"E":return J+=ue(),void(P="decimalExponent");case"x":case"X":return J+=ue(),void(P="hexadecimal")}return le("numeric",0*_)},decimalInteger:function(){switch(q){case".":return J+=ue(),void(P="decimalPoint");case"e":case"E":return J+=ue(),void(P="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(J));J+=ue()},decimalPointLeading:function(){if(te.isDigit(q))return J+=ue(),void(P="decimalFraction");throw ge(ue())},decimalPoint:function(){switch(q){case"e":case"E":return J+=ue(),void(P="decimalExponent")}return te.isDigit(q)?(J+=ue(),void(P="decimalFraction")):le("numeric",_*Number(J))},decimalFraction:function(){switch(q){case"e":case"E":return J+=ue(),void(P="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(J));J+=ue()},decimalExponent:function(){switch(q){case"+":case"-":return J+=ue(),void(P="decimalExponentSign")}if(te.isDigit(q))return J+=ue(),void(P="decimalExponentInteger");throw ge(ue())},decimalExponentSign:function(){if(te.isDigit(q))return J+=ue(),void(P="decimalExponentInteger");throw ge(ue())},decimalExponentInteger:function(){if(!te.isDigit(q))return le("numeric",_*Number(J));J+=ue()},hexadecimal:function(){if(te.isHexDigit(q))return J+=ue(),void(P="hexadecimalInteger");throw ge(ue())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return le("numeric",_*Number(J));J+=ue()},string:function(){switch(q){case"\\":return ue(),void(J+=ce());case'"':return $?(ue(),le("string",J)):void(J+=ue());case"'":return $?void(J+=ue()):(ue(),le("string",J));case"\n":case"\r":throw ge(ue());case"\u2028":case"\u2029":Ce(q);break;case void 0:throw ge(ue())}J+=ue()},start:function(){switch(q){case"{":case"[":return le("punctuator",ue())}P="value"},beforePropertyName:function(){switch(q){case"$":case"_":return J=ue(),void(P="identifierName");case"\\":return ue(),void(P="identifierNameStartEscape");case"}":return le("punctuator",ue());case'"':case"'":return $='"'===ue(),void(P="string")}if(te.isIdStartChar(q))return J+=ue(),void(P="identifierName");throw ge(ue())},afterPropertyName:function(){if(":"===q)return le("punctuator",ue());throw ge(ue())},beforePropertyValue:function(){P="value"},afterPropertyValue:function(){switch(q){case",":case"}":return le("punctuator",ue())}throw ge(ue())},beforeArrayValue:function(){if("]"===q)return le("punctuator",ue());P="value"},afterArrayValue:function(){switch(q){case",":case"]":return le("punctuator",ue())}throw ge(ue())},end:function(){throw ge(ue())}};function le(e,t){return{type:e,value:t,line:U,column:B}}function ae(e){for(var t=0,r=e;t<r.length;t+=1){var n=r[t];if(ie()!==n)throw ge(ue());ue()}}function ce(){switch(ie()){case"b":return ue(),"\b";case"f":return ue(),"\f";case"n":return ue(),"\n";case"r":return ue(),"\r";case"t":return ue(),"\t";case"v":return ue(),"\v";case"0":if(ue(),te.isDigit(ie()))throw ge(ue());return"\0";case"x":return ue(),de();case"u":return ue(),De();case"\n":case"\u2028":case"\u2029":return ue(),"";case"\r":return ue(),"\n"===ie()&&ue(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw ge(ue())}return ue()}function de(){var e="",t=ie();if(!te.isHexDigit(t))throw ge(ue());if(e+=ue(),t=ie(),!te.isHexDigit(t))throw ge(ue());return e+=ue(),String.fromCodePoint(parseInt(e,16))}function De(){for(var e="",t=4;t-- >0;){var r=ie();if(!te.isHexDigit(r))throw ge(ue());e+=ue()}return String.fromCodePoint(parseInt(e,16))}var Me={start:function(){if("eof"===Q.type)throw Ie();we()},beforePropertyName:function(){switch(Q.type){case"identifier":case"string":return R=Q.value,void(k="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===Q.type)throw Ie();k="beforePropertyValue"},beforePropertyValue:function(){if("eof"===Q.type)throw Ie();we()},beforeArrayValue:function(){if("eof"===Q.type)throw Ie();"punctuator"!==Q.type||"]"!==Q.value?we():ye()},afterPropertyValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforeArrayValue");case"]":ye()}},end:function(){}};function we(){var e;switch(Q.type){case"punctuator":switch(Q.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Q.value}if(void 0===O)O=e;else{var t=V[V.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,R,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)V.push(e),k=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var r=V[V.length-1];k=null==r?"end":Array.isArray(r)?"afterArrayValue":"afterPropertyValue"}}function ye(){V.pop();var e=V[V.length-1];k=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function ge(e){return fe(void 0===e?"JSON5: invalid end of input at "+U+":"+B:"JSON5: invalid character '"+pe(e)+"' at "+U+":"+B)}function Ie(){return fe("JSON5: invalid end of input at "+U+":"+B)}function me(){return fe("JSON5: invalid identifier character at "+U+":"+(B-=5))}function Ce(e){console.warn("JSON5: '"+pe(e)+"' in strings is not valid ECMAScript; consider escaping")}function pe(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){var r=e.charCodeAt(0).toString(16);return"\\x"+("00"+r).substring(r.length)}return e}function fe(e){var t=new SyntaxError(e);return t.lineNumber=U,t.columnNumber=B,t}var Le=function(e,t,r){var n,s,i,u=[],o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(r=t.space,i=t.quote,t=t.replacer),"function"==typeof t)s=t;else if(Array.isArray(t)){n=[];for(var a=0,c=t;a<c.length;a+=1){var d=c[a],D=void 0;"string"==typeof d?D=d:("number"==typeof d||d instanceof String||d instanceof Number)&&(D=String(d)),void 0!==D&&n.indexOf(D)<0&&n.push(D)}}return r instanceof Number?r=Number(r):r instanceof String&&(r=String(r)),"number"==typeof r?r>0&&(r=Math.min(10,Math.floor(r)),l=" ".substr(0,r)):"string"==typeof r&&(l=r.substr(0,10)),M("",{"":e});function M(e,t){var r=t[e];switch(null!=r&&("function"==typeof r.toJSON5?r=r.toJSON5(e):"function"==typeof r.toJSON&&(r=r.toJSON(e))),s&&(r=s.call(t,e,r)),r instanceof Number?r=Number(r):r instanceof String?r=String(r):r instanceof Boolean&&(r=r.valueOf()),r){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof r?w(r):"number"==typeof r?String(r):"object"==typeof r?Array.isArray(r)?I(r):y(r):void 0}function w(e){for(var t={"'":.1,'"':.2},r={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},n="",s=0;s<e.length;s++){var u=e[s];switch(u){case"'":case'"':t[u]++,n+=u;continue;case"\0":if(te.isDigit(e[s+1])){n+="\\x00";continue}}if(r[u])n+=r[u];else if(u<" "){var o=u.charCodeAt(0).toString(16);n+="\\x"+("00"+o).substring(o.length)}else n+=u}var l=i||Object.keys(t).reduce(function(e,r){return t[e]<t[r]?e:r});return l+(n=n.replace(new RegExp(l,"g"),r[l]))+l}function y(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var r,s,i=[],a=0,c=n||Object.keys(e);a<c.length;a+=1){var d=c[a],D=M(d,e);if(void 0!==D){var w=g(d)+":";""!==l&&(w+=" "),w+=D,i.push(w)}}if(0===i.length)r="{}";else if(""===l)r="{"+(s=i.join(","))+"}";else{var y=",\n"+o;s=i.join(y),r="{\n"+o+s+",\n"+t+"}"}return u.pop(),o=t,r}function g(e){if(0===e.length)return w(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return w(e);for(var r=t.length;r<e.length;r++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(r))))return w(e);return e}function I(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var r,n=[],s=0;s<e.length;s++){var i=M(String(s),e);n.push(void 0!==i?i:"null")}if(0===n.length)r="[]";else if(""===l)r="["+n.join(",")+"]";else{var a=",\n"+o,c=n.join(a);r="[\n"+o+c+",\n"+t+"]"}return u.pop(),o=t,r}},he={parse:re,stringify:Le},be=he,Ne=be;return Ne}()}(Da);var Ma=nn(Da.exports);function wa(e,t){var r=[];return Qt(e,function(e,n,s){t(e,n,s)&&r.push(e)}),r}function ya(e,t){return(M(e)?Ee:wa)(e,Vt(t))}var ga=I?I.isConcatSpreadable:void 0;function Ia(e){return M(e)||We(e)||!!(ga&&e&&e[ga])}function ma(e,t,r,n,s){var i=-1,u=e.length;for(r||(r=Ia),s||(s=[]);++i<u;){var o=e[i];t>0&&r(o)?t>1?ma(o,t-1,r,n,s):Ae(s,o):n||(s[s.length]=o)}return s}function Ca(e,t){if(e!==t){var r=void 0!==e,n=null===e,s=e==e,i=A(e),u=void 0!==t,o=null===t,l=t==t,a=A(t);if(!o&&!a&&!i&&e>t||i&&u&&l&&!o&&!a||n&&u&&l||!r&&l||!s)return 1;if(!n&&!i&&!a&&e<t||a&&r&&s&&!n&&!i||o&&r&&s||!u&&s||!l)return-1}return 0}function pa(e,t,r){t=t.length?oe(t,function(e){return M(e)?function(t){return we(t,1===e.length?e[0]:e)}:e}):[Kt];var n=-1;return t=oe(t,Re(Vt)),function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}(Rt(e,function(e,r,s){return{criteria:oe(t,function(t){return t(e)}),index:++n,value:e}}),function(e,t){return function(e,t,r){for(var n=-1,s=e.criteria,i=t.criteria,u=s.length,o=r.length;++n<u;){var l=Ca(s[n],i[n]);if(l)return n>=o?l:l*("desc"==r[n]?-1:1)}return e.index-t.index}(e,t,r)})}var fa=Qi(function(e,t){if(null==e)return[];var r=t.length;return r>1&&Ri(e,t[0],t[1])?t=[]:r>2&&Ri(t[0],t[1],t[2])&&(t=[t[0]]),pa(e,ma(t,1),[])});function La(e,t){if(Array.isArray(e))for(let r=0,n=e.length;r<n&&!1!==t(e[r],r,e);r++);else if(null!==e&&"object"==typeof e){let r=Object.keys(e);for(let n=0;n<r.length;n++){let s=r[n];if(!1===t(e[s],s,e))break}}return e}function ha(e,t,r){return null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:r}function ba(e,t,r,n){let s=e=>{let t=Object.create(null);try{t=Ma.parse(e)}catch(t){console.log("c",e),console.log(t)}let r=[];try{r=function(e){let t=[],r=Array.isArray(e);return La(e,(e,n)=>{let s={name:n};_t(e)?(s={...s,...e},r||(s.name=n)):s={...s,isActive:e},t.push(s)}),t}(t)}catch(r){console.log("c",e),console.log("kp",t),console.log(r)}return r},i=(e,t,r)=>{let n=[];return _r(e,e=>{let s=ye(e,r,"");_r(t,t=>{let i=ye(t,r,"");if(s===i)return n.push({...e,data:t}),!1})}),n},u=e=>{let t=[];if(_r(e,e=>{let r=ye(e,"mode","");if("OR"!==r&&"AND"!==r)return!0;let n=ye(e,"rules",[]),s=Object.create(null);_r(n,e=>{s[e.name]=e.isActive}),t.push({mode:r,kpRule:s})}),0===ys(t))return[];let r=ya(t,{mode:"OR"}),n=ya(t,{mode:"AND"}),s=null;ys(r)>0?s=ye(r,"0.kpRule"):ys(n)>0&&(s=ye(n,"0.kpRule")),_r(r,e=>{let t=ye(e,"kpRule",{});s=((e,t)=>{let r=Object.create(null);return _r([e,t],e=>{La(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]||"y"===e?r[t]="y":r[t]="n"})}),r})(s,t)}),_r(n,(e,t)=>{let r=ye(e,"kpRule",{});s=((e,t)=>{let r=Object.assign(Object.create(null),e);return _r([t],e=>{La(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]&&"y"===e?r[t]="y":r[t]="n"})}),r})(s,r)});let i=[];return La(s,(e,t)=>{i.push({name:t,isActive:e})}),i},o=ye(e,"cgrups",""),l=s(o);l=i(l,t,"name"),l=ya(l,{isActive:"y"}),l=Ot(l,e=>{let t=ye(e,"data.cpemis",""),n=s(t);return n=ya(n,{isActive:"y"}),n=i(n,r,"name"),e.data._pemis=n,e}),l=Ot(l,e=>{let t=ye(e,"data._pemis",[]);return t=Ot(t,e=>{let t=ye(e,"data.crules",""),r=s(t);return e.data._rules=r,e}),e.data._pemis=t,e});let a=[];{let e=[];_r(l,t=>{let r=t.mode,n=t.data._pemis,s=[];_r(n,e=>{let t=e.mode,r=e.data._rules;s.push({mode:t,rules:r})});let i={mode:r,rules:u(s)};e.push(i)}),a=u(e)}{let e=Object.create(null);_r(a,t=>{e[t.name]=t.isActive});let t=[];_r(n,r=>{t.push({name:r.id,isActive:ha(e,r.id,"n")})}),a=t}return{grups:l,rules:a}}function Na(e,t){return Yt(e,t)}function Aa(e,t){function r(e){return hr(e)?e:[e]}if(xr(e))return!1;if(0===(e=r(e)).length)return!1;if(xr(e))return!1;if(0===(t=r(t)).length)return!1;for(let r=0;r<e.length;r++)for(let n=0;n<t.length;n++)if(Na(e[r],t[n]))return!0;return!1}let xa={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en",cht:"zh-tw"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},saveChanges:{eng:"Save changes",cht:"儲存變更"},id:{eng:"Id",cht:"主鍵"},from:{eng:"From",cht:"來源"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},screenFull:{eng:"Max size",cht:"最大化尺寸"},screenNormal:{eng:"Normal size",cht:"預設尺寸"},checkAllYes:{eng:"Check all",cht:"全選使用"},checkAllNo:{eng:"Uncheck all",cht:"全不選使用"},checkAllInv:{eng:"Reverse all",cht:"全反選使用"},operEnable:{eng:"Enable",cht:"是否使用"},operPemiMode:{eng:"Operator",cht:"合併權限模式"},operGrupMode:{eng:"Operator",cht:"合併權限群組模式"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},cannotConnectServer:{eng:"Cannot connect to server",cht:"無法連線至伺服器"},saveRowFieldInvalid:{eng:"Invalid field value in saved data",cht:"儲存資料的欄位值無效"},saveRowFieldDuplicate:{eng:"Duplicate field value in saved data",cht:"儲存資料的欄位值重複"},authLossyBlocked:{eng:"Not saved: the authorization settings for {names} contain entries the editor cannot write without changing access (the same name set to both OR and AND, or an order that cannot be kept). Nothing was changed. Please correct the source data first.",cht:"未儲存:{names} 的授權設定含有編輯器無法在不改變授權下寫出的項目(同一名稱同時以 OR 與 AND 設定,或順序無法保留)。資料未變更,請先修正資料來源。"},saveInProgress:{eng:"The previous save is still in progress. Please do not submit again.",cht:"上一次儲存仍在處理中,請勿重複送出"},saveNewRowExists:{eng:"The newly added data has already been saved. Please reload the page before making changes.",cht:"新增之資料已儲存過,請重新整理頁面後再操作"},saveTabItemsSuccess:{eng:"Saved successfully",cht:"儲存成功"},htmlMarkupNotAllowed:{eng:'The input contains HTML markup that is not allowed (such as "<" followed by a letter). Please remove it and try again.',cht:"輸入內容含有不允許的 HTML 標記(如「<」後接英文字母),請移除後再試一次。"},saveWriteFail:{eng:"Not all changes were written, and some may have taken effect. Please reload the page and check before making changes.",cht:"資料寫入未全部完成,部分變更可能已生效,請重新整理頁面確認後再操作"},cannotGetUserId:{eng:"Cannot get the user id",cht:"無法取得使用者 Id"},cannotGetUserEmail:{eng:"Cannot get the email of user",cht:"無法取得使用者 Email"},cannotGetUserName:{eng:"Cannot get the name of user",cht:"無法取得使用者名稱"},cannotGetUserRole:{eng:"Cannot get the role of user",cht:"無法取得使用者角色"},cannotFindUserFromToken:{eng:"Cannot identify the user from token",cht:"無法由 token 識別使用者"},cannotGetUserProp:{eng:"Cannot get the property of user",cht:"無法取得使用者對應屬性"},cannotGetUserFromPerm:{eng:"Cannot find the user in permission system",cht:"無法於權限系統取得使用者"},userNoPermission:{eng:"User does not have permission",cht:"使用者權限不足"},invalidPayload:{eng:"Invalid payload in request",cht:"請求內容無效"},invalidFromInPayload:{eng:"Invalid from in payload",cht:"請求來源欄位無效"},invalidRowsInPayload:{eng:"Invalid rows in payload",cht:"請求資料列無效"},invalidFrom:{eng:"Invalid from",cht:"來源欄位無效"},invalidRows:{eng:"Invalid data format.",cht:"資料格式錯誤。"},cannotGetUserRules:{eng:"Cannot get rules of user",cht:"無法取得使用者權限規則"},tokenNoPermission:{eng:"Token does not have permission",cht:"權限不足"},userIdNoPermrules:{eng:"The user id does not have permission rules",cht:"此使用者沒有權限規則"},invalidKeyTable:{eng:"Invalid key table",cht:"資料表名稱無效"},cannotFindUserId:{eng:"Cannot find the user id",cht:"無法找到使用者 Id"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},showTabCols:{eng:"Show columns",cht:"顯示欄位"},belongUsers:{eng:"Use users",cht:"管控所屬使用者"},belongGrups:{eng:"Use groups",cht:"管控所屬權限群組"},belongGrupsNames:{eng:"Use permission groups",cht:"所屬權限群組名稱"},belongPemisNames:{eng:"Use permissions",cht:"所屬權限名稱"},chipsShowAll:{eng:"Show all",cht:"展開全部"},chipsPopupTitle:{eng:"{title} ({n} in total)",cht:"{title}:共 {n} 項"},isAdmin:{eng:"Administrator",cht:"是否為系統管理員"},isActive:{eng:"Active",cht:"是否有效"},errInNames:{eng:"Name errors",cht:"名稱出現錯誤待修復"},errInIds:{eng:"ID errors",cht:"ID 出現錯誤待修復"},errInEmails:{eng:"Email errors",cht:"Email出現錯誤待修復"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},menuUser:{eng:"User menu",cht:"使用者選單"},language:{eng:"Language",cht:"語系"},mmTargets:{eng:"Targets",cht:"管理對象"},mmTargetsMsg:{eng:"Targets generally refer to entities such as pages, data, etc., and can also include features or services.",cht:"對象泛指實體的頁面、數據等,亦可為的功能或服務。"},mmPemis:{eng:"Permissions",cht:"管理權限"},mmPemisMsg:{eng:"Permissions are primarily used to set rules for enabling or disabling various objects.",cht:"權限主要為用來設定各種對象之使用或禁用規則。"},mmGrups:{eng:"Permission groups",cht:"管理權限群組"},mmGrupsMsg:{eng:"Permission groups are primarily used to configure combinations of different permissions.",cht:"權限群組主要為用來設定組合各種權限。"},mmUsers:{eng:"Users",cht:"管理使用者"},mmUsersMsg:{eng:"Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.",cht:"使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。"},targetId:{eng:"Target",cht:"對象名稱"},targetIdEmpty:{eng:"Invalid name",cht:"尚未給予有效對象名稱"},targetIdDuplicate:{eng:"Duplicate target",cht:"對象名稱出現重複"},targetAddEmpty:{eng:"No target",cht:"尚未新增管理資料"},targetAdd:{eng:"Add target",cht:"新增對象"},targetAddNameNew:{eng:"New target",cht:"新對象"},targetAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},targetCopy:{eng:"Copy target",cht:"複製對象"},targetCopyNameNew:{eng:"copy",cht:"複製"},targetDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},targetEnable:{eng:"Enable",cht:"是否使用"},targetSaveTargetsFail:{eng:"Failed to save targets",cht:"儲存對象數據失敗"},targetSaveTargetsSuccess:{eng:"Save targets successfully",cht:"儲存對象數據成功"},pemiName:{eng:"Name of permission",cht:"權限名稱"},pemiNameEmpty:{eng:"Invalid name of permission",cht:"尚未給予有效權限名稱"},pemiNameDuplicate:{eng:"Duplicate name of permission",cht:"權限名稱出現重複"},pemiAddEmpty:{eng:"No permission",cht:"尚未新增權限資料"},pemiAdd:{eng:"Add permission",cht:"新增權限"},pemiAddNameNew:{eng:"New permission",cht:"新權限"},pemiAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},pemiCopy:{eng:"Copy permission",cht:"複製權限"},pemiCopyNameNew:{eng:"copy",cht:"複製"},pemiDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},pemiCrules:{eng:"Rules of permission",cht:"管控對象"},pemiEditBlngGrupsNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditBlngGrupsNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiEditCrules:{eng:"Edit rules of permission",cht:"編輯使用對象"},pemiEditCrulesForDisplay:{eng:"Rules of permission",cht:"展示使用對象"},pemiEditCrulesNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditCrulesNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiRnderCrulesNoRule:{eng:"No rule",cht:"無使用任何對象"},pemiRnderCrulesHasNRule:{eng:"Has {n} rule(s){nms}",cht:"使用共 {n} 項對象{nms}"},pemiSavePemisFail:{eng:"Failed to save permissions",cht:"儲存權限數據失敗"},pemiSavePemisSuccess:{eng:"Save permissions successfully",cht:"儲存權限數據成功"},pemiBlngEditGrups:{eng:"Edit permission groups",cht:"編輯所屬權限群組"},pemiBlngEditGrupsForDisplay:{eng:"Permission groups",cht:"展示所屬權限群組"},pemiBlngRnderNoGrup:{eng:"No permission groups",cht:"無所屬權限群組"},pemiBlngRnderGrups:{eng:"Has {n} permission group(s){nms}",cht:"共被 {n} 個權限群組{nms}使用"},pemiBlngPemiNow:{eng:"Now permission",cht:"目前權限"},pemiBlngEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},pemiBlngEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiBlngDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},cruleEditNoTargetId:{eng:"Can not find the id of target",cht:"無法找到對象Id"},cruleEditNoTargetData:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cruleDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},grupName:{eng:"Name of permission group",cht:"權限群組名稱"},grupNameEmpty:{eng:"Invalid name of permission group",cht:"尚未給予有效權限群組名稱"},grupNameDuplicate:{eng:"Duplicate name of permission group",cht:"權限群組名稱出現重複"},grupAddEmpty:{eng:"No permission group",cht:"尚未新增權限群組資料"},grupAdd:{eng:"Add permission group",cht:"新增權限群組"},grupAddNameNew:{eng:"New permission group",cht:"新權限群組"},grupAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},grupCopy:{eng:"Copy permission group",cht:"複製權限群組"},grupCopyNameNew:{eng:"copy",cht:"複製"},grupDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},grupCpemis:{eng:"Permissions",cht:"管控使用權限"},grupEditBlngNoGrupId:{eng:"Can not find the id of permission group",cht:"無法找到權限群組Id"},grupEditBlngNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupEditCpemis:{eng:"Edit list of permission group",cht:"編輯使用權限"},grupEditCpemisForDisplay:{eng:"List of permission group",cht:"展示使用權限"},grupRnderCpemisNoPermission:{eng:"No permission",cht:"無使用任何權限"},grupRnderCpemisHasNPermissions:{eng:"Has {n} permission(s){nms}",cht:"使用 {n} 項權限{nms}"},grupSaveGrupsEmpty:{eng:"No user",cht:"未有變更權限群組資料"},grupSaveGrupsFail:{eng:"Failed to save permission groups",cht:"儲存權限群組數據失敗"},grupSaveGrupsSuccess:{eng:"Save permission groups successfully",cht:"儲存權限群組數據成功"},grupBlngEditUsers:{eng:"Edit permission group of users",cht:"編輯所屬使用者"},grupBlngEditUsersForDisplay:{eng:"Permission group of users",cht:"展示所屬使用者"},grupBlngRnderNoUser:{eng:"No users",cht:"無所屬使用者"},grupBlngRnderUsers:{eng:"Has {n} user(s){nms}",cht:"共被 {n} 位使用者{nms}使用"},grupBlngGrupNow:{eng:"Now permission group",cht:"目前權限群組"},grupBlngEditNoGrupName:{eng:"Can not find the name of permission group",cht:"無法找到權限群組名稱"},grupBlngEditNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupBlngDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},cpemiEditNoName:{eng:"Can not find the name of target",cht:"無法找到對象名稱"},cpemiEditNoTarget:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cpemiDeleteCheckTargets:{eng:"Delete targets(s)",cht:"刪除勾選對象"},userName:{eng:"Name of user",cht:"使用者名稱"},userNameEmpty:{eng:"Invalid name of user",cht:"尚未給予有效使用者名稱"},userNameDuplicate:{eng:"Duplicate name of user",cht:"使用者名稱出現重複"},userEmailEmpty:{eng:"Empty email of user",cht:"尚未給予使用者Email"},userEmailError:{eng:"Invalid email of user",cht:"使用者Email格式錯誤"},userEmailDuplicate:{eng:"Duplicate email of user",cht:"使用者Email出現重複"},userAddEmpty:{eng:"No user",cht:"尚未新增使用者資料"},userAdd:{eng:"Add user",cht:"新增使用者"},userAddNameNew:{eng:"New user",cht:"新使用者"},userAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},userCopy:{eng:"Copy user",cht:"複製使用者"},userCopyNameNew:{eng:"copy",cht:"複製"},userDeleteCheckUsers:{eng:"Delete user(s)",cht:"刪除勾選使用者"},userCgrups:{eng:"Permission groups",cht:"管控使用權限群組"},userEditCgrups:{eng:"Edit list of user",cht:"編輯使用權限群組"},userEditCgrupsForDisplay:{eng:"Permission groups of user",cht:"展示使用權限群組"},userEditCgrupsNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditCgrupsNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者資料"},userSaveUsersEmpty:{eng:"No user",cht:"未有變更使用者資料"},userSaveUsersFail:{eng:"Failed to save users",cht:"儲存使用者數據失敗"},userSaveUsersSuccess:{eng:"Save users successfully",cht:"儲存使用者數據成功"},userEditNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者數據"},userRnderCgrupsNoGroup:{eng:"No permission group",cht:"無使用任何權限群組"},userRnderCgrupsHasNGroups:{eng:"Has {n} permission group(s){nms}",cht:"使用 {n} 項權限群組{nms}"},cgrupEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},cgrupEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},cgrupDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},show:{eng:"Show",cht:"顯示"},active:{eng:"Active",cht:"啟用"},userId:{eng:"ID of the created user",cht:"創建使用者主鍵"},timeCreate:{eng:"Created time",cht:"創建時間"},userIdUpdate:{eng:"ID of the updated user",cht:"最新變更使用者主鍵"},timeUpdate:{eng:"Updated time",cht:"更新時間"},invalidUrl:{eng:"Invalid url",cht:"網址無效"},invalidTokenTar:{eng:"Invalid target token",cht:"目標 token 無效"},invalidTokenSelf:{eng:"Invalid self token",cht:"自身 token 無效"},invalidUserIdTar:{eng:"Invalid target user id",cht:"目標使用者 Id 無效"},noTokenInUrl:{eng:"Missing token in url",cht:"網址缺少 token"},noTokenUserIdInUrl:{eng:"Missing token or userId in url",cht:"網址缺少 token 或 userId"},cannotGetUserByUrl:{eng:"Cannot get user by url",cht:"無法由網址取得使用者"},cannotGetUserDataByUrl:{eng:"Cannot get user data by url",cht:"無法由網址取得使用者資料"},noUserDataByUrl:{eng:"No user data by url",cht:"該網址無使用者資料"},noUserDataAfterConvert:{eng:"No user data after permission conversion",cht:"權限轉換後無使用者資料"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},staEventTitle:{eng:"Event Frequency",cht:"事件發生頻率"},staTimeHr:{eng:"Hourly",cht:"每小時"},staTimeDay:{eng:"Daily",cht:"每日"},staTotal:{eng:"Total",cht:"全部加總"},staNoData:{eng:"No event data",cht:"尚無事件資料"},getDataError:{eng:"Failed to load data",cht:"資料載入失敗"},staTableTitle:{eng:"Event Statistics",cht:"事件統計表"},staColEvent:{eng:"Event",cht:"事件"},staColLast1Day:{eng:"Last 1 Day",cht:"最近1日"},staColLast8Hour:{eng:"Last 8 Hours",cht:"最近8小時"},staColLast4Hour:{eng:"Last 4 Hours",cht:"最近4小時"},staColLast1Hour:{eng:"Last 1 Hour",cht:"最近1小時"}},Ea=(e={})=>{let t=ye(e,"kpLangExt");_t(t)||(t={});let r=ye(e,"webName");_t(r)||(r={});let n=ye(e,"webDescription");_t(n)||(n={});let s={};s={...s,...xa},_t(t)&&(s={...s,...t}),_t(r)&&(s={...s,webName:{...r}}),_t(n)&&(s={...s,webDescription:{...n}});let i={};return _r(["eng","cht"],e=>{let t={};_r(s,(r,n)=>{t[n]=r[e]}),i[e]=t}),i};function Ta(e,t={}){if(!Array.isArray(e))return{reason:"rowsInvalid",k:-1,field:""};let r=!0===ye(t,"idRequired",!1),n=ye(t,"rowsIdOnly",[]);Array.isArray(n)||(n=[]);let s=Object.create(null),i=(e,t)=>{let n=ye(e,"id"),i="number"==typeof n;if(!!(null==n||""===n||i&&!Number.isFinite(n)))return r?{reason:"idInvalid",k:t,field:"id"}:null;if(!er(n)&&!i)return{reason:"idInvalid",k:t,field:"id"};let u=String(n);return er(n)&&Buffer.byteLength(n,"utf8")>1978?{reason:"idTooLong",k:t,field:"id"}:!0===s[u]?{reason:"idDuplicate",k:t,field:"id"}:(s[u]=!0,null)},u=null;return La(e,(e,t)=>{if(u=i(e,t),null!==u)return!1}),null!==u?u:(La(n,e=>{if(u=i(e,-1),null!==u)return!1}),null!==u||La(e,(e,t)=>!(null!==e&&"object"==typeof e&&!Array.isArray(e))||(La(e,(e,r)=>{return null!=(n=e)&&"string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n?(u={reason:"fieldNotScalar",k:t,field:r},!1):er(e)&&yl(e)!==e?(u={reason:"htmlMarkup",k:t,field:r},!1):void 0;var n}),null===u&&void 0)),u)}let Sa=e=>null!==e&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(e).length>0;function Za(e,t,{srLog:r,kmx:n,lockSave:s}){let i=async(i,u,o,l,a={})=>{if(!Array.isArray(o)||!o.every(Sa))return r.error({event:"updateTabItems-validate-error",keyTable:i,msg:"saveRowFieldInvalid",reason:"rowsInvalid",row:-1,field:""}),Promise.reject("saveRowFieldInvalid");let c=ye(a,"pickKeysOnly",null),d=[];return Er(c)||_r(o,e=>{!0===ye(e,"_isNew")&&d.push(ye(e,"id",""))}),await s(`updateTabItems:${i}`,u,()=>n("updateTabItems:"+i,async()=>{if(Er(c)){let t=await e[i].select();o=function(e,t,r,n){let s=Object.create(null);Array.isArray(t)&&_r(t,e=>{let t=ye(e,r,"");er(t)&&(s[t]=e)});let i=fa(e,"order");return i=Ot(i,e=>{let t={...e},i=ye(e,r,""),u=ha(s,i,null);return null!==u&&_r(n,e=>{dn(u,e)&&(t[e]=u[e])}),t}),i}(t,o,l,c),r.info({event:"updateTabItems-pickKeysOnly",keyTable:i,userId:u,pickKeysOnly:c})}o=Ot(o=en(o,da[i].keys),(e,t)=>(e.order=t+1,e));let n=(e,t)=>{let n=null,s=Object.create(null);return _r(e,(e,u)=>{let o=ye(e,t,"");return er(o)?dn(s,o)?(r.error({event:"updateTabItems-ckKey-error",keyTable:i,key:t,msg:"saveRowFieldDuplicate",row:u,value:o}),n="saveRowFieldDuplicate",!1):void(s[o]=!0):(r.error({event:"updateTabItems-ckKey-error",keyTable:i,key:t,msg:"saveRowFieldInvalid",row:u}),n="saveRowFieldInvalid",!1)}),n},s=null;if(Aa(i,["targets"])&&(s=n(o,"id"),null!==s))return Promise.reject(s);if(Aa(i,["pemis","grups"])&&(s=n(o,"name"),null!==s))return Promise.reject(s);if(Aa(i,["users"])&&(s=n(o,"email"),null!==s))return Promise.reject(s);o=Ot(o,e=>{let t=ye(e,"id");return"number"==typeof t&&Number.isFinite(t)?{...e,id:String(t)}:e});let a=await e[i].select();if(ys(d)>0){let e=Object.create(null);if(_r(a,t=>{e[ye(t,"id","")]=!0}),d.some(t=>!0===e[t]))return Promise.reject("saveNewRowExists")}let D=o,M=function(e,t,r,n={}){let s=ye(n,"withInfor");Dr(s)||(s=!0);let i={del:[],add:[],same:[],diff:[]};if(!er(r))return console.log("invalid key"),s&&(i.infor={}),i;hr(e)||(e=[e]),hr(t)||(t=[t]),e=ya(e,e=>dn(e,r)),t=ya(t,e=>dn(e,r));let u=new Map(t.map(e=>[e[r],e]));for(let t of e){let e=u.get(t[r]);e?(JSON.stringify(t)===JSON.stringify(e)?i.same.push(e):i.diff.push(e),u.delete(t[r])):i.del.push(t)}if(i.add=Array.from(u.values()),s){let e={};for(let t of i.del)e[t[r]]="del";for(let t of i.add)e[t[r]]="add";for(let t of i.diff)e[t[r]]="diff";for(let t of i.same)e[t[r]]="same";i.infor=e}return i}(a,D,l),w=Ta([...M.add,...M.diff],{rowsIdOnly:M.same});if(null!==w){let e="saveRowFieldInvalid";return"htmlMarkup"===w.reason?e="htmlMarkupNotAllowed":"idDuplicate"===w.reason&&(e="saveRowFieldDuplicate"),r.error({event:"updateTabItems-validate-error",keyTable:i,msg:e,reason:w.reason,row:w.k,field:w.field}),Promise.reject(e)}return ys(M.del)>0&&await t(u,i,"del",M.del),ys(M.add)>0&&await t(u,i,"insert",M.add),ys(M.diff)>0&&await t(u,i,"save",M.diff),D}))},u=(e,t,n)=>{let s=Ya(n),i="string"==typeof n?n:n&&n.message||String(n);return r.error({event:e,userId:t,msg:s,...i!==s?{raw:i}:{}}),s};return{updateTargets:async(e,t)=>{try{await i("targets",e,t,"id")}catch(t){throw u("updateTargets-error",e,t)}return r.info({event:"updateTargets-success",userId:e}),"saveTabItemsSuccess"},updatePemis:async(e,t)=>{try{await i("pemis",e,t,"name")}catch(t){throw u("updatePemis-error",e,t)}return r.info({event:"updatePemis-success",userId:e}),"saveTabItemsSuccess"},updateGrups:async(e,t)=>{try{await i("grups",e,t,"name")}catch(t){throw u("updateGrups-error",e,t)}return r.info({event:"updateGrups-success",userId:e}),"saveTabItemsSuccess"},updateUsers:async(e,t,n={})=>{try{await i("users",e,t,"id",n)}catch(t){throw u("updateUsers-error",e,t)}return r.info({event:"updateUsers-success",userId:e}),"saveTabItemsSuccess"}}}let va=null;function Ya(e,t="saveWriteFail"){return null===va&&(va=new Set(Object.keys(Ea({}).eng))),"string"==typeof e&&va.has(e)?e:t}let Xa="w-syslog/src/formatter.mjs";function ja(r={}){let n=r.fpSelf,s=r.cwd,i=[],u=e.dirname(e.dirname(n)),o=e.join(u,"src","formatter.mjs");if((r=>{try{return"w-syslog"===JSON.parse(t.readFileSync(e.join(r,"package.json"),"utf8")).name}catch(e){return!1}})(u)&&t.existsSync(o))return{fp:o,by:"pkgRoot"};i.push(`package root of ${n}`);try{return{fp:c.createRequire(n).resolve(Xa),by:"resolveFromSelf"}}catch(e){i.push(`resolve from ${n}`)}try{return{fp:c.createRequire(e.join(s,"index.js")).resolve(Xa),by:"resolveFromCwd"}}catch(e){i.push(`resolve from ${s}`)}throw new Error(`w-syslog: can not resolve transport target ${Xa}, tried: ${i.join("; ")}. When bundling, keep w-syslog installed and list "pino" in external`)}let za="",Ga="wsyslogFormatterError",Wa=e=>{try{return t.statSync(e).isDirectory()}catch(e){return!1}};function Ka(r={}){let n=ln(),s=ye(r,"timeZone",null),i=ye(r,"fdLog");er(i)||(i="./_logs");let u=ye(r,"interval");"day"!==u&&"hr"!==u&&(u="day");let o=ye(r,"numKeep");if(Lr(o)||(o="day"===u?365:8760),o=fr(o),"function"!=typeof a.transport)throw new Error('w-syslog: pino.transport is not a function, pino seems to be bundled as its browser build; list "pino" in external when bundling');if(er(s))try{Intl.DateTimeFormat("en-US",{timeZone:s})}catch(e){throw new Error(`w-syslog: invalid timeZone[${s}]`)}let c=e.resolve(i);if(On(c),!Wa(c))throw new Error(`w-syslog: can not create fdLog[${i}]`);let d=(""===za&&(za=ja({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:D&&"SCRIPT"===D.tagName.toUpperCase()&&D.src||new URL("w-web-perm.umd.js",document.baseURI).href),cwd:process.cwd()}).fp),za),M=a.transport({targets:[{level:"info",target:l.pathToFileURL(d).href,options:{interval:u,fdLog:c,timeZone:s}}]});M.unref();let w=!1,y=e=>{try{n.emit("writeError",e)}catch(e){}},g=e=>{w=!0,console.error("w-syslog transport error:",e),y(e)},I=e=>{let t=new Error(ye(e,"message","w-syslog formatter error"));t.code=ye(e,"code"),t.syscall=ye(e,"syscall"),t.path=ye(e,"path"),y(t)};M.on("error",g),M.on(Ga,I);let m=()=>{M.off("error",g),M.off(Ga,I)},C=a(M),p=()=>{try{if(!Wa(c))return;let r="hr"===u?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,s=t.readdirSync(c).filter(e=>r.test(e));s.sort();let l=s.length-o;if(l<=0)return;let a=s.slice(0,l);for(let r of a){let s=e.join(i,r);try{t.unlinkSync(e.join(c,r)),n.emit("delete",{fp:s,fn:r})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}},f=setImmediate(()=>{f=null,p()}),L=setInterval(p,36e5);L.unref();let h=null,b=e=>{let t=C[e].bind(C);return(...r)=>{try{n.emit(e,{args:r})}catch(e){}w||t(...r)}};return n.fatal=b("fatal"),n.error=b("error"),n.warn=b("warn"),n.info=b("info"),n.debug=b("debug"),n.trace=b("trace"),n.cleanLogs=p,n.clear=(e={})=>{if(null!==h)return h;null!==f&&(clearImmediate(f),f=null),clearInterval(L);let t=ye(e,"timeLimit");Lr(t)||(t=6e4),h=Hr();let r=!1,n=()=>{r||(r=!0,M.closed?setImmediate(m):M.once("close",()=>{setImmediate(m)}),h.resolve())},s=setTimeout(()=>{console.error("w-syslog clear: timeout, worker terminated, some logs may be lost");try{M.worker.terminate()}catch(e){}n()},t);try{if(M.closed||M.destroyed)return clearTimeout(s),n(),h;M.once("close",()=>{clearTimeout(s),n()}),M.end()}catch(e){clearTimeout(s),n()}return h},n}function Fa(){let e=ln(),t=Object.create(null);function r(t,r){Mn(e,t,[r],{tag:"cache"})}function n(e,n={}){if(dn(t,e))return;let s=ye(n,"fun");Gr(s)||(s=async()=>{});let i=ye(n,"inputs");hr(i)||(i=[]);let u=ye(n,"timeExpired");Lr(u)||(u=5e3),u=fr(u);let o=ye(n,"timeFrom");"end"!==o&&(o="start");let l=ye(n,"useCacheWhenError");Dr(l)||(l=!1);let a=ye(n,"useCloneDeep");Dr(a)||(a=!0),t[e]={needExec:!0,fun:s,pm:null,gen:0,inputs:i,value:null,time:null,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a},r("message",{fun:"set",key:e,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a})}async function s(e,n={}){if(dn(t,e)){let s=t[e],i=ye(n,"useCloneDeep");if(Dr(i)||(i=s.useCloneDeep),s.pm)return r("message",{fun:"get",key:e,msg:"waiting"}),await s.pm,i?wu(s.value):s.value;let u=Date.now(),o=s.needExec,l=u-s.time;if(o?r("message",{fun:"get",key:e,msg:"execute first"}):s.timeExpired>0&&l>s.timeExpired&&(r("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:l}),o=!0),o){r("message",{fun:"get",key:e,msg:"fun start"}),s.needExec=!1;let t,n,i=s.gen,o=async()=>{try{let t;try{t=await s.fun(...s.inputs)}catch(n){if(r("error",{fun:"get",key:e,msg:n}),!s.useCacheWhenError)throw s.gen===i&&(s.needExec=!0),n;t=void 0}s.gen===i&&(s.value=t,s.time="end"===s.timeFrom?Date.now():u)}finally{s.pm=null,r("message",{fun:"get",key:e,msg:"fun end"})}},l=new Promise((e,r)=>{t=e,n=r});s.pm=l,o().then(t,n),await l}else r("message",{fun:"get",key:e,msg:"use cache"});return i?wu(s.value):s.value}return r("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=n,e.getProxy=async function(e,t={}){return n(e,t),s(e,t)},e.get=s,e.update=function(e,n){dn(t,e)&&(r("message",{fun:"updateValue",key:e}),t[e].value=n,t[e].time=Date.now(),t[e].gen+=1)},e.clear=function(e){dn(t,e)&&(r("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){dn(t,e)&&(r("message",{fun:"remove",key:e}),delete t[e])},e}function ka(r,n=1){return function(e,t=1,r={}){let n=1,s=ye(r,"path"),i=ye(r,"fs");if(!Qr(e,{fs:i}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&Lr(t)&&(t=fr(t))<1&&(t=1),function e(r){let u=[];return Qr(r,{fs:i})?(_r(i.readdirSync(r),function(o){let l=s.resolve(r,o),a=null;try{a=i.statSync(l)}catch(e){}a&&a.isDirectory()?(u.push({isFolder:!0,level:n,path:l,name:s.basename(l)}),n+=1,(n<=t||null===t)&&(u=u.concat(e(l))),n-=1):u.push({isFolder:!1,level:n,path:l,name:s.basename(l)})}),u):u}(e)}(r,n,{path:e,fs:t})}let Va=new Map,Ha=new Map;function Ua(e){let t=ye(e,"fdLog");return er(t)||(t="./logs"),t}function Ba(e,r,n){let s=ka(e);s=s.filter(e=>!ye(e,"isFolder",!1)),s=function(e,t,r){let n=t.format(r);return ya(e,e=>{let t=ye(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=n.slice(0,t.length)})}(s,r,n);let i=[];for(let e of s)try{let r=t.statSync(e.path);if(!r.isFile())continue;i.push({path:e.path,name:e.name,size:r.size,mtimeMs:r.mtimeMs})}catch(e){}return i}function Qa(e){let t=new Map;return r=>{let n=Math.floor(r/6e4),s=t.get(n);return void 0===s&&(s=Is(6e4*n).format(e),t.set(n,s)),s}}function Ra(e,r){return new Promise((n,s)=>{let i=null,u=t.createReadStream(e,{encoding:"utf8"}),o=d.createInterface({input:u,crlfDelay:1/0});o.on("line",r);let l=e=>{i=e,o.close()};u.on("error",l),o.on("error",l),u.on("close",()=>{i?s(i):n()})})}function Oa(e){let t=null;try{t=JSON.parse(e)}catch(e){return null}return null===t||"object"!=typeof t?null:t}async function Pa(e,t,r,n=null){Gr(n)||(n=Qa(r));let s={minTimeMs:null,ev:{}};return await Ra(e,e=>{let r=Oa(e);if(null===r)return;let i=r.event;if(!er(i))return;let u=function(e){return"number"==typeof e?e:er(e)?Is(e).valueOf():NaN}(r.time);if(Number.isNaN(u))return;if((null===s.minTimeMs||u<s.minTimeMs)&&(s.minTimeMs=u),!(u>t))return;let o=n(u),l=s.ev[o];void 0===l&&(l={count:0,kp:{}},s.ev[o]=l),l.count+=1,l.kp[i]=(l.kp[i]||0)+1}),s}async function Ja(e,t,r){let n=Qa(r),s=[];for(let i of e)try{let e=await Pa(i.path,t,r,n);s.push({name:i.name,ok:!0,agg:e})}catch(e){s.push({name:i.name,ok:!1,err:String(ye(e,"message",e))})}return s}function $a(e,t){for(let r in t.ev){let n=t.ev[r],s=e[r];void 0===s&&(s={count:0,kp:{}},e[r]=s),s.count+=n.count;for(let e in n.kp)s.kp[e]=(s.kp[e]||0)+n.kp[e]}return e}async function _a(t,r={}){let n=!1!==ye(r,"useCache"),s=ye(r,"scanFiles");Gr(s)||(s=Ja);let i=ye(r,"srLog",null),u=Ba(t.fdLog,t.tStart,t.fmt),o=function(e){let t=Va.get(e);return t||(t=new Map,Va.set(e,t)),t}((l=t.fdLog,a=t.fmt,`${e.resolve(l)}|${a}`));var l,a;let c=[],d={};for(let e of u){let r=n?o.get(e.name):void 0;void 0!==r&&r.size===e.size&&r.mtimeMs===e.mtimeMs&&(null===r.minTimeMs||r.minTimeMs>r.scanTStartMs&&r.minTimeMs>t.tStartMs)?d[e.name]=r.agg:c.push(e)}if(n){let e=new Set(u.map(e=>e.name));for(let t of o.keys())e.has(t)||o.delete(t)}let D=[];if(c.length>0){let e=await s(c.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),r={};for(let t of e)r[t.name]=t;for(let e of c){let s=r[e.name];if(s&&s.ok)d[e.name]=s.agg,n&&o.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:s.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:s.agg});else{let t=ye(s,"err","no result");D.push({name:e.name,err:t}),n&&o.delete(e.name),i&&Gr(i.warn)&&i.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let M={};for(let e of u){let t=d[e.name];t&&$a(M,t)}let w=function(e,t){let r={};for(let e of t)r[e]={count:0};for(let t in e){let n=e[t];r[t]={count:n.count,...n.kp}}return Object.keys(r).sort().map(e=>({time:e,data:r[e]}))}(M,t.kpTime);return{rs:w,stat:{nFiles:u.length,nScanned:c.length,nCached:u.length-c.length,errors:D}}}function qa(t=7,r="hr",n={}){let s=function(e=7,t="hr",r={}){let n=Ua(r),s=function(e){return"day"===e?"day":"hr"}(t),i="day"===s?"YYYY-MM-DD":"YYYY-MM-DDTHH",u="day"===s?"day":"hour",o=ye(r,"timeNow"),l="number"==typeof o?Is(o):Is(),a=l.subtract(e,"day"),c=a.valueOf(),d=a.startOf(u),D=l.startOf(u),M=[];for(;!d.isAfter(D);)M.push(d.format(i)),d=d.add(1,u);return{fdLog:n,timeInterval:s,fmt:i,unit:u,tStart:a,tStartMs:c,kpTime:M,timeNow:l.valueOf()}}(t,r,n),i=JSON.stringify([e.resolve(s.fdLog),t,s.timeInterval,ye(n,"timeNow",null)]);if(Ha.has(i))return Ha.get(i);let u=_a(s,n).finally(()=>{Ha.delete(i)});return Ha.set(i,u),u}function ec(e,t){return null==e?t:"number"==typeof e?e:Is(e).valueOf()}async function tc(e,t){let r={},n=[];for(let s of e)try{await Ra(s.path,e=>{let n=Oa(e);if(null===n)return;let s=n.event;if(!er(s))return;let i=ec(n.time,t),u=(o=(t-i)/36e5)<0?Math.ceil(o)||0:Math.floor(o);var o;u<0||u>24||(r[s]||(r[s]={last1Day:0,last8Hour:0,last4Hour:0,last1Hour:0}),u<=24&&(r[s].last1Day+=1),u<=8&&(r[s].last8Hour+=1),u<=4&&(r[s].last4Hour+=1),u<=1&&(r[s].last1Hour+=1))})}catch(e){n.push({name:s.name,err:String(ye(e,"message",e))})}return{kp:r,errors:n}}function rc(r={}){let n=r.fpSelf,s=r.cwd||process.cwd(),i=r.pkgName||"w-web-perm",u=r.rel||"server/staLogs/staLogsCore.shellWorker.mjs",o=r.existsSync||t.existsSync,l=r.readFileSync||t.readFileSync,a=r.createRequire||c.createRequire;if("string"!=typeof n||""===n)throw new Error("invalid fpSelf");let d=[],D=function(t,r){let n=t;for(;;){if(r(e.join(n,"package.json")))return n;let t=e.dirname(n);if(t===n)return"";n=t}}(e.dirname(n),o);if(""===D)d.push(`(a) no package.json above ${e.dirname(n)}`);else{let t="";try{t=JSON.parse(l(e.join(D,"package.json"),"utf8")).name}catch(e){}let r=e.join(D,u);if(t!==i)d.push(`(a) ${e.join(D,"package.json")} name[${t}]`);else{if(o(r))return r;d.push(`(a) ${r}`)}}let M=`${i}/${u}`,w=[["b",n],["c",e.join(s,"noop.js")]];for(let[e,t]of w)try{let r=a(t).resolve(M);if(o(r))return r;d.push(`(${e}) ${r}`)}catch(r){d.push(`(${e}) resolve ${M} from ${t}`)}throw new Error(`cannot resolve ${u} of ${i} (the package must be installed with its server folder), tried: ${d.join("; ")}`)}let nc="";function sc(e,t=""){let r=Hr();if("string"!=typeof t||""===t)try{""===nc&&(nc=rc({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:D&&"SCRIPT"===D.tagName.toUpperCase()&&D.src||new URL("w-web-perm.umd.js",document.baseURI).href)})),t=nc}catch(e){return r.reject(e),r}let n=new u.Worker(t),s=!1,i=(e,t)=>{s||(s=!0,e(t));try{n.terminate().catch(()=>{})}catch(e){}};return n.on("message",e=>{"done"===e.mode?i(r.resolve,e.payload):"error"===e.mode&&i(r.reject,e.payload)}),n.on("error",e=>{i(r.reject,e)}),n.on("exit",e=>{i(r.reject,new Error(`staLogs worker exited without result, code=${e}`))}),n.postMessage(e),r}async function ic(e,t,r){return 0===e.length?[]:sc({kind:"scan",files:e,tStartMs:t,fmt:r})}async function uc(e,t){return 0===e.length?{kp:{},errors:[]}:sc({kind:"table",files:e,nowMs:t})}function oc(e={}){return async function(e={}){let t=Ua(e),r=ye(e,"timeNow"),n="number"==typeof r?Is(r):Is(),s=n.valueOf(),i=ye(e,"scanTableFiles");Gr(i)||(i=tc);let u=ye(e,"srLog",null),o=Ba(t,n.subtract(25,"hour"),"YYYY-MM-DDTHH"),{kp:l,errors:a}=await i(o.map(e=>({path:e.path,name:e.name})),s);for(let e of a)u&&Gr(u.warn)&&u.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:e.err});let c=[];for(let e in l)c.push({event:e,...l[e]});return c.sort((e,t)=>t.last1Day-e.last1Day),{rs:c,stat:{nFiles:o.length,errors:a}}}({...e,scanTableFiles:uc})}async function lc(e=7,t="hr",r={}){let n=await function(e=7,t="hr",r={}){return qa(e,t,{...r,scanFiles:ic})}(e,t,r);return n.rs}let ac=["verifyConn","updateTargets-success","checkUser-error","api/getPerm-success","getWebInfor-success"],cc=["api/getPermUserInfor-success","api/getUserByToken-success","getStaEvent-success","getStaEventTable-success","getTokenUser-error","getWebInfor-success","updateGrups-success","updatePemis-success","updateTabItems-pickKeysOnly","updateTargets-success","updateUsers-success","verifyConn","verifyConn-error"];function dc(e="hr",t=!0){let r="day"===e?"YYYY-MM-DD":"YYYY-MM-DDTHH",n="hr"===e?"hour":"day",s="hr"===e?48:7,i=function(e){return"many"===e?cc:ac}(t),u=Is("2025-01-01T00:00:00"),o=[];for(let e=0;e<s;e++){let t=u.add(e,n),s={count:0};i.forEach((t,r)=>{let n=Math.round(20+15*Math.sin((e+3*r)/4));s[t]=n,s.count+=n}),o.push({time:t.format(r),data:s})}return o}function Dc(e={}){let t=ye(e,"fdLog","");er(t)||(t="./logs");let r=ye(e,"mock",!1),n=ye(e,"srLog",null),s=async(e=7,s="hr")=>{if(r)return dc(s,r);return await lc(e,s,{fdLog:t,srLog:n})},i=Fa(),u=async()=>{if(r)return function(e=!0){if("many"!==e)return[{event:"verifyConn",last1Day:240,last8Hour:90,last4Hour:50,last1Hour:15},{event:"updateTargets-success",last1Day:180,last8Hour:70,last4Hour:38,last1Hour:11},{event:"checkUser-error",last1Day:120,last8Hour:45,last4Hour:24,last1Hour:7},{event:"api/getPerm-success",last1Day:90,last8Hour:33,last4Hour:18,last1Hour:5},{event:"getWebInfor-success",last1Day:60,last8Hour:22,last4Hour:12,last1Hour:3}];return cc.map((e,t)=>{let r=400-20*t;return{event:e,last1Day:r,last8Hour:Math.round(.4*r),last4Hour:Math.round(.2*r),last1Hour:Math.round(.05*r)}})}(r);let e=await async function(e={}){return(await oc(e)).rs}({fdLog:t,srLog:n});return e},o=Fa(),l={getStaEvent:async(e,t=7,r="hr")=>{let n=`${t}:${r}`,u=await i.getProxy(n,{fun:s,inputs:[t,r],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEvent"));return Array.isArray(u)?u:Promise.reject("cannotGetStaEvent")},getStaEventTable:async e=>{let t=await o.getProxy("staEventTable",{fun:u,inputs:[],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEventTable"));return Array.isArray(t)?t:Promise.reject("cannotGetStaEventTable")}};return l}function Mc(e){return Array.from(e,e=>{let t=e.charCodeAt(0);return t<32||127===t?"?":e}).join("")}function wc(e){if(hr(e))return e.map(wc);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=e.length,r=Math.min(4,Math.floor(t/8));return 0===r?`(len=${t})`:`${Mc(e.slice(0,r))}...${Mc(e.slice(-r))}(len=${t})`}function yc(e){if(null===e||"object"!=typeof e||hr(e))return wc(e);let t={};for(let r of Object.keys(e))t[r]="token"===r.toLowerCase()?wc(e[r]):e[r];return t}function gc(e){if(hr(e))return e.map(gc);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=null;try{t=new URL(e)}catch(e){return"(invalid-url)"}return"http:"!==t.protocol&&"https:"!==t.protocol?t.protocol:`${t.origin}${t.pathname}`}let Ic=["invalidUrl","invalidTokenSelf","invalidTokenTar","invalidUserIdTar","noTokenKeyValueInUrl","noTokenKeyUserIdInUrl","noTokenInUrl","cannotGetUserByUrl","cannotGetUsersByUrl","cannotGetUserDataByUrl","cannotGetUsersDataByUrl","noUserDataByUrl","noUsersDataByUrl","noUserDataAfterConvert"],mc=/^[A-Za-z]{1,40}$/;function Cc(e,t={}){let r=ye(t,"failValue",null),n=ye(t,"onFail",null);return async(...t)=>{try{return await e(...t)}catch(e){if(Gr(n))try{n(function(e){let t=er(e)?e:ye(e,"message");if(er(t)&&Ic.includes(t))return{upstream:t};let r=null===e?"null":hr(e)?"array":typeof e,n=ye(e,"name");return{upstreamType:r,upstreamName:er(n)&&mc.test(n)?n:""}}(e))}catch(e){}return r}}}function pc({srLog:e}){return({userId:t,tableName:r,methodName:n})=>{let s="";return er(t)?"select"!==n&&(s="userNoPermission"):s="cannotFindUserId",""===s||(e.error({event:"authorizeExec",ok:!1,msg:s,userId:t,tableName:r,methodName:n}),!1)}}function fc(e,{srLog:t}){return async(r,n,s,i)=>{try{return await e(r,n,s,i)}catch(e){let i="string"==typeof e?e:e&&e.message||String(e);return t.error({event:"operOrm-error",msg:"anUnexpectedErrorOccurred",raw:i,userId:r,tableName:n,methodName:s}),Promise.reject("anUnexpectedErrorOccurred")}}}return function(r,n,s,i,u,o,l={}){let a=null;if(!Gr(r))throw console.log("invalid WOrm",r),new Error("invalid WOrm");if(!er(n))throw console.log("invalid url",n),new Error("invalid url");if(!er(s))throw console.log("invalid db",s),new Error("invalid db");if(!Gr(i))throw console.log("invalid getUserByToken",i),new Error("invalid getUserByToken");if(!Gr(u))throw console.log("invalid verifyClientUser",u),new Error("invalid verifyClientUser");if(!Gr(o))throw console.log("invalid verifyAppUser",o),new Error("invalid verifyAppUser");let c=ye(l,"serverPort");Lr(c)||(c=11006),c=fr(c);let d=ye(l,"webName",{}),D=ye(l,"webDescription",{}),M=ye(l,"webLogo",""),w=ye(l,"subfolder","");var y,g;er(w)&&("/"===Vr(w,1)&&(g=1,w=er(y=w)&&Fr(g)?0===(g=fr(g))?y:kr(y,y.length-g):""),"/"!==kr(w,1)&&(w=`/${w}`));let I=ye(l,"urlRedirect",""),m=ye(l,"showLanguage","n"),C=ye(l,"language","eng"),p=ye(l,"showModeEditTargets","n"),f=ye(l,"showModeEditPemis","n"),L=ye(l,"showModeEditGrups","n"),h=ye(l,"showModeEditUsers","n"),b=ye(l,"modeEditTargets","n"),N=ye(l,"modeEditPemis","n"),A=ye(l,"modeEditGrups","n"),x=ye(l,"modeEditUsers","n"),E=ye(l,"widthTargetId",""),T=ye(l,"widthTargetDescription",""),S=ye(l,"widthPemisName",""),Z=ye(l,"widthPemisDescription",""),v=ye(l,"widthGrupsName",""),Y=ye(l,"widthGrupsDescription",""),X=ye(l,"widthUsersName",""),j=ye(l,"widthUsersEmail",""),z=ye(l,"widthUsersDescription",""),G=ye(l,"mappingBy","");"id"!==G&&"email"!==G&&"name"!==G&&(G="id");let W=ye(l,"kpLangExt",null),K=Ea({kpLangExt:W,webName:d,webDescription:D}),F=((e={})=>{let t=ye(e,"logFd","");er(t)||(t="./logs");let r=ye(e,"logInterval","");er(r)||(r="hr");let n=ye(e,"logNumKeep",null),s={fdLog:t,interval:r};if(null!=n&&""!==n){if(!Lr(n))throw new Error(`invalid logNumKeep[${n}], must be positive integer`);s.numKeep=fr(n)}return Ka(s)})(l);try{Qu(l)}catch(e){throw F.error({event:"WWebPerm-init-error",msg:e.message}),e}let k=e=>t=>{F.warn({event:`inject-${e}-fail`,...t})};i=Cc(i,{failValue:null,onFail:k("getUserByToken")}),u=Cc(u,{failValue:!1,onFail:k("verifyClientUser")}),o=Cc(o,{failValue:!1,onFail:k("verifyAppUser")});let V={};try{V=Pl(da,r,n,s)}catch(e){throw console.log(e),F.error({event:"WServOrm-init-error",msg:e&&e.message||"WServOrmInitFailed"}),e}let{woItems:H,procOrm:U}=V,B=new function(){let e=new Map,t=new Map;return async(r,n)=>{let s=(e.get(r)||Promise.resolve()).then(async()=>await n(),async()=>await n());e.set(r,s.catch(()=>{})),t.set(r,(t.get(r)||0)+1);try{return await s}finally{let n=t.get(r)-1;n<=0?(t.delete(r),e.delete(r)):t.set(r,n)}}},Q=function(e){return async(t,r,n,s={})=>{let i=ye(s,"errKey","");er(i)||(i="saveInProgress");let u=`${t}:${r}`;return await e.setWithFree([u],n).catch(e=>e===`setWithFree: key in use: ${u}`?Promise.reject(i):Promise.reject(e))}}(Dn()),R=Za(H,U,{srLog:F,kmx:B,lockSave:Q}),O=ye(l,"logFd","");er(O)||(O="./logs");let P=Dc({fdLog:O,mock:ye(l,"staEventMock",!1),srLog:F}),J=async e=>{let t=null;if(er(e)&&(t=i(e),Wr(t)&&(t=await t)),!_t(t))return console.log("token",wc(e)),F.error({event:"getTokenUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");await(async e=>{if(!er(ye(e,"id","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserId"}),Promise.reject("cannotGetUserId");if(!er(ye(e,"email","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserEmail"}),Promise.reject("cannotGetUserEmail");if(!er(ye(e,"name","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserName"}),Promise.reject("cannotGetUserName");let t=ye(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),F.error({event:"checkUser-error",msg:"cannotGetUserRole"}),Promise.reject("cannotGetUserRole"))})(t);let r=ye(t,G,"");if(!er(r))return console.log("userSelf",t),console.log("mappingBy",G),F.error({event:"getTokenUser-error",msg:"cannotGetUserProp",mappingBy:G}),Promise.reject("cannotGetUserProp");let n=await H.users.select({[G]:r,isActive:"y"});return n=ye(n,0,null),_t(n)?n:(console.log("userSelf",t),console.log("mappingBy",G),F.error({event:"getTokenUser-error",msg:"cannotGetUserFromPerm",mappingBy:G}),Promise.reject("cannotGetUserFromPerm"))},$=async(e,t="")=>{let r=await J(e),n=u(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),F.error({event:"getAndVerifyClientUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},_=async(e,t="")=>{let r=null;if(er(e)&&(r=i(e),Wr(r)&&(r=await r)),!_t(r))return console.log("token",wc(e)),F.error({event:"getAndVerifyAppUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");let n=o(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),F.error({event:"getAndVerifyAppUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},q=async(e,t="")=>(await $(e,t),!0),ee=async(e,t,r)=>await B("syncAndReplaceTabs:"+r,async()=>{let n=ye(t,"from","");if(!er(n))return console.log("inp",t),F.error({event:"syncAndReplaceTabs-error",msg:"invalidFrom",keyTable:r}),Promise.reject("invalidFrom");let s=ye(t,"rows",[]);if(!Er(s))return console.log("inp",t),console.log("keyTable",r),F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",keyTable:r}),Promise.reject("invalidRows");let i=s.findIndex(e=>!Sa(e));if(i>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowInvalid",keyTable:r,from:n,row:i}),Promise.reject("invalidRows");s=Ot(s,(e,t)=>(e.from=n,e)),s=en(s,da[r].keys);let u={from:!0,userId:!0,timeCreate:!0,userIdUpdate:!0,timeUpdate:!0},o=s.findIndex(e=>!Object.keys(e).some(t=>{return!0!==u[t]&&("string"==typeof(r=e[t])&&""!==r||"number"==typeof r&&Number.isFinite(r)||"boolean"==typeof r);var r}));if(o>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowBlank",keyTable:r,from:n,row:o}),Promise.reject("invalidRows");let l="targets"===r?"id":"grups"===r||"pemis"===r?"name":null;if(null!==l){let e=s.findIndex(e=>!er(ye(e,l)));if(e>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"id"===l?"idInvalid":"nameInvalid",keyTable:r,from:n,row:e,field:l}),Promise.reject("invalidRows")}let a=Ta(s);if(null!==a){let e="htmlMarkup"===a.reason?"htmlMarkupNotAllowed":"invalidRows";return F.error({event:"syncAndReplaceTabs-error",msg:e,reason:a.reason,keyTable:r,from:n,row:a.k,field:a.field}),Promise.reject(e)}let c=e=>{let t=ye(e,"id");return er(t)||"number"==typeof t&&Number.isFinite(t)?String(t):null},d=s.map(c).filter(e=>null!==e);if(d.length>0){let e=null;try{e=await H[r].select({id:{$in:d}})}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=Ya(e,"anUnexpectedErrorOccurred");return F.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let t=new Map;for(let r of e)t.set(String(r.id),r.from);let i=s.findIndex(e=>{let r=c(e);return null!==r&&t.has(r)&&t.get(r)!==n});if(i>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"idOtherFrom",keyTable:r,from:n,row:i,field:"id"}),Promise.reject("invalidRows")}let D=null;try{await H[r].delAll({from:n}),D=await U(e,r,"insert",s)}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=Ya(e);return F.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n}),Promise.reject(s)}return D}),te=async e=>{let t=await(async(e,t)=>{let r=await H.users.select({[e]:t,isActive:"y"});return r=ye(r,0,null),_t(r)?r:null})("id",e);return _t(t)?t:null},re=async e=>{let t=await te(e),r=ba(t,await H.grups.select(),await H.pemis.select(),await H.targets.select());if(!_t(r))return console.log("userId",e),F.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules");let n=Ot(ye(r,"grups",[]),"name");return n=Jt(n,";"),{user:{...t,grupsNames:n},rules:ye(r,"rules",[])}},ne="dist",se="./node_modules/w-web-perm/dist";Rr(se)&&(ne=se);let ie="index.html";try{let r=e.resolve(ne,"index.tmp");if(Pr(r)||(r=e.resolve(ne,ie)),!Pr(r))throw console.log("fpEntryIn",r),new Error("invalid fpEntryIn");let n=e.resolve(ne,ie),s=t.readFileSync(r,"utf8");s=Jr(s,"/mperm/","{sfd}/"),s=Jr(s,"{sfd}",w),s=Jr(s,"{urlRedirect}",I),s=Jr(s,"{language}",C),t.writeFileSync(n,s,"utf8")}catch(e){console.log(e),console.log(`can not generate ${ie}`)}let ue=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]getUserByToken/check token: invalid token"),F.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await $(t,"getUserByToken");return _t(r)?(F.info({event:"api/getUserByToken-success",userId:ye(r,"id","")}),r):(console.log("token",wc(t)),console.log("[API]getUserByToken/check user: invalid user"),F.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPerm",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]getPerm/check token: invalid token"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await $(t,"getPerm");if(!_t(r))return console.log("token",wc(t)),console.log("[API]getPerm/check userSelf: invalid userSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=ye(r,"id","");if(!er(n))return console.log("token",wc(t)),console.log("userSelf",r),console.log("[API]getPerm/check userIdSelf: invalid userIdSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=await re(n);return _t(s)?(F.info({event:"api/getPerm-success",userId:n}),s):(console.log("token",wc(t)),console.log("userSelf",r),console.log("userIdSelf",n),console.log("[API]getPerm/check userWithRulesSelf: invalid userWithRulesSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPermUserInfor",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("[API]getPermUserInfor/check tokenSelf: invalid tokenSelf"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!_t(await _(t,"getPermUserInfor")))return console.log("req.query",yc(ye(e,"query"))),console.log("tokenSelf",wc(t)),console.log("[API]getPermUserInfor/check userSelf: invalid userSelf"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=ye(e,"query.userId","");if(!er(r))return console.log("req.query",yc(ye(e,"query"))),console.log("tokenSelf",wc(t)),console.log("[API]getPermUserInfor/check userIdFind: invalid userIdFind"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await re(r);return _t(n)?(F.info({event:"api/getPermUserInfor-success",userId:r}),n):(console.log("userIdFind",r),console.log("[API]getPermUserInfor/check userWithRulesFind: invalid userWithRulesFind"),F.error({event:"api/getPermUserInfor-error",msg:"userIdNoPermrules"}),Promise.reject("userIdNoPermrules"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]syncAndReplaceTabs/check token: invalid token"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=ye(e,"query.keyTable","");if(!er(r))return console.log("req.query",yc(ye(e,"query"))),console.log("keyTable",r),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!["targets","pemis","grups","users"].includes(r))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",r),F.error({event:"api/syncAndReplaceTabs-error",msg:"invalidKeyTable",keyTable:r}),Promise.reject("invalidKeyTable");let n=await _(t,"syncAndReplaceTabs");if(!_t(n))return console.log("token",wc(t)),console.log("[API]syncAndReplaceTabs/check user: invalid user"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=ye(n,"id","");if(!er(s))return console.log("token",wc(t)),console.log("user",n),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let i=await(async e=>{let t=ye(e,"payload");if(er(t)&&(t=Kr(t)),!_t(t))return console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidPayload"}),Promise.reject("invalidPayload");let r=ye(t,"from","");if(!er(r))return console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidFromInPayload"}),Promise.reject("invalidFromInPayload");let n=ye(t,"rows",[]);return Er(n)?{from:r,rows:n}:(console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidRowsInPayload"}),Promise.reject("invalidRowsInPayload"))})(e),u=await ee(s,i,r);return F.info({event:"api/syncAndReplaceTabs-success",userId:s,keyTable:r}),u})();return zr(r.msg)&&(r.msg=r.msg.message),r}}],oe=at(da),le=oe,ae={port:c,pathStaticFiles:ne,apiName:"api",apis:ue,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:r,headers:n,req:s})=>{let i=function(e,t){return er(e)&&Fr(t)?0===(t=fr(t))?e:Vr(e,e.length-t):""}(t,7);if(!er(i))return console.log("apiType",e),console.log("authorization",wc(t)),console.log("invalid token"),F.error({event:"verifyConn-error",ok:!1,apiType:e,msg:"tokenNoPermission"}),!1;let u=!1,o="";await q(i,e).then(()=>{u=!0}).catch(e=>{o="string"==typeof e?e:e&&e.message||"checkTokenFail"});let l=ye(n,"x-forwarded-for","").split(",")[0].trim();er(l)||(l=ye(s,"info.remoteAddress","")||ye(s,"socket.remoteAddress","")||ye(s,"connection.remoteAddress",""));let a=ye(n,"origin",""),c=gc(ye(n,"referer",""));return u?F.info({event:"verifyConn",ok:u,apiType:e,ip:l,origin:a,referer:c}):F.error({event:"verifyConn-error",ok:u,apiType:e,ip:l,origin:a,referer:c,msg:o}),u},getUserIdByToken:async e=>{let t=ye(await i(e),"id","");return er(t)?t:(console.log("token",wc(e)),console.log("userId",t),F.error({event:"getUserIdByToken-error",msg:"cannotFindUserId"}),Promise.reject("cannotFindUserId"))},corsOrigins:["*"],useDbOrm:!0,kpOrm:H,operOrm:fc(U,{srLog:F}),tableNamesExec:oe,methodsExec:["select"],authorizeExec:pc({srLog:F}),tableNamesSync:le,kpFunExt:{getWebInfor:e=>(F.info({event:"getWebInfor-success",userId:e}),{webLogo:M,showLanguage:m,language:C,kpLang:K,showModeEditTargets:p,showModeEditPemis:f,showModeEditGrups:L,showModeEditUsers:h,modeEditTargets:b,modeEditPemis:N,modeEditGrups:A,modeEditUsers:x,widthTargetId:E,widthTargetDescription:T,widthPemisName:S,widthPemisDescription:Z,widthGrupsName:v,widthGrupsDescription:Y,widthUsersName:X,widthUsersEmail:j,widthUsersDescription:z}),updateTargets:R.updateTargets,updatePemis:R.updatePemis,updateGrups:R.updateGrups,updateUsers:(e,t)=>{let r="for:grups"===x?{pickKeysOnly:["cgrups"]}:{};return R.updateUsers(e,t,r)},getStaEvent:async(e,t,r)=>{try{let n=await P.getStaEvent(e,t,r);return F.info({event:"getStaEvent-success",userId:e}),n}catch(t){throw F.error({event:"getStaEvent-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEvent"}),t}},getStaEventTable:async e=>{try{let t=await P.getStaEventTable(e);return F.info({event:"getStaEventTable-success",userId:e}),t}catch(t){throw F.error({event:"getStaEventTable-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEventTable"}),t}}},fpTableTags:"tableTags-web-perm.json"};try{a=new Hu(ae)}catch(e){throw console.log(e),F.error({event:"WServHapiServer-init-error",msg:e&&e.message||"WServHapiServerInitFailed"}),e}return a}});
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("util"),require("url"),require("pino"),require("module"),require("readline")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","util","url","pino","module","readline"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-perm"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.util$2,e.url,e.pino,e.module$1,e.readline)}(this,function(e,t,r,n,s,i,o,u,l,a,c,d){"use strict";var w="undefined"!=typeof document?document.currentScript:null,D=Array.isArray,y="object"==typeof global&&global&&global.Object===Object&&global,M="object"==typeof self&&self&&self.Object===Object&&self,g=y||M||Function("return this")(),m=g.Symbol,I=Object.prototype,f=I.hasOwnProperty,p=I.toString,C=m?m.toStringTag:void 0;var h=Object.prototype.toString;var L=m?m.toStringTag:void 0;function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":L&&L in Object(e)?function(e){var t=f.call(e,C),r=e[C];try{e[C]=void 0;var n=!0}catch(e){}var s=p.call(e);return n&&(t?e[C]=r:delete e[C]),s}(e):function(e){return h.call(e)}(e)}function N(e){return null!=e&&"object"==typeof e}function A(e){return"symbol"==typeof e||N(e)&&"[object Symbol]"==b(e)}var x=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,E=/^\w*$/;function T(e,t){if(D(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!A(e))||(E.test(e)||!x.test(e)||null!=t&&e in Object(t))}function S(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Z(e){if(!S(e))return!1;var t=b(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var v,Y=g["__core-js_shared__"],X=(v=/[^.]+$/.exec(Y&&Y.keys&&Y.keys.IE_PROTO||""))?"Symbol(src)_1."+v:"";var j=Function.prototype.toString;function z(e){if(null!=e){try{return j.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var G=/^\[object .+?Constructor\]$/,W=Function.prototype,K=Object.prototype,k=W.toString,F=K.hasOwnProperty,V=RegExp("^"+k.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function H(e){return!(!S(e)||(t=e,X&&X in t))&&(Z(e)?V:G).test(z(e));var t}function U(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return H(r)?r:void 0}var B=U(Object,"create");var R=Object.prototype.hasOwnProperty;var Q=Object.prototype.hasOwnProperty;function O(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function P(e,t){return e===t||e!=e&&t!=t}function J(e,t){for(var r=e.length;r--;)if(P(e[r][0],t))return r;return-1}O.prototype.clear=function(){this.__data__=B?B(null):{},this.size=0},O.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},O.prototype.get=function(e){var t=this.__data__;if(B){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return R.call(t,e)?t[e]:void 0},O.prototype.has=function(e){var t=this.__data__;return B?void 0!==t[e]:Q.call(t,e)},O.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=B&&void 0===t?"__lodash_hash_undefined__":t,this};var $=Array.prototype.splice;function _(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}_.prototype.clear=function(){this.__data__=[],this.size=0},_.prototype.delete=function(e){var t=this.__data__,r=J(t,e);return!(r<0)&&(r==t.length-1?t.pop():$.call(t,r,1),--this.size,!0)},_.prototype.get=function(e){var t=this.__data__,r=J(t,e);return r<0?void 0:t[r][1]},_.prototype.has=function(e){return J(this.__data__,e)>-1},_.prototype.set=function(e,t){var r=this.__data__,n=J(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var q=U(g,"Map");function ee(e,t){var r,n,s=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?s["string"==typeof t?"string":"hash"]:s.map}function te(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}te.prototype.clear=function(){this.size=0,this.__data__={hash:new O,map:new(q||_),string:new O}},te.prototype.delete=function(e){var t=ee(this,e).delete(e);return this.size-=t?1:0,t},te.prototype.get=function(e){return ee(this,e).get(e)},te.prototype.has=function(e){return ee(this,e).has(e)},te.prototype.set=function(e,t){var r=ee(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function re(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,s=t?t.apply(this,n):n[0],i=r.cache;if(i.has(s))return i.get(s);var o=e.apply(this,n);return r.cache=i.set(s,o)||i,o};return r.cache=new(re.Cache||te),r}re.Cache=te;var ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/\\(\\)?/g,ie=function(e){var t=re(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ne,function(e,r,n,s){t.push(n?s.replace(se,"$1"):r||e)}),t}),oe=ie;function ue(e,t){for(var r=-1,n=null==e?0:e.length,s=Array(n);++r<n;)s[r]=t(e[r],r,e);return s}var le=m?m.prototype:void 0,ae=le?le.toString:void 0;function ce(e){if("string"==typeof e)return e;if(D(e))return ue(e,ce)+"";if(A(e))return ae?ae.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function de(e){return null==e?"":ce(e)}function we(e,t){return D(e)?e:T(e,t)?[e]:oe(de(e))}function De(e){if("string"==typeof e||A(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function ye(e,t){for(var r=0,n=(t=we(t,e)).length;null!=e&&r<n;)e=e[De(t[r++])];return r&&r==n?e:void 0}function Me(e,t,r){var n=null==e?void 0:ye(e,t);return void 0===n?r:n}function ge(e){var t=this.__data__=new _(e);this.size=t.size}ge.prototype.clear=function(){this.__data__=new _,this.size=0},ge.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ge.prototype.get=function(e){return this.__data__.get(e)},ge.prototype.has=function(e){return this.__data__.has(e)},ge.prototype.set=function(e,t){var r=this.__data__;if(r instanceof _){var n=r.__data__;if(!q||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new te(n)}return r.set(e,t),this.size=r.size,this};function me(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new te;++t<r;)this.add(e[t])}function Ie(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function fe(e,t){return e.has(t)}me.prototype.add=me.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},me.prototype.has=function(e){return this.__data__.has(e)};function pe(e,t,r,n,s,i){var o=1&r,u=e.length,l=t.length;if(u!=l&&!(o&&l>u))return!1;var a=i.get(e),c=i.get(t);if(a&&c)return a==t&&c==e;var d=-1,w=!0,D=2&r?new me:void 0;for(i.set(e,t),i.set(t,e);++d<u;){var y=e[d],M=t[d];if(n)var g=o?n(M,y,d,t,e,i):n(y,M,d,e,t,i);if(void 0!==g){if(g)continue;w=!1;break}if(D){if(!Ie(t,function(e,t){if(!fe(D,t)&&(y===e||s(y,e,r,n,i)))return D.push(t)})){w=!1;break}}else if(y!==M&&!s(y,M,r,n,i)){w=!1;break}}return i.delete(e),i.delete(t),w}var Ce=g.Uint8Array;function he(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function Le(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var be=m?m.prototype:void 0,Ne=be?be.valueOf:void 0;function Ae(e,t){for(var r=-1,n=t.length,s=e.length;++r<n;)e[s+r]=t[r];return e}function xe(e,t,r){var n=t(e);return D(e)?n:Ae(n,r(e))}function Ee(e,t){for(var r=-1,n=null==e?0:e.length,s=0,i=[];++r<n;){var o=e[r];t(o,r,e)&&(i[s++]=o)}return i}function Te(){return[]}var Se=Object.prototype.propertyIsEnumerable,Ze=Object.getOwnPropertySymbols,ve=Ze?function(e){return null==e?[]:(e=Object(e),Ee(Ze(e),function(t){return Se.call(e,t)}))}:Te;function Ye(e){return N(e)&&"[object Arguments]"==b(e)}var Xe=Object.prototype,je=Xe.hasOwnProperty,ze=Xe.propertyIsEnumerable,Ge=Ye(function(){return arguments}())?Ye:function(e){return N(e)&&je.call(e,"callee")&&!ze.call(e,"callee")},We=Ge;var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,ke=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,Fe=ke&&ke.exports===Ke?g.Buffer:void 0,Ve=(Fe?Fe.isBuffer:void 0)||function(){return!1},He=/^(?:0|[1-9]\d*)$/;function Ue(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&He.test(e))&&e>-1&&e%1==0&&e<t}function Be(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Re={};function Qe(e){return function(t){return e(t)}}Re["[object Float32Array]"]=Re["[object Float64Array]"]=Re["[object Int8Array]"]=Re["[object Int16Array]"]=Re["[object Int32Array]"]=Re["[object Uint8Array]"]=Re["[object Uint8ClampedArray]"]=Re["[object Uint16Array]"]=Re["[object Uint32Array]"]=!0,Re["[object Arguments]"]=Re["[object Array]"]=Re["[object ArrayBuffer]"]=Re["[object Boolean]"]=Re["[object DataView]"]=Re["[object Date]"]=Re["[object Error]"]=Re["[object Function]"]=Re["[object Map]"]=Re["[object Number]"]=Re["[object Object]"]=Re["[object RegExp]"]=Re["[object Set]"]=Re["[object String]"]=Re["[object WeakMap]"]=!1;var Oe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Pe=Oe&&"object"==typeof module&&module&&!module.nodeType&&module,Je=Pe&&Pe.exports===Oe&&y.process,$e=function(){try{var e=Pe&&Pe.require&&Pe.require("util").types;return e||Je&&Je.binding&&Je.binding("util")}catch(e){}}(),_e=$e&&$e.isTypedArray,qe=_e?Qe(_e):function(e){return N(e)&&Be(e.length)&&!!Re[b(e)]},et=Object.prototype.hasOwnProperty;function tt(e,t){var r=D(e),n=!r&&We(e),s=!r&&!n&&Ve(e),i=!r&&!n&&!s&&qe(e),o=r||n||s||i,u=o?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],l=u.length;for(var a in e)!t&&!et.call(e,a)||o&&("length"==a||s&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ue(a,l))||u.push(a);return u}var rt=Object.prototype;function nt(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||rt)}function st(e,t){return function(r){return e(t(r))}}var it=st(Object.keys,Object),ot=Object.prototype.hasOwnProperty;function ut(e){if(!nt(e))return it(e);var t=[];for(var r in Object(e))ot.call(e,r)&&"constructor"!=r&&t.push(r);return t}function lt(e){return null!=e&&Be(e.length)&&!Z(e)}function at(e){return lt(e)?tt(e):ut(e)}function ct(e){return xe(e,at,ve)}var dt=Object.prototype.hasOwnProperty;var wt=U(g,"DataView"),Dt=U(g,"Promise"),yt=U(g,"Set"),Mt=U(g,"WeakMap"),gt="[object Map]",mt="[object Promise]",It="[object Set]",ft="[object WeakMap]",pt="[object DataView]",Ct=z(wt),ht=z(q),Lt=z(Dt),bt=z(yt),Nt=z(Mt),At=b;(wt&&At(new wt(new ArrayBuffer(1)))!=pt||q&&At(new q)!=gt||Dt&&At(Dt.resolve())!=mt||yt&&At(new yt)!=It||Mt&&At(new Mt)!=ft)&&(At=function(e){var t=b(e),r="[object Object]"==t?e.constructor:void 0,n=r?z(r):"";if(n)switch(n){case Ct:return pt;case ht:return gt;case Lt:return mt;case bt:return It;case Nt:return ft}return t});var xt=At,Et="[object Arguments]",Tt="[object Array]",St="[object Object]",Zt=Object.prototype.hasOwnProperty;function vt(e,t,r,n,s,i){var o=D(e),u=D(t),l=o?Tt:xt(e),a=u?Tt:xt(t),c=(l=l==Et?St:l)==St,d=(a=a==Et?St:a)==St,w=l==a;if(w&&Ve(e)){if(!Ve(t))return!1;o=!0,c=!1}if(w&&!c)return i||(i=new ge),o||qe(e)?pe(e,t,r,n,s,i):function(e,t,r,n,s,i,o){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new Ce(e),new Ce(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return P(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var u=he;case"[object Set]":var l=1&n;if(u||(u=Le),e.size!=t.size&&!l)return!1;var a=o.get(e);if(a)return a==t;n|=2,o.set(e,t);var c=pe(u(e),u(t),n,s,i,o);return o.delete(e),c;case"[object Symbol]":if(Ne)return Ne.call(e)==Ne.call(t)}return!1}(e,t,l,r,n,s,i);if(!(1&r)){var y=c&&Zt.call(e,"__wrapped__"),M=d&&Zt.call(t,"__wrapped__");if(y||M){var g=y?e.value():e,m=M?t.value():t;return i||(i=new ge),s(g,m,r,n,i)}}return!!w&&(i||(i=new ge),function(e,t,r,n,s,i){var o=1&r,u=ct(e),l=u.length;if(l!=ct(t).length&&!o)return!1;for(var a=l;a--;){var c=u[a];if(!(o?c in t:dt.call(t,c)))return!1}var d=i.get(e),w=i.get(t);if(d&&w)return d==t&&w==e;var D=!0;i.set(e,t),i.set(t,e);for(var y=o;++a<l;){var M=e[c=u[a]],g=t[c];if(n)var m=o?n(g,M,c,t,e,i):n(M,g,c,e,t,i);if(!(void 0===m?M===g||s(M,g,r,n,i):m)){D=!1;break}y||(y="constructor"==c)}if(D&&!y){var I=e.constructor,f=t.constructor;I==f||!("constructor"in e)||!("constructor"in t)||"function"==typeof I&&I instanceof I&&"function"==typeof f&&f instanceof f||(D=!1)}return i.delete(e),i.delete(t),D}(e,t,r,n,s,i))}function Yt(e,t,r,n,s){return e===t||(null==e||null==t||!N(e)&&!N(t)?e!=e&&t!=t:vt(e,t,r,n,Yt,s))}function Xt(e){return e==e&&!S(e)}function jt(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function zt(e){var t=function(e){for(var t=at(e),r=t.length;r--;){var n=t[r],s=e[n];t[r]=[n,s,Xt(s)]}return t}(e);return 1==t.length&&t[0][2]?jt(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var s=r.length,i=s,o=!n;if(null==e)return!i;for(e=Object(e);s--;){var u=r[s];if(o&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++s<i;){var l=(u=r[s])[0],a=e[l],c=u[1];if(o&&u[2]){if(void 0===a&&!(l in e))return!1}else{var d=new ge;if(n)var w=n(a,c,l,e,t,d);if(!(void 0===w?Yt(c,a,3,n,d):w))return!1}}return!0}(r,e,t)}}function Gt(e,t){return null!=e&&t in Object(e)}function Wt(e,t){return null!=e&&function(e,t,r){for(var n=-1,s=(t=we(t,e)).length,i=!1;++n<s;){var o=De(t[n]);if(!(i=null!=e&&r(e,o)))break;e=e[o]}return i||++n!=s?i:!!(s=null==e?0:e.length)&&Be(s)&&Ue(o,s)&&(D(e)||We(e))}(e,t,Gt)}function Kt(e){return e}function kt(e){return function(t){return null==t?void 0:t[e]}}function Ft(e){return T(e)?kt(De(e)):function(e){return function(t){return ye(t,e)}}(e)}function Vt(e){return"function"==typeof e?e:null==e?Kt:"object"==typeof e?D(e)?function(e,t){return T(e)&&Xt(t)?jt(De(e),t):function(r){var n=Me(r,e);return void 0===n&&n===t?Wt(r,e):Yt(t,n,3)}}(e[0],e[1]):zt(e):Ft(e)}var Ht,Ut=function(e,t,r){for(var n=-1,s=Object(e),i=r(e),o=i.length;o--;){var u=i[Ht?o:++n];if(!1===t(s[u],u,s))break}return e};var Bt=function(e,t){return function(r,n){if(null==r)return r;if(!lt(r))return e(r,n);for(var s=r.length,i=t?s:-1,o=Object(r);(t?i--:++i<s)&&!1!==n(o[i],i,o););return r}}(function(e,t){return e&&Ut(e,t,at)}),Rt=Bt;function Qt(e,t){var r=-1,n=lt(e)?Array(e.length):[];return Rt(e,function(e,s,i){n[++r]=t(e,s,i)}),n}function Ot(e,t){return(D(e)?ue:Qt)(e,Vt(t))}var Pt=Array.prototype.join;function Jt(e,t){return null==e?"":Pt.call(e,t)}function $t(e){return"[object Object]"===Object.prototype.toString.call(e)}function _t(e){if($t(e)){for(let t in e)return!0;return!1}return!1}function qt(e){return"[object String]"===Object.prototype.toString.call(e)}function er(e){return!!(qt(e)&&e.length>0)}var tr=/\s/;var rr=/^\s+/;function nr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&tr.test(e.charAt(t)););return t}(e)+1).replace(rr,""):e}var sr=/^[-+]0x[0-9a-f]+$/i,ir=/^0b[01]+$/i,or=/^0o[0-7]+$/i,ur=parseInt;function lr(e){if("number"==typeof e)return e;if(A(e))return NaN;if(S(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=S(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=nr(e);var r=ir.test(e);return r||or.test(e)?ur(e.slice(2),r?2:8):sr.test(e)?NaN:+e}var ar=1/0;function cr(e){return e?(e=lr(e))===ar||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function dr(e){var t=cr(e),r=t%1;return t==t?r?t-r:t:0}function wr(e){return!0===(t=e)||!1===t||N(t)&&"[object Boolean]"==b(t);var t}function Dr(e){if(e!=e)return!0;if(null!==e&&"object"==typeof e)try{let t=Number.prototype.valueOf.call(e);return Number.isNaN(t)}catch(e){return!1}return!1}function yr(e){let t=!1;if(er(e)){if(""===e.trim())return!1;t=!isNaN(Number(e))}else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Dr(e))return!1;t=!0}return t}function Mr(e){if(!yr(e))return 0;return cr(e)}function gr(e,t={}){let r=Me(t,"useLimitSafe",null);return wr(r)||(r=!1),!!yr(e)&&(e=Mr(e),r?Number.isSafeInteger(e):"number"==typeof(n=e)&&n==dr(n));var n}var mr=g.isFinite,Ir=Math.min;var fr,pr=(fr=Math["round"],function(e,t){if(e=lr(e),(t=null==t?0:Ir(dr(t),292))&&mr(e)){var r=(de(e)+"e").split("e");return+((r=(de(fr(r[0]+"e"+(+r[1]+t)))+"e").split("e"))[0]+"e"+(+r[1]-t))}return fr(e)});function Cr(e,t={}){let r=Me(t,"useClampSafe",null);wr(r)||(r=!1);let n=Me(t,"useLimitSafe",null);wr(n)||(n=!1);let s=Me(t,"returnWithStateAndMsg",null);wr(s)||(s=!1);let i=e=>s?{state:"success",msg:e}:e,o=e=>{if(s)return{state:"error",msg:e};throw new Error(e)};if(!yr(e))return i(0);let u=null;try{e=Mr(e),u=pr(e),r&&(u>Number.MAX_SAFE_INTEGER?u=Number.MAX_SAFE_INTEGER:u<Number.MIN_SAFE_INTEGER&&(u=Number.MIN_SAFE_INTEGER))}catch(e){return o(e.toString())}return n&&!Number.isSafeInteger(Number(u))?o(`v[${e}] is not a safe integer`):("0"===String(u)&&(u=0),i(u))}function hr(e,t={}){if(!gr(e,t))return!1;return Cr(e)>0}function Lr(e){return"[object Array]"===Object.prototype.toString.call(e)}function br(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Nr(e){if($t(e)){for(let t in e)return!1;return!0}return!1}function Ar(e){return!!Lr(e)&&0===e.length}function xr(e){return!!br(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Nr(e)||(!!function(e){return!(!qt(e)||0!==e.length)}(e)||(!!Ar(e)||!!Dr(e)))))}function Er(e){return!!Lr(e)&&(0!==e.length&&(1!==e.length||!xr(e[0])))}var Tr=st(Object.getPrototypeOf,Object),Sr=Function.prototype,Zr=Object.prototype,vr=Sr.toString,Yr=Zr.hasOwnProperty,Xr=vr.call(Object);function jr(e){if(!N(e)||"[object Object]"!=b(e))return!1;var t=Tr(e);if(null===t)return!0;var r=Yr.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&vr.call(r)==Xr}function zr(e){return function(e){if(!N(e))return!1;var t=b(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!jr(e)}(e)}function Gr(e){return Z(e)}function Wr(e){let t,r;try{r=Object.prototype.toString.call(e)}catch(e){return!1}if(t="[object Promise]"===r,t)return!0;if("[object Function]"!==r)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kr(e,t={}){let r=Me(t,"returnWithStateAndMsg",null);wr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!er(e))return n("invalid v");let s={};try{s=JSON.parse(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function kr(e,t={}){if(!gr(e,t))return!1;return Cr(e)>=0}function Fr(e,t){return er(e)&&kr(t)?0===(t=Cr(t))?"":e.substring(0,t):""}function Vr(e,t){if(!er(e))return"";if(!kr(t))return"";if(0===(t=Cr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Hr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}let Ur=function(e){if(!Gr(e))throw new Error("fn is not a function");return function(){let t,r=Hr();try{t=e.apply(this,arguments)}catch(e){return r.resolve({state:"error",msg:e}),r}let n=e=>{let t=!1;try{t="cancelled"===Me(e,"reason")}catch(e){}t?r.resolve({state:"cancelled",msg:""}):r.resolve({state:"error",msg:e})};try{Wr(t)?t.then(e=>{r.resolve({state:"success",msg:e})},n):r.resolve({state:"success",msg:t})}catch(e){r.resolve({state:"error",msg:e})}return r}};function Br(e,t={}){let r=Me(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function Rr(e,t={}){let r=Me(t,"fs");if(!Br(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Qr(e){return Rr(e,{fs:t})}function Or(e,t={}){let r=Me(t,"fs");return!!Br(e,{fs:r})&&(!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink())}function Pr(e){return Or(e,{fs:t})}function Jr(e,t,r){if(!er(e))return"";if(!er(t))return"";if(!qt(r))return"";return String(e).replaceAll(t,r)}function $r(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}function _r(e,t){var r;return(D(e)?$r:Rt)(e,"function"==typeof(r=t)?r:Kt)}function qr(e,t,r=""){if(!Er(t))return{};let n={};return _r(t,function(t){n[t]=Me(e,t,r)}),n}function en(e,t,r=""){if(!Er(e))return[];if(!Er(t))return[];return Ot(e,e=>qr(e,t,r))}let tn=2147483647;var rn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function nn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function sn(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){if(this instanceof e){var r=[null];return r.push.apply(r,arguments),new(Function.bind.apply(t,r))}return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var on={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new s(n,i||e,o),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function o(e,t){0===--e._eventsCount?e._events=new n:delete e._events[t]}function u(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),u.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},u.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o},u.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},u.prototype.emit=function(e,t,n,s,i,o){var u=r?r+e:e;if(!this._events[u])return!1;var l,a,c=this._events[u],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var w,D=c.length;for(a=0;a<D;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(w=1,l=new Array(d-1);w<d;w++)l[w-1]=arguments[w];c[a].fn.apply(c[a].context,l)}}return!0},u.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},u.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},u.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return o(this,i),this;var u=this._events[i];if(u.fn)u.fn!==t||s&&!u.once||n&&u.context!==n||o(this,i);else{for(var l=0,a=[],c=u.length;l<c;l++)(u[l].fn!==t||s&&!u[l].once||n&&u[l].context!==n)&&a.push(u[l]);a.length?this._events[i]=1===a.length?a[0]:a:o(this,i)}return this},u.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&o(this,t)):(this._events=new n,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=r,u.EventEmitter=u,e.exports=u}(on);var un=nn(on.exports);function ln(){return new un}function an(e,t,r=[],n={}){let s=n.funSettle,i=n.tag||"evem",o=(t,...r)=>e.emit(t,...r);Gr(n.funEmit)&&(o=n.funEmit);try{return o(t,...r)}catch(n){if(Gr(s))try{s(n)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?o("error",{fun:"listener",name:t,msg:n,args:r}):console.error(`[wsemi ${i}] listener of '${String(t)}' threw:`,n)}catch(e){try{console.error(`[wsemi ${i}] listener of '${String(t)}' threw, and reporting it also threw:`,e,n)}catch(e){}}return!1}}async function cn(e,t={}){let r=null,n=Hr();if(!Gr(e))return n.reject("waitfunction需輸入函數f"),n;let s=async()=>{let t=e();return Wr(t)&&(t=await t),t};if(r=await s(),!0===r)return n.resolve(),n;let i=Me(t,"attemptNum",null);hr(i)||(i=200);let o=Me(t,"timeInterval",null);hr(o)||(o=1e3),o=Math.min(o,tn);let u=0,l=!1,a=setInterval(async()=>{if(u+=1,l)u>i&&clearInterval(a);else{l=!0;try{r=await s()}catch(e){return clearInterval(a),void n.reject(e)}finally{l=!1}if(!0===r)return clearInterval(a),void n.resolve();u>i&&(clearInterval(a),n.reject(`exceeded attemptNum[${i}]`))}},o);return n}function dn(e,t){return!!$t(e)&&(!(!er(t)&&!yr(t))&&t in e)}function wn(e={}){let t=Me(e,"timeExpire",null);hr(t)||(t=18e5),t=Cr(t),t=Math.min(t,tn);let r=Me(e,"timeDetect",null);hr(r)||(r=2e3),r=Cr(r),r=Math.min(r,tn);let n=ln(),s=Object.create(null),i=e=>{if(dn(s,e)){return an(n,"checkWithSet",[{state:"error",msg:`checkWithSet: key in use: ${e}`}],{tag:"cacheSt"}),!1}return s[e]={time:Date.now(),value:!0},an(n,"checkWithSet",[{state:"success",msg:`checkWithSet: ${e}`}],{tag:"cacheSt"}),!0},o=setInterval(()=>{an(n,"detect",[{state:"start"}],{tag:"cacheSt"});let e=Date.now();for(let r of Object.keys(s)){let n=s[r];n&&e-n.time>t&&delete s[r]}an(n,"detect",[{state:"finish"}],{tag:"cacheSt"})},r);return n.checkWithSet=i,n.setWithFree=async(e,t)=>{an(n,"setWithFree",[{state:"start"}],{tag:"cacheSt"});let r=[];for(let t of e){if(!i(t)){for(let e of r)delete s[e];let e=`setWithFree: key in use: ${t}`;return an(n,"setWithFree",[{state:"error",msg:e}],{tag:"cacheSt"}),Promise.reject(e)}r.push(t)}try{let r=await t(),s=`setWithFree: ${e.join(", ")}`;return an(n,"setWithFree",[{state:"success",msg:s}],{tag:"cacheSt"}),r}catch(e){let t="";try{t=`${e&&e.message||e}`}catch(e){}throw an(n,"setWithFree",[{state:"error",msg:`setWithFree: fn threw: ${t}`}],{tag:"cacheSt"}),e}finally{for(let e of r)delete s[e]}},n.set=async(e,t=!0)=>{s[e]={time:Date.now(),value:t},an(n,"set",[{state:"success",msg:`set: ${e}`}],{tag:"cacheSt"})},n.get=async e=>{let t=s[e],r=void 0===t?null:t.value;return an(n,"get",[{state:"success",msg:`get: ${e}`}],{tag:"cacheSt"}),r},n.check=async e=>{let t=dn(s,e);return an(n,"check",[{state:"success",msg:`check: ${e} = ${t}`}],{tag:"cacheSt"}),t},n.del=async e=>{delete s[e],an(n,"del",[{state:"success",msg:`del: ${e}`}],{tag:"cacheSt"})},n.waitExist=async(e,t={})=>{let r=Me(t,"attemptNum",null);hr(r)||(r=30),r=Cr(r);let i=Me(t,"timeInterval",null);hr(i)||(i=100),i=Cr(i),an(n,"waitExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitExist timeout (${r*i}ms): ${e}`;return an(n,"waitExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitExist",[{state:"success",msg:`waitExist resolved: ${e}`}],{tag:"cacheSt"})},n.waitNotExist=async(e,t={})=>{let r=Me(t,"attemptNum",null);hr(r)||(r=30),r=Cr(r);let i=Me(t,"timeInterval",null);hr(i)||(i=100),i=Cr(i),an(n,"waitNotExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>!dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitNotExist timeout (${r*i}ms): ${e}`;return an(n,"waitNotExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitNotExist",[{state:"success",msg:`waitNotExist resolved: ${e}`}],{tag:"cacheSt"})},n.clear=()=>{clearInterval(o)},n}function Dn(e,t,r=[],n={}){let s=n.ms;return hr(s)||(s=1),s=Cr(s),s=Math.min(s,tn),setTimeout(()=>{an(e,t,r,n)},s)}function yn(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function Mn(e,t){try{let r=new WeakSet,n=[],s=JSON.stringify(e,function(e,s){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.length>=t)return"[Deep]";if("bigint"==typeof s)return String(s);if(null!==s&&"object"==typeof s){if(r.has(s))return"[Circular]";r.add(s),n.push(s)}return s});return"string"==typeof s?s:""}catch(e){return""}}function gn(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=yn(()=>JSON.parse(e));if(""!==t)return t}return e}function mn(e,t){if(void 0===e)return"";if(null===e)return"null";let r=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==r)return r;let n=Mn(e,t);if(""!==n&&"{}"!==n)return gn(n);let s=yn(()=>String(e));return""!==s&&"[object Object]"!==s?s:n}function In(e,t){let r=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||r.add(e);let n=e,s=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=n.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(r.has(e))break;r.add(e)}let i=pn(e,{...t,useCause:!1,useAggregate:!1});""!==i&&s.push(i),n=e}return s.join(" <- ")}function fn(e,t){let r=null;try{r=e.errors}catch(e){return""}if(!Array.isArray(r)||0===r.length)return"";let n=[];for(let s=0;s<r.length&&s<t.levelCauseMax;s++){if(r[s]===e)continue;let i=pn(r[s],{...t,useCause:!1,useAggregate:!1});""!==i&&n.push(i)}return n.join("; ")}function pn(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let r=null,n=!1;try{r=e.message,n=!0}catch(e){n=!1}if(n&&"string"==typeof r){if(""!==r){let n=r;if(t.useCause){let r=In(e,t);""!==r&&(n=`${n} <- ${r}`)}if(t.useAggregate){let r=fn(e,t);""!==r&&(n=`${n} [${r}]`)}return n}let n=In(e,t);return""!==n?n:""}if(n){let e=mn(r,t.levelJsonMax);if(""!==e)return e}let s=In(e,t);if(""!==s)return s;if(t.useAggregate){let r=fn(e,t);if(""!==r)return r}let i=Mn(e,t.levelJsonMax),o=gn(i);if(""!==o&&"{}"!==o)return o;let u=yn(()=>String(e));if(""!==u&&"[object Object]"!==u)return u;let l=yn(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==i?i:""}function Cn(e,t={}){let r=Me(t,"useCause",null);wr(r)||(r=!1);let n=Me(t,"useAggregate",null);wr(n)||(n=!1);let s=Me(t,"levelCauseMax",null);hr(s,{useLimitSafe:!0})||(s=8),s=Cr(s);let i=Me(t,"levelJsonMax",null);hr(i,{useLimitSafe:!0})||(i=6),i=Cr(i);let o=Me(t,"lengthMessageMax",null);hr(o,{useLimitSafe:!0})||(o=0),o=Cr(o);let u={useCause:r,useAggregate:n,levelCauseMax:s,levelJsonMax:i,lengthMessageMax:o},l="";try{l=pn(e,u)}catch(e){return l="",l}return er(l)?(u.lengthMessageMax>0&&l.length>u.lengthMessageMax&&(l=u.lengthMessageMax>3?l.slice(0,u.lengthMessageMax-3)+"...":l.slice(0,u.lengthMessageMax)),l):(l="",l)}function hn(e){if(!(er(e)||yr(e)||A(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var Ln={exports:{}};var bn,Nn={exports:{}},An=sn(Object.freeze({__proto__:null,default:{}}));function xn(){return bn||(bn=1,function(e){var t;e.exports=(t=t||function(e,t){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),"undefined"!=typeof self&&self.crypto&&(r=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(r=globalThis.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==rn&&rn.crypto&&(r=rn.crypto),!r)try{r=An}catch(e){}var n=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),i={},o=i.lib={},u=o.Base={extend:function(e){var t=s(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=o.WordArray=u.extend({init:function(e,r){e=this.words=e||[],this.sigBytes=r!=t?r:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,s=e.sigBytes;if(this.clamp(),n%4)for(var i=0;i<s;i++){var o=r[i>>>2]>>>24-i%4*8&255;t[n+i>>>2]|=o<<24-(n+i)%4*8}else for(var u=0;u<s;u+=4)t[n+u>>>2]=r[u>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=u.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r<e;r+=4)t.push(n());return new l.init(t,e)}}),a=i.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n+=2)r[n>>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new l.init(r,t/2)}},d=a.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push(String.fromCharCode(i))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n++)r[n>>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new l.init(r,t)}},w=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(d.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return d.parse(unescape(encodeURIComponent(e)))}},D=o.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=w.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,n=this._data,s=n.words,i=n.sigBytes,o=this.blockSize,u=i/(4*o),a=(u=t?e.ceil(u):e.max((0|u)-this._minBufferSize,0))*o,c=e.min(4*a,i);if(a){for(var d=0;d<a;d+=o)this._doProcessBlock(s,d);r=s.splice(0,a),n.sigBytes-=c}return new l.init(r,c)},clone:function(){var e=u.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});o.Hasher=D.extend({cfg:u.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){D.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function(e){return function(t,r){return new y.HMAC.init(e,r).finalize(t)}}});var y=i.algo={};return i}(Math),t)}(Nn)),Nn.exports}!function(e){e.exports=xn().enc.Utf8}(Ln);var En=nn(Ln.exports),Tn={exports:{}};!function(e){var t;e.exports=(t=xn(),function(){var e=t,r=e.lib.WordArray;function n(e,t,n){for(var s=[],i=0,o=0;o<t;o++)if(o%4){var u=n[e.charCodeAt(o-1)]<<o%4*2|n[e.charCodeAt(o)]>>>6-o%4*2;s[i>>>2]|=u<<24-i%4*8,i++}return r.create(s,i)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var s=[],i=0;i<r;i+=3)for(var o=(t[i>>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,u=0;u<4&&i+.75*u<r;u++)s.push(n.charAt(o>>>6*(3-u)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var i=0;i<r.length;i++)s[r.charCodeAt(i)]=i}var o=r.charAt(64);if(o){var u=e.indexOf(o);-1!==u&&(t=u)}return n(e,t,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Tn);var Sn=nn(Tn.exports);function Zn(e){try{return String(e)}catch(e){}try{let t=e.message;if("string"==typeof t&&""!==t)return t}catch(e){}return"unknown error"}function vn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Yn(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Xn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function jn(e){if(!(vn(e)||function(e){let t=Object.prototype.toString.call(e);if("[object Blob]"===t||"[object File]"===t)return!0;try{if("undefined"!=typeof Blob&&e instanceof Blob)return!0}catch(e){}return!1}(e)||Yn(e)||Xn(e)))return null;try{if(yr(e.byteLength))return e.byteLength}catch(e){}try{if(yr(e.length))return e.length}catch(e){}try{if(yr(e.size))return e.size}catch(e){}return null}function zn(e){if(null===e||"object"!=typeof e)return!1;if(e instanceof Error)return!0;if("function"==typeof Error.isError)return Error.isError(e);if(Symbol.toStringTag in e)return!1;let t=Object.prototype.toString.call(e);return"[object Error]"===t||"[object DOMException]"===t}function Gn(e,t={}){let r=Me(t,"returnWithStateAndMsg",null);wr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{results:"",binarys:[]};if(!$t(e)&&!Lr(e))return n("invalid data, data is not an object or array");if(Nr(e)||Ar(e))return n("invalid data, data is an empty object or empty array");let s=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,i="",o=[];try{let t=-1;i=JSON.stringify(e,function(e,r){if(Yn(r)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return o.push(r),e}if(Xn(r)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return o.push(r),e}if(vn(r)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return o.push(r),e}return er(r=function(e){if(!zn(e))return e;let t=e.toString;return t===Object.prototype.toString||"function"!=typeof t?Error.prototype.toString.call(e):t.call(e)}(r))&&91===r.charCodeAt(0)&&s.test(r)?"[BlazeForPreventEscape]"+r:r})}catch(e){return n(Zn(e))}return r?{state:"success",msg:{results:i,binarys:o}}:{results:i,binarys:o}}let Wn=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]/;function Kn(e,t={}){let r=Me(t,"returnWithStateAndMsg",null);wr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:new Uint8Array;if(!er(e))return n("invalid str");if(!("function"==typeof e.isWellFormed?e.isWellFormed():!Wn.test(e)))return n("invalid str, contains lone surrogates");let s=null;try{s=(new TextEncoder).encode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function kn(e,t,r=0,n=!0,s=52,i=8){return function(e,t,r,n,s,i){if(!yr(e))return null;if(!Yn(t))return null;if(!gr(r))return null;if(!wr(n))return null;if(!gr(s))return null;if(!gr(i))return null;let o,u,l;e=Mr(e);let a=8*i-s-1,c=(1<<a)-1,d=c>>1,w=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,D=n?i-1:0,y=n?-1:1,M=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+d>=1?w/l:w*Math.pow(2,1-d))*l>=2&&(o++,l/=2),o+d>=c?(u=0,o=c):o+d>=1?(u=(e*l-1)*Math.pow(2,s),o+=d):(u=e*Math.pow(2,d-1)*Math.pow(2,s),o=0));s>=8;t[r+D]=255&u,D+=y,u/=256,s-=8);for(o=o<<s|u,a+=s;a>0;t[r+D]=255&o,D+=y,o/=256,a-=8);return t[r+D-y]|=128*M,null}(e,t,r,n,s,i)}function Fn(e){let t=0;_r(e,e=>{t+=jn(e)});let r=new Uint8Array(t),n=0;return _r(e,e=>{let t=function(e){return vn(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);r.set(t,n),n+=t.length}),r}function Vn(e,t={}){let r=[],n=new Uint8Array,s=Me(t,"returnWithStateAndMsg",null);wr(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:new Uint8Array;if(!(o=e,Lr(o)&&o.length>=1||_t(e)))return i("invalid data, data is not an effective object or a non-empty array");var o;let u=[],l=[];function a(e){u.push(jn(e)),l.push(e)}try{let t=Gn(e,{returnWithStateAndMsg:!0});if("error"===t.state)return i(`obj2stru8arr: ${t.msg}`);let s=t.msg;a(Kn(s.results)),_r(s.binarys,e=>{a(e)});let o=u,c=Kn(JSON.stringify(o)),d=new Uint8Array(8);kn(jn(c),d),r.push(d),r.push(c),_r(l,e=>{r.push(e)}),n=Fn(r)}catch(e){return i(Zn(e))}return s?{state:"success",msg:n}:n}function Hn(e,t=0,r=!0,n=52,s=8){return function(e,t,r,n,s){if(!Yn(e))return null;if(!gr(t))return null;if(!wr(r))return null;if(!gr(n))return null;if(!gr(s))return null;let i,o,u=8*s-n-1,l=(1<<u)-1,a=l>>1,c=-7,d=r?0:s-1,w=r?1:-1,D=e[t+d];for(d+=w,i=D&(1<<-c)-1,D>>=-c,c+=u;c>0;i=256*i+e[t+d],d+=w,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=n;c>0;o=256*o+e[t+d],d+=w,c-=8);if(0===i)i=1-a;else{if(i===l)return o?NaN:1/0*(D?-1:1);o+=Math.pow(2,n),i-=a}return(D?-1:1)*o*Math.pow(2,i-n)}(e,t,r,n,s)}function Un(e,t={}){let r=Me(t,"returnWithStateAndMsg",null);wr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!Yn(e))return n("invalid u8a");let s="";try{s=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Bn(e,t={}){let r=Me(t,"returnWithStateAndMsg",null);wr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!_t(e))return n("invalid data");let s=null,i=null;try{s=e.results,i=e.binarys}catch(e){return n(Zn(e))}if(!er(s))return n("invalid results");if(!Lr(i))return n("invalid binarys");let o=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,u=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l=new Set,a={};try{a=JSON.parse(s,function(e,t){if(!er(t)||91!==t.charCodeAt(0))return t;let r=o.exec(t);if(null===r)return u.test(t)?t.slice(23):t;let n=Number(r[2]);if(n>=i.length)throw new Error(`binary index out of range[${n}], binarys.length[${i.length}]`);if(l.has(n))throw new Error(`binary index referenced more than once[${n}]`);return l.add(n),((e,t,r)=>{if("Uint16Array"===e&&!Xn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(r.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${r.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===r.byteOffset&&r.byteLength===r.buffer.byteLength?r:new Uint8Array(r);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!vn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}return r})(r[1],n,i[n])})}catch(e){return n(Zn(e))}return r?{state:"success",msg:a}:a}function Rn(e,t={}){let r={},n=Me(t,"returnWithStateAndMsg",null);wr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!Yn(e))return s("invalid u8a");try{let t=8,n=e.slice(0,t),i=e.slice(t,jn(e)),o=Hn(n),u=i.slice(0,o),l=i.slice(o,jn(i)),a=Un(u,{returnWithStateAndMsg:!0});if("error"===a.state)return s(`u8arr2str: ${a.msg}`);let c=a.msg,d=JSON.parse(c),w=function(e,t){if(!Array.isArray(e))return"not an array";for(let t=0;t<e.length;t++){let r=e[t];if(!Number.isInteger(r)||r<0)return"every item must be a non-negative finite integer"}let r=0;for(let n=0;n<e.length;n++)if(r+=e[n],r>t)return"total length exceeds the packet";return e.length>1&&25*(e.length-1)>e[0]?"too many chunks for the main block":""}(d,jn(l));if(""!==w)return s(`invalid pks, ${w}`);let D=function(e,t){let r=0,n=0,s=[];for(let i=0;i<t.length;i++){n=r+t[i];let o=e.slice(r,n);r=n,s.push(o)}return s}(l,d),y=Un(D.shift(),{returnWithStateAndMsg:!0});if("error"===y.state)return s(`u8arr2str: ${y.msg}`);let M=Bn({results:y.msg,binarys:D},{returnWithStateAndMsg:!0});if("error"===M.state)return s(`stru8arr2obj: ${M.msg}`);r=M.msg}catch(e){return s(Zn(e))}return n?{state:"success",msg:r}:r}function Qn(e){let t=!1;try{t=zn(e)}catch(e){}if(t)return e;if("string"==typeof e&&""!==e)return e;let r=Zn(e);return""!==r?r:"unknown error"}function On(e){return function(e,t={}){try{let r=Me(t,"fs");if(Rr(e,{fs:r}))return{success:"input folder is already exists: "+e};if(Br(e,{fs:r}))return{error:"input path already exists: "+e};r.mkdirSync(e,{recursive:!0})}catch(e){return{error:Qn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Pn(e){return function(e,t={}){try{let r=Me(t,"fs");if(!Br(e,{fs:r}))return{success:"file does not exist: "+e};if(!Or(e,{fs:r}))return{error:"input path is not a file: "+e};r.unlinkSync(e)}catch(e){return{error:Qn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Jn(e){return er(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let $n={permission:200,param:200,app:200,output:200,packet:200,internal:200},_n={main:{event:"execute",apiType:"main",api:"apiMain",authFrom:"header",statusOf:$n},ulctr:{event:"upload",apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:$n},slc:{event:"upload",apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:$n},dwgfn:{event:"download",apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{event:"download",apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{event:"download",apiType:"download",api:"apiDownload",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var qn=kt("length"),es=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ts(e){return es.test(e)}var rs="\\ud800-\\udfff",ns="["+rs+"]",ss="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",is="\\ud83c[\\udffb-\\udfff]",os="[^"+rs+"]",us="(?:\\ud83c[\\udde6-\\uddff]){2}",ls="[\\ud800-\\udbff][\\udc00-\\udfff]",as="(?:"+ss+"|"+is+")"+"?",cs="[\\ufe0e\\ufe0f]?",ds=cs+as+("(?:\\u200d(?:"+[os,us,ls].join("|")+")"+cs+as+")*"),ws="(?:"+[os+ss+"?",ss,us,ls,ns].join("|")+")",Ds=RegExp(is+"(?="+is+")|"+ws+ds,"g");function ys(e){return ts(e)?function(e){for(var t=Ds.lastIndex=0;Ds.test(e);)++t;return t}(e):qn(e)}function Ms(e){if(null==e)return 0;if(lt(e))return"string"==typeof(t=e)||!D(t)&&N(t)&&"[object String]"==b(t)?ys(e):e.length;var t,r=xt(e);return"[object Map]"==r||"[object Set]"==r?e.size:ut(e).length}var gs={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,r=36e5,n="millisecond",s="second",i="minute",o="hour",u="day",l="week",a="month",c="quarter",d="year",w="date",D="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"}},m=function(e,t,r){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(r)+e},I={s:m,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),s=r%60;return(t<=0?"+":"-")+m(n,2,"0")+":"+m(s,2,"0")},m:function e(t,r){if(t.date()<r.date())return-e(r,t);var n=12*(r.year()-t.year())+(r.month()-t.month()),s=t.clone().add(n,a),i=r-s<0,o=t.clone().add(n+(i?-1:1),a);return+(-(n+(r-s)/(i?s-o:o-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:a,y:d,w:l,d:u,D:w,h:o,m:i,s:s,ms:n,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},f="en",p={};p[f]=g;var C="$isDayjsObject",h=function(e){return e instanceof A||!(!e||!e[C])},L=function e(t,r,n){var s;if(!t)return f;if("string"==typeof t){var i=t.toLowerCase();p[i]&&(s=i),r&&(p[i]=r,s=i);var o=t.split("-");if(!s&&o.length>1)return e(o[0])}else{var u=t.name;p[u]=t,s=u}return!n&&s&&(f=s),s||!n&&f},b=function(e,t){if(h(e))return e.clone();var r="object"==typeof t?t:{};return r.date=e,r.args=arguments,new A(r)},N=I;N.l=L,N.i=h,N.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var A=function(){function g(e){this.$L=L(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[C]=!0}var m=g.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(N.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var n=t.match(y);if(n){var s=n[2]-1||0,i=(n[7]||"0").substring(0,3);return r?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)}}return new Date(t)}(e),this.init()},m.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},m.$utils=function(){return N},m.isValid=function(){return!(this.$d.toString()===D)},m.isSame=function(e,t){var r=b(e);return this.startOf(t)<=r&&r<=this.endOf(t)},m.isAfter=function(e,t){return b(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<b(e)},m.$g=function(e,t,r){return N.u(e)?this[t]:this.set(r,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,t){var r=this,n=!!N.u(t)||t,c=N.p(e),D=function(e,t){var s=N.w(r.$u?Date.UTC(r.$y,t,e):new Date(r.$y,t,e),r);return n?s:s.endOf(u)},y=function(e,t){return N.w(r.toDate()[e].apply(r.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(t)),r)},M=this.$W,g=this.$M,m=this.$D,I="set"+(this.$u?"UTC":"");switch(c){case d:return n?D(1,0):D(31,11);case a:return n?D(1,g):D(0,g+1);case l:var f=this.$locale().weekStart||0,p=(M<f?M+7:M)-f;return D(n?m-p:m+(6-p),g);case u:case w:return y(I+"Hours",0);case o:return y(I+"Minutes",1);case i:return y(I+"Seconds",2);case s:return y(I+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(e,t){var r,l=N.p(e),c="set"+(this.$u?"UTC":""),D=(r={},r[u]=c+"Date",r[w]=c+"Date",r[a]=c+"Month",r[d]=c+"FullYear",r[o]=c+"Hours",r[i]=c+"Minutes",r[s]=c+"Seconds",r[n]=c+"Milliseconds",r)[l],y=l===u?this.$D+(t-this.$W):t;if(l===a||l===d){var M=this.clone().set(w,1);M.$d[D](y),M.init(),this.$d=M.set(w,Math.min(this.$D,M.daysInMonth())).$d}else D&&this.$d[D](y);return this.init(),this},m.set=function(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[N.p(e)]()},m.add=function(n,c){var w,D=this;n=Number(n);var y=N.p(c),M=function(e){var t=b(D);return N.w(t.date(t.date()+Math.round(e*n)),D)};if(y===a)return this.set(a,this.$M+n);if(y===d)return this.set(d,this.$y+n);if(y===u)return M(1);if(y===l)return M(7);var g=(w={},w[i]=t,w[o]=r,w[s]=e,w)[y]||1,m=this.$d.getTime()+n*g;return N.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return r.invalidDate||D;var n=e||"YYYY-MM-DDTHH:mm:ssZ",s=N.z(this),i=this.$H,o=this.$m,u=this.$M,l=r.weekdays,a=r.months,c=r.meridiem,d=function(e,r,s,i){return e&&(e[r]||e(t,n))||s[r].slice(0,i)},w=function(e){return N.s(i%12||12,e,"0")},y=c||function(e,t,r){var n=e<12?"AM":"PM";return r?n.toLowerCase():n};return n.replace(M,function(e,n){return n||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return N.s(t.$y,4,"0");case"M":return u+1;case"MM":return N.s(u+1,2,"0");case"MMM":return d(r.monthsShort,u,a,3);case"MMMM":return d(a,u);case"D":return t.$D;case"DD":return N.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(r.weekdaysMin,t.$W,l,2);case"ddd":return d(r.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(i);case"HH":return N.s(i,2,"0");case"h":return w(1);case"hh":return w(2);case"a":return y(i,o,!0);case"A":return y(i,o,!1);case"m":return String(o);case"mm":return N.s(o,2,"0");case"s":return String(t.$s);case"ss":return N.s(t.$s,2,"0");case"SSS":return N.s(t.$ms,3,"0");case"Z":return s}return null}(e)||s.replace(":","")})},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(n,w,D){var y,M=this,g=N.p(w),m=b(n),I=(m.utcOffset()-this.utcOffset())*t,f=this-m,p=function(){return N.m(M,m)};switch(g){case d:y=p()/12;break;case a:y=p();break;case c:y=p()/3;break;case l:y=(f-I)/6048e5;break;case u:y=(f-I)/864e5;break;case o:y=f/r;break;case i:y=f/t;break;case s:y=f/e;break;default:y=f}return D?y:N.a(y)},m.daysInMonth=function(){return this.endOf(a).$D},m.$locale=function(){return p[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var r=this.clone(),n=L(e,t,!0);return n&&(r.$L=n),r},m.clone=function(){return N.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},g}(),x=A.prototype;return b.prototype=x,[["$ms",n],["$s",s],["$m",i],["$H",o],["$W",u],["$M",a],["$y",d],["$D",w]].forEach(function(e){x[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),b.extend=function(e,t){return e.$i||(e(t,A,b),e.$i=!0),b},b.locale=L,b.isDayjs=h,b.unix=function(e){return b(1e3*e)},b.en=p[f],b.Ls=p,b.p={},b}()}(gs);var ms=nn(gs.exports);let Is="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),fs=Is.length;function ps(e=32){let t=[];e=hr(e)?Cr(e):32;for(let r=0;r<e;r++)t[r]=Is[0|Math.random()*fs];return t.join("")}function Cs(e,t,r){var n=-1,s=e.length;t<0&&(t=-t>s?0:s+t),(r=r>s?s:r)<0&&(r+=s),s=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(s);++n<s;)i[n]=e[n+t];return i}function hs(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:Cs(e,t,r)}function Ls(e){return e!=e}function bs(e,t,r){return t==t?function(e,t,r){for(var n=r-1,s=e.length;++n<s;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var s=e.length,i=r+(n?1:-1);n?i--:++i<s;)if(t(e[i],i,e))return i;return-1}(e,Ls,r)}var Ns="\\ud800-\\udfff",As="["+Ns+"]",xs="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Es="\\ud83c[\\udffb-\\udfff]",Ts="[^"+Ns+"]",Ss="(?:\\ud83c[\\udde6-\\uddff]){2}",Zs="[\\ud800-\\udbff][\\udc00-\\udfff]",vs="(?:"+xs+"|"+Es+")"+"?",Ys="[\\ufe0e\\ufe0f]?",Xs=Ys+vs+("(?:\\u200d(?:"+[Ts,Ss,Zs].join("|")+")"+Ys+vs+")*"),js="(?:"+[Ts+xs+"?",xs,Ss,Zs,As].join("|")+")",zs=RegExp(Es+"(?="+Es+")|"+js+Xs,"g");function Gs(e){return ts(e)?function(e){return e.match(zs)||[]}(e):function(e){return e.split("")}(e)}function Ws(e,t,r){if((e=de(e))&&(r||void 0===t))return nr(e);if(!e||!(t=ce(t)))return e;var n=Gs(e),s=Gs(t),i=function(e,t){for(var r=-1,n=e.length;++r<n&&bs(t,e[r],0)>-1;);return r}(n,s),o=function(e,t){for(var r=e.length;r--&&bs(t,e[r],0)>-1;);return r}(n,s)+1;return hs(n,i,o).join("")}function Ks(e,t){if(!er(e))return[];if(!er(t))return[];let r=function(e,t){return er(e)&&er(t)?e.split(t):[]}(e,t);r=Ot(r,Ws);let n=[];return _r(r,function(e){er(e)&&n.push(e)}),n}const ks=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function Fs(e,t={}){let r=Hr();try{let n=Me(t,"fs"),s=Me(t,"chunkSize");if(hr(s)||(s=67108864),s=Cr(s),s>2**30&&(s=67108864),!Or(e,{fs:n}))return r.reject("fp is not a file"),r;let{create64:i}=await async function(){return function(e){const{exports:{mem:t,xxh32:r,xxh64:n,init32:s,update32:i,digest32:o,init64:u,update64:l,digest64:a}}=e;let c=new Uint8Array(t.buffer);function d(e,r){if(t.buffer.byteLength<e+r){const n=Math.ceil((e+r-t.buffer.byteLength)/65536);t.grow(n),c=new Uint8Array(t.buffer)}}function w(e,t,r,n,s,i){d(e);const o=new Uint8Array(e);return c.set(o),r(0,t),o.set(c.subarray(0,e)),{update(t){let r;return c.set(o),"string"==typeof t?(d(3*t.length,e),r=g.encodeInto(t,c.subarray(e)).written):(d(t.byteLength,e),c.set(t,e),r=t.byteLength),n(0,e,r),o.set(c.subarray(0,e)),this},digest:()=>(c.set(o),i(s(0)))}}function D(e){return e>>>0}const y=2n**64n-1n;function M(e){return e&y}const g=new TextEncoder;function m(e,t=0){return d(3*e.length,0),D(r(0,g.encodeInto(e,c).written,t))}function I(e,t=0n){return d(3*e.length,0),M(n(0,g.encodeInto(e,c).written,t))}return{h32:m,h32ToString:(e,t=0)=>m(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(d(e.byteLength,0),c.set(e),D(r(0,e.byteLength,t))),create32:(e=0)=>w(48,e,s,i,o,D),h64:I,h64ToString:(e,t=0n)=>I(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(d(e.byteLength,0),c.set(e),M(n(0,e.byteLength,t))),create64:(e=0n)=>w(88,e,u,l,a,M)}}((await WebAssembly.instantiate(ks)).instance)}(),o=i(),u=n.createReadStream(e,{highWaterMark:s}),l=e=>{r.reject(Zn(e));try{u.destroy()}catch(e){}};u.on("data",e=>{try{o.update(e)}catch(e){l(e)}}),u.on("end",()=>{try{let e=o.digest().toString(16).padStart(16,"0");r.resolve(e)}catch(e){l(e)}}),u.on("error",e=>{r.reject(Zn(e))})}catch(e){r.reject(Zn(e))}return r}var Vs={exports:{}};!function(e){var t,r;e.exports=(t=o,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new s(n,i||e,o),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function u(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),u.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},u.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o},u.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},u.prototype.emit=function(e,t,n,s,i,o){var u=r?r+e:e;if(!this._events[u])return!1;var l,a,c=this._events[u],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var w,D=c.length;for(a=0;a<D;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(w=1,l=new Array(d-1);w<d;w++)l[w-1]=arguments[w];c[a].fn.apply(c[a].context,l)}}return!0},u.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},u.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},u.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return o(this,i),this;var u=this._events[i];if(u.fn)u.fn!==t||s&&!u.once||n&&u.context!==n||o(this,i);else{for(var l=0,a=[],c=u.length;l<c;l++)(u[l].fn!==t||s&&!u[l].once||n&&u[l].context!==n)&&a.push(u[l]);a.length?this._events[i]=1===a.length?a[0]:a:o(this,i)}return this},u.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&o(this,t)):(this._events=new n,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=r,u.EventEmitter=u,e.exports=u}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LG89Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGk9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PW98fGl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUsZj1jLmhhc093blByb3BlcnR5LHM9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIixnPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDpnJiZnIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1mLmNhbGwodCxsKSxlPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1zLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbbF09ZTpkZWxldGUgdFtsXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZ2KHQpPT1kfXZhciBqPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLFM9L15cdyokLztmdW5jdGlvbiBtKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciB3PSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLHg9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyICQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLFA9T2JqZWN0LnByb3RvdHlwZSxGPXoudG9TdHJpbmcsTD1QLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitGLmNhbGwoTCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighbSh0KXx8KHI9dCx4JiZ4IGluIHIpKXJldHVybiExO3ZhciByLGU9ZnVuY3Rpb24odCl7aWYoIW0odCkpcmV0dXJuITE7dmFyIHI9dih0KTtyZXR1cm4gcj09T3x8cj09RXx8cj09d3x8cj09Tn0odCk/VDpJO3JldHVybiBlLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiAkLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LHIpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19KHQscik7cmV0dXJuIE0oZSk/ZTp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxyKXtmb3IodmFyIGUsbixvPXQubGVuZ3RoO28tLTspaWYoKGU9dFtvXVswXSk9PT0obj1yKXx8ZSE9ZSYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gQy5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PXJbdF06Ry5jYWxsKHIsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09VSYmdm9pZCAwPT09cj8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6cix0aGlzfTt2YXIgRD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIFgodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19WC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxYLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXEocix0KTtyZXR1cm4hKGU8MCkmJihlPT1yLmxlbmd0aC0xP3IucG9wKCk6RC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LFgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9cShyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LFgucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxYLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fLG49cShlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTt2YXIgQj1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxyKXt2YXIgZSxuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihlPXIpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1lOm51bGw9PT1lKT9vWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIEoodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoQnx8WCksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPUgodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0saT1lLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gZS5jYWNoZT1uZXcoUS5DYWNoZXx8SiksZX1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csZXQ9KFY9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOmV8fHQpfSkpLHJ9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9ZXQ7dmFyIG90PTEvMCxpdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1pdD9pdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LW90PyItMCI6cn1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBmdCh0LHIpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihuKHQpKXJldHVybiExO3ZhciBlPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPWUmJiJzeW1ib2wiIT1lJiYiYm9vbGVhbiIhPWUmJm51bGwhPXQmJiFfKHQpKXx8Uy50ZXN0KHQpfHwhai50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06bnQoY3QodCkpfXZhciBzdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zdD8iLTAiOnJ9ZnVuY3Rpb24gaHQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1mdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbbHQocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIHB0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKSxuPSExO3RyeXtlLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LHI9e30pe2xldCBlPWh0KHIsImZzIik7cmV0dXJuISFwdCh0LHtmczplfSkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGd0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IHI9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihyKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhYnQodCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEoIWR0KHQpfHwwIT09dC5sZW5ndGgpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISF2dCh0KSYmMD09PXQubGVuZ3RofSh0KXx8ISFfdCh0KSkpKSl9ZnVuY3Rpb24gU3QodCl7cmV0dXJuISEoZHQodCkmJnQubGVuZ3RoPjApfXZhciBtdD0vXHMvO3ZhciB3dD0vXlxzKy87ZnVuY3Rpb24gT3QodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJm10LnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2Uod3QsIiIpOnR9dmFyIEV0PU5hTixOdD0vXlstK10weFswLTlhLWZdKyQvaSxBdD0vXjBiWzAxXSskL2ksUnQ9L14wb1swLTddKyQvaSx4dD1wYXJzZUludDtmdW5jdGlvbiAkdCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoXyh0KSlyZXR1cm4gRXQ7aWYobSh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9bShyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9T3QodCk7dmFyIGU9QXQudGVzdCh0KTtyZXR1cm4gZXx8UnQudGVzdCh0KT94dCh0LnNsaWNlKDIpLGU/Mjo4KTpOdC50ZXN0KHQpP0V0Oit0fXZhciBJdD0xLzAsenQ9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIFB0KHQpe3JldHVybiB0Pyh0PSR0KHQpKT09PUl0fHx0PT09LUl0Pyh0PDA/LTE6MSkqenQ6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEZ0KHQpe3ZhciByPVB0KHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH12YXIgTHQ9IltvYmplY3QgQm9vbGVhbl0iO2Z1bmN0aW9uIFR0KHQpe3JldHVybiEwPT09KHI9dCl8fCExPT09cnx8YihyKSYmdihyKT09THQ7dmFyIHJ9ZnVuY3Rpb24gTXQodCl7bGV0IHI9ITE7aWYoU3QodCkpe2lmKCIiPT09dC50cmltKCkpcmV0dXJuITE7cj0haXNOYU4oTnVtYmVyKHQpKX1lbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoX3QodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBrdCh0KXtpZighTXQodCkpcmV0dXJuIDA7cmV0dXJuIFB0KHQpfWZ1bmN0aW9uIFV0KHQscj17fSl7bGV0IGU9aHQociwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gVHQoZSl8fChlPSExKSwhIU10KHQpJiYodD1rdCh0KSxlP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09RnQobikpO3ZhciBufXZhciBDdD11LmlzRmluaXRlLEd0PU1hdGgubWluO3ZhciBXdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9JHQodCksKGU9bnVsbD09ZT8wOkd0KEZ0KGUpLDI5MikpJiZDdCh0KSl7dmFyIG49KGN0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShjdChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxxdD1XdDtmdW5jdGlvbiBEdCh0LHI9e30pe2xldCBlPWh0KHIsInVzZUNsYW1wU2FmZSIsbnVsbCk7VHQoZSl8fChlPSExKTtsZXQgbj1odChyLCJ1c2VMaW1pdFNhZmUiLG51bGwpO1R0KG4pfHwobj0hMSk7bGV0IG89aHQociwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTtUdChvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFNdCh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWt0KHQpLGE9cXQodCksZSYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gWHQodCxyPXt9KXtpZighVXQodCxyKSlyZXR1cm4hMTtyZXR1cm4gRHQodCk+PTB9ZnVuY3Rpb24gQnQodCxyKXtpZighU3QodCkpcmV0dXJuIiI7aWYoIVh0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1EdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gSHQodCxyKXtyZXR1cm4gU3QodCkmJlh0KHIpPzA9PT0ocj1EdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBTdCh0KSYmWHQocik/MD09PShyPUR0KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIEp0KHQpe2lmKCFTdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUJ0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4iOiI9PT1CdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEt0KHQpe2lmKCFTdCh0KSlyZXR1cm4iIjtsZXQgcj1KdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFF0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKTtpZighcHQodCx7ZnM6ZX0pKXJldHVybiExO2xldCBuPWUubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIFZ0KHQpe3RyeXtyZXR1cm4gU3RyaW5nKHQpfWNhdGNoKHQpe310cnl7bGV0IHI9dC5tZXNzYWdlO2lmKCJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yKXJldHVybiByfWNhdGNoKHQpe31yZXR1cm4idW5rbm93biBlcnJvciJ9ZnVuY3Rpb24gWXQodCl7bGV0IHI9ITE7dHJ5e3I9ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4hMTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuITA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEVycm9yLmlzRXJyb3IpcmV0dXJuIEVycm9yLmlzRXJyb3IodCk7aWYoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHQpcmV0dXJuITE7bGV0IHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO3JldHVybiJbb2JqZWN0IEVycm9yXSI9PT1yfHwiW29iamVjdCBET01FeGNlcHRpb25dIj09PXJ9KHQpfWNhdGNoKHQpe31pZihyKXJldHVybiB0O2lmKCJzdHJpbmciPT10eXBlb2YgdCYmIiIhPT10KXJldHVybiB0O2xldCBlPVZ0KHQpO3JldHVybiIiIT09ZT9lOiJ1bmtub3duIGVycm9yIn1mdW5jdGlvbiBadCh0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKCFwdCh0LHtmczplfSkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIXl0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiB0cih0LHIsbj17fSl7bGV0IG89IiI7aWYoIXZ0KGk9dCl8fDA9PT1pLmxlbmd0aHx8MT09PWkubGVuZ3RoJiZqdChpWzBdKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgaTtsZXQgdT1mdW5jdGlvbih0KXtpZighU3QodCkpcmV0dXJuIiI7bGV0IHI9SnQodCk7aWYoci5pc1Jvb3QpcmV0dXJuIHIucGF0aDtsZXQgZT1LdCh0PXIucGF0aCk7aWYoIVN0KGUpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KHIpLGE9Z3QoKTthLmNhdGNoKCgoKT0+e30pKTtsZXQgYz1udWxsLGY9bnVsbCxzPSExLGw9Z3QoKTtsLmNhdGNoKCgoKT0+e30pKTtsZXQgaD10PT57bGV0IHI7dHJ5e3I9dC5tZXNzYWdlfWNhdGNoKHQpe31yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHI/cjpWdCh0KX07dHJ5e2xldCBpPWh0KG4sImZzIikscD1odChuLCJmbk91dCIsIiIpO1N0KHApfHwocD1LdChyKSksUXQodSx7ZnM6aX0pfHxmdW5jdGlvbih0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKFF0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX19KHUse2ZzOml9KSxjPWkuY3JlYXRlV3JpdGVTdHJlYW0ociksYy5vbigiZXJyb3IiLCh0PT57cz0hMCxmPXQsbz1oKHQpLGwucmVqZWN0KHQpLGEucmVqZWN0KG8pfSkpLGMub24oImZpbmlzaCIsKCgpPT57bGV0IHQ9e2ZpbGVuYW1lOnAscGF0aDpyfTthLnJlc29sdmUodCl9KSk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2lmKHMpdGhyb3cgZjtsZXQgbj10W3JdO2lmKCF5dChuLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7bn1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgbz1hc3luYygpPT57bGV0IHQ9aS5jcmVhdGVSZWFkU3RyZWFtKG4pLHI9bnVsbDtmb3IgYXdhaXQobGV0IG4gb2YgdCl7aWYocyl0aHJvdyBmO2xldCB0PSExLG89bmV3IFByb21pc2UoKChyLGUpPT57dD0hYy53cml0ZShuLCh0PT57dD9lKHQpOnIoKX0pKX0pKTtvLmNhdGNoKCgoKT0+e30pKSxyPW8sdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtlLm9uY2UoYywiZHJhaW4iKSxsXSl9aWYobnVsbCE9PXImJmF3YWl0IHIscyl0aHJvdyBmO1p0KG4se2ZzOml9KX07YXdhaXQgbygpfWMuZW5kKCl9Y2F0Y2godCl7bz1oKHQpO3RyeXtjLmRlc3Ryb3koKX1jYXRjaCh0KXt9YS5yZWplY3Qobyl9cmV0dXJuIGF9Y29uc3QgcnI9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gZXIodCxyPXt9KXtsZXQgZT1ndCgpO3RyeXtsZXQgbj1odChyLCJmcyIpLG89aHQociwiY2h1bmtTaXplIik7aWYoZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4hIVV0KHQscikmJkR0KHQpPjB9KG8pfHwobz02NzEwODg2NCksbz1EdChvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXl0KHQse2ZzOm59KSlyZXR1cm4gZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxlO2xldHtjcmVhdGU2NDppfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06cix4eGgzMjplLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpO2Z1bmN0aW9uIGwodCxlKXtpZihyLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrZSl7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrZS1yLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ci5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpfX1mdW5jdGlvbiBoKHQscixlLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLGUoMCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUocil7bGV0IGU7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2Ygcj8obCgzKnIubGVuZ3RoLHQpLGU9di5lbmNvZGVJbnRvKHIscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoci5ieXRlTGVuZ3RoLHQpLHMuc2V0KHIsdCksZT1yLmJ5dGVMZW5ndGgpLG4oMCx0LGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiBnKHQpe3JldHVybiB0Jnl9Y29uc3Qgdj1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LHI9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKGUoMCx2LmVuY29kZUludG8odCxzKS53cml0dGVuLHIpKX1mdW5jdGlvbiBqKHQscj1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGcobigwLHYuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4scikpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxyPWIpPT5fKHQscikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQscj1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAoZSgwLHQuYnl0ZUxlbmd0aCxyKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsbyxpLHUscCksaDY0OmosaDY0VG9TdHJpbmc6KHQscj1kKT0+aih0LHIpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxyPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksZyhuKDAsdC5ieXRlTGVuZ3RoLHIpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMsZixnKX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShycikpLmluc3RhbmNlKX0oKSx1PWkoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntlLnJlamVjdChWdCh0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e3UudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ZS5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e2UucmVqZWN0KFZ0KHQpKX0pKX1jYXRjaCh0KXtlLnJlamVjdChWdCh0KSl9cmV0dXJuIGV9bW9kdWxlLmV4cG9ydHM9YXN5bmMoZSxuLG8saSk9PntsZXQgdT1bXTtmb3IobGV0IGk9MDtpPG47aSsrKXtsZXQgbj10LnJlc29sdmUobyxgJHtlfV8ke2l9YCk7aWYoIXl0KG4se2ZzOnJ9KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO3UucHVzaChuKX1sZXQgYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbj17fSl7dHJ5e3JldHVybiB0cih0LGUse2ZzOnIsLi4ubn0pfWNhdGNoKHQpe2xldCByO3RyeXtyPXQubWVzc2FnZX1jYXRjaCh0KXt9cmV0dXJuIFByb21pc2UucmVqZWN0KCJzdHJpbmciPT10eXBlb2Ygcj9yOlZ0KHQpKX19KHUsaSk7cmV0dXJuey4uLmEsaGFzaDphd2FpdCBmdW5jdGlvbih0LGU9e30pe3RyeXtyZXR1cm4gZXIodCx7ZnM6ciwuLi5lfSl9Y2F0Y2godCl7cmV0dXJuIFByb21pc2UucmVqZWN0KFZ0KHQpKX19KGkpfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},o=!1,u="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){o||(o=!0,c(e))}let w=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){u=e,d(e)}}(t);function D(){w?(l=!0,o||(o=!0,u="worker has been terminated"),w.terminate(),w=void 0,a("worker has been terminated")):c("worker has been terminated")}function y(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(o)return t.reject(u),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{w.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}w||o||(u="invalid worker",d(u)),w&&(w.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),w.on("error",d),w.on("exit",e=>{l||d("worker exit, code["+e+"]")}),w.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{w.postMessage(e)}catch(e){throw D(),e}}([...arguments]));for(let e of["main"])n[e]=y(e);return n.terminate=D,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(Vs);var Hs=nn(Vs.exports);let Us=new Set,Bs=new Map,Rs=(t,r,n="")=>{let s=e.resolve(r,t);return{fp:s,fpm:`${s}.merging`,fpd:`${s}.done`,fpe:`${s}.error`,fpr:er(n)?`${s}.q${n}.ro`:""}},Qs=e=>{let t=Pn(e);if(Pr(e))throw new Error(`can not remove ${e}: ${Cn(Me(t,"error"))}`)},Os=async(e,r)=>{Us.add(r.fp);try{let n=await function(e,r={}){try{return Fs(e,{fs:t,...r})}catch(e){return Promise.reject(Zn(e))}}(r.fp);if(n===e)return t.writeFileSync(r.fpd,"","utf8"),{state:"done"};let s=`merged file[${r.fp}] is incomplete: hash[${n}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(r.fpe,s,"utf8")}catch(e){console.log(`can not write ${r.fpe}`,e)}return{state:"mismatch",reason:s}}catch(e){return{state:"error",reason:`verify merged file[${r.fp}] error: ${Cn(e)}`}}finally{Us.delete(r.fp)}},Ps=async(e,r,n)=>{let s=`${function(){if(!Gr(ms))throw new Error("invalid dayjs");return ms().format("YYYYMMDDHHmmss")}()}|${ps(6)}|${e}`,i=Rs(e,n);if(Us.has(i.fp))return s;let o=Pr(i.fpe),u=Pr(i.fp);if(!o&&u){let t=await Os(e,i);if("done"===t.state)return s;if("error"===t.state)throw new Error(t.reason)}return Qs(i.fpd),Qs(i.fpe),Us.add(i.fp),setTimeout(()=>{Hs(e,r,n,i.fpm).then(r=>{let n=Me(r,"hash","");if(n!==e)throw new Error(`merged file hash[${n}] != fileHash[${e}]`);t.renameSync(i.fpm,i.fp),t.writeFileSync(i.fpd,"","utf8")}).catch(e=>{console.log(e),Pn(i.fpm);let r=Cn(e);try{t.writeFileSync(i.fpe,r,"utf8")}catch(e){console.log(`can not write ${i.fpe}`,e)}}).finally(()=>{Us.delete(i.fp)})},1),s},Js=async(e,r,n={})=>{let s=Me(n,"funConsume"),i=Me(n,"funLog");Gr(i)||(i=e=>{console.log(e)});let o=Ks(e,"|"),u=Me(o,0,""),l=Me(o,1,""),a=Me(o,2,"");if(3!==Ms(o)||!Jn(u)||!Jn(l)||!Jn(a)){let t=`invalid queueId[${Cn(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let c=Rs(a,r,`${u}${l}`);if(Pr(c.fpr)){let e=((e,r)=>{try{let n=Rn(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==Me(n,"state"))return r(`stored result ${e.fpr} is corrupted, treat as not stored: ${Me(n,"msg","unknown error")}`),{ok:!1};let s=n.msg;return $t(s)&&dn(s,"ro")?{ok:!0,ro:s.ro}:(r(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return r(`can not read stored result ${e.fpr}: ${Cn(t)}`),{ok:!1}}})(c,i);if(e.ok)return{state:"success",msg:e.ro,path:c.fp,from:"stored"}}if(Pr(c.fpe)){let e="";try{e=t.readFileSync(c.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:c.fp}}if(Us.has(c.fp))return{state:"merging",msg:"",path:c.fp};let d=Pr(c.fp),w=Pr(c.fpd);if(d&&!w){let e=await Os(a,c);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:c.fp};w=!0}if(d&&w){if(!Gr(s))return{state:"success",msg:"",path:c.fp};let e=await((e,r,n)=>{let s=e.fpr,i=Bs.get(s);return i||(i=Promise.resolve().then(()=>r(e.fp)).then(r=>{r=void 0===r?null:r;try{let n=Vn({ro:r},{returnWithStateAndMsg:!0});if("success"!==Me(n,"state"))return r;t.writeFileSync(e.fpr,Buffer.from(n.msg));let s=Rn(n.msg,{returnWithStateAndMsg:!0});if("success"===Me(s,"state")&&$t(s.msg)&&dn(s.msg,"ro"))return s.msg.ro}catch(t){n(`can not store consumed result to ${e.fpr}: ${Cn(t)}`)}return r}).finally(()=>{Bs.delete(s)}),Bs.set(s,i),i)})(c,s,i);return{state:"success",msg:e,path:c.fp,from:"consumed"}}return!d&&w?{state:"error",msg:"merged file already consumed",reason:`merged file[${c.fp}] no longer exists and no stored result for queueId[${e}]`,path:c.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${a}] (never pushed, or artifacts removed)`,path:c.fp}};var $s={exports:{}};!function(e){var t,r;e.exports=(t=o,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new s(n,i||e,o),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function u(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),u.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},u.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o},u.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},u.prototype.emit=function(e,t,n,s,i,o){var u=r?r+e:e;if(!this._events[u])return!1;var l,a,c=this._events[u],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var w,D=c.length;for(a=0;a<D;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(w=1,l=new Array(d-1);w<d;w++)l[w-1]=arguments[w];c[a].fn.apply(c[a].context,l)}}return!0},u.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},u.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},u.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return o(this,i),this;var u=this._events[i];if(u.fn)u.fn!==t||s&&!u.once||n&&u.context!==n||o(this,i);else{for(var l=0,a=[],c=u.length;l<c;l++)(u[l].fn!==t||s&&!u[l].once||n&&u[l].context!==n)&&a.push(u[l]);a.length?this._events[i]=1===a.length?a[0]:a:o(this,i)}return this},u.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&o(this,t)):(this._events=new n,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=r,u.EventEmitter=u,e.exports=u}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLGg9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgcD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LGgpLHI9dFtoXTt0cnl7dFtoXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtoXT1yOmRlbGV0ZSB0W2hdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gcC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sTj05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/TjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIGh0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHB0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PXB0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6aHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4gTnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBoZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxoZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LGhlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gcGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1wZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBoZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBoZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxoPSEwLHA9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtoPSExO2JyZWFrfWlmKHApe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhcC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gcC5wdXNoKGUpO3ZhciBpfSkpKXtoPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtoPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSksaH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLE5lPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxoPWM9PWY7aWYoaCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKGgmJiFzKXJldHVybiB1fHwodT1uZXcgcGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBOZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgcD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8dil7dmFyIHk9cD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBwZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIWgmJih1fHwodT1uZXcgcGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLGg9dS5nZXQoZSk7aWYobCYmaClyZXR1cm4gbD09ZSYmaD09dDt2YXIgcD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7cD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihwJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KHA9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBwZTtpZihuKXZhciBoPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09aD9LZShzLGYsUWV8WWUsbixsKTpoKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxoZSkscn1jci5DYWNoZT1oZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxocj1scixwcj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tcHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpocihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gTnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKE8odCk/cmU6TnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISEoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpJiZ0Lmxlbmd0aD4wKX1mdW5jdGlvbiBZcih0LGUpe2lmKCFRcih0KSlyZXR1cm5bXTtpZighUXIoZSkpcmV0dXJuW107bGV0IHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUXIodCkmJlFyKGUpP3Quc3BsaXQoZSk6W119KHQsZSk7cj1GcihyLEtyKTtsZXQgbj1bXTtyZXR1cm4gaXQociwoZnVuY3Rpb24odCl7UXIodCkmJm4ucHVzaCh0KX0pKSxufXZhciBacj1OYU4sdG49L15bLStdMHhbMC05YS1mXSskL2ksZW49L14wYlswMV0rJC9pLHJuPS9eMG9bMC03XSskL2ksbm49cGFyc2VJbnQ7ZnVuY3Rpb24gb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG5yKHQpKXJldHVybiBacjtpZihKKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1KKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kcih0KTt2YXIgcj1lbi50ZXN0KHQpO3JldHVybiByfHxybi50ZXN0KHQpP25uKHQuc2xpY2UoMikscj8yOjgpOnRuLnRlc3QodCk/WnI6K3R9dmFyIHVuPTEvMCxhbj0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gY24odCl7cmV0dXJuIHQ/KHQ9b24odCkpPT09dW58fHQ9PT0tdW4/KHQ8MD8tMToxKSphbjp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gZm4odCl7dmFyIGU9Y24odCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciBzbj0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gbG4odCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxnKGUpJiZkKGUpPT1zbjt2YXIgZX1mdW5jdGlvbiBobih0KXtsZXQgZT0hMTtpZihRcih0KSl7aWYoIiI9PT10LnRyaW0oKSlyZXR1cm4hMTtlPSFpc05hTihOdW1iZXIodCkpfWVsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtpZih0IT10KXJldHVybiEwO2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpdHJ5e2xldCBlPU51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHQpO3JldHVybiBOdW1iZXIuaXNOYU4oZSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITF9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gcG4odCl7aWYoIWhuKHQpKXJldHVybiAwO3JldHVybiBjbih0KX1mdW5jdGlvbiB2bih0LGU9e30pe2xldCByPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIGxuKHIpfHwocj0hMSksISFobih0KSYmKHQ9cG4odCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWZuKG4pKTt2YXIgbn12YXIgeW49YS5pc0Zpbml0ZSxibj1NYXRoLm1pbjt2YXIgZG49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PW9uKHQpLChyPW51bGw9PXI/MDpibihmbihyKSwyOTIpKSYmeW4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZ249ZG47ZnVuY3Rpb24gX24odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO2xuKHIpfHwocj0hMSk7bGV0IG49d3IoZSwidXNlTGltaXRTYWZlIixudWxsKTtsbihuKXx8KG49ITEpO2xldCBvPXdyKGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7bG4obyl8fChvPSExKTtsZXQgdT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsaT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighaG4odCkpcmV0dXJuIHUoMCk7bGV0IGE9bnVsbDt0cnl7dD1wbih0KSxhPWduKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gaSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT9pKGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLHUoYSkpfWZ1bmN0aW9uIGpuKHQsZT17fSl7aWYoIXZuKHQsZSkpcmV0dXJuITE7cmV0dXJuIF9uKHQpPj0wfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFtbih0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIFNuKHQpe3JldHVybiB3bih0LHtmczplfSl9ZnVuY3Rpb24gT24odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBBbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT4wfWZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighbW4odCx7ZnM6cn0pKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIEVuKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmQW4oZSkmJihlPV9uKGUpKTwxJiYoZT0xKSxmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiB6bihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShPKGk9dSk/VGU6T24pKGkseHIoYSkpLHU9RnIodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiBObih0KXt0cnl7cmV0dXJuIFN0cmluZyh0KX1jYXRjaCh0KXt9dHJ5e2xldCBlPXQubWVzc2FnZTtpZigic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZSlyZXR1cm4gZX1jYXRjaCh0KXt9cmV0dXJuInVua25vd24gZXJyb3IifWFzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0IG49d3IoZSwiZnMiKSxvPXdyKGUsImNodW5rU2l6ZSIpO2lmKEFuKG8pfHwobz02NzEwODg2NCksbz1fbihvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXduKHQse2ZzOm59KSlyZXR1cm4gci5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxyO2xldHtjcmVhdGU2NDp1fT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5oKDQ4LHQsbyx1LGkscCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PmgoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSxpPXUoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntyLnJlamVjdChObih0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e2kudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PWkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ci5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e3IucmVqZWN0KE5uKHQpKX0pKX1jYXRjaCh0KXtyLnJlamVjdChObih0KSl9cmV0dXJuIHJ9bW9kdWxlLmV4cG9ydHM9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LnJlc29sdmUodSxvKSxhPSExO2lmKGE9U24oaSksIWpuKHIse3VzZUxpbWl0U2FmZTohMH0pKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fXI9X24ocik7bGV0IGM9ITE7aWYoYSl7bGV0IHQ9LTE7dHJ5e3Q9ZS5zdGF0U3luYyhpKS5zaXplfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJjaGVjayB0b3RhbCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsaSx0KX1jPXI9PT10fWxldCBmPSExO2EmJmMmJmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7dHJ5e3JldHVybiBGbih0LHtmczplLC4uLnJ9KX1jYXRjaCh0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoTm4odCkpfX0oaSkudGhlbigodD0+e2Y9bz09PXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUocGF0aEZpbGUpIixpLFNuKGkpKSxjb25zb2xlLmxvZyh0KSxmPSExfSkpO2xldCBzPVtdO2lmKCFmKXtpdChmdW5jdGlvbihyLG49MSl7cmV0dXJuIEVuKHIsbix7cGF0aDp0LGZzOmV9KX0odSksKHQ9PntsZXQgcj10Lm5hbWUuc3RhcnRzV2l0aChgJHtvfV9gKSx1PSExO3RyeXtsZXQgcj1lLnN0YXRTeW5jKHQucGF0aCk7dT1yLnNpemU+MCYmci5zaXplPD1ufWNhdGNoKGUpe2NvbnNvbGUubG9nKCJjaGVjayBlYWNoIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIix0LnBhdGgsZSl9aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZigham4ocikpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coYHNraXAgZmlsZVske3QubmFtZX1dOiBjYW4gbm90IHBhcnNlIGNodW5rIGluZGV4YCk7cj1fbihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCiAgICB9KS5jYWxsKG1kVXNlci5leHBvcnRzLCBtZFVzZXIsIG1kVXNlci5leHBvcnRzKQoKICAgIC8v6aCQ6Kit5Yyv5Ye6OiByb2xsdXDku6VfX2VzTW9kdWxl5qiZ56S66aCQ6Kit6IiH5YW35ZCN5Lim5a2Y6ICFLCDlj5blhbZkZWZhdWx0OyDlkKbliYdtb2R1bGUuZXhwb3J0c+WNs+mgkOioreWMr+WHuijlj6rmnInlhbflkI3ljK/lh7rogIXngrrlkb3lkI3nqbrplpPnianku7YpCiAgICByZXR1cm4gKG1kVXNlci5leHBvcnRzICYmIG1kVXNlci5leHBvcnRzLl9fZXNNb2R1bGUgJiYgJ2RlZmF1bHQnIGluIG1kVXNlci5leHBvcnRzKSA/IG1kVXNlci5leHBvcnRzLmRlZmF1bHQgOiBtZFVzZXIuZXhwb3J0cwoKfSkoKSkKCg==",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},o=!1,u="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){o||(o=!0,c(e))}let w=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){u=e,d(e)}}(t);function D(){w?(l=!0,o||(o=!0,u="worker has been terminated"),w.terminate(),w=void 0,a("worker has been terminated")):c("worker has been terminated")}function y(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(o)return t.reject(u),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{w.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}w||o||(u="invalid worker",d(u)),w&&(w.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),w.on("error",d),w.on("exit",e=>{l||d("worker exit, code["+e+"]")}),w.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{w.postMessage(e)}catch(e){throw D(),e}}([...arguments]));for(let e of["main"])n[e]=y(e);return n.terminate=D,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}($s);var _s=nn($s.exports),qs={exports:{}};!function(e){var t,r;e.exports=(t=o,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new s(n,i||e,o),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function u(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),u.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},u.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,o=new Array(i);s<i;s++)o[s]=n[s].fn;return o},u.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},u.prototype.emit=function(e,t,n,s,i,o){var u=r?r+e:e;if(!this._events[u])return!1;var l,a,c=this._events[u],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,o),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var w,D=c.length;for(a=0;a<D;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(w=1,l=new Array(d-1);w<d;w++)l[w-1]=arguments[w];c[a].fn.apply(c[a].context,l)}}return!0},u.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},u.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},u.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return o(this,i),this;var u=this._events[i];if(u.fn)u.fn!==t||s&&!u.once||n&&u.context!==n||o(this,i);else{for(var l=0,a=[],c=u.length;l<c;l++)(u[l].fn!==t||s&&!u[l].once||n&&u[l].context!==n)&&a.push(u[l]);a.length?this._events[i]=1===a.length?a[0]:a:o(this,i)}return this},u.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&o(this,t)):(this._events=new n,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=r,u.EventEmitter=u,e.exports=u}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmdih0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gTih0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT12KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBFLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oRT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrRToiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBCKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihOKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gQihyKT9yOnZvaWQgMH12YXIgVT1rKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPWsoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB5dD1PYmplY3QucHJvdG90eXBlO3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9dnQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx5dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1rKGksIkRhdGFWaWV3IiksanQ9ayhpLCJQcm9taXNlIiksU3Q9ayhpLCJTZXQiKSx3dD1rKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsTnQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD12OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1OdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gTnR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFOKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIgQnQsa3Q9KEJ0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W0J0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTprdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnYoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB5ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gdmUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ2KGUpPT15ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hIShmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkmJnQubGVuZ3RoPjApfWZ1bmN0aW9uIGRlKHQpe2xldCBlPSExO2lmKGJlKHQpKXtpZigiIj09PXQudHJpbSgpKXJldHVybiExO2U9IWlzTmFOKE51bWJlcih0KSl9ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IGU9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihlKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX1mdW5jdGlvbiBnZSh0KXtpZighZGUodCkpcmV0dXJuIDA7cmV0dXJuIHBlKHQpfWZ1bmN0aW9uIF9lKHQsZT17fSl7bGV0IHI9aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gdmUocil8fChyPSExKSwhIWRlKHQpJiYodD1nZSh0KSxyP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09aGUobikpO3ZhciBufXZhciBqZT1pLmlzRmluaXRlLFNlPU1hdGgubWluO3ZhciB3ZT1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9ZmUodCksKHI9bnVsbD09cj8wOlNlKGhlKHIpLDI5MikpJiZqZSh0KSl7dmFyIG49KGZ0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShmdChlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxtZT13ZTtmdW5jdGlvbiBPZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUNsYW1wU2FmZSIsbnVsbCk7dmUocil8fChyPSExKTtsZXQgbj1odChlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3ZlKG4pfHwobj0hMSk7bGV0IG89aHQoZSwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTt2ZShvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFkZSh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWdlKHQpLGE9bWUodCksciYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gQWUodCxlPXt9KXtpZighX2UodCxlKSlyZXR1cm4hMTtyZXR1cm4gT2UodCk+PTB9Y29uc3QgTmU9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gRWUodCxlPXt9KXtpZighZnVuY3Rpb24odCl7bGV0IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO2lmKCJbb2JqZWN0IEJsb2JdIj09PWV8fCJbb2JqZWN0IEZpbGVdIj09PWUpcmV0dXJuITA7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2IpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiExfSh0KSYmKHI9dCwiW29iamVjdCBGaWxlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPWh0KGUsImNodW5rU2l6ZSIpO2RlKG4pfHwobj02NzEwODg2NCksbj1nZShuKTtsZXR7Y3JlYXRlNjQ6b309YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOmksZGlnZXN0MzI6dSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8saSl7bCh0KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldCh1KSxyKDAsZSksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldCh1KSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KHUpLGkobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gdih0KXtyZXR1cm4gdCZ5fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx2KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8saSx1LGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHYobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsdil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoTmUpKS5pbnN0YW5jZSl9KCksaT1vKCksdT0wO2Zvcig7dTx0LnNpemU7KXtsZXQgZT10LnNsaWNlKHUsdStuKSxyPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpLnVwZGF0ZShuZXcgVWludDhBcnJheShyKSksdSs9bn1yZXR1cm4gaS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKX1tb2R1bGUuZXhwb3J0cz1hc3luYyhyLG4sbyk9PntpZighKGJlKGk9bikmJmkubGVuZ3RoPD0xMjgmJi9eW0EtWmEtejAtOV0rJC8udGVzdChpKSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlSGFzaCJ9fXZhciBpO2lmKCFBcnJheS5pc0FycmF5KHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNsaWNlSGFzaHMifX1pZigwPT09dGUocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgdT1gJHtufV9gLGE9ZS5yZWFkZGlyU3luYyhvKSxjPW5ldyBTZXQ7Zm9yKGxldCB0IG9mIGEpe2lmKCF0LnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5zbGljZSh1Lmxlbmd0aCk7QWUoZSkmJlN0cmluZyhPZShlKSk9PT1lJiZjLmFkZChPZShlKSl9bGV0IGY9W10scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgdT1yW2ldLGE9aHQodSwiaSIpO2lmKCFBZShhKSljb250aW51ZTtpZihhPU9lKGEpLCFjLmhhcyhhKXx8cy5oYXMoYSkpY29udGludWU7cy5hZGQoYSk7bGV0IGw9dC5yZXNvbHZlKG8sYCR7bn1fJHthfWApLHA9IiI7dHJ5e3A9YXdhaXQgRWUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGwpXSkpfWNhdGNoKHQpe2NvbnRpbnVlfWh0KHUsImgiKT09PXAmJmYucHVzaChhKX1yZXR1cm57c2xrczpmfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},o=!1,u="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){o||(o=!0,c(e))}let w=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){u=e,d(e)}}(t);function D(){w?(l=!0,o||(o=!0,u="worker has been terminated"),w.terminate(),w=void 0,a("worker has been terminated")):c("worker has been terminated")}function y(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(o)return t.reject(u),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{w.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}w||o||(u="invalid worker",d(u)),w&&(w.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),w.on("error",d),w.on("exit",e=>{l||d("worker exit, code["+e+"]")}),w.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{w.postMessage(e)}catch(e){throw D(),e}}([...arguments]));for(let e of["main"])n[e]=y(e);return n.terminate=D,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(qs);var ei=nn(qs.exports);function ti(e,t){try{return{ok:!0,value:t()}}catch(t){let r=Cn(t);return{ok:!1,stage:e,cause:er(r)?r:"unknown error"}}}function ri(e,t){try{return i.validateHeaderValue(e,t),!0}catch(e){return!1}}function ni(e,t,r,n={}){let i=!0===Me(n,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let o=ti("identify streamRead",()=>e instanceof s.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(o.value.isReadable){if(o.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(o.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(i)return{source:e};let n=ti("setup pipeline",()=>{let n=0,i=!1,o=new s.Transform({transform(e,r,s){if(n+=e.length,n>t)return i=!0,void s(new Error(`streamRead sent more than fileSize[${t}] bytes`));s(null,e)},flush(e){if(n!==t)return i=!0,void e(new Error(`streamRead ended at ${n} bytes but fileSize is ${t}`));e()}});return s.pipeline(e,o,e=>{e&&i&&r(Cn(e))}),o});return n.ok?{source:n.value}:{error:"invalid streamRead",reason:`${n.stage} failed: ${n.cause}`}}let u=ti("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(qt(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||wr(e)||"object"==typeof e&&!1===function(e){try{return Gr(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:Cn(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!u.ok)return{error:"invalid streamRead",reason:`${u.stage} failed: ${u.cause}`};if(dn(u.value,"unserializable")){let e=u.value.unserializable;return{error:"invalid streamRead",reason:er(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===u.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=u.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let si=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function ii(e,t){let r=ti(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return kr(e,{useLimitSafe:!0})}(t)?{ok:!0,value:Cr(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!er(t))return{ok:!1};let r=hn(t);return er(r)?"fileType"===e?ri("Content-Type",r)?{ok:!0,value:r}:{ok:!1}:{ok:!0,value:si(r)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return r.ok?{ok:r.value.ok,value:r.value.value,cause:""}:{ok:!1,value:void 0,cause:r.cause}}function oi(e){try{e&&Gr(e.pipe)&&Gr(e.destroy)&&e.destroy()}catch(e){}}function ui(e){let t=typeof e;return void 0===e||"function"===t||"symbol"===t?null:e}function li(e,t,r={}){let n=new s.Readable;n._read=()=>{},n.push(t),n.push(null);let i=Me(r,"returnType",""),o=Me(r,"returnMsg",""),u=e.response(n).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",n.readableLength);return er(i)&&u.header("Return-Type",i),er(o)&&ri("Return-Msg",o)&&u.header("Return-Msg",o),u}function ai(e,t){return 0===e.listenerCount(t)?`no listener for event[${t}]`:""}function ci(i={}){let o={useLimitSafe:!0},u=!!Me(i,"serverHapi"),l=[],a=Me(i,"port");(!hr(a,o)||Cr(a)>65535)&&(a=8080),a=Cr(a);let c=Me(i,"useInert");null==c?c=!0:wr(c)||(u||l.push("invalid useInert: must be a boolean, static files are not served"),c=!1);let d=Me(i,"pathStaticFiles");null==d?d="dist":er(d)||(c&&!u&&l.push("invalid pathStaticFiles: must be a non-empty string, static files are not served"),c=!1,d="dist");let w=Me(i,"pathUploadTemp");er(w)||(w="./uploadTemp");let D="";if(!Qr(w)){let e=On(w);dn(e,"error")&&(D=Cn(e.error))}let y=Me(i,"apiName");er(y)||(y="api");let M=Me(i,"tokenType");er(M)||(M="Bearer");let g=Me(i,"sizeSlice");hr(g,o)||(g=1048576),g=Cr(g);let m=Me(i,"sizeMsg");hr(m,o)||(m=104857600),m=Cr(m);let I=Me(i,"verifyConn");if(null==I)I=()=>!0;else{let e=!1;try{e=Gr(I)}catch(e){}e||(l.push("invalid verifyConn: must be a function (sync or async), all API requests will be denied"),I=()=>!1)}let f="invalid corsOrigins: must be an array of origin strings ('*' must be the only element if present), or false to disable; CORS is disabled",p=Me(i,"corsOrigins"),C=null!=p;C?u?l.push("corsOrigins has no effect with serverHapi: the cross-origin policy is decided by the external server"):!1===p||""===p?p=null:er(p)?p=[p]:Lr(p)?(p=p.filter(e=>""!==e),0===p.length&&(p=null)):(l.push(f),p=null):p=["*"];let h=Me(i,"delayForSlice","");(!kr(h,o)||Cr(h)>2147483647)&&(h=100),h=Cr(h);let L=null;if(u)L=i.serverHapi;else{let e=e=>{let t=!1;return null!==e&&(t={origin:e,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}),{port:a,routes:{timeout:{server:!1,socket:!1},cors:t}}};try{L=r.server(e(p))}catch(t){if(!C||null===p)throw t;console.log("invalid corsOrigins",t),l.push(f),p=null,L=r.server(e(p))}}let b=ln(),N={tag:"w-converhp"},A=(e,...t)=>an(b,e,t,{...N,funSettle:()=>{let r=t[t.length-1];Wr(r)&&r.reject(`listener of event[${e}] error`)},funEmit:E}),x=(e,...t)=>Dn(b,e,t,{...N,funEmit:E});function E(e,...t){if("error"===e&&_t(t[0])&&"listener"===t[0].fun){let e=Me(t[0],"name",""),r=Me(t[0],"msg");return console.log(`listener of event[${e}] error`,r),b.emit("error",`listener of event[${e}] error: ${Cn(r)}`)}return b.emit(e,...t)}er(D)&&x("error",`create pathUploadTemp[${w}] error: ${D}`);for(let e of l)x("error",e);let T=(e,t,r)=>{let n=Hr(),s=Hr();return s.then(t=>{void 0===t&&(t=null);let s=typeof t;if("function"===s||"symbol"===s)return n.reject("output can not be serialized"),void A("error",`event[${e}] output can not be serialized: output is a ${s}`);n.resolve(Gr(r)?r(t):t)}).catch(e=>{n.reject(e)}),function(e,t,r,n,s,i){let o=ai(e,r);er(o)?(s.reject(o),i(o)):t(r,...n,s)}(b,A,e,t,s,e=>{A("error",e)}),n};async function S(e){return T("upload",[e])}async function Z(e){return T("download",[e])}let v=`${hn(M)} `,Y=(e,t)=>{let r=Me(e,"headers");r=_t(r)?r:"";let n=Me(e,"query");n=_t(n)?n:"";let s="",i="";return"query"===t.authFrom?(i=Me(n,"token",""),i=er(i)?i:"",er(i)&&(s=`${M} ${i}`)):(s=Me(r,"authorization",""),s=er(s)?s:"",i=s.startsWith(v)?s.slice(v.length):""),{headers:r,query:n,authorization:s,token:i}},X=(e,t)=>{let r=(r,n,s)=>function(e,t,r={}){er(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let n=Me(r,"retryable",!0),s={error:t};!1===n&&(s.retryable=!1);let i=li(e,Vn(s),{returnType:"error",returnMsg:t});return!1===n&&i.header("Return-Retryable","false"),i}(e,n,s).code(t.statusOf[r]);return{permission:()=>r("permission","permission denied"),param:e=>r("param",e,{retryable:!1}),app:e=>r("app",e),output:e=>r("output",e),packet:e=>r("packet",e),internal:e=>r("internal",e)}},j=async(e,t,r,n)=>!0!==await async function(e){let t=!1;try{t=I(e),Wr(t)&&(t=await t)}catch(r){t=!1,console.log(`verifyConn error for apiType[${Me(e,"apiType","")}]`,r),A("error",`verifyConn error for apiType[${Me(e,"apiType","")}]: ${Cn(r)}`)}return!0===t}({apiType:r.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?n.permission():(A("handler",{api:r.api,headers:t.headers,query:t.query}),null),z=(e,t)=>{let r=ai(b,e.event);if(!er(r))return null;let n=t.app(r);return A("error",r),n},G=(e,t,r,n)=>{let s=function(e,t){let r={};for(let n of t){let t=ti(`read field[${n}]`,()=>Me(e,n));if(!t.ok)return{ok:!1,field:n,cause:t.cause,fields:r};r[n]=t.value}return{ok:!0,fields:r}}(e,r.fields.map(e=>e.name));if(!s.ok)return oi(Me(s.fields,"streamRead")),A("error",`download fileId[${t}] output error: can not read field[${s.field}]: ${s.cause}`),{ok:!1,res:n.output("invalid streamRead")};let i={streamRead:s.fields.streamRead};for(let e of r.fields){if("streamRead"===e.name)continue;let r=ii(e.name,s.fields[e.name]);if(r.ok){i[e.name]=r.value;continue}if(!0===e.optional&&!er(r.cause)){i[e.name]="";continue}oi(i.streamRead);let o="fileSize"===e.name?`[${Cn(s.fields.fileSize)}]`:"";return A("error",`download fileId[${t}] output error: invalid ${e.name}${o}${er(r.cause)?`: ${r.cause}`:""}`),{ok:!1,res:n.output(`invalid ${e.name}`)}}return{ok:!0,v:i}},W=async(e,t,r,n)=>{let s={},i="";await r.then(e=>{s.success=e,i="success"}).catch(e=>{s.error=e,i="error"});let o=function(e,t){let r={};for(let t of Object.keys(e))r[t]=ui(e[t]);let n=Vn(r,{returnWithStateAndMsg:!0});return"success"!==Me(n,"state")?(t(Me(n,"msg","unknown error")),null):n.msg}(s,e=>{A("error",`${n} output can not be serialized: ${e}`)});return null===o?t.internal("output can not be serialized"):li(e,o,{returnType:i,returnMsg:"need to parse"})},K=e=>(t,r,n)=>{if(413===Me(n,"output.statusCode"))throw n;return A("error",`invalid request packet for ${e.api}: ${Cn(n)}`),X(r,e).packet("invalid request packet").takeover()},k={path:`/${y}/main`,method:"POST",options:{payload:{maxBytes:m,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.main,n=X(t,r),i=Y(e,r),o=await j(e,i,r,n);if(o)return o;let u=null;try{u=await(()=>{let t=Hr(),r=[],n=0,i=!1,o=new s.Writable({write(e,t,s){if(n+=e.length,n>m)return r=[],i=!0,void s();r.push(e),s()}});return o.on("finish",()=>{}),e.payload.pipe(o),e.payload.on("end",()=>{if(i)return void t.reject("payload too large");let e=Buffer.concat(r);r=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),A("error",`receive payload error: ${Cn(e)}`),t.reject(`receive payload error: ${Cn(e)}`)}),e.payload.destroyed&&(A("error","receive payload error: closed before receive"),t.reject("receive payload error: closed before receive")),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${m}`}).code(413);throw e}let l=Rn(new Uint8Array(u),{returnWithStateAndMsg:!0});if("success"!==Me(l,"state")||!_t(l.msg)){let e=Cn(Me(l,"msg",""));return A("error",`invalid request packet for apiMain: ${er(e)?e:"not an effective object"}`),n.packet("invalid request packet")}let a=l.msg;return W(t,n,async function(e){return T("execute",[Me(e,"func",""),Me(e,"input",null)],t=>(e.output=t,delete e.input,e))}(a),`execute func[${Cn(Me(a,"func",""))}]`)}},F={path:`/${y}/ulctr`,method:"POST",options:{payload:{maxBytes:m,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.ulctr,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let o=Me(e,"payload.mode","");if("check-total-hash"!==o&&"check-slices-hash"!==o&&"merge-slices-push"!==o&&"merge-slices-get"!==o)return n.param(`invalid mode[${Cn(o)}] in payload`);let u=Me(e,"payload.fileHash","");if(!Jn(u))return n.param("invalid fileHash in payload");let l=Me(e,"payload.chunkTotal","");if("merge-slices-push"===o){if(!hr(l))return n.param("invalid chunkTotal in payload");l=Cr(l)}if("merge-slices-get"!==o){let e=z(r,n);if(e)return e}let a=Me(e,"payload.filename",""),c=function(e,t="unknown"){if(!er(e))return t;let r=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return r=r.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),r=r.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(r)&&(r=`_${r}`),""===r?t:r}(a,""),d=e=>_t(e)&&dn(e,"error")?`${o}: ${hn(e.error)}`:"",D=async(e,t)=>{try{return await t()}catch(t){return A("error",`upload-controller mode[${o}] ${e} error: ${Cn(t)}`),Promise.reject(`${o} failed`)}};return W(t,n,(async()=>{let t=null;if("check-total-hash"===o){let r=Me(e,"payload.fileSize","");t=await D("check total hash",()=>_s(r,g,u,w));let n=d(t);if(er(n))return Promise.reject(n);if(t.bAllHash){let e={from:"check-total-hash",filename:a,filenameSafe:c,path:t.path},r=await S(e);t={...t,msg:r}}delete t.path,t.sizeSlice=g}else if("check-slices-hash"===o){let r=Me(e,"payload.fileSliceHashs",[]);t=await D("check slices hash",()=>ei(r,u,w));let n=d(t);if(er(n))return Promise.reject(n)}else if("merge-slices-push"===o){t={queueId:await D("push merge task",()=>Ps(u,l,w))}}else if("merge-slices-get"===o){let r=Me(e,"payload.queueId",""),n=await Js(r,w,{funConsume:async e=>await S({from:"merge-slices-get",filename:a,filenameSafe:c,path:e}),funLog:e=>{A("error",e)}});t={state:n.state,msg:n.msg,queueId:r,filename:a},"error"===n.state&&er(n.reason)&&A("error",`${n.msg} for fileHash[${u}]: ${n.reason}`)}return t})(),`upload-controller mode[${o}]`)}},V={path:`/${y}/slc`,method:"POST",options:{payload:{maxBytes:g,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(r,n){let s=_n.slc,i=X(n,s),o=Y(r,s),u=await j(r,o,s,i);if(u)return u;let l=Me(o.headers,"chunk-index",""),a=Me(o.headers,"chunk-total",""),c=Me(o.headers,"package-id","");if(!kr(l))return i.param("invalid chunkIndex in headers");if(l=Cr(l),!kr(a))return i.param("invalid chunkTotal in headers");if(a=Cr(a),!Jn(c))return i.param("invalid packageId in headers");let d=z(s,i);if(d)return d;let D=e.resolve(w,`${c}_${l}`),y=t.createWriteStream(D),M=()=>{let e=Hr(),t=0,n=!1,s=!1,i=!1,o=!1;y.on("error",t=>{s||n||i||(s=!0,r.payload.unpipe(y),r.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${a}] of packageId[${c}] err`,t),A("error",`write chunk[${l+1}/${a}] of packageId[${c}] error: ${Cn(t)}`),e.reject(`write chunk[${l+1}/${a}] of packageId[${c}] error`))}),y.on("close",()=>{n||s||i?Pn(D):o&&!0===y.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${a}] of packageId[${c}] done`)},h)}),r.payload.on("data",e=>{n||(t+=e.length,t>g&&(n=!0,r.payload.unpipe(y),r.payload.resume(),y.destroy()))}),r.payload.pipe(y),r.payload.on("end",()=>{o=!0,s||n&&e.reject("payload too large")});let u=t=>{i||o||s||(i=!0,y.destroy(),A("error",`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`),e.reject(`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`))};return r.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${a}] of packageId[${c}] err`,e),u(Cn(e))}),r.payload.on("close",()=>{u("closed before end")}),r.payload.destroyed&&u("closed before receive"),e},m={},I="",f="";try{let e=await M();m.success=e,I="success",f="need to parse"}catch(e){if("payload too large"===e)return n.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${g}`}).code(413);m.error=e,I="error",f="need to parse"}return li(n,Vn(m),{returnType:I,returnMsg:f})}},H={path:`/${y}/dwgfn`,method:"POST",options:{payload:{maxBytes:m,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.dwgfn,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let o=Me(e,"payload.fileId","");if(!er(o))return n.param("invalid fileId in payload");let u={fileId:o,token:s.token},l={};if(await Z(u).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(Me(l,"success"),o,r,n);return a.ok?(oi(a.v.streamRead),W(t,n,Promise.resolve({filename:a.v.filename}),`download fileId[${o}]`)):a.res}},U={path:`/${y}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dwgf,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let o=Me(s.query,"fileId","");if(o=er(o)?o:"",!er(o))return n.param("invalid fileId in query");let u={fileId:o,token:s.token},l={};if(await Z(u).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(Me(l,"success"),o,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=a.v.fileSize,w=a.v.fileType,D=a.v.filename,y=ni(c,d,e=>{A("error",`download fileId[${o}] stream error: ${e}`)},{forHead:"head"===hn(Me(e,"method","")).toLowerCase()});if(y.error)return oi(c),A("error",`download fileId[${o}] output error: ${y.reason}`),n.output(y.error);let M=t.response(y.source).type(w).header("Content-Encoding","identity").header("Content-Length",d).header("Content-Disposition",er(D)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(hn(e)),r="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}r+=t}return r.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(D)}`:"attachment");return M}},B={path:`/${y}/dw`,method:"POST",options:{payload:{maxBytes:m,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dw,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let o=Me(e,"payload.fileId","");if(!er(o))return n.param("invalid fileId in payload");let u={fileId:o,token:s.token},l={};if(await Z(u).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(Me(l,"success"),o,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=function(e,t={}){let r=Me(t,"returnWithStateAndMsg",null);wr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!er(e))return n("invalid str");let s="";try{let t=En.parse(e);s=Sn.stringify(t)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}(a.v.filename),w=a.v.fileSize,D=a.v.fileType,y=ni(c,w,e=>{A("error",`download fileId[${o}] stream error: ${e}`)},{forHead:"head"===hn(Me(e,"method","")).toLowerCase()});return y.error?(oi(c),A("error",`download fileId[${o}] output error: ${y.reason}`),n.output(y.error)):t.response(y.source).type(D).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",w)}};let R=null;if(u)try{L.route([k,F,V,H,U,B])}catch(e){console.log("register routes error",e),x("error",`register routes error: ${Cn(e)}`)}else R=async function(){c&&await L.register(n);let e=[];if(c){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}};e=[...e,t]}e=[...e,k,F,V,H,U,B],L.route(e),await L.start(),console.log(`Server running at: ${L.info.uri}`)}().catch(e=>{console.log("start server error",e),x("error",`start server error: ${Cn(e)}`)});return b.stop=async()=>{try{Wr(R)&&await R,await L.stop()}catch(e){console.log("stop server error",e),A("error",`stop server error: ${Cn(e)}`)}},b}function di(){if(!Gr(ms))throw new Error("invalid dayjs");return ms().format("YYYY-MM-DDTHH:mm:ssZ")}var wi=function(){return g.Date.now()},Di=Math.max,yi=Math.min;function Mi(e,t,r){var n,s,i,o,u,l,a=0,c=!1,d=!1,w=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function D(t){var r=n,i=s;return n=s=void 0,a=t,o=e.apply(i,r)}function y(e){var r=e-l;return void 0===l||r>=t||r<0||d&&e-a>=i}function M(){var e=wi();if(y(e))return g(e);u=setTimeout(M,function(e){var r=t-(e-l);return d?yi(r,i-(e-a)):r}(e))}function g(e){return u=void 0,w&&n?D(e):(n=s=void 0,o)}function m(){var e=wi(),r=y(e);if(n=arguments,s=this,l=e,r){if(void 0===u)return function(e){return a=e,u=setTimeout(M,t),c?D(e):o}(l);if(d)return clearTimeout(u),u=setTimeout(M,t),D(l)}return void 0===u&&(u=setTimeout(M,t)),o}return t=lr(t)||0,S(r)&&(c=!!r.leading,i=(d="maxWait"in r)?Di(lr(r.maxWait)||0,t):i,w="trailing"in r?!!r.trailing:w),m.cancel=function(){void 0!==u&&clearTimeout(u),a=0,n=l=s=u=void 0},m.flush=function(){return void 0===u?o:g(wi())},m}var gi=function(){try{var e=U(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),mi=gi;function Ii(e,t,r){"__proto__"==t&&mi?mi(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function fi(e,t,r){(void 0!==r&&!P(e[t],r)||void 0===r&&!(t in e))&&Ii(e,t,r)}var pi="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ci=pi&&"object"==typeof module&&module&&!module.nodeType&&module,hi=Ci&&Ci.exports===pi?g.Buffer:void 0,Li=hi?hi.allocUnsafe:void 0;function bi(e,t){if(t)return e.slice();var r=e.length,n=Li?Li(r):new e.constructor(r);return e.copy(n),n}function Ni(e){var t=new e.constructor(e.byteLength);return new Ce(t).set(new Ce(e)),t}function Ai(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function xi(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}var Ei=Object.create,Ti=function(){function e(){}return function(t){if(!S(t))return{};if(Ei)return Ei(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();function Si(e){return"function"!=typeof e.constructor||nt(e)?{}:Ti(Tr(e))}function Zi(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var vi=Object.prototype.hasOwnProperty;function Yi(e,t,r){var n=e[t];vi.call(e,t)&&P(n,r)&&(void 0!==r||t in e)||Ii(e,t,r)}function Xi(e,t,r,n){var s=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var u=t[i],l=n?n(r[u],e[u],u,r,e):void 0;void 0===l&&(l=e[u]),s?Ii(r,u,l):Yi(r,u,l)}return r}var ji=Object.prototype.hasOwnProperty;function zi(e){if(!S(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=nt(e),r=[];for(var n in e)("constructor"!=n||!t&&ji.call(e,n))&&r.push(n);return r}function Gi(e){return lt(e)?tt(e,!0):zi(e)}function Wi(e,t,r,n,s,i,o){var u=Zi(e,r),l=Zi(t,r),a=o.get(l);if(a)fi(e,r,a);else{var c,d=i?i(u,l,r+"",e,t,o):void 0,w=void 0===d;if(w){var y=D(l),M=!y&&Ve(l),g=!y&&!M&&qe(l);d=l,y||M||g?D(u)?d=u:N(c=u)&&lt(c)?d=xi(u):M?(w=!1,d=bi(l,!0)):g?(w=!1,d=Ai(l,!0)):d=[]:jr(l)||We(l)?(d=u,We(u)?d=function(e){return Xi(e,Gi(e))}(u):S(u)&&!Z(u)||(d=Si(l))):w=!1}w&&(o.set(l,d),s(d,l,n,i,o),o.delete(l)),fi(e,r,d)}}function Ki(e,t,r,n,s){e!==t&&Ut(t,function(i,o){if(s||(s=new ge),S(i))Wi(e,t,o,r,Ki,n,s);else{var u=n?n(Zi(e,o),i,o+"",e,t,s):void 0;void 0===u&&(u=i),fi(e,o,u)}},Gi)}var ki=Math.max;var Fi=mi?function(e,t){return mi(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:Kt,Vi=Fi,Hi=Date.now;var Ui=function(e){var t=0,r=0;return function(){var n=Hi(),s=16-(n-r);if(r=n,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Vi),Bi=Ui;function Ri(e,t){return Bi(function(e,t,r){return t=ki(void 0===t?e.length-1:t,0),function(){for(var n=arguments,s=-1,i=ki(n.length-t,0),o=Array(i);++s<i;)o[s]=n[t+s];s=-1;for(var u=Array(t+1);++s<t;)u[s]=n[s];return u[t]=r(o),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,u)}}(e,t,Kt),e+"")}function Qi(e,t,r){if(!S(r))return!1;var n=typeof t;return!!("number"==n?lt(r)&&Ue(t,r.length):"string"==n&&t in r)&&P(r[t],e)}var Oi,Pi=(Oi=function(e,t,r){Ki(e,t,r)},Ri(function(e,t){var r=-1,n=t.length,s=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(s=Oi.length>3&&"function"==typeof s?(n--,s):void 0,i&&Qi(t[0],t[1],i)&&(s=n<3?void 0:s,n=1),e=Object(e);++r<n;){var o=t[r];o&&Oi(e,o,r,s)}return e}));let Ji="w-sync-webdata";function $i(e,r={}){let n={},s=!1,i=!1,o=null;if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let u=Me(r,"fpTableTags","");er(u)||(u="./tableTags.json");let l=Me(r,"genTag");Gr(l)||(l=()=>di()+"|"+ps(6));let{emit:a,emitNow:c,clear:d}=function(e,t){let r=t=>Gr(e.listenerCount)?e.listenerCount(t):1,n={emit:(t,...r)=>e.emit(t,...r),listenerCount:r},s=(t,...n)=>{if("error"!==t)return e.emit(t,...n);let s=n[0];return $t(s)&&"listener"===s.fun&&(s={msg:`listener of event[${s.name}] error`,err:s.msg}),0===r("error")?(console.error(`[${Ji}]`,s),!1):e.emit("error",s)},i=new Set,o=(e,t,r)=>{let s=null,o=r.funEmit;s=Dn(n,e,t,{...r,tag:Ji,funEmit:(e,...t)=>(i.delete(s),o(e,...t))}),i.add(s)};return{emit:(e,...r)=>{t()||o(e,r,{funEmit:(e,...r)=>!t()&&s(e,...r)})},emitPm:(n,i,u={})=>{let l=i.pm;if(t())return;let a=!1,c=!1,d=l.resolve,w=l.reject;l.resolve=e=>{a=!0,d(e)},l.reject=e=>{a=!0,w(e)},o(n,[i],{funSettle:e=>{a||(a=!0,c=!0,w(e))},funEmit:(i,...o)=>i!==n?!!c||!t()&&s(i,...o):!t()&&(!Gr(u.beforeDispatch)||!1!==u.beforeDispatch())&&(0===r(i)?(a=!0,c=!0,w(new Error(`no listener for event[${i}]`)),!1):e.emit(i,...o))})},emitNow:(e,...t)=>an(n,e,t,{tag:Ji,funEmit:s}),clear:()=>{i.forEach(e=>{clearTimeout(e)}),i.clear()}}}(e,()=>s);function w(){let e={};try{if(t.existsSync(u)){let r=Kr(t.readFileSync(u,"utf8"));_t(r)&&(e=r)}}catch(e){a("error",{msg:"readTableTags catch",err:e})}return e}let D=()=>{let e=function(e,t=!1,r={}){let n=Me(r,"returnWithStateAndMsg",null);wr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(br(e))return s("invalid v");let i="";try{i=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return s(Zn(e))}return n?{state:"success",msg:i}:i}(n,!1,{returnWithStateAndMsg:!0});if("success"!==Me(e,"state"))return new Error(`can not serialize tableTags: ${Me(e,"msg")}`);try{t.writeFileSync(u,e.msg,"utf8")}catch(e){return e}return o=e.msg,i=!1,null};function y(){if(s)return;let e=D();e&&a("error",{msg:"writeTableTags catch",err:e})}let M=Mi(()=>{y(),a("changeTableTags",n)},200);return e.readTableTags=w,e.writeTableTags=y,e.initTableTags=function(e={},t="useInputFirst"){if(!s)if(null===e&&(e={}),$t(e)){if("useInputOnly"===t)n=e;else if("useStorageOnly"===t)n=w();else if("useInputFirst"===t)n=Pi(w(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);n=Pi(e,w())}y()}else a("error",{msg:"invalid tableTags for initTableTags",err:e})},e.setTableTags=function(e={}){s||(null===e&&(e={}),$t(e)?(n=Pi(n,e),y()):a("error",{msg:"invalid tableTags for setTableTags",err:e}))},e.getTableTags=function(){return n},e.updateTableTag=function(e){s||(er(e)?(n[e]=l(),i=!0,M()):a("error",{msg:"invalid tableName",err:e}))},e.clearSync=function(){if(s)return;M.cancel();let e=null;if(i){let r=null;try{t.existsSync(u)&&(r=t.readFileSync(u,"utf8"))}catch(e){r=void 0}null!==r&&r!==o||(e=D())}s=!0,d(),e&&c("error",{msg:"writeTableTags catch",err:e})},e}var _i=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Ae(t,ve(e)),e=Tr(e);return t}:Te;function qi(e){return xe(e,Gi,_i)}var eo=Object.prototype.hasOwnProperty;var to=/\w*$/;var ro=m?m.prototype:void 0,no=ro?ro.valueOf:void 0;function so(e,t,r){var n,s,i,o=e.constructor;switch(t){case"[object ArrayBuffer]":return Ni(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return function(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ai(e,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return(i=new(s=e).constructor(s.source,to.exec(s))).lastIndex=s.lastIndex,i;case"[object Symbol]":return n=e,no?Object(no.call(n)):{}}}var io=$e&&$e.isMap,oo=io?Qe(io):function(e){return N(e)&&"[object Map]"==xt(e)};var uo=$e&&$e.isSet,lo=uo?Qe(uo):function(e){return N(e)&&"[object Set]"==xt(e)},ao="[object Arguments]",co="[object Function]",wo="[object Object]",Do={};function yo(e,t,r,n,s,i){var o,u=1&t,l=2&t,a=4&t;if(r&&(o=s?r(e,n,s,i):r(e)),void 0!==o)return o;if(!S(e))return e;var c=D(e);if(c){if(o=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&eo.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!u)return xi(e,o)}else{var d=xt(e),w=d==co||"[object GeneratorFunction]"==d;if(Ve(e))return bi(e,u);if(d==wo||d==ao||w&&!s){if(o=l||w?{}:Si(e),!u)return l?function(e,t){return Xi(e,_i(e),t)}(e,function(e,t){return e&&Xi(t,Gi(t),e)}(o,e)):function(e,t){return Xi(e,ve(e),t)}(e,function(e,t){return e&&Xi(t,at(t),e)}(o,e))}else{if(!Do[d])return s?e:{};o=so(e,d,u)}}i||(i=new ge);var y=i.get(e);if(y)return y;i.set(e,o),lo(e)?e.forEach(function(n){o.add(yo(n,t,r,n,e,i))}):oo(e)&&e.forEach(function(n,s){o.set(s,yo(n,t,r,s,e,i))});var M=c?void 0:(a?l?qi:ct:l?Gi:at)(e);return $r(M||e,function(n,s){M&&(n=e[s=n]),Yi(o,s,yo(n,t,r,s,e,i))}),o}Do[ao]=Do["[object Array]"]=Do["[object ArrayBuffer]"]=Do["[object DataView]"]=Do["[object Boolean]"]=Do["[object Date]"]=Do["[object Float32Array]"]=Do["[object Float64Array]"]=Do["[object Int8Array]"]=Do["[object Int16Array]"]=Do["[object Int32Array]"]=Do["[object Map]"]=Do["[object Number]"]=Do[wo]=Do["[object RegExp]"]=Do["[object Set]"]=Do["[object String]"]=Do["[object Symbol]"]=Do["[object Uint8Array]"]=Do["[object Uint8ClampedArray]"]=Do["[object Uint16Array]"]=Do["[object Uint32Array]"]=!0,Do["[object Error]"]=Do[co]=Do["[object WeakMap]"]=!1;function Mo(e){return yo(e,5)}function go(e={}){let t=ln(),r=Object.create(null),n=null,s=new Set,i=new Set,o=!1,u=Me(e,"timeAlive");hr(u)||(u=1e4),u=Cr(u),u=Math.min(u,tn);let l=Me(e,"timeDetect");return hr(l)||(l=50),l=Cr(l),l=Math.min(l,tn),t.trigger=function(e,a){if(!o)if(er(e)){if(!dn(r,e)){let n=setTimeout(()=>{s.delete(n),dn(r,e)&&i.add(e),an(t,"message",[{eventName:"enter",key:e,data:a,now:Ms(r)}],{tag:"alive"})},1);s.add(n)}r[e]={data:a,time:Date.now()},o||null===n&&(n=setInterval(()=>{_r(r,(e,n)=>{if(Date.now()-e.time>u){let e=Mo(r[n]);if(delete r[n],i.delete(n),an(t,"message",[{eventName:"leave",key:n,data:e.data,now:Ms(r)}],{tag:"alive"}),o)return!1}}),o||_t(r)||(clearInterval(n),n=null)},l))}else console.log("trigger need key")},t.get=function(){let e=[];return _r(r,(t,r)=>{e.push({key:r,data:t.data})}),e=Mo(e),e},t.clear=function(){if(o)return[];o=!0,null!==n&&(clearInterval(n),n=null);for(let e of s)clearTimeout(e);s.clear();let e=[];return _r(r,(t,r)=>{i.has(r)&&e.push({key:r,data:t.data})}),e=Mo(e),r=Object.create(null),i.clear(),e},t}function mo(e,t={}){let r=t.isCleared;Gr(r)||(r=()=>!1);let n=t.onDeliver;Gr(n)||(n=null);let s=e=>{console.error(`[w-serv-broadcast] ${e.msg}`,e.err)},i=t=>(i,...o)=>{let u=o[0];if("error"===i&&_t(u)&&"listener"===u.fun){let t={msg:`listener of event[${u.name}] error`,err:u.msg};return r()?(s(t),!1):e.emit("error",t)}return(!t||!r())&&("error"===i&&0===(t=>Gr(e.listenerCount)?e.listenerCount(t):1)("error")?(s(u),!1):(null!==n&&n(i,o),e.emit(i,...o)))},o=i(!0),u=i(!1),l=(t,...n)=>{r()||Dn(e,t,n,{tag:"w-serv-broadcast",funEmit:o})};return l.final=(t,...r)=>{Dn(e,t,r,{tag:"w-serv-broadcast",funEmit:u})},l}function Io(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let r=new Map,n=!1,s=new Map,i=mo(e,{isCleared:()=>n,onDeliver:(e,t)=>{"clientEnter"===e?s.set(t[0],t[1]):"clientLeave"===e&&s.delete(t[0])}}),o=go();o.on("message",function({eventName:e,key:t,data:r,now:n}){"enter"===e?i("clientEnter",t,r):"leave"===e&&(s.has(t)&&s.set(t,r),i("clientLeave",t,r)),i("clientChange",n)});let u=function(e,t,s){if(!n&&"[sys:polling]"===e)try{let e=Me(t,"clientId");if(!er(e))return void s.reject("[sys:polling] invalid clientId");let n=r.get(e)||[];r.set(e,[]),o.trigger(e,t),s.resolve(n)}catch(e){i("error",{msg:"[sys:polling] error",err:e}),s.reject("[sys:polling] error")}},l=null;return e.getClients=o.get,e.getMessages=()=>Object.fromEntries(Array.from(r,([e,t])=>[e,Mo(t)])),e.broadcast=e=>{if(n)return;let t={mode:"broadcast",data:Mo(e)};r.forEach(e=>{e.push(t)})},e.clearBroadcast=()=>{if(n)return;n=!0,null!==l&&(clearInterval(l),l=null),e.off("execute",u);let t=new Map(Ot(o.get(),e=>[e.key,e.data]));o.clear();let a=s.size;for(let[e,r]of Array.from(s))a--,i.final("clientLeave",e,t.has(e)?t.get(e):r),i.final("clientChange",a);s.clear(),r=new Map},e.on("execute",u),l=setInterval(()=>{let e=new Set(Ot(o.get(),"key"));for(let t of Array.from(r.keys()))e.has(t)||r.delete(t)},1e3),e}let fo=(e,t)=>{let r={};return _r(e,e=>{let n=e,s=Me(t,e,"");er(s)&&(r[n]=s)}),r};function po(e){_r(e,({ev:e,name:t,h:r})=>{try{Gr(e.removeListener)?e.removeListener(t,r):Gr(e.off)&&e.off(t,r)}catch(e){}})}function Co(e,t){return 0!==Ms(e)&&(!!_t(t)&&(_r(e,e=>{let r=t[e];if(!r)throw new Error(`invalid kpOrm[${e}]`);if(!Gr(r.on))throw new Error(`kpOrm[${e}] can not listen to change events`)}),!0))}function ho(e,t,r,n={}){if(!_t(e))throw new Error("invalid instWConverServer");if(!Co(t,r))return e;let s=Me(n,"genTag");Gr(s)||(s=()=>di()+"|"+ps(6));let i={};_r(t,e=>{i[e]=s()}),_r(i,e=>{if(!er(e))throw new Error("invalid opt.genTag")});let o=[];try{_r(t,t=>{let n=r[t],s=()=>{e.updateTableTag(t)};try{n.on("change",s)}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}o.push({ev:n,name:"change",h:s})});let n=r=>{e.broadcast({mode:"syncKpTable",data:fo(t,r)})};e.on("changeTableTags",n),o.push({ev:e,name:"changeTableTags",h:n})}catch(e){throw po(o),e}let u=e.clearSync;return e.clearSync=()=>{po(o),o=[],u()},e.initTableTags(i,"useInputOnly"),e}function Lo(e,t){return!!(null==e?0:e.length)&&bs(e,t,0)>-1}function bo(e,t,r){for(var n=-1,s=null==e?0:e.length;++n<s;)if(r(t,e[n]))return!0;return!1}var No=yt&&1/Le(new yt([,-0]))[1]==1/0?function(e){return new yt(e)}:function(){};function Ao(e){return e&&e.length?function(e,t,r){var n=-1,s=Lo,i=e.length,o=!0,u=[],l=u;if(r)o=!1,s=bo;else if(i>=200){var a=t?null:No(e);if(a)return Le(a);o=!1,s=fe,l=new me}else l=t?[]:u;e:for(;++n<i;){var c=e[n],d=t?t(c):c;if(c=r||0!==c?c:0,o&&d==d){for(var w=l.length;w--;)if(l[w]===d)continue e;t&&l.push(d),u.push(c)}else s(l,d,r)||(l!==u&&l.push(d),u.push(c))}return u}(e):[]}function xo(e,t,r,n){for(var s=r-1,i=e.length;++s<i;)if(n(e[s],t))return s;return-1}var Eo=Array.prototype.splice;function To(e,t){return e&&e.length&&t&&t.length?function(e,t,r,n){var s=n?xo:bs,i=-1,o=t.length,u=e;for(e===t&&(t=xi(t)),r&&(u=ue(e,Qe(r)));++i<o;)for(var l=0,a=t[i],c=r?r(a):a;(l=s(u,c,l,n))>-1;)u!==e&&Eo.call(u,l,1),Eo.call(e,l,1);return e}(e,t):e}let So=["__proto__","constructor","prototype"];function Zo(e){return D(t=e)?ue(t,De):A(t)?[t]:xi(oe(de(t)));var t}function vo(e){let t=Zo(e);if(0===t.length)return!1;for(let e of t)if(""===e||So.includes(e))return!1;return!0}const Yo=/^[\p{L}_][\p{L}\p{M}\p{N}_]*$/u,Xo=["prototype","length"];function jo(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||null===t)&&(0===Object.getOwnPropertySymbols(e).length&&Object.getOwnPropertyNames(e).length===Object.keys(e).length)}function zo(e){return"string"==typeof e?e.length<=1024&&e.indexOf("\0")<0:"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)}function Go(e,t={}){try{return function(e,t){let r=e=>({ok:!1,reason:e});if(void 0===e)return!0===t.requireKey?r("emptyFind"):{ok:!0,find:e};if(!jo(e))return r("notObject");let n=Object.keys(e);if(n.length>64)return r("tooManyKeys");if(!0===t.requireKey&&0===n.length)return r("emptyFind");let s={},i=0;for(let t of n){if(t.length>128||Xo.includes(t)||t in Object.prototype||!Yo.test(t))return r("badKey");let n=e[t];if(zo(n))s[t]=n;else{if(!jo(n))return r("badValue");{let e=Object.keys(n);if(1!==e.length||"$in"!==e[0])return r("badOperator");let o=n.$in;if(!Array.isArray(o)||Object.getOwnPropertySymbols(o).length>0)return r("badIn");let u=o.length;if(i+=u,i>1e3)return r("tooManyIn");if(Object.getOwnPropertyNames(o).length!==u+1)return r("badIn");let l=[];for(let e=0;e<u;e++){if(!Object.prototype.hasOwnProperty.call(o,e))return r("badIn");let t=o[e];if(!zo(t))return r("badIn");l.push(t)}s[t]=Object.freeze({$in:Object.freeze(l)})}}}return{ok:!0,find:Object.freeze(s)}}(e,t)}catch(e){return{ok:!1,reason:"notObject"}}}let Wo=e=>null!=e,Ko=["select","delAll"];function ko(e={}){let t=Me(e,"getUserIdByToken",null);if(Wo(t)&&!Gr(t))throw new Error("invalid opt.getUserIdByToken");Gr(t)||(t=async()=>"");let r=Me(e,"useDbOrm",null);wr(r)||(r=!1);let n=null;if(r&&(n=Me(e,"operOrm",null),!Gr(n)))throw new Error("invalid opt.operOrm when useDbOrm=true");let s=[];if(r){if(s=Me(e,"tableNames",null),!Lr(s))throw new Error("invalid opt.tableNamesExec when useDbOrm=true");_r(s,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesExec[${t}] when useDbOrm=true`)}),s=[...s]}let i=[];if(r){if(i=Me(e,"methods",null),null===i)i=["select","insert","save","del"];else if(!Lr(i))throw new Error("invalid opt.methodsExec when useDbOrm=true");_r(i,(e,t)=>{if(!er(e))throw new Error(`invalid opt.methodsExec[${t}] when useDbOrm=true`)}),i=[...i]}let o=null;if(r&&(o=Me(e,"authorizeExec",null),!Gr(o)))throw new Error("invalid opt.authorizeExec when useDbOrm=true");let u=Me(e,"kpFunExt",null);if(Wo(u)&&!$t(u))throw new Error("invalid opt.kpFunExt");$t(u)||(u={}),_r(u,(e,t)=>{if(!Gr(e))throw new Error(`invalid opt.kpFunExt[${t}]`)});let l=Me(e,"kpFunSys",null),a=[];r&&(_r(s,e=>{_r(i,t=>{a.push(`${e}.${t}`)})}),a=Ao(a)),_r(a,e=>{if(!vo(e))throw new Error(`table operation[${e}] can not be bound by the client`)});let c=Ao(Ot(a,e=>Zo(e)[0]));_r(u,(e,t)=>{if(t.startsWith("[sys:"))throw new Error(`kpFunExt[${t}] can not use the reserved prefix [sys:`);if(!vo(t))throw new Error(`kpFunExt[${t}] can not be bound by the client`);let r=Zo(t)[0];if(c.includes(r))throw new Error(`kpFunExt[${t}] conflicts with the table operations of table[${r}]`)});let d=function(e){let t=()=>({leaf:null,kids:new Map}),r=e=>{if(null!==e.leaf)return e.leaf;for(let t of e.kids.values()){let e=r(t);if(null!==e)return e}return null},n=t();for(let s of e){let e=n;for(let r of Zo(s)){if(null!==e.leaf)return[e.leaf,s];e.kids.has(r)||e.kids.set(r,t()),e=e.kids.get(r)}if(null===e.leaf){if(e.kids.size>0)return[r(e),s];e.leaf=s}else if(e.leaf!==s)return[e.leaf,s]}return null}([...a,...at(u)]);if(null!==d){let e=e=>a.includes(e)?"table operation":"kpFunExt";throw new Error(`${e(d[1])}[${d[1]}] conflicts with ${e(d[0])}[${d[0]}] on the client binding path`)}return{getUserIdByToken:t,useDbOrm:r,operOrm:n,tableNames:s,methods:i,authorizeExec:o,kpFunExt:u,kpFunSys:l,pathNames:a}}function Fo(e,t={}){if(!_t(e))throw new Error("invalid instWConverServer");let{getUserIdByToken:r,useDbOrm:n,operOrm:s,tableNames:i,methods:o,authorizeExec:u,kpFunExt:l,kpFunSys:a}=ko(t),c={};async function d(t,n,s){if(!er(t))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!dn(n,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=hn(n.__sysToken__),!dn(n,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;if(n=n.__sysInputArgs__,!Array.isArray(n))return s.resolve({state:"error",msg:"invalid input"}),s;let o="";try{o=await r(i)}catch(t){return s.resolve({state:"error",msg:t}),an(e,"error",[t]),s}if(er(o)||(o=""),"[sys:getFuncList]"===t){let e=at(c);e=function(e,t){if(!Er(e))return[];if(($t(t)||yr(t)||qt(t)||wr(t))&&(t=[t]),!Er(t))return e;let r=Mo(e);return To(r,t),r}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!Object.prototype.hasOwnProperty.call(c,t))return s.resolve({state:"error",msg:`invalid func[${t}]`}),s;let u=c[t];try{let e=await Ur(u)(o,...n);s.resolve(e)}catch(e){s.resolve({state:"error",msg:`call func[${t}] has an error: ${Cn(e)}`})}return s}return n&&(c=function(e,t,r,n){let s={};return _r(e,e=>{_r(t,t=>{s[`${e}.${t}`]=async function(s,i){if(Ko.includes(t)){let e=Go(i);if(!e.ok)return Promise.reject(`invalid find[${e.reason}]`);i=e.find}return!0!==await n({userId:s,tableName:e,methodName:t,input:i})?Promise.reject("permission denied"):await r(s,e,t,i)}})}),s}(i,o,s,u)),_r(l,(e,t)=>{c[t]=e}),_t(a)&&_r(a,(e,t)=>{c[t]=e}),e.on("execute",function(t,r,n){d(t,r,n).catch(r=>{n.resolve({state:"error",msg:`execFun func[${t}] has an error: ${Cn(r)}`}),an(e,"error",[r])})}),e}let Vo=e=>null!=e;function Ho(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let{fpTableTags:r,genTag:n,useDbOrm:s,kpOrm:i,tableNamesSync:o,optExec:u}=function(e={}){let t=Me(e,"fpTableTags",null);if(Vo(t)&&!er(t))throw new Error("invalid opt.fpTableTags");er(t)||(t="./tableTags.json");let r=Me(e,"genTag",null);if(Vo(r)&&!Gr(r))throw new Error("invalid opt.genTag");Gr(r)||(r=()=>di()+"|"+ps(6));let n=Me(e,"useDbOrm",null),s=wr(n);s||(n=!1);let i=Me(e,"kpOrm",null),o=Me(e,"operOrm",null),u=Me(e,"tableNamesExec",null),l=Me(e,"methodsExec",null),a=Me(e,"authorizeExec",null),c=Me(e,"tableNamesSync",null),d=Me(e,"getUserIdByToken",null),w=Me(e,"kpFunExt",null);s||_r({operOrm:o,tableNamesExec:u,methodsExec:l,authorizeExec:a,kpOrm:i,tableNamesSync:c},(e,t)=>{if(null!==e)throw new Error(`invalid opt.useDbOrm when opt.${t} is given`)});if(n&&!$t(i))throw new Error("invalid opt.kpOrm when useDbOrm=true");if(n&&Vo(c)){if(!Lr(c))throw new Error("invalid opt.tableNamesSync when useDbOrm=true");_r(c,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesSync[${t}] when useDbOrm=true`)}),c=[...c]}let D=ko({getUserIdByToken:d,useDbOrm:n,operOrm:o,tableNames:u,methods:l,authorizeExec:a,kpFunExt:w}),y=!1;return n&&(y=Co(c,i)),y&&_r(c,e=>{if(!D.tableNames.includes(e)||!D.methods.includes("select"))throw new Error(`invalid opt.tableNamesSync when table operation[${e}.select] does not exist`)}),{fpTableTags:t,genTag:r,useDbOrm:n,kpOrm:i,tableNamesSync:c,optExec:{getUserIdByToken:D.getUserIdByToken,useDbOrm:D.useDbOrm,operOrm:D.operOrm,tableNames:D.tableNames,methods:D.methods,authorizeExec:D.authorizeExec,kpFunExt:D.kpFunExt}}}(t);e=new Io(e=new $i(e,{fpTableTags:r,genTag:n}));let l={"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:fo(o,t)}}};try{e=new Fo(e,{...u,kpFunSys:l}),s&&(e=new ho(e,o,i,{genTag:n}))}catch(t){throw e.clearBroadcast(),e.clearSync(),t}return e}function Uo(e={}){let t=ln(),s=Me(e,"port");(!hr(s,{useLimitSafe:!0})||Cr(s)>65535)&&(s=8080),s=Cr(s);let i=(t,r,n)=>{let s=Me(e,t);if(null==s)return r;if(!n(s))throw new Error(`invalid opt.${t}`);return s},o=i("corsOrigins",["http://localhost"],e=>!1===e||qt(e)||Lr(e));!1===o&&(o=[]),qt(o)&&(o=[o]),o=o.filter(e=>""!==e);let u=i("useInert",!0,wr),l=i("pathStaticFiles","dist",er),a=Me(e,"apis");Er(a)||(a=[]);let c=Me(e,"fpTableTags",null);null==c&&(c=Me(e,"fnTableTags",null));let d=Me(e,"useShowLog");wr(d)||(d=!0);let w=!0,D=[],y=e=>{w?D.push(e):0!==t.listenerCount("error")?an(t,"error",[e],{tag:"w-serv-hapi"}):console.error("[w-serv-hapi]",e)},M=!1;o.length>0&&(M={origin:o,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]});let g=new r.Server({port:s,routes:{timeout:{server:!1,socket:!1},cors:M}}),m=new ci({serverHapi:g,apiName:Me(e,"apiName"),pathUploadTemp:Me(e,"pathUploadTemp"),tokenType:Me(e,"tokenType"),sizeSlice:Me(e,"sizeSlice"),sizeMsg:Me(e,"sizeMsg"),verifyConn:Me(e,"verifyConn"),delayForSlice:Me(e,"delayForSlice")});m.on("error",y),m.on("clientChange",function(e){d&&console.log(`Server[port:${s}]: now clients: ${e}`)});let I=()=>{for(let e of["clearBroadcast","clearSync"])if(Gr(m[e]))try{m[e]()}catch(e){y(e)}};m=new Ho(m,{...e,fpTableTags:c});let f=new Promise(e=>{setTimeout(()=>{w=!1,e();let t=D;D=[];for(let e of t)y(e)},1)}),p=!1,C=(async()=>{await f,u&&await g.register(n);let e=[];return u&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}}]),e=[...e,...a],g.route(e),await g.start(),p=!0,d&&console.log(`Server running at: ${g.info.uri}`),g})();C.catch(e=>{I(),y(e)});let h=null;return t.ready=()=>C,t.stop=()=>(null!==h||(h=(async()=>{if(await C.catch(()=>{}),I(),p)try{await g.stop()}catch(e){y(e)}})()),h),t.getServer=async()=>g,t.getInstWConverServer=async()=>m,t}function Bo(e){try{e instanceof Promise&&Promise.prototype.then.call(e,void 0,()=>{})}catch(e){}}function Ro(e,t){let r=Hr(),n=!1;try{let t=function(e,t=!1){let r=[],n=!1;try{if(Array.isArray(e)){let t=e.length;r.length=t;for(let n=0;n<t;n++)n in e&&(r[n]=e[n])}else{if(t||!$t(e)&&!Lr(e))return null;{n=!0;let t=Object.keys(e);for(let n=0;n<t.length;n++)r.push({k:t[n],v:e[t[n]]})}}}catch(e){throw r.forEach(e=>{Bo(n?e.v:e)}),e}return{items:r,useObj:n}}(e);if(null===t)return r.reject("rs is not an array or object"),r;e=t.items,n=t.useObj}catch(e){return r.reject(e),r}Gr(t)||(_r(e,e=>{Bo(n?e.v:e)}),t=function(e){return e});let s=Gr(t),i=-1,o=[];return e.reduce(function(e,r){return e.then(function(e){o.push(e),i+=1;let u=i,l=r;return n&&(u=r.k,l=r.v),s?t(l,u):l})},Promise.resolve()).then(function(e){var t,n,s,i;o.push(e),i=null==(t=o)?0:t.length,o=i?Cs(t,(n=s||void 0===n?1:dr(n))<0?0:n,i):[],r.resolve(o)}).catch(function(e){r.reject(e)}),r}function Qo(e){let t="procOrm does not authorize users, authorize where procOrm is exposed to clients",r=[["useCheckUser",t],["getUserById",t],["useExcludeWhenNotAdmin","procOrm does not filter select results by user, use addFunPostProcessing if needed"]];for(let[t,n]of r){let r=Me(e,t);if(null!=r&&!1!==r)throw new Error(`opt.${t} has been removed, ${n}`)}}let Oo={backup:async function(e){if(!_t(e))throw console.log("woItems",e),new Error("invalid woItems");return await Ro(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,r,n,s=!1){if(!Pr(e))throw console.log("fp",e),new Error("fp is not exist");if(!_t(r))throw console.log("woItems",r),new Error("invalid woItems");Gr(n)||(n=null),wr(s)||(s=!1);let i=t.readFileSync(e,"utf8");i=Ws(i);let o=Kr(i);if(!Er(o))throw new Error("invalid backup data, need a non-empty array");_r(o,(e,t)=>{let n=Me(e,"name");if(!er(n))throw new Error(`invalid backup data, rs[${t}].name is not a string`);if(!Object.prototype.hasOwnProperty.call(r,n))throw new Error(`invalid backup data, table[${n}] is not in woItems`)}),Gr(n)&&n(),await Ro(o,async e=>{console.log("recover...",e.name),s&&(console.log("needCreateStorage"),await r[e.name].createStorage());let t=null;return Ms(e.data)>0&&(t=await r[e.name].insert(e.data)),t})}};var Po=$e&&$e.isRegExp,Jo=Po?Qe(Po):function(e){return N(e)&&"[object RegExp]"==b(e)},$o=/\w*$/;function _o(e,t){var r=30,n="...";if(S(t)){var s="separator"in t?t.separator:s;r="length"in t?dr(t.length):r,n="omission"in t?ce(t.omission):n}var i=(e=de(e)).length;if(ts(e)){var o=Gs(e);i=o.length}if(r>=i)return e;var u=r-ys(n);if(u<1)return n;var l=o?hs(o,0,u).join(""):e.slice(0,u);if(void 0===s)return l+n;if(o&&(u+=l.length-u),Jo(s)){if(e.slice(u).search(s)){var a,c=l;for(s.global||(s=RegExp(s.source,de($o.exec(s))+"g")),s.lastIndex=0;a=s.exec(c);)var d=a.index;l=l.slice(0,void 0===d?u:d)}}else if(e.indexOf(ce(s),u)!=u){var w=l.lastIndexOf(s);w>-1&&(l=l.slice(0,w))}return l+n}function qo(){if(!Gr(ms))throw new Error("invalid dayjs");return ms().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}const eu=[];for(let e=0;e<256;++e)eu.push((e+256).toString(16).slice(1));const tu=new Uint8Array(16);function ru(){return crypto.getRandomValues(tu)}const nu={};function su(e,t,r){let n;if(e)n=iu(e.random??e.rng?.()??ru(),e.msecs,e.seq,t,r);else{const e=Date.now(),s=ru();!function(e,t,r){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=ou(r),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(nu,e,s),n=iu(s,nu.msecs,nu.seq,t,r)}return t??function(e,t=0){return(eu[e[t+0]]+eu[e[t+1]]+eu[e[t+2]]+eu[e[t+3]]+"-"+eu[e[t+4]]+eu[e[t+5]]+"-"+eu[e[t+6]]+eu[e[t+7]]+"-"+eu[e[t+8]]+eu[e[t+9]]+"-"+eu[e[t+10]]+eu[e[t+11]]+eu[e[t+12]]+eu[e[t+13]]+eu[e[t+14]]+eu[e[t+15]]).toLowerCase()}(n)}function iu(e,t,r,n,s=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(n){if(s<0||s+16>n.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`)}else n=new Uint8Array(16),s=0;return t??=Date.now(),r??=ou(e),n[s++]=t/1099511627776&255,n[s++]=t/4294967296&255,n[s++]=t/16777216&255,n[s++]=t/65536&255,n[s++]=t/256&255,n[s++]=255&t,n[s++]=112|r>>>28&15,n[s++]=r>>>20&255,n[s++]=128|r>>>14&63,n[s++]=r>>>6&255,n[s++]=r<<2&255|3&e[10],n[s++]=e[11],n[s++]=e[12],n[s++]=e[13],n[s++]=e[14],n[s++]=e[15],n}function ou(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function uu(){return su()}var lu={exports:{}},au={},cu={exports:{}},du={};function wu(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Du=/javascript\s*\:/gim;du.whiteList=wu(),du.getDefaultWhiteList=wu,du.onAttr=function(e,t,r){},du.onIgnoreAttr=function(e,t,r){},du.safeAttrValue=function(e,t){return Du.test(t)?"":t};var yu={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var Mu=function(e,t){";"!==(e=yu.trimRight(e))[e.length-1]&&(e+=";");var r=e.length,n=!1,s=0,i=0,o="";function u(){if(!n){var r=yu.trim(e.slice(s,i)),u=r.indexOf(":");if(-1!==u){var l=yu.trim(r.slice(0,u)),a=yu.trim(r.slice(u+1));if(l){var c=t(s,o.length,l,a,r);c&&(o+=c+"; ")}}}s=i+1}for(;i<r;i++){var l=e[i];if("/"===l&&"*"===e[i+1]){var a=e.indexOf("*/",i+2);if(-1===a)break;s=(i=a+1)+1,n=!1}else"("===l?n=!0:")"===l?n=!1:";"===l?n||u():"\n"===l&&u()}return yu.trim(o)},gu=du,mu=Mu;function Iu(e){return null==e}function fu(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).whiteList=e.whiteList||gu.whiteList,e.onAttr=e.onAttr||gu.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||gu.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||gu.safeAttrValue,this.options=e}fu.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onAttr,s=t.onIgnoreAttr,i=t.safeAttrValue;return mu(e,function(e,t,o,u,l){var a=r[o],c=!1;if(!0===a?c=a:"function"==typeof a?c=a(u):a instanceof RegExp&&(c=a.test(u)),!0!==c&&(c=!1),u=i(o,u)){var d,w={position:t,sourcePosition:e,source:l,isWhite:c};return c?Iu(d=n(o,u,w))?o+":"+u:d:Iu(d=s(o,u,w))?void 0:d}})};var pu=fu;!function(e,t){var r=du,n=pu;for(var s in(t=e.exports=function(e,t){return new n(t).process(e)}).FilterCSS=n,r)t[s]=r[s];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(cu,cu.exports);var Cu=cu.exports,hu={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},Lu=Cu.FilterCSS,bu=Cu.getDefaultWhiteList,Nu=hu;function Au(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var xu=new Lu;function Eu(e){return e.replace(Tu,"&lt;").replace(Su,"&gt;")}var Tu=/</g,Su=/>/g,Zu=/"/g,vu=/&quot;/g,Yu=/&#([a-zA-Z0-9]*);?/gim,Xu=/&colon;?/gim,ju=/&newline;?/gim,zu=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,Gu=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Wu=/u\s*r\s*l\s*\(.*/gi;function Ku(e){return e.replace(Zu,"&quot;")}function ku(e){return e.replace(vu,'"')}function Fu(e){return e.replace(Yu,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function Vu(e){return e.replace(Xu,":").replace(ju," ")}function Hu(e){for(var t="",r=0,n=e.length;r<n;r++)t+=e.charCodeAt(r)<32?" ":e.charAt(r);return Nu.trim(t)}function Uu(e){return e=Hu(e=Vu(e=Fu(e=ku(e))))}function Bu(e){return e=Eu(e=Ku(e))}au.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},au.getDefaultWhiteList=Au,au.onTag=function(e,t,r){},au.onIgnoreTag=function(e,t,r){},au.onTagAttr=function(e,t,r){},au.onIgnoreTagAttr=function(e,t,r){},au.safeAttrValue=function(e,t,r,n){if(r=Uu(r),"href"===t||"src"===t){if("#"===(r=Nu.trim(r)))return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"tel:"!==r.substr(0,4)&&"data:image/"!==r.substr(0,11)&&"ftp://"!==r.substr(0,6)&&"./"!==r.substr(0,2)&&"../"!==r.substr(0,3)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===t){if(zu.lastIndex=0,zu.test(r))return""}else if("style"===t){if(Gu.lastIndex=0,Gu.test(r))return"";if(Wu.lastIndex=0,Wu.test(r)&&(zu.lastIndex=0,zu.test(r)))return"";!1!==n&&(r=(n=n||xu).process(r))}return r=Bu(r)},au.escapeHtml=Eu,au.escapeQuote=Ku,au.unescapeQuote=ku,au.escapeHtmlEntities=Fu,au.escapeDangerHtml5Entities=Vu,au.clearNonPrintableCharacter=Hu,au.friendlyAttrValue=Uu,au.escapeAttrValue=Bu,au.onIgnoreTagStripAll=function(){return""},au.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),n=[],s=!1;return{onIgnoreTag:function(i,o,u){if(function(t){return!!r||-1!==Nu.indexOf(e,t)}(i)){if(u.isClosing){var l="[/removed]",a=u.position+10;return n.push([!1!==s?s:u.position,a]),s=!1,l}return s||(s=u.position),"[removed]"}return t(i,o,u)},remove:function(e){var t="",r=0;return Nu.forEach(n,function(n){t+=e.slice(r,n[0]),r=n[1]}),t+=e.slice(r)}}},au.stripCommentTag=function(e){for(var t="",r=0;r<e.length;){var n=e.indexOf("\x3c!--",r);if(-1===n){t+=e.slice(r);break}t+=e.slice(r,n);var s=e.indexOf("--\x3e",n);if(-1===s)break;r=s+3}return t},au.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},au.attributeWrapSign='"',au.cssFilter=xu,au.getDefaultCSSWhiteList=bu;var Ru={},Qu=hu;function Ou(e){var t,r=Qu.spaceIndex(e);return t=-1===r?e.slice(1,-1):e.slice(1,r+1),"/"===(t=Qu.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Pu(e){return"</"===e.slice(0,2)}var Ju=/[^a-zA-Z0-9\\_:.-]/gim;function $u(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"="===r?t:-1}}function _u(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"'"===r||'"'===r?t:-1}}function qu(e,t){for(;t>0;t--){var r=e[t];if(" "!==r)return"="===r?t:-1}}function el(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}Ru.parseTag=function(e,t,r){var n="",s=0,i=!1,o=!1,u=0,l=e.length,a="",c="";e:for(u=0;u<l;u++){var d=e.charAt(u);if(!1===i){if("<"===d){i=u;continue}}else if(!1===o){if("<"===d){n+=r(e.slice(s,u)),i=u,s=u;continue}if(">"===d||u===l-1){n+=r(e.slice(s,i)),a=Ou(c=e.slice(i,u+1)),n+=t(i,n.length,a,c,Pu(c)),s=u+1,i=!1;continue}if('"'===d||"'"===d)for(var w=1,D=e.charAt(u-w);""===D.trim()||"="===D;){if("="===D){o=d;continue e}D=e.charAt(u-++w)}}else if(d===o){o=!1;continue}}return s<l&&(n+=r(e.substr(s))),n},Ru.parseAttr=function(e,t){var r=0,n=0,s=[],i=!1,o=e.length;function u(e,r){if(!((e=(e=Qu.trim(e)).replace(Ju,"").toLowerCase()).length<1)){var n=t(e,r||"");n&&s.push(n)}}for(var l=0;l<o;l++){var a,c=e.charAt(l);if(!1!==i||"="!==c)if(!1===i||l!==n)if(/\s|\n|\t/.test(c)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(a=$u(e,l))){u(Qu.trim(e.slice(r,l))),i=!1,r=l+1;continue}l=a-1;continue}if(-1===(a=qu(e,l-1))){u(i,el(Qu.trim(e.slice(r,l)))),i=!1,r=l+1;continue}}else;else{if(-1===(a=e.indexOf(c,l+1)))break;u(i,Qu.trim(e.slice(n+1,a))),i=!1,r=(l=a)+1}else i=e.slice(r,l),r=l+1,n='"'===e.charAt(r)||"'"===e.charAt(r)?r:_u(e,l+1)}return r<e.length&&(!1===i?u(e.slice(r)):u(i,el(Qu.trim(e.slice(r))))),Qu.trim(s.join(" "))};var tl=Cu.FilterCSS,rl=au,nl=Ru,sl=nl.parseTag,il=nl.parseAttr,ol=hu;function ul(e){return null==e}function ll(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=rl.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(e){return e.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}(e.whiteList||e.allowList):e.whiteList=rl.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":rl.attributeWrapSign,e.onTag=e.onTag||rl.onTag,e.onTagAttr=e.onTagAttr||rl.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||rl.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||rl.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||rl.safeAttrValue,e.escapeHtml=e.escapeHtml||rl.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new tl(e.css))}ll.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,r=t.options,n=r.whiteList,s=r.onTag,i=r.onIgnoreTag,o=r.onTagAttr,u=r.onIgnoreTagAttr,l=r.safeAttrValue,a=r.escapeHtml,c=t.attributeWrapSign,d=t.cssFilter;r.stripBlankChar&&(e=rl.stripBlankChar(e)),r.allowCommentTag||(e=rl.stripCommentTag(e));var w=!1;r.stripIgnoreTagBody&&(w=rl.StripTagBody(r.stripIgnoreTagBody,i),i=w.onIgnoreTag);var D=sl(e,function(e,t,r,w,D){var y={sourcePosition:e,position:t,isClosing:D,isWhite:Object.prototype.hasOwnProperty.call(n,r)},M=s(r,w,y);if(!ul(M))return M;if(y.isWhite){if(y.isClosing)return"</"+r+">";var g=function(e){var t=ol.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var r="/"===(e=ol.trim(e.slice(t+1,-1)))[e.length-1];return r&&(e=ol.trim(e.slice(0,-1))),{html:e,closing:r}}(w),m=n[r],I=il(g.html,function(e,t){var n=-1!==ol.indexOf(m,e),s=o(r,e,t,n);return ul(s)?n?(t=l(r,e,t,d))?e+"="+c+t+c:e:ul(s=u(r,e,t,n))?void 0:s:s});return w="<"+r,I&&(w+=" "+I),g.closing&&(w+=" /"),w+=">"}return ul(M=i(r,w,y))?a(w):M},a);return w&&(D=w.remove(D)),D};var al=ll;!function(e,t){var r=au,n=Ru,s=al;function i(e,t){return new s(t).process(e)}(t=e.exports=i).filterXSS=i,t.FilterXSS=s,function(){for(var e in r)t[e]=r[e];for(var s in n)t[s]=n[s]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(lu,lu.exports);var cl=nn(lu.exports);function dl(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}let wl=/<(?=[A-Za-z!/?]|$)/g;function Dl(e){return e.replace(wl,"&lt;")}let yl={getFilterXSS:function(e=cl){if(Gr(e))return e;let t=dl(),r=Me(t,"filterXSS",null);if(Gr(r))return r;let n=Me(t,"xss",null);if(Gr(n))return n;throw new Error("invalid filterXSS, g.filterXSS, use script for import")},getOpt:function(e){return{escapeHtml:Dl,onIgnoreTagAttr:function(t,r,n,s){if("style"===r)return r+'="'+e.escapeAttrValue(n)+'"'}}}};function Ml(e){let t=null,r=null;let n=function e(n){if(Array.isArray(n)){for(let t=0;t<n.length;t++)n[t]=e(n[t]);return n}if($t(n)||Lr(n)){for(let t of Object.keys(n))n[t]=e(n[t]);return n}return er(n)?(s=n,null===t&&(t=yl.getFilterXSS(),r=yl.getOpt(t)),t(s,r)):n;var s}(Mo(e));return n}function gl(e,t){if(!Lr(e))return[];Lr(t)||(t=[t]);let r=[];return _r(e,(e,n)=>{0===Me(e,"ok")&&r.push({k:n,id:Me(t,[n,"id"]),err:Me(e,"err","")})}),r}function ml(e,t){var r,n,s;let i=`${e}: ${Jt(Ot((n=10,(r=t)&&r.length?Cs(r,0,(n=s||void 0===n?1:dr(n))<0?0:n):[]),e=>er(e.ref)?e.ref:er(e.id)||yr(e.id)?`id[${_o(String(e.id),{length:100,omission:"…"})}]`:`data[${e.k}]`),", ")}`;return Ms(t)>10&&(i+=`, ... (${Ms(t)} in total)`),i}function Il(e,t){if(t.indexOf("id")<0)return!1;let r=Me(e,"settings",null);if(_t(r)&&!0!==Me(r,"id.pk"))return!1;let n=Me(r,"id.type","")||Me(e,"kpType.id","");return!(er(n)&&["STRING","TEXT","CHAR","UUID","CITEXT"].indexOf(n.split("(")[0].trim().toUpperCase())<0)}function fl(e,t){return null!==e&&"object"==typeof e&&"string"==typeof t&&Object.prototype.hasOwnProperty.call(e,t)?void 0===e[t]?null:e[t]:null}function pl(e){return"number"==typeof e&&Number.isFinite(e)}function Cl(e){return pl(e)?String(e):e}function hl(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,t(e[r],r)]))}const Ll=Object.freeze({proto:"unsupported key[__proto__]",accessor:"unsupported accessor property",unreadable:"unreadable value",deep:"too deep",hidden:"unsupported symbol key or non-enumerable property",irregular:"unsupported irregular object or array"}),bl="function"==typeof WeakRef?Function.prototype.call.bind(WeakRef.prototype.deref):null,Nl="function"==typeof FinalizationRegistry?Function.prototype.call.bind(FinalizationRegistry.prototype.unregister):null,Al={};function xl(e){for(let t=e;null!==t;t=Object.getPrototypeOf(t))if(u.types.isProxy(t)||Object.prototype.hasOwnProperty.call(t,Symbol.toStringTag))return!1;return!0}function El(e){return u.types.isMap(e)||u.types.isSet(e)||u.types.isWeakMap(e)||u.types.isWeakSet(e)||u.types.isPromise(e)||u.types.isAnyArrayBuffer(e)||u.types.isArrayBufferView(e)||u.types.isBoxedPrimitive(e)||u.types.isRegExp(e)||u.types.isNativeError(e)||u.types.isGeneratorObject(e)||u.types.isMapIterator(e)||u.types.isSetIterator(e)||u.types.isModuleNamespaceObject(e)}function Tl(e){if("object"!=typeof e||null===e||!xl(e)||!$t(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t===Object.prototype||function(e){if(null!==Object.getPrototypeOf(e))return!1;let t=Reflect.ownKeys(Object.prototype);if(Reflect.ownKeys(e).length!==t.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r))return!1;let r=Object.getOwnPropertyDescriptor(e,"constructor");if(void 0===r||"function"!=typeof r.value||u.types.isProxy(r.value))return!1;if(Function.prototype.toString.call(r.value)!==Function.prototype.toString.call(Object))return!1;let n=Object.getOwnPropertyDescriptor(r.value,"prototype");return void 0!==n&&n.value===e}(t)}function Sl(e){return"object"!=typeof e||null===e||!xl(e)||El(e)?null:Array.isArray(e)?"arr":$t(e)?"obj":null}function Zl(e){if(null!==bl)try{return bl(e),!0}catch(e){}if(null!==Nl)try{return Nl(e,Al),!0}catch(e){}return!1}function vl(e,...t){try{console.log(e,...t)}catch(t){try{console.log(e,"(unprintable)")}catch(e){}}}function Yl(e,t={n:0},r=0){if(t.n>=200)return"[...]";if(t.n++,"string"==typeof e)return _o(e,{length:200});if("function"==typeof e)return"[Function]";if("symbol"==typeof e)return"[Symbol]";if("object"!=typeof e||null===e)return e;if(u.types.isProxy(e))return"[Proxy]";if(u.types.isDate(e))return"[Date]";if(El(e))return"[Object]";if(r>=8)return"[...]";let n=e=>void 0===e?"[empty]":void 0!==e.get||void 0!==e.set?"[Getter/Setter]":Yl(e.value,t,r+1);if(Array.isArray(e)){let t=Math.min(e.length,50),r=[];for(let s=0;s<t;s++)r.push(n(Object.getOwnPropertyDescriptor(e,s)));return e.length>t&&r.push(`[${e.length-t} more]`),r}let s=Reflect.ownKeys(e),i={};for(let t of s.slice(0,50)){let r=Object.getOwnPropertyDescriptor(e,t),s="symbol"==typeof t?String(t):t;Object.defineProperty(i,r.enumerable?s:`${s} (non-enumerable)`,{value:n(r),enumerable:!0,writable:!0,configurable:!0})}return s.length>50&&Object.defineProperty(i,"[more]",{value:s.length-50,enumerable:!0,writable:!0,configurable:!0}),i}function Xl(e,t){let r;try{r=Yl(t)}catch(e){r="(unprintable)"}vl(e,r)}function jl(e,t=1/0,r=!1){try{let n=new Set,s=[e,1],i=0,o=[];for(;s.length>0;){let e,l=s.pop(),a=s.pop();if(n.has(a))continue;if(r){if("object"==typeof a&&null!==a){if(!xl(a)||El(a))return"irregular";if(u.types.isDate(a)){if(Reflect.ownKeys(a).length>0)return"irregular";continue}}e=Sl(a)}else e=Array.isArray(a)?"arr":$t(a)?"obj":null;if(null===e)continue;let c="arr"===e;if(l>t)return"deep";if(n.add(a),Object.prototype.hasOwnProperty.call(a,"__proto__"))return"proto";let d=c?null:Object.keys(a);if(r&&!c){if(!Tl(a))return"irregular";if(Reflect.ownKeys(a).length!==d.length)return"hidden";o.push(a)}let w=c?a.length:d.length;for(let e=0;e<w;e++){let t=Object.getOwnPropertyDescriptor(a,c?e:d[e]);if(void 0!==t){if(void 0!==t.get||void 0!==t.set)return"accessor";if(r&&c&&!t.enumerable)return"irregular";r&&(i+=c?0:d[e].length,"string"==typeof t.value&&(i+=t.value.length)),"object"==typeof t.value&&null!==t.value&&s.push(t.value,l+1)}else if(r)return"irregular"}if(r&&c&&Reflect.ownKeys(a).length!==w+1)return"irregular"}if(r&&"object"==typeof e&&null!==e)if(i<=4e6&&"function"==typeof structuredClone){if(function(e){if("function"!=typeof structuredClone)return!1;let t;try{t=structuredClone(e)}catch(e){return!0}let r=new Set,n=[t];for(;n.length>0;){let e=n.pop();if("object"!=typeof e||null===e||r.has(e))continue;r.add(e);let t=Object.getPrototypeOf(e);if(t!==Date.prototype){if(t!==Object.prototype&&t!==Array.prototype)return!0;for(let t of Object.keys(e))n.push(e[t])}}return!1}(e))return"irregular"}else for(let e=0;e<o.length;e++)if(Zl(o[e]))return"irregular";return null}catch(e){return"unreadable"}}function zl(e,t){try{if(void 0!==t&&"object"==typeof t&&null!==t&&u.types.isProxy(t))return`invalid find of ${e}, ${Ll.irregular}`;if(void 0!==t&&!Tl(t))return`invalid find of ${e}, need an object`;let r=jl(t,64,!0);return null!==r?`invalid find of ${e}, ${Ll[r]}`:null}catch(t){return`invalid find of ${e}, ${Ll.unreadable}`}}function Gl(e,t){let r=new Map,n=(e,t)=>{r.has(e)||r.set(e,[]),r.get(e).push({k:t})};if(Array.isArray(t))for(let e=0;e<t.length;e++)try{let r=Object.getOwnPropertyDescriptor(t,e);if(void 0===r)continue;if(void 0!==r.get||void 0!==r.set){n("accessor",e);continue}let s=jl(r.value);null!==s&&n(s,e)}catch(t){n("unreadable",e)}else{let e=jl(t);null!==e&&n(e,0)}return Ot([...r],([t,r])=>ml(`${e}, ${Ll[t]}`,r))}function Wl(e){let t=!Lr(e),r=Ot(t?[e]:e,e=>$t(e)&&pl(e.id)?{...e,id:Cl(e.id)}:e);return t?r[0]:r}function Kl(e){return"obj"!==Sl(e)?e:hl(e,(e,t)=>{return"id"===t?"obj"!==Sl(r=e)?Cl(r):hl(r,(e,t)=>["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"].indexOf(t)>=0?"arr"===Sl(e)?Ot(e,Cl):Cl(e):e):["$and","$or"].indexOf(t)>=0&&"arr"===Sl(e)?Ot(e,Kl):e;var r})}function kl(e){let t=[];return _r(Lr(e)?e:[e],(e,r)=>{$t(e)||t.push({k:r})}),t}function Fl(e){let t=Cl(Me(e,"id"));return er(t)?t:null}function Vl(e){let t=[];return _r(Lr(e)?e:[e],(e,r)=>{let n=Me(e,"id");er(n)&&Ml(n)!==n&&t.push({k:r,id:n})}),t}function Hl(e,t){return ml(`${e}, id contains HTML markup`,Ot(t,e=>({k:e.k})))}function Ul(e,t,r,n,s="save"){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");let i=e[t].keys,o=!1;Lr(n)||(o=!0,n=[n]);let u=qo();if(s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&_r(n,(e,t)=>{n[t].userId=r}),i.indexOf("timeCreate")>=0&&_r(n,(e,t)=>{n[t].timeCreate=u}),i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=u})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=u})),n=Ot(n,e=>hl(e,e=>Ml(e))),Il(e[t],i)){(o?_t(n[0]):Er(n))&&_r(n,e=>{er(e.id)||(e.id=uu())})}return n=o?n[0]:n}async function Bl(e,t,r,n,s,i){try{return await async function(e,t,r,n,s,i){let o,u=null;if(!_t(t))return Promise.reject("invalid woItems");let l=fl(t,n);if(null===l)return Promise.reject(`can not find table[${"string"==typeof n?n:""}] in ORM`);let a=function(e,t){let r=fl(e,t),n=Me(r,"keys",null);return!!Lr(n)&&Il(r,n)}(e,n);if("select"===s){let e=zl("select",i);if(null!==e)return Xl(`${n}.select invalid find`,i),Promise.reject(e);if(o=await l.select(a?Kl(i):i).catch(e=>{console.log(`${n}.select catch`,e),u="failed to select data"}),er(u))return Promise.reject(u)}else if("insert"===s||"save"===s){let t=i,c="insert"===s?"failed to insert data":"failed to save data",d=kl(i);if(Ms(d)>0)return console.log(`${n}.${s} data is not an object`,d),Promise.reject(ml(`${c}, not an object`,d));let w=Gl(c,i);if(Ms(w)>0)return console.log(`${n}.${s} data has unsupported key`,w),Promise.reject(Jt(w,"; "));a&&(i=Wl(i));let D=Vl(i);if(Ms(D)>0)return console.log(`${n}.${s} id changed by clearXSS`,D),Promise.reject(Hl(c,D));try{i=Ul(e,n,r,i,s)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),u="failed to adjust data",Promise.reject(u)}if("insert"===s?o=await l.insert(i).catch(e=>{console.log(`${n}.insert catch`,e),u="failed to insert data"}):"save"===s&&(o=await l.save(i).catch(e=>{console.log(`${n}.save catch`,e),u="failed to save data"})),er(u))return Promise.reject(u);if("save"===s){let e=gl(o,i);if(Ms(e)>0)return console.log(`${n}.save fail`,e),Promise.reject(ml("failed to save data",gl(o,t)))}o=Lr(i)?Ot(i,e=>({id:e.id})):{id:i.id}}else if("del"===s){if(a&&(i=Wl(i)),o=await l.del(i).catch(e=>{console.log(`${n}.del catch`,e),u="failed to delete data"}),!er(u)){let e=gl(o,i);Ms(e)>0&&(console.log(`${n}.del fail`,e),u=ml("failed to delete data",e))}}else if("delAll"===s){let e=zl("delAll",i);if(null!==e)return Xl(`${n}.delAll invalid find`,i),Promise.reject(e);o=await l.delAll(a?Kl(i):i).catch(e=>{console.log(`${n}.delAll catch`,e),u="failed to delete data"})}else if("mix"===s){if(!_t(i))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");for(let e of["add","del","diff"]){let t=Object.getOwnPropertyDescriptor(i,e);if(void 0!==t&&(void 0!==t.get||void 0!==t.set))return Promise.reject(`invalid input of mix, ${Ll.accessor}`)}i={add:i.add,del:i.del,diff:i.diff};for(let e of["add","del","diff"])if(void 0!==i[e]&&!Lr(i[e]))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");let t=[];for(let[e,r]of[["add","failed to insert data"],["diff","failed to update data"]]){let s=kl(Me(i,e,[]));Ms(s)>0&&(console.log(`${n}.mix ${e} data is not an object`,s),t.push(ml(`${r}, not an object`,s)))}if(Ms(t)>0)return Promise.reject(Jt(t,"; "));let s=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]])s.push(...Gl(t,Me(i,e,[])));if(Ms(s)>0)return console.log(`${n}.mix data has unsupported key`,s),Promise.reject(Jt(s,"; "));if(a){i={...i};for(let e of["add","del","diff"])Lr(i[e])&&(i[e]=Wl(i[e]))}let c=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]]){let r=Vl(Me(i,e,[]));Ms(r)>0&&(console.log(`${n}.mix ${e} id changed by clearXSS`,r),c.push(Hl(t,r)))}if(Ms(c)>0)return Promise.reject(Jt(c,"; "));let d,w=function(e){let t=[];for(let[r,n]of[["add","del"],["del","diff"]]){let s=new Map;_r(Me(e,r,[]),(e,t)=>{let r=Fl(e);null!==r&&s.set(r,[...s.get(r)||[],t])});let i=[],o=[];if(_r(Me(e,n,[]),(e,t)=>{let r=Fl(e);null!==r&&s.has(r)&&(i=[...i,...s.get(r)],o.push(t))}),Ms(o)>0){let e=[...Ot([...new Set(i)].sort((e,t)=>e-t),e=>({ref:`${r}[${e}]`})),...Ot(o,e=>({ref:`${n}[${e}]`}))];t.push(ml(`invalid input of mix, same id in ${r} and ${n}`,e))}}return t}(i);if(Ms(w)>0)return console.log(`${n}.mix same id across steps`,w),Promise.reject(Jt(w,"; "));o=[];let D=[],y=Me(i,"add",[]);if(Ms(y)>0){try{y=Ul(e,n,r,y,"insert+save")}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),u="failed to adjust data",Promise.reject(u)}if(await l.insert(y).catch(e=>{console.log(`${n}.insert catch`,e),u="failed to insert data"}),er(u))return Promise.reject(u);d=Ot(y,e=>({id:e.id})),o=[...o,...d]}let M=Me(i,"del",[]);if(Ms(M)>0){let e=await l.del(M).catch(e=>{console.log(`${n}.del catch`,e),u="failed to delete data"});if(er(u))return Promise.reject(u);let t=gl(e,M);Ms(t)>0&&(console.log(`${n}.del fail`,t),D.push(ml("failed to delete data",t))),d=Ot(M,e=>({id:e.id})),o=[...o,...d]}let g=Me(i,"diff",[]);if(Ms(g)>0){let t=g;try{g=Ul(e,n,r,g)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),u="failed to adjust data",Promise.reject(u)}let s=await l.save(g).catch(e=>{console.log(`${n}.save catch`,e),u="failed to update data"});if(er(u))return Promise.reject(u);let i=gl(s,g);Ms(i)>0&&(console.log(`${n}.save fail`,i),D.push(ml("failed to update data",gl(s,t)))),d=Ot(g,e=>({id:e.id})),o=[...o,...d]}if(Ms(D)>0)return Promise.reject(Jt(D,"; "))}else u=`invalid mode: ${s}`;if(er(u))return Promise.reject(u);return o}(e,t,r,n,s,i)}catch(e){return"string"==typeof e?Promise.reject(e):(vl(`${"string"==typeof n?n:""}.${"string"==typeof s?s:""} mapOrm catch`,e),Promise.reject("failed to process input"))}}function Rl(e,t){return async(r,n,s,i)=>Bl(e,t,r,n,s,i)}function Ql(e,t,r,n=!1){if(!Gr(t)){let s=`${r} needs a function, but got ${typeof t}`;throw n&&e.push(()=>Promise.reject(s)),new Error(s)}setTimeout(()=>{e.push(t)},1)}function Ol(e,t={}){if(Qo(t),!Gr(e))throw new Error("invalid mapOrm");let r={funChecks:[],funPreProcessing:[],funPostProcessing:[],mapOrm:e};return{addFunCheck:e=>{Ql(r.funChecks,e,"addFunCheck",!0)},addFunPreProcessing:e=>{Ql(r.funPreProcessing,e,"addFunPreProcessing")},addFunPostProcessing:e=>{Ql(r.funPostProcessing,e,"addFunPostProcessing")},procOrm:async(e,t,n,s)=>async function(e,t,r,n,s){await Ro(e.funChecks,e=>e({woName:r,userId:t,mode:n,input:s}));for(let i of[...e.funPreProcessing]){let e=await i({woName:r,userId:t,mode:n,input:s});if(!_t(e)||void 0===e.input)return Promise.reject("invalid return of pre-processing, need an object with input");s=e.input}let i=await e.mapOrm(t,r,n,s);for(let o of[...e.funPostProcessing])i=await o({woName:r,userId:t,mode:n,input:s,output:i});return i}(r,e,t,n,s)}}function Pl(e,t,r,n,s={}){Qo(s);let i=function(e,t,r,n){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");if(!Gr(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!er(r))throw console.log("url",r),new Error("invalid url");if(!er(n))throw console.log("db",n),new Error("invalid db");let s={};return _r(at(e),e=>{let i=new t({url:r,db:n,cl:e});Object.defineProperty(s,e,{value:i,enumerable:!0,writable:!0,configurable:!0})}),s}(e,t,r,n),o=Ol(Rl(e,i),s);return{...Oo,woItems:i,closeAll:async()=>{await Ro(i,async e=>{e&&Gr(e.close)&&await e.close()})},...o}}function Jl(e,t){if(!$t(e))return{};if(!Er(t))return{};let r={};return _r(t,function(t){dn(e,t)&&(r[t]=Me(e,t))}),r}let $l="grups",_l={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},cpemis:{name:"權限清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ql=(e={})=>{let t=qr(e,at(_l));return t.id=`${uu()}`,t.userIdUpdate=t.userId,t.timeCreate=qo(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ea="pemis",ta={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},crules:{name:"管控對象清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ra=(e={})=>{let t=qr(e,at(ta));return t.id=`${uu()}`,t.userIdUpdate=t.userId,t.timeCreate=qo(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},na="targets",sa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ia=(e={})=>{let t=qr(e,at(sa));return t.id=`${uu()}`,t.userIdUpdate=t.userId,t.timeCreate=qo(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},oa="users",ua={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},cgrups:{name:"權限群組清單",type:"TEXT"},isAdmin:{name:"是否為系統管理員",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},la=(e={})=>{let t=qr(e,at(ua));return t.id=`${uu()}`,t.isAdmin="n",t.userIdUpdate=t.userId,t.timeCreate=qo(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t};function aa(e,t={}){let r=Me(t,"useCreateStorage");wr(r)||(r=!1);let{keyTable:n,tableNameCht:s,tableNameEng:i,settings:o,parser:u,funNew:l,funTest:a,ext:c}=e;if(!er(n))throw new Error(`invalid keyTable[${n}]`);if(er(s)||(s=n),er(i)||(i=n),!_t(o))throw new Error("invalid settings");_t(c)||(c=null),_t(u)||(u=null),Gr(l)||(l=null);let d=null;Gr(a)&&(d=async e=>{if(!_t(e))throw new Error("invalid wo");if(!dn(e,n))throw console.log(e),new Error(`keyTable[${n}] is not in wo`);let t=[];try{t=a(),Wr(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${n}] funTest catch`,e),new Error(e)}if(0===Ms(t))return;r&&await e[n].createStorage();let s=gl(await e[n].save(t),t);if(Ms(s)>0)throw new Error(`failed to write test data into table[${n}]: ${JSON.stringify(s)}`);return t});let w={},D={};return _r(at(o),e=>{let t=Me(o,`${e}.name`,"");er(t)&&(w[e]=t);let r=Me(o,`${e}.type`,"");er(r)&&(D[e]=r)}),{...e,keyTable:n,tableNameCht:s,tableNameEng:i,settings:o,keys:at(o),kpType:D,kpHead:w,parser:u,funNew:l,funTest:a,funTestAndSave:d,ext:c}}let ca={grups:{keyTable:$l,tableNameCht:"權限群組設定",tableNameEng:"Permission groups",settings:_l,funNew:ql,funTest:()=>{let e=[["權限群組M1","\n {\n '權限P1': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M2","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M3","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'AND',\n 'isActive': 'y',\n },\n }\n "],["權限群組M4","\n {\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P4': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "]];return e=Ot(e,([e,t],r)=>{let n=ql({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,cpemis:t});return n.id=`id-for-${e}`,n=Jl(n,at(_l)),n}),console.log(`已產生: ${$l} 測試資料`,e),e}},pemis:{keyTable:ea,tableNameCht:"權限設定",tableNameEng:"Permissions",settings:ta,funNew:ra,funTest:()=>{let e=[["權限P1","{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }"],["權限P2","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }"],["權限P3","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }"],["權限P4","{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }"]];return e=Ot(e,([e,t],r)=>{let n=ra({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,crules:t});return n.id=`id-for-${e}`,n=Jl(n,at(ta)),n}),console.log(`已產生: ${ea} 測試資料`,e),e}},targets:{keyTable:na,tableNameCht:"管控對象",tableNameEng:"Targets",settings:sa,funNew:ia,funTest:()=>{let e=["專案A/頁A/區塊A","專案A/頁A/區塊A/執行按鈕","專案A/頁A/區塊A/分析按鈕","專案A/頁B/區塊A","專案A/頁B/區塊A/執行按鈕","專案A/頁B/區塊A/分析按鈕","專案A/頁B/區塊B/展開按鈕","專案A/頁B/區塊B/下載按鈕","專案A/頁C","專案B/頁A/區塊A","專案B/頁A/區塊A/顯示綜合報表","專案B/頁A/區塊A/顯示當前數據","專案B/頁A/區塊B","專案B/頁A/區塊B/下載報表按鈕","專案B/頁A/區塊B/下載數據按鈕","專案B/頁A/區塊C","專案B/頁B/區塊A","專案B/頁B/區塊A/待辦事項清單","專案B/頁B/區塊A/相關資源清單","專案B/頁B/區塊B","專案B/頁B/區塊B/顯示後台按鈕","專案B/頁B/區塊B/轉跳主站按鈕"];return e=Ot(e,(e,t)=>{let r=ia({userId:"id-for-admin",order:t,description:`${e}的說明`});return r.id=e,r=Jl(r,at(sa)),r}),console.log(`已產生: ${na} 測試資料`,e),e}},users:{keyTable:oa,tableNameCht:"使用者",tableNameEng:"Users",settings:ua,funNew:la,funTest:()=>{let e=[["peter","","\n { \n '權限群組M1': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["mary","","\n { \n '權限群組M2': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["john","","\n { \n '權限群組M3': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["admin","","\n { \n '權限群組M4': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","y"]];return e=Ot(e,([e,t,r,n],s)=>{let i=la({userId:"id-for-admin",order:s,name:e,email:`${e}@example.com`,from:t,cgrups:r,isAdmin:n});return i.id=`id-for-${e}`,i.isAdmin=n,i=Jl(i,at(ua)),i}),console.log(`已產生: ${oa} 測試資料`,e),e}}},da={};for(let e in ca)da[e]=aa(ca[e],{useCreateStorage:!1});var wa={exports:{}};!function(e){e.exports=function(){function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)}),r=e(function(e){var t=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=t)});r.version;var n=function(e){return"object"==typeof e?null!==e:"function"==typeof e},s=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e},i=function(e){try{return!!e()}catch(e){return!0}},o=!i(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),u=t.document,l=n(u)&&n(u.createElement),a=function(e){return l?u.createElement(e):{}},c=!o&&!i(function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}),d=function(e,t){if(!n(e))return e;var r,s;if(t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;if("function"==typeof(r=e.valueOf)&&!n(s=r.call(e)))return s;if(!t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;throw TypeError("Can't convert object to primitive value")},w=Object.defineProperty,D={f:o?Object.defineProperty:function(e,t,r){if(s(e),t=d(t,!0),s(r),c)try{return w(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},y=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},M=o?function(e,t,r){return D.f(e,t,y(1,r))}:function(e,t,r){return e[t]=r,e},g={}.hasOwnProperty,m=function(e,t){return g.call(e,t)},I=0,f=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++I+f).toString(36))},C=e(function(e){var n="__core-js_shared__",s=t[n]||(t[n]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),h=C("native-function-to-string",Function.toString),L=e(function(e){var n=p("src"),s="toString",i=(""+h).split(s);r.inspectSource=function(e){return h.call(e)},(e.exports=function(e,r,s,o){var u="function"==typeof s;u&&(m(s,"name")||M(s,"name",r)),e[r]!==s&&(u&&(m(s,n)||M(s,n,e[r]?""+e[r]:i.join(String(r)))),e===t?e[r]=s:o?e[r]?e[r]=s:M(e,r,s):(delete e[r],M(e,r,s)))})(Function.prototype,s,function(){return"function"==typeof this&&this[n]||h.call(this)})}),b=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},N=function(e,t,r){if(b(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,s){return e.call(t,r,n,s)}}return function(){return e.apply(t,arguments)}},A="prototype",x=function(e,n,s){var i,o,u,l,a=e&x.F,c=e&x.G,d=e&x.S,w=e&x.P,D=e&x.B,y=c?t:d?t[n]||(t[n]={}):(t[n]||{})[A],g=c?r:r[n]||(r[n]={}),m=g[A]||(g[A]={});for(i in c&&(s=n),s)u=((o=!a&&y&&void 0!==y[i])?y:s)[i],l=D&&o?N(u,t):w&&"function"==typeof u?N(Function.call,u):u,y&&L(y,i,u,e&x.U),g[i]!=u&&M(g,i,l),w&&m[i]!=u&&(m[i]=u)};t.core=r,x.F=1,x.G=2,x.S=4,x.P=8,x.B=16,x.W=32,x.U=64,x.R=128;var E,T=x,S=Math.ceil,Z=Math.floor,v=function(e){return isNaN(e=+e)?0:(e>0?Z:S)(e)},Y=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},X=(E=!1,function(e,t){var r,n,s=String(Y(e)),i=v(t),o=s.length;return i<0||i>=o?E?"":void 0:(r=s.charCodeAt(i))<55296||r>56319||i+1===o||(n=s.charCodeAt(i+1))<56320||n>57343?E?s.charAt(i):r:E?s.slice(i,i+2):n-56320+(r-55296<<10)+65536});T(T.P,"String",{codePointAt:function(e){return X(this,e)}}),r.String.codePointAt;var j=Math.max,z=Math.min,G=function(e,t){return(e=v(e))<0?j(e+t,0):z(e,t)},W=String.fromCharCode,K=String.fromCodePoint;T(T.S+T.F*(!!K&&1!=K.length),"String",{fromCodePoint:function(e){for(var t,r=arguments,n=[],s=arguments.length,i=0;s>i;){if(t=+r[i++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?W(t):W(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}}),r.String.fromCodePoint;var k,F,V,H,U,B,R,Q,O,P,J,$,_,q,ee={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},te={isSpaceSeparator:function(e){return"string"==typeof e&&ee.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||ee.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||ee.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}},re=function(e,t){k=String(e),F="start",V=[],H=0,U=1,B=0,R=void 0,Q=void 0,O=void 0;do{R=se(),De[F]()}while("eof"!==R.type);return"function"==typeof t?ne({"":O},"",t):O};function ne(e,t,r){var n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(var s=0;s<n.length;s++){var i=String(s),o=ne(n,i,r);void 0===o?delete n[i]:Object.defineProperty(n,i,{value:o,writable:!0,enumerable:!0,configurable:!0})}else for(var u in n){var l=ne(n,u,r);void 0===l?delete n[u]:Object.defineProperty(n,u,{value:l,writable:!0,enumerable:!0,configurable:!0})}return r.call(e,t,n)}function se(){for(P="default",J="",$=!1,_=1;;){q=ie();var e=ue[P]();if(e)return e}}function ie(){if(k[H])return String.fromCodePoint(k.codePointAt(H))}function oe(){var e=ie();return"\n"===e?(U++,B=0):e?B+=e.length:B++,e&&(H+=e.length),e}var ue={default:function(){switch(q){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void oe();case"/":return oe(),void(P="comment");case void 0:return oe(),le("eof")}if(!te.isSpaceSeparator(q))return ue[F]();oe()},comment:function(){switch(q){case"*":return oe(),void(P="multiLineComment");case"/":return oe(),void(P="singleLineComment")}throw ge(oe())},multiLineComment:function(){switch(q){case"*":return oe(),void(P="multiLineCommentAsterisk");case void 0:throw ge(oe())}oe()},multiLineCommentAsterisk:function(){switch(q){case"*":return void oe();case"/":return oe(),void(P="default");case void 0:throw ge(oe())}oe(),P="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return oe(),void(P="default");case void 0:return oe(),le("eof")}oe()},value:function(){switch(q){case"{":case"[":return le("punctuator",oe());case"n":return oe(),ae("ull"),le("null",null);case"t":return oe(),ae("rue"),le("boolean",!0);case"f":return oe(),ae("alse"),le("boolean",!1);case"-":case"+":return"-"===oe()&&(_=-1),void(P="sign");case".":return J=oe(),void(P="decimalPointLeading");case"0":return J=oe(),void(P="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return J=oe(),void(P="decimalInteger");case"I":return oe(),ae("nfinity"),le("numeric",1/0);case"N":return oe(),ae("aN"),le("numeric",NaN);case'"':case"'":return $='"'===oe(),J="",void(P="string")}throw ge(oe())},identifierNameStartEscape:function(){if("u"!==q)throw ge(oe());oe();var e=we();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw Ie()}J+=e,P="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"‌":case"‍":return void(J+=oe());case"\\":return oe(),void(P="identifierNameEscape")}if(!te.isIdContinueChar(q))return le("identifier",J);J+=oe()},identifierNameEscape:function(){if("u"!==q)throw ge(oe());oe();var e=we();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!te.isIdContinueChar(e))throw Ie()}J+=e,P="identifierName"},sign:function(){switch(q){case".":return J=oe(),void(P="decimalPointLeading");case"0":return J=oe(),void(P="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return J=oe(),void(P="decimalInteger");case"I":return oe(),ae("nfinity"),le("numeric",_*(1/0));case"N":return oe(),ae("aN"),le("numeric",NaN)}throw ge(oe())},zero:function(){switch(q){case".":return J+=oe(),void(P="decimalPoint");case"e":case"E":return J+=oe(),void(P="decimalExponent");case"x":case"X":return J+=oe(),void(P="hexadecimal")}return le("numeric",0*_)},decimalInteger:function(){switch(q){case".":return J+=oe(),void(P="decimalPoint");case"e":case"E":return J+=oe(),void(P="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(J));J+=oe()},decimalPointLeading:function(){if(te.isDigit(q))return J+=oe(),void(P="decimalFraction");throw ge(oe())},decimalPoint:function(){switch(q){case"e":case"E":return J+=oe(),void(P="decimalExponent")}return te.isDigit(q)?(J+=oe(),void(P="decimalFraction")):le("numeric",_*Number(J))},decimalFraction:function(){switch(q){case"e":case"E":return J+=oe(),void(P="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(J));J+=oe()},decimalExponent:function(){switch(q){case"+":case"-":return J+=oe(),void(P="decimalExponentSign")}if(te.isDigit(q))return J+=oe(),void(P="decimalExponentInteger");throw ge(oe())},decimalExponentSign:function(){if(te.isDigit(q))return J+=oe(),void(P="decimalExponentInteger");throw ge(oe())},decimalExponentInteger:function(){if(!te.isDigit(q))return le("numeric",_*Number(J));J+=oe()},hexadecimal:function(){if(te.isHexDigit(q))return J+=oe(),void(P="hexadecimalInteger");throw ge(oe())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return le("numeric",_*Number(J));J+=oe()},string:function(){switch(q){case"\\":return oe(),void(J+=ce());case'"':return $?(oe(),le("string",J)):void(J+=oe());case"'":return $?void(J+=oe()):(oe(),le("string",J));case"\n":case"\r":throw ge(oe());case"\u2028":case"\u2029":fe(q);break;case void 0:throw ge(oe())}J+=oe()},start:function(){switch(q){case"{":case"[":return le("punctuator",oe())}P="value"},beforePropertyName:function(){switch(q){case"$":case"_":return J=oe(),void(P="identifierName");case"\\":return oe(),void(P="identifierNameStartEscape");case"}":return le("punctuator",oe());case'"':case"'":return $='"'===oe(),void(P="string")}if(te.isIdStartChar(q))return J+=oe(),void(P="identifierName");throw ge(oe())},afterPropertyName:function(){if(":"===q)return le("punctuator",oe());throw ge(oe())},beforePropertyValue:function(){P="value"},afterPropertyValue:function(){switch(q){case",":case"}":return le("punctuator",oe())}throw ge(oe())},beforeArrayValue:function(){if("]"===q)return le("punctuator",oe());P="value"},afterArrayValue:function(){switch(q){case",":case"]":return le("punctuator",oe())}throw ge(oe())},end:function(){throw ge(oe())}};function le(e,t){return{type:e,value:t,line:U,column:B}}function ae(e){for(var t=0,r=e;t<r.length;t+=1){var n=r[t];if(ie()!==n)throw ge(oe());oe()}}function ce(){switch(ie()){case"b":return oe(),"\b";case"f":return oe(),"\f";case"n":return oe(),"\n";case"r":return oe(),"\r";case"t":return oe(),"\t";case"v":return oe(),"\v";case"0":if(oe(),te.isDigit(ie()))throw ge(oe());return"\0";case"x":return oe(),de();case"u":return oe(),we();case"\n":case"\u2028":case"\u2029":return oe(),"";case"\r":return oe(),"\n"===ie()&&oe(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw ge(oe())}return oe()}function de(){var e="",t=ie();if(!te.isHexDigit(t))throw ge(oe());if(e+=oe(),t=ie(),!te.isHexDigit(t))throw ge(oe());return e+=oe(),String.fromCodePoint(parseInt(e,16))}function we(){for(var e="",t=4;t-- >0;){var r=ie();if(!te.isHexDigit(r))throw ge(oe());e+=oe()}return String.fromCodePoint(parseInt(e,16))}var De={start:function(){if("eof"===R.type)throw me();ye()},beforePropertyName:function(){switch(R.type){case"identifier":case"string":return Q=R.value,void(F="afterPropertyName");case"punctuator":return void Me();case"eof":throw me()}},afterPropertyName:function(){if("eof"===R.type)throw me();F="beforePropertyValue"},beforePropertyValue:function(){if("eof"===R.type)throw me();ye()},beforeArrayValue:function(){if("eof"===R.type)throw me();"punctuator"!==R.type||"]"!==R.value?ye():Me()},afterPropertyValue:function(){if("eof"===R.type)throw me();switch(R.value){case",":return void(F="beforePropertyName");case"}":Me()}},afterArrayValue:function(){if("eof"===R.type)throw me();switch(R.value){case",":return void(F="beforeArrayValue");case"]":Me()}},end:function(){}};function ye(){var e;switch(R.type){case"punctuator":switch(R.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=R.value}if(void 0===O)O=e;else{var t=V[V.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,Q,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)V.push(e),F=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var r=V[V.length-1];F=null==r?"end":Array.isArray(r)?"afterArrayValue":"afterPropertyValue"}}function Me(){V.pop();var e=V[V.length-1];F=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function ge(e){return Ce(void 0===e?"JSON5: invalid end of input at "+U+":"+B:"JSON5: invalid character '"+pe(e)+"' at "+U+":"+B)}function me(){return Ce("JSON5: invalid end of input at "+U+":"+B)}function Ie(){return Ce("JSON5: invalid identifier character at "+U+":"+(B-=5))}function fe(e){console.warn("JSON5: '"+pe(e)+"' in strings is not valid ECMAScript; consider escaping")}function pe(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){var r=e.charCodeAt(0).toString(16);return"\\x"+("00"+r).substring(r.length)}return e}function Ce(e){var t=new SyntaxError(e);return t.lineNumber=U,t.columnNumber=B,t}var he=function(e,t,r){var n,s,i,o=[],u="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(r=t.space,i=t.quote,t=t.replacer),"function"==typeof t)s=t;else if(Array.isArray(t)){n=[];for(var a=0,c=t;a<c.length;a+=1){var d=c[a],w=void 0;"string"==typeof d?w=d:("number"==typeof d||d instanceof String||d instanceof Number)&&(w=String(d)),void 0!==w&&n.indexOf(w)<0&&n.push(w)}}return r instanceof Number?r=Number(r):r instanceof String&&(r=String(r)),"number"==typeof r?r>0&&(r=Math.min(10,Math.floor(r)),l=" ".substr(0,r)):"string"==typeof r&&(l=r.substr(0,10)),D("",{"":e});function D(e,t){var r=t[e];switch(null!=r&&("function"==typeof r.toJSON5?r=r.toJSON5(e):"function"==typeof r.toJSON&&(r=r.toJSON(e))),s&&(r=s.call(t,e,r)),r instanceof Number?r=Number(r):r instanceof String?r=String(r):r instanceof Boolean&&(r=r.valueOf()),r){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof r?y(r):"number"==typeof r?String(r):"object"==typeof r?Array.isArray(r)?m(r):M(r):void 0}function y(e){for(var t={"'":.1,'"':.2},r={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},n="",s=0;s<e.length;s++){var o=e[s];switch(o){case"'":case'"':t[o]++,n+=o;continue;case"\0":if(te.isDigit(e[s+1])){n+="\\x00";continue}}if(r[o])n+=r[o];else if(o<" "){var u=o.charCodeAt(0).toString(16);n+="\\x"+("00"+u).substring(u.length)}else n+=o}var l=i||Object.keys(t).reduce(function(e,r){return t[e]<t[r]?e:r});return l+(n=n.replace(new RegExp(l,"g"),r[l]))+l}function M(e){if(o.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");o.push(e);var t=u;u+=l;for(var r,s,i=[],a=0,c=n||Object.keys(e);a<c.length;a+=1){var d=c[a],w=D(d,e);if(void 0!==w){var y=g(d)+":";""!==l&&(y+=" "),y+=w,i.push(y)}}if(0===i.length)r="{}";else if(""===l)r="{"+(s=i.join(","))+"}";else{var M=",\n"+u;s=i.join(M),r="{\n"+u+s+",\n"+t+"}"}return o.pop(),u=t,r}function g(e){if(0===e.length)return y(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return y(e);for(var r=t.length;r<e.length;r++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(r))))return y(e);return e}function m(e){if(o.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");o.push(e);var t=u;u+=l;for(var r,n=[],s=0;s<e.length;s++){var i=D(String(s),e);n.push(void 0!==i?i:"null")}if(0===n.length)r="[]";else if(""===l)r="["+n.join(",")+"]";else{var a=",\n"+u,c=n.join(a);r="[\n"+u+c+",\n"+t+"]"}return o.pop(),u=t,r}},Le={parse:re,stringify:he},be=Le,Ne=be;return Ne}()}(wa);var Da=nn(wa.exports);function ya(e,t){var r=[];return Rt(e,function(e,n,s){t(e,n,s)&&r.push(e)}),r}function Ma(e,t){return(D(e)?Ee:ya)(e,Vt(t))}var ga=m?m.isConcatSpreadable:void 0;function ma(e){return D(e)||We(e)||!!(ga&&e&&e[ga])}function Ia(e,t,r,n,s){var i=-1,o=e.length;for(r||(r=ma),s||(s=[]);++i<o;){var u=e[i];t>0&&r(u)?t>1?Ia(u,t-1,r,n,s):Ae(s,u):n||(s[s.length]=u)}return s}function fa(e,t){if(e!==t){var r=void 0!==e,n=null===e,s=e==e,i=A(e),o=void 0!==t,u=null===t,l=t==t,a=A(t);if(!u&&!a&&!i&&e>t||i&&o&&l&&!u&&!a||n&&o&&l||!r&&l||!s)return 1;if(!n&&!i&&!a&&e<t||a&&r&&s&&!n&&!i||u&&r&&s||!o&&s||!l)return-1}return 0}function pa(e,t,r){t=t.length?ue(t,function(e){return D(e)?function(t){return ye(t,1===e.length?e[0]:e)}:e}):[Kt];var n=-1;return t=ue(t,Qe(Vt)),function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}(Qt(e,function(e,r,s){return{criteria:ue(t,function(t){return t(e)}),index:++n,value:e}}),function(e,t){return function(e,t,r){for(var n=-1,s=e.criteria,i=t.criteria,o=s.length,u=r.length;++n<o;){var l=fa(s[n],i[n]);if(l)return n>=u?l:l*("desc"==r[n]?-1:1)}return e.index-t.index}(e,t,r)})}var Ca=Ri(function(e,t){if(null==e)return[];var r=t.length;return r>1&&Qi(e,t[0],t[1])?t=[]:r>2&&Qi(t[0],t[1],t[2])&&(t=[t[0]]),pa(e,Ia(t,1),[])});function ha(e,t){if(Array.isArray(e))for(let r=0,n=e.length;r<n&&!1!==t(e[r],r,e);r++);else if(null!==e&&"object"==typeof e){let r=Object.keys(e);for(let n=0;n<r.length;n++){let s=r[n];if(!1===t(e[s],s,e))break}}return e}function La(e,t,r){return null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:r}function ba(e){try{return`${e}`}catch(e){return null}}function Na(e,t){let r=[];if(!Array.isArray(e))return r;for(let n=0;n<e.length;n++){let s=e[n];(null==s||void 0===s.name?"":s.name)===t&&r.push(s)}return r}function Aa(e,t,r,n){let s=e=>{let t=Object.create(null);try{t=Da.parse(e)}catch(t){console.log("c",e),console.log(t)}let r=[];try{r=function(e){let t=[],r=Array.isArray(e);return ha(e,(e,n)=>{let s={name:n};_t(e)?(s={...s,...e},r||(s.name=n)):s={...s,isActive:e},t.push(s)}),t}(t)}catch(r){console.log("c",e),console.log("kp",t),console.log(r)}return r},i=(e,t)=>{let r=Object.create(null);return _r([e,t],n=>{ha(n,(n,s)=>{r[s]="y"===La(e,s)&&"y"===La(t,s)?"y":"n"})}),r},o=e=>{if(0===Ms(e))return Object.create(null);let t=e[0];for(let r=1;r<e.length;r++)t=i(t,e[r]);return t},u=e=>{let t=Object.create(null);return _r(e,e=>{let r=ba(e.name);if(null===r)return!0;t[r]=dn(t,r)?"y"===t[r]&&"y"===e.isActive?"y":"n":e.isActive}),t},l=e=>{let t=[];return ha(e,(e,r)=>{t.push({name:r,isActive:e})}),t},a=e=>{let t=[];if(_r(e,e=>{let r=Me(e,"mode",""),n="OR"===r?"OR":"AND";let s=!function(e){return"OR"===e||"AND"===e}(r),i=u(Me(e,"rules",[]));t.push({mode:n,lim:s,kpRule:i})}),0===Ms(Ma(t,{lim:!1})))return[];let r=Ma(t,{mode:"OR"}),n=Ma(t,{mode:"AND"}),s=Ma(n,{lim:!1}),o=null;return Ms(r)>0?o=Me(r,"0.kpRule"):Ms(s)>0&&(o=Me(s,"0.kpRule")),_r(r,e=>{let t=Me(e,"kpRule",{});o=((e,t)=>{let r=Object.create(null);return _r([e,t],e=>{ha(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]||"y"===e?r[t]="y":r[t]="n"})}),r})(o,t)}),_r(n,(e,t)=>{let r=Me(e,"kpRule",{});o=i(o,r)}),l(o)},c=Me(e,"cgrups",""),d=Ma(s(c),{isActive:"y"}),w=[],D=[];{let e=[];_r(d,n=>{let i=Na(t,n.name),c=Ot(i,e=>(e=>{let t=Me(e,"cpemis",""),n=Ma(s(t),{isActive:"y"}),i=[],c=[];return _r(n,e=>{let t=Na(r,e.name),n=Ot(t,e=>s(Me(e,"crules",""))),a=Ot(n,e=>u(e));i.push({mode:e.mode,rules:l(o(a))}),Ms(t)>0&&c.push({...e,data:{...t[0],_rules:n[0]}})}),{rules:a(i),pemisTree:c}})(e)),d=Ot(c,e=>u(e.rules));e.push({mode:n.mode,rules:l(o(d))}),Ms(i)>0&&w.push({...n,data:{...i[0],_pemis:c[0].pemisTree}})}),D=a(e)}{let e=Object.create(null);_r(D,t=>{e[t.name]=t.isActive});let t=[];_r(n,r=>{t.push({name:r.id,isActive:La(e,r.id,"n")})}),D=t}return{grups:w,rules:D}}function xa(e,t){return Yt(e,t)}function Ea(e,t){function r(e){return Lr(e)?e:[e]}if(xr(e))return!1;if(0===(e=r(e)).length)return!1;if(xr(e))return!1;if(0===(t=r(t)).length)return!1;for(let r=0;r<e.length;r++)for(let n=0;n<t.length;n++)if(xa(e[r],t[n]))return!0;return!1}function Ta(e,t,r,n={}){let s=Me(n,"withInfor");wr(s)||(s=!0);let i={del:[],add:[],same:[],diff:[]};if(!er(r))return console.log("invalid key"),s&&(i.infor={}),i;Lr(e)||(e=[e]),Lr(t)||(t=[t]),e=Ma(e,e=>dn(e,r)),t=Ma(t,e=>dn(e,r));let o=new Map(t.map(e=>[e[r],e]));for(let t of e){let e=o.get(t[r]);if(e){JSON.stringify(t)===JSON.stringify(e)?i.same.push(e):i.diff.push(e),o.delete(t[r])}else i.del.push(t)}if(i.add=Array.from(o.values()),s){let e={};for(let t of i.del)e[t[r]]="del";for(let t of i.add)e[t[r]]="add";for(let t of i.diff)e[t[r]]="diff";for(let t of i.same)e[t[r]]="same";i.infor=e}return i}let Sa={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en",cht:"zh-tw"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},saveChanges:{eng:"Save changes",cht:"儲存變更"},id:{eng:"Id",cht:"主鍵"},from:{eng:"From",cht:"來源"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},screenFull:{eng:"Max size",cht:"最大化尺寸"},screenNormal:{eng:"Normal size",cht:"預設尺寸"},checkAllYes:{eng:"Check all",cht:"全選使用"},checkAllNo:{eng:"Uncheck all",cht:"全不選使用"},checkAllInv:{eng:"Reverse all",cht:"全反選使用"},operEnable:{eng:"Enable",cht:"是否使用"},operPemiMode:{eng:"Operator",cht:"合併權限模式"},operGrupMode:{eng:"Operator",cht:"合併權限群組模式"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},cannotConnectServer:{eng:"Cannot connect to server",cht:"無法連線至伺服器"},saveRowFieldInvalid:{eng:"Invalid field value in saved data",cht:"儲存資料的欄位值無效"},saveRowFieldDuplicate:{eng:"Duplicate field value in saved data",cht:"儲存資料的欄位值重複"},nameDuplicate:{eng:"Not saved: the name is duplicated. Group names and permission names must be unique. Nothing was changed.",cht:"未儲存:名稱重複。群組名稱與權限名稱不得重複。資料未變更。"},authLossyBlocked:{eng:"Not saved: the authorization settings for {names} contain entries the editor cannot write without changing access (the same name set to both OR and AND, or an entry without a usable name). Nothing was changed. Please correct the source data first.",cht:"未儲存:{names} 的授權設定含有編輯器無法在不改變授權下寫出的項目(同一名稱同時以 OR 與 AND 設定,或項目沒有可用的名稱)。資料未變更,請先修正資料來源。"},warnKindGrup:{eng:"permission group",cht:"權限群組"},warnKindPemi:{eng:"permission",cht:"權限"},warnRefDangling:{eng:"Not found in the {kind} list: {names}. Each is still counted as an entry with no authorization (an OR entry adds nothing; an AND entry leaves nothing granted). Restore it or remove it.",cht:"在{kind}清單中找不到:{names}。仍視為一個沒有任何授權的項目(OR 項目不增加授權;AND 項目使結果為空)。請還原或移除。"},warnRefAmbiguous:{eng:"Matches several {kind}s with the same name: {names}. Only the authorization they all share is used (intersection). Rename or delete the duplicates.",cht:"對到多筆同名的{kind}:{names}。僅採用它們共同擁有的授權(交集)。請將同名項目改名或刪除。"},warnRefModeInvalid:{eng:"The merge mode is missing or invalid: {names}. It is treated as AND, but only as a restriction: it never grants access on its own.",cht:"合併模式缺漏或不合法:{names}。系統視為 AND,且僅作為限制,不會單獨授予任何授權。"},warnRefBothModes:{eng:"Set as both OR and AND: {names}. The editor cannot save this without changing access, so saving is refused until the source data is fixed.",cht:"同時以 OR 與 AND 設定:{names}。編輯器無法在不改變授權下儲存,於資料來源修正前將拒絕儲存。"},warnRefEmptyName:{eng:"An entry has an empty name. It is kept as it is and matches only a {kind} whose name is empty.",cht:"有項目的名稱為空字串。照原樣保留,且僅與名稱為空字串的{kind}相符。"},warnRefNoName:{eng:"An entry has no usable name ({names}). The editor cannot keep it, so saving is refused until the source data is fixed.",cht:"有項目沒有可用的名稱({names})。編輯器無法保留,於資料來源修正前將拒絕儲存。"},warnDataUnparsable:{eng:"The authorization data cannot be parsed (invalid format). It is treated as granting nothing. Correct the source data or set it again and save.",cht:"授權資料的格式無法解析,系統視為沒有任何授權。請修正資料來源,或重新設定後儲存。"},warnRuleConflict:{eng:"Listed more than once, with both checked and unchecked: {names}. It is treated as unchecked (n).",cht:"重複列出且有勾與沒勾並存:{names}。系統視為沒勾選(n)。"},warnNameHistDup:{eng:"This name is shared by {n} rows (existing duplicates, not caused by this edit). Anything that refers to it by name uses only what the rows share. Rename or delete the extra rows.",cht:"此名稱由 {n} 筆資料共用(既有的重複,並非本次編輯造成)。以名稱引用它的授權僅採用各筆共同的部分。請將多餘的資料改名或刪除。"},warnDupRowsInconsistent:{eng:"Not saved: rows with the same name have different settings ({names}). Nothing was changed. Please make them identical, or fix the duplicate names first.",cht:"未儲存:同名的列設定不一致({names})。資料未變更,請先使其一致,或先修正同名資料。"},warnUserNameHistDup:{eng:"This name is shared by {n} users (existing duplicates, not caused by this edit). This does not block saving. If name is the sign-in key, signing in with it is refused until the duplicates are fixed.",cht:"此名稱由 {n} 位使用者共用(既有的重複,並非本次編輯造成),不影響儲存。若以名稱作為登入對應鍵,在重複修正前該名稱將無法登入。"},warnUserEmailHistDup:{eng:"This email is shared by {n} users (existing duplicates, not caused by this edit). This does not block saving. If email is the sign-in key, signing in with it is refused until the duplicates are fixed.",cht:"此 Email 由 {n} 位使用者共用(既有的重複,並非本次編輯造成),不影響儲存。若以 Email 作為登入對應鍵,在重複修正前該 Email 將無法登入。"},warnUserNameHistEmpty:{eng:"This user has no valid name (existing data, not caused by this edit). This does not block saving.",cht:"此使用者尚未給予有效名稱(既有資料,並非本次編輯造成),不影響儲存。"},warnUserEmailHistEmpty:{eng:"This user has no email (existing data, not caused by this edit). This does not block saving. If email is the sign-in key, this user cannot sign in.",cht:"此使用者尚未給予 Email(既有資料,並非本次編輯造成),不影響儲存。若以 Email 作為登入對應鍵,此使用者將無法登入。"},warnUserEmailHistInvalid:{eng:"The email format of this user is invalid (existing data, not caused by this edit). This does not block saving.",cht:"此使用者的 Email 格式錯誤(既有資料,並非本次編輯造成),不影響儲存。"},confirmDelRefsGrup:{eng:"The reference to the selected group(s) will be removed from {n} user(s). Delete anyway?",cht:"將自 {n} 位使用者移除對所選群組的引用。確定刪除?"},confirmDelRefsPemi:{eng:"The reference to the selected permission(s) will be removed from {n} group(s). Delete anyway?",cht:"將自 {n} 個群組移除對所選權限的引用。確定刪除?"},confirmDelRefsAndGrup:{eng:"The reference to the selected group(s) will be removed from {n} user(s). For the {m} user(s) that refer to it with AND, the restriction will be lifted and their authorization may increase. Delete anyway?",cht:"將自 {n} 位使用者移除對所選群組的引用;其中 {m} 位以 AND 引用,移除後其限制解除,授權可能變多。確定刪除?"},confirmDelRefsAndPemi:{eng:"The reference to the selected permission(s) will be removed from {n} group(s). For the {m} group(s) that refer to it with AND, the restriction will be lifted and their authorization may increase. Delete anyway?",cht:"將自 {n} 個群組移除對所選權限的引用;其中 {m} 個以 AND 引用,移除後其限制解除,授權可能變多。確定刪除?"},confirmDelDupRefsGrup:{eng:"{n} user(s) refer to a group name that is shared by several groups. If you delete one of them, those users' authorization may increase. Delete anyway?",cht:"有 {n} 位使用者引用的群組名稱有多筆同名資料,刪除其中一筆後,其授權可能變多。確定刪除?"},confirmDelDupRefsPemi:{eng:"{n} group(s) refer to a permission name that is shared by several permissions. If you delete one of them, the authorization of those groups may increase. Delete anyway?",cht:"有 {n} 個群組引用的權限名稱有多筆同名資料,刪除其中一筆後,其授權可能變多。確定刪除?"},confirmDelRefsDupGrup:{eng:"The reference to the selected group(s) will be removed from {n} user(s). Also, {w} user(s) refer to a group name that is shared by several groups; if you delete one of them, those users' authorization may increase. Delete anyway?",cht:"將自 {n} 位使用者移除對所選群組的引用;另有 {w} 位使用者引用的群組名稱有多筆同名資料,刪除其中一筆後,其授權可能變多。確定刪除?"},confirmDelRefsDupPemi:{eng:"The reference to the selected permission(s) will be removed from {n} group(s). Also, {w} group(s) refer to a permission name that is shared by several permissions; if you delete one of them, the authorization of those groups may increase. Delete anyway?",cht:"將自 {n} 個群組移除對所選權限的引用;另有 {w} 個群組引用的權限名稱有多筆同名資料,刪除其中一筆後,其授權可能變多。確定刪除?"},confirmDelRefsAndDupGrup:{eng:"The reference to the selected group(s) will be removed from {n} user(s). For the {m} user(s) that refer to it with AND, the restriction will be lifted and their authorization may increase. Also, {w} user(s) refer to a group name that is shared by several groups; if you delete one of them, those users' authorization may increase. Delete anyway?",cht:"將自 {n} 位使用者移除對所選群組的引用,其中 {m} 位以 AND 引用,移除後其限制解除,授權可能變多;另有 {w} 位使用者引用的群組名稱有多筆同名資料,刪除其中一筆後,其授權可能變多。確定刪除?"},confirmDelRefsAndDupPemi:{eng:"The reference to the selected permission(s) will be removed from {n} group(s). For the {m} group(s) that refer to it with AND, the restriction will be lifted and their authorization may increase. Also, {w} group(s) refer to a permission name that is shared by several permissions; if you delete one of them, the authorization of those groups may increase. Delete anyway?",cht:"將自 {n} 個群組移除對所選權限的引用,其中 {m} 個以 AND 引用,移除後其限制解除,授權可能變多;另有 {w} 個群組引用的權限名稱有多筆同名資料,刪除其中一筆後,其授權可能變多。確定刪除?"},confirmSaveRenameRefsGrup:{eng:"After saving, the group references of {n} user(s) will be updated to the new names of these renamed group(s): {list}. Continue?",cht:"儲存後將一併更新 {n} 位使用者對下列已改名群組的引用:{list}。是否繼續?"},confirmSaveRenameRefsExtGrup:{eng:"After saving, the group references of {n} user(s) will be updated to the new names of these renamed group(s): {list}. The source of {e} of them is an external application; their references may be overwritten by external data at the next external sync. Continue?",cht:"儲存後將一併更新 {n} 位使用者對下列已改名群組的引用:{list}。其中 {e} 位來源為外部應用,下次外部同步時可能被外部資料覆寫。是否繼續?"},confirmSaveRenameRefsPemi:{eng:"After saving, the permission references of {n} group(s) will be updated to the new names of these renamed permission(s): {list}. Continue?",cht:"儲存後將一併更新 {n} 個群組對下列已改名權限的引用:{list}。是否繼續?"},confirmSaveRenameRefsExtPemi:{eng:"After saving, the permission references of {n} group(s) will be updated to the new names of these renamed permission(s): {list}. The source of {e} of them is an external application; their references may be overwritten by external data at the next external sync. Continue?",cht:"儲存後將一併更新 {n} 個群組對下列已改名權限的引用:{list}。其中 {e} 個來源為外部應用,下次外部同步時可能被外部資料覆寫。是否繼續?"},confirmSaveDelRefsTarget:{eng:"The settings for the following target(s) (deleted or renamed) will be removed from the rules of {n} permission(s): {list}. Save anyway?",cht:"將自 {n} 個權限的規則移除對下列管控對象的設定(已刪除或已改名):{list}。確定儲存?"},cascadeListMore:{eng:"… ({n} in total)",cht:"…等 {n} 個"},grupSaveGrupsSuccessCascade:{eng:"Save permission groups successfully. The group references of {n} user(s) were updated to the new name(s).",cht:"儲存權限群組數據成功,已將 {n} 位使用者對已改名群組的引用一併更新為新名稱。"},pemiSavePemisSuccessCascade:{eng:"Save permissions successfully. The permission references of {n} group(s) were updated to the new name(s).",cht:"儲存權限數據成功,已將 {n} 個群組對已改名權限的引用一併更新為新名稱。"},relationRowsStale:{eng:"Not saved: the list changed while this dialog was open (removed or renamed: {names}). Nothing was changed. Please close this dialog, reload the page and try again.",cht:"未儲存:此對話框開啟期間清單已有異動(已刪除或改名:{names})。資料未變更,請關閉對話框並重新整理頁面後再操作。"},externalRowLocked:{eng:'Synchronized from external source "{from}". Read-only here.',cht:"由外部來源「{from}」同步,於此為唯讀。"},externalRowsNotice:{eng:"{n} row(s) are synchronized from an external source. Their identity fields are read-only and they cannot be deleted here; only their assignment settings can be changed.",cht:"有 {n} 筆資料由外部來源同步。其身分欄位於此為唯讀且不可刪除,僅可修改其授權指派設定。"},externalRowsNoticeTarget:{eng:"{n} row(s) are synchronized from an external source. They are read-only and cannot be deleted here.",cht:"有 {n} 筆資料由外部來源同步,於此為唯讀且不可刪除。"},syncWarnIdRenumber:{eng:'The external source "{from}" appears to have renumbered ids ({n} item(s) now carry a name that previously belonged to an item with a different id). Each synchronization removes the old items and cleans up the references to them, which may erase the assignments made here. Please ask the source to keep ids stable or to omit ids.',cht:"外部來源「{from}」疑似重編 id(有 {n} 筆項目的名稱,先前屬於不同 id 之項目)。每次同步會移除舊項目並連帶清理其引用,可能抹掉在此做的指派。請來源端保持 id 穩定或不帶 id。"},externalRowDelBlocked:{eng:"{n} selected row(s) are synchronized from an external source and cannot be deleted here. They were skipped.",cht:"所選資料中有 {n} 筆由外部來源同步,無法在此刪除,已略過。"},nameUsedByExternal:{eng:'External source "{from}" already uses the name "{name}".',cht:"外部來源「{from}」已使用此名稱「{name}」。"},confirmAddRefsGrup:{eng:'Adding the group(s) "{list}": {n} user(s) already refer to the name, so after saving they will get (or be limited by) the permissions of the new group(s). Add anyway?',cht:"新增群組「{list}」後,將有 {n} 位使用者取得或受此群組限制(其授權設定原已引用此名稱)。確定新增?"},confirmAddRefsAndGrup:{eng:'Adding the group(s) "{list}": {n} user(s) already refer to the name, so after saving they will get (or be limited by) the permissions of the new group(s); {m} of them refer to it with AND. Add anyway?',cht:"新增群組「{list}」後,將有 {n} 位使用者(其中 {m} 位以 AND 引用)取得或受此群組限制(其授權設定原已引用此名稱)。確定新增?"},confirmAddRefsPemi:{eng:'Adding the permission(s) "{list}": {n} group(s) already refer to the name, so after saving they will get (or be limited by) the new permission(s). Add anyway?',cht:"新增權限「{list}」後,將有 {n} 個群組取得或受此權限限制(其授權設定原已引用此名稱)。確定新增?"},confirmAddRefsAndPemi:{eng:'Adding the permission(s) "{list}": {n} group(s) already refer to the name, so after saving they will get (or be limited by) the new permission(s); {m} of them refer to it with AND. Add anyway?',cht:"新增權限「{list}」後,將有 {n} 個群組(其中 {m} 個以 AND 引用)取得或受此權限限制(其授權設定原已引用此名稱)。確定新增?"},confirmAddRefsTarget:{eng:'Adding the target(s) "{list}": the rules of {n} permission(s) already contain settings for the name, so after saving those settings will take effect for the new target(s). Add anyway?',cht:"新增管控對象「{list}」後,將有 {n} 個權限的規則取得此管控對象的設定(其規則原已寫有此名稱)。確定新增?"},saveInProgress:{eng:"The previous save is still in progress. Please do not submit again.",cht:"上一次儲存仍在處理中,請勿重複送出"},saveNewRowExists:{eng:"The newly added data has already been saved. Please reload the page before making changes.",cht:"新增之資料已儲存過,請重新整理頁面後再操作"},saveTabItemsSuccess:{eng:"Saved successfully",cht:"儲存成功"},htmlMarkupNotAllowed:{eng:'The input contains HTML markup that is not allowed (such as "<" followed by a letter). Please remove it and try again.',cht:"輸入內容含有不允許的 HTML 標記(如「<」後接英文字母),請移除後再試一次。"},saveWriteFail:{eng:"Not all changes were written, and some may have taken effect. Please reload the page and check before making changes.",cht:"資料寫入未全部完成,部分變更可能已生效,請重新整理頁面確認後再操作"},renameCascadeDupGroup:{eng:"Not saved: a renamed item shares its old name with other existing items, so the references to it cannot be updated safely. Nothing was changed. Please delete or rename the duplicates first (save them separately), then rename it.",cht:"未儲存:被改名的項目與其他既有項目同名,無法安全地連帶更新引用。資料未變更。請先清理同名項目(分次儲存)後再改名。"},renameCascadeNameInUse:{eng:"Not saved: a new name is still referenced by settings of items that no longer exist, so the renamed item would take over those references. Nothing was changed. Please clean up the dangling references first, or choose another name.",cht:"未儲存:新名稱仍被已不存在之項目的授權設定引用,改名後會被這些引用接管。資料未變更。請先清理懸空引用,或改用其他名稱。"},renameCascadeConflict:{eng:"Not saved: a setting contains both the old and the new name, so its references cannot be updated automatically. Nothing was changed.",cht:"未儲存:有授權設定同時含有舊名稱與新名稱,無法自動更新引用。資料未變更。"},renameCascadeUnsupported:{eng:"Not saved: a setting that refers to the renamed or deleted item contains a value that cannot be safely rewritten (such as a non-finite number), so its references cannot be updated automatically. Nothing was changed. Please fix that setting first.",cht:"未儲存:引用此項目之授權設定含有無法安全改寫的內容(如非有限數值),無法自動更新引用。資料未變更,請先修正該授權設定。"},saveCascadePartial:{eng:"The related references may be out of sync with this change (the automatic restore failed). Please do not make further changes and contact the system administrator to run the reference audit.",cht:"相關的授權引用可能與本次變更不一致(自動還原失敗)。請勿再變更資料,並通知系統管理者執行引用稽核。"},saveFromNotAllowed:{eng:'Not saved: rows saved here must have an empty "From" value (rows with a source are managed by the external source). Nothing was changed.',cht:"未儲存:於此儲存之列其「來源」須為空白(有來源之列由外部來源管理)。資料未變更。"},saveExternalRowChanged:{eng:"Not saved: rows synchronized from an external source cannot be deleted here, and only their assignment settings can be changed. Nothing was changed. Please change them at the external source.",cht:"未儲存:由外部來源同步之列不可在此刪除,且僅能修改其授權指派設定。資料未變更,請至外部來源端處理。"},saveStale:{eng:"Not saved: the data changed (by someone else or by an external synchronization) after this page was loaded. Nothing was changed. Please reload the page and try again.",cht:"未儲存:載入此頁面後資料已被他人或外部同步更新。資料未變更,請重新整理頁面後再操作。"},staleDraftNotice:{eng:'The data was updated by someone else or by an external synchronization after you started editing. Your unsaved edits are kept here, but saving now will be rejected. Click "Reload" to get the latest data (your unsaved edits will be discarded).',cht:"資料已被他人或外部同步更新。您尚未儲存的編輯仍保留於此,但現在儲存將被拒絕。請按「重新載入」取得最新資料(未儲存的編輯將被捨棄)。"},staleDraftReload:{eng:"Reload",cht:"重新載入"},staleDraftNoticeDialog:{eng:"The data was updated by someone else or by an external synchronization after this window was opened. Saving from this window will be rejected. Please close this window and open it again to get the latest data.",cht:"資料已被他人或外部同步更新,本視窗內的資料已過期,儲存將被拒絕。請關閉本視窗後重新開啟,以取得最新資料。"},saveBaselineRequired:{eng:"Not saved: changing the assignment settings of rows synchronized from an external source requires the latest loaded data, which this request did not carry. Nothing was changed. Please reload the page and try again.",cht:"未儲存:修改外部來源同步列之授權指派設定須附載入時之資料版本,此次請求未附。資料未變更,請重新整理頁面後再操作。"},cannotGetUserId:{eng:"Cannot get the user id",cht:"無法取得使用者 Id"},cannotGetUserEmail:{eng:"Cannot get the email of user",cht:"無法取得使用者 Email"},cannotGetUserName:{eng:"Cannot get the name of user",cht:"無法取得使用者名稱"},cannotGetUserRole:{eng:"Cannot get the role of user",cht:"無法取得使用者角色"},cannotFindUserFromToken:{eng:"Cannot identify the user from token",cht:"無法由 token 識別使用者"},cannotGetUserProp:{eng:"Cannot get the property of user",cht:"無法取得使用者對應屬性"},cannotGetUserFromPerm:{eng:"Cannot find the user in permission system",cht:"無法於權限系統取得使用者"},ambiguousUserFromPerm:{eng:"Cannot identify the user in permission system: more than one active user matches",cht:"無法於權限系統確認使用者:有多位有效使用者符合"},userNoPermission:{eng:"User does not have permission",cht:"使用者權限不足"},invalidPayload:{eng:"Invalid payload in request",cht:"請求內容無效"},invalidFromInPayload:{eng:"Invalid from in payload",cht:"請求來源欄位無效"},invalidRowsInPayload:{eng:"Invalid rows in payload",cht:"請求資料列無效"},invalidFrom:{eng:"Invalid from",cht:"來源欄位無效"},invalidRows:{eng:"Invalid data format.",cht:"資料格式錯誤。"},cannotGetUserRules:{eng:"Cannot get rules of user",cht:"無法取得使用者權限規則"},tokenNoPermission:{eng:"Token does not have permission",cht:"權限不足"},userIdNoPermrules:{eng:"The user id does not have permission rules",cht:"此使用者沒有權限規則"},invalidKeyTable:{eng:"Invalid key table",cht:"資料表名稱無效"},cannotFindUserId:{eng:"Cannot find the user id",cht:"無法找到使用者 Id"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},showTabCols:{eng:"Show columns",cht:"顯示欄位"},belongUsers:{eng:"Use users",cht:"管控所屬使用者"},belongGrups:{eng:"Use groups",cht:"管控所屬權限群組"},belongGrupsNames:{eng:"Use permission groups",cht:"所屬權限群組名稱"},belongPemisNames:{eng:"Use permissions",cht:"所屬權限名稱"},chipsShowAll:{eng:"Show all",cht:"展開全部"},chipsPopupTitle:{eng:"{title} ({n} in total)",cht:"{title}:共 {n} 項"},isAdmin:{eng:"Administrator",cht:"是否為系統管理員"},isActive:{eng:"Active",cht:"是否有效"},errInNames:{eng:"Name errors",cht:"名稱出現錯誤待修復"},errInIds:{eng:"ID errors",cht:"ID 出現錯誤待修復"},errInEmails:{eng:"Email errors",cht:"Email出現錯誤待修復"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},menuUser:{eng:"User menu",cht:"使用者選單"},language:{eng:"Language",cht:"語系"},mmTargets:{eng:"Targets",cht:"管理對象"},mmTargetsMsg:{eng:"Targets generally refer to entities such as pages, data, etc., and can also include features or services.",cht:"對象泛指實體的頁面、數據等,亦可為的功能或服務。"},mmPemis:{eng:"Permissions",cht:"管理權限"},mmPemisMsg:{eng:"Permissions are primarily used to set rules for enabling or disabling various objects.",cht:"權限主要為用來設定各種對象之使用或禁用規則。"},mmGrups:{eng:"Permission groups",cht:"管理權限群組"},mmGrupsMsg:{eng:"Permission groups are primarily used to configure combinations of different permissions.",cht:"權限群組主要為用來設定組合各種權限。"},mmUsers:{eng:"Users",cht:"管理使用者"},mmUsersMsg:{eng:"Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.",cht:"使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。"},targetId:{eng:"Target",cht:"對象名稱"},targetIdEmpty:{eng:"Invalid name",cht:"尚未給予有效對象名稱"},targetIdDuplicate:{eng:"Duplicate target",cht:"對象名稱出現重複"},targetAddEmpty:{eng:"No target",cht:"尚未新增管理資料"},targetAdd:{eng:"Add target",cht:"新增對象"},targetAddNameNew:{eng:"New target",cht:"新對象"},targetAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},targetCopy:{eng:"Copy target",cht:"複製對象"},targetCopyNameNew:{eng:"copy",cht:"複製"},targetDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},targetEnable:{eng:"Enable",cht:"是否使用"},targetSaveTargetsFail:{eng:"Failed to save targets",cht:"儲存對象數據失敗"},targetSaveTargetsSuccess:{eng:"Save targets successfully",cht:"儲存對象數據成功"},pemiName:{eng:"Name of permission",cht:"權限名稱"},pemiNameEmpty:{eng:"Invalid name of permission",cht:"尚未給予有效權限名稱"},pemiNameDuplicate:{eng:"Duplicate name of permission",cht:"權限名稱出現重複"},pemiAddEmpty:{eng:"No permission",cht:"尚未新增權限資料"},pemiAdd:{eng:"Add permission",cht:"新增權限"},pemiAddNameNew:{eng:"New permission",cht:"新權限"},pemiAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},pemiCopy:{eng:"Copy permission",cht:"複製權限"},pemiCopyNameNew:{eng:"copy",cht:"複製"},pemiDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},pemiCrules:{eng:"Rules of permission",cht:"管控對象"},pemiEditBlngGrupsNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditBlngGrupsNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiEditCrules:{eng:"Edit rules of permission",cht:"編輯使用對象"},pemiEditCrulesForDisplay:{eng:"Rules of permission",cht:"展示使用對象"},pemiEditCrulesNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditCrulesNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiRnderCrulesNoRule:{eng:"No rule",cht:"無使用任何對象"},pemiRnderCrulesHasNRule:{eng:"Has {n} rule(s){nms}",cht:"使用共 {n} 項對象{nms}"},pemiSavePemisFail:{eng:"Failed to save permissions",cht:"儲存權限數據失敗"},pemiSavePemisSuccess:{eng:"Save permissions successfully",cht:"儲存權限數據成功"},pemiBlngEditGrups:{eng:"Edit permission groups",cht:"編輯所屬權限群組"},pemiBlngEditGrupsForDisplay:{eng:"Permission groups",cht:"展示所屬權限群組"},pemiBlngRnderNoGrup:{eng:"No permission groups",cht:"無所屬權限群組"},pemiBlngRnderGrups:{eng:"Has {n} permission group(s){nms}",cht:"共被 {n} 個權限群組{nms}使用"},pemiBlngPemiNow:{eng:"Now permission",cht:"目前權限"},pemiBlngEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},pemiBlngEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiBlngDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},cruleEditNoTargetId:{eng:"Can not find the id of target",cht:"無法找到對象Id"},cruleEditNoTargetData:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cruleDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},grupName:{eng:"Name of permission group",cht:"權限群組名稱"},grupNameEmpty:{eng:"Invalid name of permission group",cht:"尚未給予有效權限群組名稱"},grupNameDuplicate:{eng:"Duplicate name of permission group",cht:"權限群組名稱出現重複"},grupAddEmpty:{eng:"No permission group",cht:"尚未新增權限群組資料"},grupAdd:{eng:"Add permission group",cht:"新增權限群組"},grupAddNameNew:{eng:"New permission group",cht:"新權限群組"},grupAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},grupCopy:{eng:"Copy permission group",cht:"複製權限群組"},grupCopyNameNew:{eng:"copy",cht:"複製"},grupDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},grupCpemis:{eng:"Permissions",cht:"管控使用權限"},grupEditBlngNoGrupId:{eng:"Can not find the id of permission group",cht:"無法找到權限群組Id"},grupEditBlngNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupEditCpemis:{eng:"Edit list of permission group",cht:"編輯使用權限"},grupEditCpemisForDisplay:{eng:"List of permission group",cht:"展示使用權限"},grupRnderCpemisNoPermission:{eng:"No permission",cht:"無使用任何權限"},grupRnderCpemisHasNPermissions:{eng:"Has {n} permission(s){nms}",cht:"使用 {n} 項權限{nms}"},grupSaveGrupsEmpty:{eng:"No user",cht:"未有變更權限群組資料"},grupSaveGrupsFail:{eng:"Failed to save permission groups",cht:"儲存權限群組數據失敗"},grupSaveGrupsSuccess:{eng:"Save permission groups successfully",cht:"儲存權限群組數據成功"},grupBlngEditUsers:{eng:"Edit permission group of users",cht:"編輯所屬使用者"},grupBlngEditUsersForDisplay:{eng:"Permission group of users",cht:"展示所屬使用者"},grupBlngRnderNoUser:{eng:"No users",cht:"無所屬使用者"},grupBlngRnderUsers:{eng:"Has {n} user(s){nms}",cht:"共被 {n} 位使用者{nms}使用"},grupBlngGrupNow:{eng:"Now permission group",cht:"目前權限群組"},grupBlngEditNoGrupName:{eng:"Can not find the name of permission group",cht:"無法找到權限群組名稱"},grupBlngEditNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupBlngDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},cpemiEditNoName:{eng:"Can not find the name of target",cht:"無法找到對象名稱"},cpemiEditNoTarget:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cpemiDeleteCheckTargets:{eng:"Delete targets(s)",cht:"刪除勾選對象"},userName:{eng:"Name of user",cht:"使用者名稱"},userNameEmpty:{eng:"Invalid name of user",cht:"尚未給予有效使用者名稱"},userNameDuplicate:{eng:"Duplicate name of user",cht:"使用者名稱出現重複"},userEmailEmpty:{eng:"Empty email of user",cht:"尚未給予使用者Email"},userEmailError:{eng:"Invalid email of user",cht:"使用者Email格式錯誤"},userEmailDuplicate:{eng:"Duplicate email of user",cht:"使用者Email出現重複"},userAddEmpty:{eng:"No user",cht:"尚未新增使用者資料"},userAdd:{eng:"Add user",cht:"新增使用者"},userAddNameNew:{eng:"New user",cht:"新使用者"},userAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},userCopy:{eng:"Copy user",cht:"複製使用者"},userCopyNameNew:{eng:"copy",cht:"複製"},userDeleteCheckUsers:{eng:"Delete user(s)",cht:"刪除勾選使用者"},userCgrups:{eng:"Permission groups",cht:"管控使用權限群組"},userEditCgrups:{eng:"Edit list of user",cht:"編輯使用權限群組"},userEditCgrupsForDisplay:{eng:"Permission groups of user",cht:"展示使用權限群組"},userEditCgrupsNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditCgrupsNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者資料"},userSaveUsersEmpty:{eng:"No user",cht:"未有變更使用者資料"},userSaveUsersFail:{eng:"Failed to save users",cht:"儲存使用者數據失敗"},userSaveUsersSuccess:{eng:"Save users successfully",cht:"儲存使用者數據成功"},userEditNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者數據"},userRnderCgrupsNoGroup:{eng:"No permission group",cht:"無使用任何權限群組"},userRnderCgrupsHasNGroups:{eng:"Has {n} permission group(s){nms}",cht:"使用 {n} 項權限群組{nms}"},cgrupEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},cgrupEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},cgrupDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},show:{eng:"Show",cht:"顯示"},active:{eng:"Active",cht:"啟用"},userId:{eng:"ID of the created user",cht:"創建使用者主鍵"},timeCreate:{eng:"Created time",cht:"創建時間"},userIdUpdate:{eng:"ID of the updated user",cht:"最新變更使用者主鍵"},timeUpdate:{eng:"Updated time",cht:"更新時間"},invalidUrl:{eng:"Invalid url",cht:"網址無效"},invalidTokenTar:{eng:"Invalid target token",cht:"目標 token 無效"},invalidTokenSelf:{eng:"Invalid self token",cht:"自身 token 無效"},invalidUserIdTar:{eng:"Invalid target user id",cht:"目標使用者 Id 無效"},noTokenInUrl:{eng:"Missing token in url",cht:"網址缺少 token"},noTokenUserIdInUrl:{eng:"Missing token or userId in url",cht:"網址缺少 token 或 userId"},cannotGetUserByUrl:{eng:"Cannot get user by url",cht:"無法由網址取得使用者"},cannotGetUserDataByUrl:{eng:"Cannot get user data by url",cht:"無法由網址取得使用者資料"},noUserDataByUrl:{eng:"No user data by url",cht:"該網址無使用者資料"},noUserDataAfterConvert:{eng:"No user data after permission conversion",cht:"權限轉換後無使用者資料"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},staEventTitle:{eng:"Event Frequency",cht:"事件發生頻率"},staTimeHr:{eng:"Hourly",cht:"每小時"},staTimeDay:{eng:"Daily",cht:"每日"},staTotal:{eng:"Total",cht:"全部加總"},staNoData:{eng:"No event data",cht:"尚無事件資料"},getDataError:{eng:"Failed to load data",cht:"資料載入失敗"},staTableTitle:{eng:"Event Statistics",cht:"事件統計表"},staColEvent:{eng:"Event",cht:"事件"},staColLast1Day:{eng:"Last 1 Day",cht:"最近1日"},staColLast8Hour:{eng:"Last 8 Hours",cht:"最近8小時"},staColLast4Hour:{eng:"Last 4 Hours",cht:"最近4小時"},staColLast1Hour:{eng:"Last 1 Hour",cht:"最近1小時"}},Za=(e={})=>{let t=Me(e,"kpLangExt");_t(t)||(t={});let r=Me(e,"webName");_t(r)||(r={});let n=Me(e,"webDescription");_t(n)||(n={});let s={};s={...s,...Sa},_t(t)&&(s={...s,...t}),_t(r)&&(s={...s,webName:{...r}}),_t(n)&&(s={...s,webDescription:{...n}});let i={};return _r(["eng","cht"],e=>{let t={};_r(s,(r,n)=>{t[n]=r[e]}),i[e]=t}),i};function va(e,t={}){if(!Array.isArray(e))return{reason:"rowsInvalid",k:-1,field:""};let r=!0===Me(t,"idRequired",!1),n=Me(t,"rowsIdOnly",[]);Array.isArray(n)||(n=[]);let s=Object.create(null),i=(e,t)=>{let n=Me(e,"id"),i="number"==typeof n;if(!!(null==n||""===n||i&&!Number.isFinite(n)))return r?{reason:"idInvalid",k:t,field:"id"}:null;if(!er(n)&&!i)return{reason:"idInvalid",k:t,field:"id"};let o=String(n);return er(n)&&Buffer.byteLength(n,"utf8")>1978?{reason:"idTooLong",k:t,field:"id"}:!0===s[o]?{reason:"idDuplicate",k:t,field:"id"}:(s[o]=!0,null)},o=null;return ha(e,(e,t)=>{if(o=i(e,t),null!==o)return!1}),null!==o?o:(ha(n,e=>{if(o=i(e,-1),null!==o)return!1}),null!==o||ha(e,(e,t)=>!(null!==e&&"object"==typeof e&&!Array.isArray(e))||(ha(e,(e,r)=>{return null!=(n=e)&&"string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n?(o={reason:"fieldNotScalar",k:t,field:r},!1):er(e)&&Ml(e)!==e?(o={reason:"htmlMarkup",k:t,field:r},!1):void 0;var n}),null===o&&void 0)),o)}let Ya={grups:{holder:"users",field:"cgrups",kind:"ref"},pemis:{holder:"grups",field:"cpemis",kind:"ref"},targets:{holder:"pemis",field:"crules",kind:"rule"}},Xa=e=>"string"==typeof e,ja=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),za=(e,t)=>"rule"===t?ba(e):Xa(e)?e:null,Ga=(e,t)=>{if(null===e||"object"!=typeof e)return null;let r="targets"===t?e.id:void 0===e.name?"":e.name;return Xa(r)?r:null},Wa=e=>{if(!Xa(e)||""===e.trim())return null;let t=null;try{t=Da.parse(e)}catch(e){return null}return null!==t&&"object"==typeof t?t:null},Ka=(e,t)=>{let r=[];return Array.isArray(e)?(e.forEach((e,n)=>{let s=_t(e)&&ja(e,"name")?e.name:n;r.push({key:za(s,t),el:e,i:n,isObj:_t(e),isActive:_t(e)?e.isActive:e})}),r):(Object.keys(e).forEach(n=>{let s=e[n];r.push({key:za(n,t),el:s,i:n,isObj:_t(s),isActive:_t(s)?s.isActive:s})}),r)},ka=e=>"number"==typeof e?!Number.isFinite(e):null!==e&&"object"==typeof e&&Object.keys(e).some(t=>ka(e[t]));function Fa(e,t={}){let r="rule"===t.kind?"rule":"ref",n=t.rename instanceof Map?t.rename:new Map,s=t.del instanceof Set?t.del:new Set,i={str:e,changed:!1,nRename:0,nDel:0,conflict:!1,unsafe:!1};if(0===n.size&&0===s.size)return i;let o=Wa(e);if(null===o)return i;let u=Ka(o,r),l=new Set;u.forEach(e=>{null!==e.key&&l.add(e.key)});let a=e=>null!==e&&s.has(e),c=e=>null!==e&&!a(e)&&n.has(e);for(let e of u)if(c(e.key)){let t=n.get(e.key);if(l.has(t)&&!c(t)&&!a(t))return i.conflict=!0,i}let d=0,w=0,D=null;if(Array.isArray(o)){D=[];let e=-1;"rule"===r&&u.forEach(t=>{e<0&&a(t.key)&&(e=t.i)}),u.forEach(t=>{let r=t.isObj&&ja(t.el,"name");a(t.key)?w++:c(t.key)&&t.isObj?(d++,D.push({...t.el,name:n.get(t.key)})):e>=0&&t.i>e&&!r?D.push(t.isObj?{...t.el,name:t.i}:{name:t.i,isActive:t.el}):D.push(t.el)})}else D=Object.create(null),u.forEach(e=>{a(e.key)?w++:c(e.key)?(d++,D[n.get(e.key)]=e.el):D[e.i]=e.el});return 0===d&&0===w?i:ka(o)?(i.unsafe=!0,i):{str:JSON.stringify(D),changed:!0,nRename:d,nDel:w,conflict:!1,unsafe:!1}}function Va(e){let t=e?e.keyTable:"",r={renames:[],rename:new Map,delNames:[],del:new Set,oldById:new Map,newById:new Map};if(!ja(Ya,t))return r;let n=!(e.opt&&!1===e.opt.cascadeRename),s=Array.isArray(e.rowsOld)?e.rowsOld:[],i=Array.isArray(e.rowsNew)?e.rowsNew:[],o=r.oldById;s.forEach(e=>{null!==e&&"object"==typeof e&&Xa(e.id)&&o.set(e.id,e)});let u=r.newById;i.forEach(e=>{null!==e&&"object"==typeof e&&Xa(e.id)&&u.set(e.id,e)});let l=new Set;return u.forEach((e,s)=>{let i=o.get(s);if(void 0===i)return;let u=Ga(i,t),a=Ga(e,t);null!==u&&u===a&&l.add(u),n&&"targets"!==t&&null!==u&&null!==a&&u!==a&&(r.renames.push({id:s,from:u,to:a}),r.rename.set(u,a))}),o.forEach((e,n)=>{if(u.has(n))return;let s=Ga(e,t);null===s||l.has(s)||r.del.add(s)}),r.delNames=[...r.del],r}function Ha(e){let t=e?e.keyTable:"",r=ja(Ya,t)?Ya[t]:null,n={err:null,keyTable:t,holder:r?r.holder:"",field:r?r.field:"",renames:[],delNames:[],changes:[],nHolders:0,nRenameHolders:0,nDelHolders:0,nExternal:0};if(null===r)return n;let s=Array.isArray(e.holdersOld)?e.holdersOld:[],i=Va(e),{oldById:o,newById:u,rename:l,del:a}=i;if(n.renames=i.renames,n.delNames=i.delNames,0===l.size&&0===a.size)return n;let c=new Set;for(let e of n.renames){if(c.has(e.to))return n.err="renameCascadeConflict",n;c.add(e.to)}let d=s.map(e=>{let t=null!==e&&"object"==typeof e?e[r.field]:void 0;return{h:e,str:t,kp:Wa(t)}}).filter(e=>null!==e.h&&"object"==typeof e.h&&Xa(e.h.id)),w=n.renames.filter(e=>{let r=0;return o.forEach(n=>{Ga(n,t)===e.from&&r++}),r>=2});if(w.length>0){let e=new Set(w.map(e=>e.from));for(let t of d)if(null!==t.kp&&Ka(t.kp,r.kind).some(t=>null!==t.key&&e.has(t.key)))return n.err="renameCascadeDupGroup",n}if(n.renames.length>0){let e=new Set;o.forEach(r=>{let n=Ga(r,t);null!==n&&e.add(n)});let s=new Set;if(n.renames.forEach(t=>{e.has(t.to)||s.add(t.to)}),s.size>0)for(let e of d)if(null!==e.kp)for(let t of Ka(e.kp,r.kind))if(null!==t.key&&s.has(t.key)&&"y"===t.isActive)return n.err="renameCascadeNameInUse",n}for(let e of d){let t=Fa(e.str,{kind:r.kind,rename:l,del:a});if(t.conflict||t.unsafe)return n.err=t.conflict?"renameCascadeConflict":"renameCascadeUnsupported",n.changes=[],n.nHolders=0,n.nRenameHolders=0,n.nDelHolders=0,n.nExternal=0,n;if(!t.changed)continue;let s=Xa(e.h.from)&&""!==e.h.from?e.h.from:"";n.changes.push({id:e.h.id,field:r.field,before:e.str,after:t.str,nRename:t.nRename,nDel:t.nDel,from:s}),t.nRename>0&&n.nRenameHolders++,t.nDel>0&&n.nDelHolders++,""!==s&&n.nExternal++}return n.nHolders=n.changes.length,n}function Ua(e,t,r,n=[]){let s=e=>{let t=null!==e&&"object"==typeof e?e.id:void 0;return Xa(t)&&""!==t?t:"number"==typeof t&&Number.isFinite(t)?String(t):null},i=new Set;r.forEach(e=>{let t=s(e);null!==t&&i.add(t)});let o=new Map;t.forEach(e=>{null!==e&&"object"==typeof e&&Xa(e.id)&&!i.has(e.id)&&Xa(e.name)&&(o.has(e.name)||o.set(e.name,[]),o.get(e.name).push(e.id))});let u=new Set(i);return[...t,...n].forEach(e=>{null!==e&&"object"==typeof e&&Xa(e.id)&&u.add(e.id)}),r.map((t,r)=>{let n=s(t);if(null===n&&"targets"!==e&&null!==t&&"object"==typeof t&&Xa(t.name)&&o.has(t.name)&&o.get(t.name).length>0&&(n=o.get(t.name).shift()),null===n){let e=r;for(;u.has(`__new__${e}`);)e++;n=`__new__${e}`,u.add(n)}return{...t,id:n}})}let Ba=["userId","timeCreate","userIdUpdate","timeUpdate"],Ra={users:"cgrups",grups:"cpemis",pemis:"crules",targets:null},Qa=e=>"string"==typeof e,Oa=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Pa=e=>null!==e&&"object"==typeof e,Ja=e=>JSON.stringify(void 0===e?"":e);function $a(e){return Pa(e)&&Qa(e.from)&&""!==e.from}function _a({keyTable:e,keys:t,r:r,ltdtOld:n,lockExternalRows:s=!0}){let i=new Map;n.forEach(e=>{Pa(e)&&Qa(e.id)&&i.set(e.id,e)});let o=e=>void 0===e?"":e,u=function(e,t){let r=Oa(Ra,e)?Ra[e]:null;return(Array.isArray(t)?t:[]).filter(e=>"id"!==e&&"from"!==e&&"order"!==e&&e!==r&&Ba.indexOf(e)<0)}(e,t),l=[],a=(e,t,r,n)=>{l.push({key:e,reason:t,k:r,from:Qa(n)?n:""})};if(r.add.forEach((e,t)=>{let r=Pa(e)?o(e.from):"";Qa(r)?s&&""!==r&&a("saveFromNotAllowed","addFrom",t,r):a("saveFromNotAllowed","fromType",t,"")}),s&&r.del.forEach((e,t)=>{$a(e)&&a("saveExternalRowChanged","del",t,e.from)}),r.diff.forEach((e,t)=>{let r=Pa(e)&&Qa(e.id)?i.get(e.id):void 0,n=Pa(e)?o(e.from):"",l=void 0===r?"":o(r.from);Qa(n)||n===l?s&&void 0!==r&&($a(r)?n!==r.from?a("saveExternalRowChanged","fromChanged",t,r.from):u.some(t=>Ja(e[t])!==Ja(r[t]))&&a("saveExternalRowChanged","fieldChanged",t,r.from):Qa(n)&&""!==n&&a("saveFromNotAllowed","fromChanged",t,n)):a("saveFromNotAllowed","fromType",t,"")}),0===l.length)return null;let c=[];return l.forEach(e=>{""!==e.from&&c.indexOf(e.from)<0&&c.length<5&&c.push(e.from)}),{key:l[0].key,reason:l[0].reason,k:l[0].k,n:l.length,froms:c}}let qa=e=>"string"==typeof e,ec=e=>null!==e&&"object"==typeof e;function tc(e,t){let r=function(e){return(Array.isArray(e)?e:[]).filter(e=>"order"!==e&&Ba.indexOf(e)<0)}(t),n=r.map(t=>{let r=ec(e)?e[t]:void 0;return void 0===r?null:r});return function(e,t=0){let r=3735928559^t,n=1103547991^t;for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);r=Math.imul(r^s,2654435761),n=Math.imul(n^s,1597334677)}return r=Math.imul(r^r>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(r^r>>>13,3266489909),4294967296*(2097151&n)+(r>>>0)}(JSON.stringify(n)).toString(36)}function rc({keys:e,ltdtOld:t,baseline:r}){let n=function({keys:e,rows:t,baseline:r}){let n=new Map(Array.isArray(r)?r:[]),s=0,i=0,o=new Set;(Array.isArray(t)?t:[]).forEach(t=>{ec(t)&&qa(t.id)&&!o.has(t.id)&&(o.add(t.id),n.has(t.id)?n.get(t.id)!==tc(t,e)&&s++:i++)});let u=0;return n.forEach((e,t)=>{o.has(t)||u++}),{nChanged:s,nRemoved:u,nAdded:i}}({keys:e,rows:t,baseline:r}),s=n.nChanged+n.nRemoved+n.nAdded;return 0===s?null:{key:"saveStale",reason:n.nChanged>0?"rowChanged":n.nRemoved>0?"rowRemoved":"rowAdded",n:s}}let nc=e=>"string"==typeof e;function sc(e,t,r){if(!Array.isArray(e))return-1;let n=new Map,s=new Map;for(let e of Array.isArray(t)?t:[])null!==e&&"object"==typeof e&&(nc(e.id)&&nc(e[r])&&n.set(e.id,e[r]),nc(e[r])&&s.set(e[r],(s.get(e[r])||0)+1));let i=new Map;for(let t=0;t<e.length;t++){let n=e[t],s=null===n||"object"!=typeof n?void 0:n[r];nc(s)&&(i.has(s)||i.set(s,[]),i.get(s).push(t))}let o=-1;for(let[t,r]of i){if(r.length<2)continue;if(!((s.get(t)||0)>=2&&r.length<=s.get(t)&&r.every(r=>{let s=e[r].id;return nc(s)&&n.get(s)===t})&&new Set(r.map(t=>e[t].id)).size===r.length)){let s=r.find(r=>!(nc(e[r].id)&&n.get(e[r].id)===t)),i=void 0===s?r[1]:s;(o<0||i<o)&&(o=i)}}return o}let ic=e=>"string"==typeof e;function oc(e,t,r=()=>!0){if(!Array.isArray(e))return-1;let n=new Set;for(let s=0;s<e.length;s++){let i=e[s];if(!r(i))continue;let o=null===i||"object"!=typeof i?void 0:i[t];if(ic(o)){if(n.has(o))return s;n.add(o)}}return-1}function uc(e){return"tabWrite:"+e}let lc={targets:0,pemis:1,grups:2,users:3};function ac(e,t,r,n=[]){let s=e=>Object.prototype.hasOwnProperty.call(lc,e)?lc[e]:1/0,i=[...new Set(t)].sort((e,t)=>s(e)-s(t)||(e<t?-1:e>t?1:0));if(n.length>0){let e=Math.max(...n.map(s));if(i.some(t=>s(t)<=e))throw new Error("tab lock order violation")}let o=r;for(let t=i.length-1;t>=0;t--){let r=o,n=uc(i[t]);o=()=>e(n,r)}return o()}function cc(e){return"email"===e||"name"===e?e:null}function dc(e,t,r){if(!Array.isArray(e))return null;let n=e=>null!==e&&"object"==typeof e,s=e=>n(e)&&"y"===e.isActive,i=Array.isArray(t)?t.filter(n):[],o=(e,t,r,s,i,o)=>{let u=((e,t,r,s)=>{let i=new Map;for(let e of t)ic(e.id)&&i.set(e.id,e);return e.findIndex(e=>{let t=n(e)?e[r]:void 0,o=n(e)&&ic(e.id)?i.get(e.id):void 0;return(void 0===o||t!==o[r])&&!s(t)})})(e,r,s,i),l=sc(e,r,s);if(u<0&&l<0)return null;let a=u>=0&&(l<0||u<=l);return{key:a?"saveRowFieldInvalid":"saveRowFieldDuplicate",reason:a?`${o}Invalid`:`${o}Duplicate`,field:s,k:t[a?u:l]}},u=o(e,e.map((e,t)=>t),i,"email",e=>ic(e)&&e.length>0,"email");if(null!==u)return u;let l=cc(r);if(null===l)return null;let a=[],c=[];return e.forEach((e,t)=>{s(e)&&(a.push(t),c.push(e))}),o(c,a,i.filter(s),l,e=>ic(e)&&e.trim().length>0,"mapKey")}function wc(e){let t=Array.isArray(e)?e.filter(e=>_t(e)):[];return{user:1===t.length?t[0]:null,count:t.length}}function Dc(e){if(!e||0===e.changes.length)return null;let t=va(e.changes.map(e=>({id:e.id,[e.field]:e.after})));return null===t?null:"htmlMarkup"===t.reason?"htmlMarkupNotAllowed":"saveRowFieldInvalid"}async function yc({plan:e,holdersOld:t,woItems:r,procOrm:n,userId:s,srLog:i,writeMain:o}){if(!e||0===e.changes.length)return await o();let u=Dc(e);if(null!==u)return Promise.reject(u);let l=new Map;t.forEach(e=>{null!==e&&"object"==typeof e&&l.set(e.id,e)});let a=e.changes.map(e=>{let t=l.get(e.id);return t?{...t}:{id:e.id,[e.field]:e.before}}),c=e.changes.map(e=>({id:e.id,[e.field]:e.after})),d=e.changes.map(e=>e.id).filter(e=>"string"==typeof e&&""!==e).flatMap(e=>{let t=_o(e,{length:100,omission:"…"});return t===e?[e]:[e,t]}).sort((e,t)=>t.length-e.length),w=e=>{let t=e;return d.forEach(e=>{t=t.split(`id[${e}]`).join("id[*]")}),t.replace(/id\[[^\]]*\]/g,"id[*]")},D=e=>w("string"==typeof e?e:e&&e.message||String(e)),y=null,M="holder";try{await n(s,e.holder,"save",c),M="main",y=await o()}catch(t){let n=!0,o="";try{let t=await r[e.holder].save(a,{merge:!1});Array.isArray(t)&&t.some(e=>e&&0===e.ok)&&(n=!1,o="save result ok:0")}catch(e){n=!1,o=D(e)}return n?(i.warn({event:"refCascade-restored",raw:D(t),userId:s,keyTable:e.keyTable,holder:e.holder,nHolders:e.changes.length}),"holder"===M?Promise.reject("string"==typeof t?w(t):t instanceof Error?new Error(w(t.message)):t):Promise.reject(t)):(i.error({event:"refCascade-restore-error",msg:"saveCascadePartial",raw:D(t),rawRestore:o,userId:s,keyTable:e.keyTable,holder:e.holder,nHolders:e.changes.length}),Promise.reject("saveCascadePartial"))}return i.info({event:"refCascade-done",userId:s,keyTable:e.keyTable,holder:e.holder,nRename:e.renames.length,nDelName:e.delNames.length,nHolders:e.nHolders,nRenameHolders:e.nRenameHolders,nDelHolders:e.nDelHolders,nExternal:e.nExternal}),y}function Mc(e,t,r,n){let s=t.filter(e=>null!==e&&"object"==typeof e&&e.from!==n),i=t.filter(e=>null!==e&&"object"==typeof e&&e.from===n);return[...s,...Ua(e,i,r,s)]}let gc=e=>null!==e&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(e).length>0;function mc(e,t,{srLog:r,kmx:n,lockSave:s,mappingBy:i="id",cascadeRename:o=!0,lockExternalRows:u=!0}){let l=e=>{let t=null!==e&&"object"==typeof e?e.baseline:void 0;return null==t?{}:{baseline:t}},a=async(l,a,c,d,w={})=>{if(!Array.isArray(c)||!c.every(gc))return r.error({event:"updateTabItems-validate-error",keyTable:l,msg:"saveRowFieldInvalid",reason:"rowsInvalid",row:-1,field:""}),Promise.reject("saveRowFieldInvalid");let D=Me(w,"baseline",null);if(null!==D&&!function(e){if(!Array.isArray(e)||!e.every(e=>Array.isArray(e)&&2===e.length&&qa(e[0])&&qa(e[1])))return!1;let t=new Set;for(let r of e){if(t.has(r[0]))return!1;t.add(r[0])}return!0}(D))return r.error({event:"updateTabItems-validate-error",keyTable:l,msg:"saveRowFieldInvalid",reason:"baselineInvalid",row:-1,field:""}),Promise.reject("saveRowFieldInvalid");let y=Me(w,"pickKeysOnly",null),M=[];return Er(y)||_r(c,e=>{!0===Me(e,"_isNew")&&M.push(Me(e,"id",""))}),await s(`updateTabItems:${l}`,a,()=>ac(n,[l],async()=>{if(Er(y)){c=Ot(c,e=>{let t=Me(e,"id");return"number"==typeof t&&Number.isFinite(t)?{...e,id:String(t)}:e});let t=await e[l].select();c=function(e,t,r,n){let s=Object.create(null);Array.isArray(t)&&_r(t,e=>{let t=Me(e,r,"");er(t)&&(s[t]=e)});let i=Ca(e,"order");return i=Ot(i,e=>{let t={...e},i=Me(e,r,""),o=La(s,i,null);return null!==o&&_r(n,e=>{dn(o,e)&&(t[e]=o[e])}),t}),i}(t,c,d,y),r.info({event:"updateTabItems-pickKeysOnly",keyTable:l,userId:a,pickKeysOnly:y})}c=Ot(c=en(c,da[l].keys),(e,t)=>(e.order=t+1,e));let s=(e,t,n={})=>{let s=null,i=Object.create(null);return _r(e,(e,o)=>{let u=Me(e,t,"");return er(u)?!0!==n.skipDup&&dn(i,u)?(r.error({event:"updateTabItems-ckKey-error",keyTable:l,key:t,msg:"saveRowFieldDuplicate",row:o,value:u}),s="saveRowFieldDuplicate",!1):void(i[u]=!0):(r.error({event:"updateTabItems-ckKey-error",keyTable:l,key:t,msg:"saveRowFieldInvalid",row:o}),s="saveRowFieldInvalid",!1)}),s},w=null;if(Ea(l,["targets"])&&(w=s(c,"id"),null!==w))return Promise.reject(w);if(Ea(l,["pemis","grups"])&&(w=s(c,"name",{skipDup:!0}),null!==w))return Promise.reject(w);if(c=Ot(c,e=>{let t=Me(e,"id");return"number"==typeof t&&Number.isFinite(t)?{...e,id:String(t)}:e}),Ea(l,["pemis","grups"])){let e=oc(c,"id",e=>er(Me(e,"id")));if(e>=0)return r.error({event:"updateTabItems-ckKey-error",keyTable:l,key:"id",msg:"saveRowFieldDuplicate",row:e,value:Me(c,[e,"id"])}),Promise.reject("saveRowFieldDuplicate")}let g=await e[l].select();if(null!==D){let e=rc({keys:da[l].keys,ltdtOld:g,baseline:D});if(null!==e)return r.error({event:"updateTabItems-stale-error",keyTable:l,userId:a,msg:e.key,reason:e.reason,n:e.n}),Promise.reject(e.key)}u&&(c=function(e,t){let r=new Map;return(Array.isArray(t)?t:[]).forEach(e=>{Pa(e)&&Qa(e.id)&&r.set(e.id,e)}),e.map(e=>{let t=Pa(e)&&Qa(e.id)?r.get(e.id):void 0;return void 0!==t&&$a(t)&&Oa(t,"order")?{...e,order:t.order}:e})}(c,g));let m=Ea(l,["pemis","grups"]);if(m){let e=sc(c,g,"name");if(e>=0)return r.error({event:"updateTabItems-ckKey-error",keyTable:l,key:"name",msg:"nameDuplicate",row:e,value:Me(c,[e,"name"])}),Promise.reject("nameDuplicate")}if("users"===l){let e=dc(c,g,i);if(null!==e)return r.error({event:"updateTabItems-ckKey-error",keyTable:l,key:e.field,msg:e.key,reason:e.reason,row:e.k}),Promise.reject(e.key)}if(Ms(M)>0){let e=Object.create(null);if(_r(g,t=>{e[Me(t,"id","")]=!0}),M.some(t=>!0===e[t]))return Promise.reject("saveNewRowExists")}let I=c,f=null;if(m||"users"===l){let e=I.filter(e=>er(Me(e,"id"))),t=I.filter(e=>!er(Me(e,"id")));f=Ta(g,e,"id"),f.add=[...f.add,...t]}else f=Ta(g,I,d);let p=da[l].keys;u&&(f=function({keys:e,r:t,ltdtOld:r}){let n=new Map;r.forEach(e=>{Pa(e)&&Qa(e.id)&&n.set(e.id,e)});let s=(Array.isArray(e)?e:[]).filter(e=>Ba.indexOf(e)<0),i=[],o=[...t.same];return t.diff.forEach(e=>{let t=Pa(e)&&Qa(e.id)?n.get(e.id):void 0;void 0!==t&&$a(t)&&s.every(r=>Ja(e[r])===Ja(t[r]))?o.push(e):i.push(e)}),{add:t.add,del:t.del,diff:i,same:o}}({keys:p,r:f,ltdtOld:g}),f=function({r:e,ltdtOld:t}){let r=new Map;t.forEach(e=>{Pa(e)&&Qa(e.id)&&r.set(e.id,e)});let n=e.diff.map(e=>{let t=Pa(e)&&Qa(e.id)?r.get(e.id):void 0;if(void 0===t||!$a(t))return e;let n={...e};return Ba.forEach(e=>{Oa(t,e)&&(n[e]=t[e])}),n});return{add:e.add,del:e.del,diff:n,same:e.same}}({r:f,ltdtOld:g}));let C=_a({keyTable:l,keys:p,r:f,ltdtOld:g,lockExternalRows:u});if(null!==C)return r.error({event:"updateTabItems-external-error",keyTable:l,userId:a,msg:C.key,reason:C.reason,n:C.n,froms:C.froms}),Promise.reject(C.key);if(null===D&&u&&function({r:e,ltdtOld:t}){let r=new Map;return t.forEach(e=>{Pa(e)&&Qa(e.id)&&r.set(e.id,e)}),e.diff.some(e=>{let t=Pa(e)&&Qa(e.id)?r.get(e.id):void 0;return void 0!==t&&$a(t)})}({r:f,ltdtOld:g}))return r.error({event:"updateTabItems-stale-error",keyTable:l,userId:a,msg:"saveBaselineRequired",reason:"externalAssignNoBaseline"}),Promise.reject("saveBaselineRequired");let h=va([...f.add,...f.diff],{rowsIdOnly:f.same});if(null!==h){let e="saveRowFieldInvalid";return"htmlMarkup"===h.reason?e="htmlMarkupNotAllowed":"idDuplicate"===h.reason&&(e="saveRowFieldDuplicate"),r.error({event:"updateTabItems-validate-error",keyTable:l,msg:e,reason:h.reason,row:h.k,field:h.field}),Promise.reject(e)}let L=async()=>{Ms(f.del)>0&&await t(a,l,"del",f.del),Ms(f.add)>0&&await t(a,l,"insert",f.add),Ms(f.diff)>0&&await t(a,l,"save",f.diff)},b=Ea(l,["targets","pemis","grups"])?Ua(l,g,I):I,N=Ea(l,["targets","pemis","grups"])?Va({keyTable:l,rowsOld:g,rowsNew:b,opt:{cascadeRename:o}}):null;if(null!==N&&(N.renames.length>0||N.delNames.length>0)){let s=Ya[l].holder;return await ac(n,[s],async()=>{let n=await e[s].select(),i=Ha({keyTable:l,rowsOld:g,rowsNew:b,holdersOld:n,opt:{cascadeRename:o}}),u=null!==i.err?i.err:Dc(i);return null!==u?(r.error({event:"updateTabItems-refCascade-error",keyTable:l,msg:u}),Promise.reject(u)):(await yc({plan:i,holdersOld:n,woItems:e,procOrm:t,userId:a,srLog:r,writeMain:L}),I)},[l])}return await L(),I}))},c=(e,t,n)=>{let s=fc(n),i="string"==typeof n?n:n&&n.message||String(n);return r.error({event:e,userId:t,msg:s,...i!==s?{raw:i}:{}}),s};return{updateTargets:async(e,t,n={})=>{try{await a("targets",e,t,"id",l(n))}catch(t){throw c("updateTargets-error",e,t)}return r.info({event:"updateTargets-success",userId:e}),"saveTabItemsSuccess"},updatePemis:async(e,t,n={})=>{try{await a("pemis",e,t,"name",l(n))}catch(t){throw c("updatePemis-error",e,t)}return r.info({event:"updatePemis-success",userId:e}),"saveTabItemsSuccess"},updateGrups:async(e,t,n={})=>{try{await a("grups",e,t,"name",l(n))}catch(t){throw c("updateGrups-error",e,t)}return r.info({event:"updateGrups-success",userId:e}),"saveTabItemsSuccess"},updateUsers:async(e,t,n={})=>{try{await a("users",e,t,"id",n)}catch(t){throw c("updateUsers-error",e,t)}return r.info({event:"updateUsers-success",userId:e}),"saveTabItemsSuccess"}}}let Ic=null;function fc(e,t="saveWriteFail"){return null===Ic&&(Ic=new Set(Object.keys(Za({}).eng))),"string"==typeof e&&Ic.has(e)?e:t}let pc="w-syslog/src/formatter.mjs";function Cc(r={}){let n=r.fpSelf,s=r.cwd,i=[],o=e.dirname(e.dirname(n)),u=e.join(o,"src","formatter.mjs");if((r=>{try{return"w-syslog"===JSON.parse(t.readFileSync(e.join(r,"package.json"),"utf8")).name}catch(e){return!1}})(o)&&t.existsSync(u))return{fp:u,by:"pkgRoot"};i.push(`package root of ${n}`);try{return{fp:c.createRequire(n).resolve(pc),by:"resolveFromSelf"}}catch(e){i.push(`resolve from ${n}`)}try{return{fp:c.createRequire(e.join(s,"index.js")).resolve(pc),by:"resolveFromCwd"}}catch(e){i.push(`resolve from ${s}`)}throw new Error(`w-syslog: can not resolve transport target ${pc}, tried: ${i.join("; ")}. When bundling, keep w-syslog installed and list "pino" in external`)}let hc="",Lc="wsyslogFormatterError",bc=e=>{try{return t.statSync(e).isDirectory()}catch(e){return!1}};function Nc(r={}){let n=ln(),s=Me(r,"timeZone",null),i=Me(r,"fdLog");er(i)||(i="./_logs");let o=Me(r,"interval");"day"!==o&&"hr"!==o&&(o="day");let u=Me(r,"numKeep");if(hr(u)||(u="day"===o?365:8760),u=Cr(u),"function"!=typeof a.transport)throw new Error('w-syslog: pino.transport is not a function, pino seems to be bundled as its browser build; list "pino" in external when bundling');if(er(s))try{Intl.DateTimeFormat("en-US",{timeZone:s})}catch(e){throw new Error(`w-syslog: invalid timeZone[${s}]`)}let c=e.resolve(i);if(On(c),!bc(c))throw new Error(`w-syslog: can not create fdLog[${i}]`);let d=(""===hc&&(hc=Cc({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:w&&"SCRIPT"===w.tagName.toUpperCase()&&w.src||new URL("w-web-perm.umd.js",document.baseURI).href),cwd:process.cwd()}).fp),hc),D=a.transport({targets:[{level:"info",target:l.pathToFileURL(d).href,options:{interval:o,fdLog:c,timeZone:s}}]});D.unref();let y=!1,M=e=>{try{n.emit("writeError",e)}catch(e){}},g=e=>{y=!0,console.error("w-syslog transport error:",e),M(e)},m=e=>{let t=new Error(Me(e,"message","w-syslog formatter error"));t.code=Me(e,"code"),t.syscall=Me(e,"syscall"),t.path=Me(e,"path"),M(t)};D.on("error",g),D.on(Lc,m);let I=()=>{D.off("error",g),D.off(Lc,m)},f=a(D),p=()=>{try{if(!bc(c))return;let r="hr"===o?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,s=t.readdirSync(c).filter(e=>r.test(e));s.sort();let l=s.length-u;if(l<=0)return;let a=s.slice(0,l);for(let r of a){let s=e.join(i,r);try{t.unlinkSync(e.join(c,r)),n.emit("delete",{fp:s,fn:r})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}},C=setImmediate(()=>{C=null,p()}),h=setInterval(p,36e5);h.unref();let L=null,b=e=>{let t=f[e].bind(f);return(...r)=>{try{n.emit(e,{args:r})}catch(e){}y||t(...r)}};return n.fatal=b("fatal"),n.error=b("error"),n.warn=b("warn"),n.info=b("info"),n.debug=b("debug"),n.trace=b("trace"),n.cleanLogs=p,n.clear=(e={})=>{if(null!==L)return L;null!==C&&(clearImmediate(C),C=null),clearInterval(h);let t=Me(e,"timeLimit");hr(t)||(t=6e4),L=Hr();let r=!1,n=()=>{r||(r=!0,D.closed?setImmediate(I):D.once("close",()=>{setImmediate(I)}),L.resolve())},s=setTimeout(()=>{console.error("w-syslog clear: timeout, worker terminated, some logs may be lost");try{D.worker.terminate()}catch(e){}n()},t);try{if(D.closed||D.destroyed)return clearTimeout(s),n(),L;D.once("close",()=>{clearTimeout(s),n()}),D.end()}catch(e){clearTimeout(s),n()}return L},n}function Ac(){let e=ln(),t=Object.create(null);function r(t,r){Dn(e,t,[r],{tag:"cache"})}function n(e,n={}){if(dn(t,e))return;let s=Me(n,"fun");Gr(s)||(s=async()=>{});let i=Me(n,"inputs");Lr(i)||(i=[]);let o=Me(n,"timeExpired");hr(o)||(o=5e3),o=Cr(o);let u=Me(n,"timeFrom");"end"!==u&&(u="start");let l=Me(n,"useCacheWhenError");wr(l)||(l=!1);let a=Me(n,"useCloneDeep");wr(a)||(a=!0),t[e]={needExec:!0,fun:s,pm:null,gen:0,inputs:i,value:null,time:null,timeExpired:o,timeFrom:u,useCacheWhenError:l,useCloneDeep:a},r("message",{fun:"set",key:e,timeExpired:o,timeFrom:u,useCacheWhenError:l,useCloneDeep:a})}async function s(e,n={}){if(dn(t,e)){let s=t[e],i=Me(n,"useCloneDeep");if(wr(i)||(i=s.useCloneDeep),s.pm)return r("message",{fun:"get",key:e,msg:"waiting"}),await s.pm,i?Mo(s.value):s.value;let o=Date.now(),u=s.needExec,l=o-s.time;if(u?r("message",{fun:"get",key:e,msg:"execute first"}):s.timeExpired>0&&l>s.timeExpired&&(r("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:l}),u=!0),u){r("message",{fun:"get",key:e,msg:"fun start"}),s.needExec=!1;let t,n,i=s.gen,u=async()=>{try{let t;try{t=await s.fun(...s.inputs)}catch(n){if(r("error",{fun:"get",key:e,msg:n}),!s.useCacheWhenError)throw s.gen===i&&(s.needExec=!0),n;t=void 0}s.gen===i&&(s.value=t,s.time="end"===s.timeFrom?Date.now():o)}finally{s.pm=null,r("message",{fun:"get",key:e,msg:"fun end"})}},l=new Promise((e,r)=>{t=e,n=r});s.pm=l,u().then(t,n),await l}else r("message",{fun:"get",key:e,msg:"use cache"});return i?Mo(s.value):s.value}return r("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=n,e.getProxy=async function(e,t={}){return n(e,t),s(e,t)},e.get=s,e.update=function(e,n){dn(t,e)&&(r("message",{fun:"updateValue",key:e}),t[e].value=n,t[e].time=Date.now(),t[e].gen+=1)},e.clear=function(e){dn(t,e)&&(r("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){dn(t,e)&&(r("message",{fun:"remove",key:e}),delete t[e])},e}function xc(r,n=1){return function(e,t=1,r={}){let n=1,s=Me(r,"path"),i=Me(r,"fs");if(!Rr(e,{fs:i}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&hr(t)&&(t=Cr(t))<1&&(t=1),function e(r){let o=[];return Rr(r,{fs:i})?(_r(i.readdirSync(r),function(u){let l=s.resolve(r,u),a=null;try{a=i.statSync(l)}catch(e){}a&&a.isDirectory()?(o.push({isFolder:!0,level:n,path:l,name:s.basename(l)}),n+=1,(n<=t||null===t)&&(o=o.concat(e(l))),n-=1):o.push({isFolder:!1,level:n,path:l,name:s.basename(l)})}),o):o}(e)}(r,n,{path:e,fs:t})}let Ec=new Map,Tc=new Map;function Sc(e){let t=Me(e,"fdLog");return er(t)||(t="./logs"),t}function Zc(e,r,n){let s=xc(e);s=s.filter(e=>!Me(e,"isFolder",!1)),s=function(e,t,r){let n=t.format(r);return Ma(e,e=>{let t=Me(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=n.slice(0,t.length)})}(s,r,n);let i=[];for(let e of s)try{let r=t.statSync(e.path);if(!r.isFile())continue;i.push({path:e.path,name:e.name,size:r.size,mtimeMs:r.mtimeMs})}catch(e){}return i}function vc(e){let t=new Map;return r=>{let n=Math.floor(r/6e4),s=t.get(n);return void 0===s&&(s=ms(6e4*n).format(e),t.set(n,s)),s}}function Yc(e,r){return new Promise((n,s)=>{let i=null,o=t.createReadStream(e,{encoding:"utf8"}),u=d.createInterface({input:o,crlfDelay:1/0});u.on("line",r);let l=e=>{i=e,u.close()};o.on("error",l),u.on("error",l),o.on("close",()=>{i?s(i):n()})})}function Xc(e){let t=null;try{t=JSON.parse(e)}catch(e){return null}return null===t||"object"!=typeof t?null:t}async function jc(e,t,r,n=null){Gr(n)||(n=vc(r));let s={minTimeMs:null,ev:{}};return await Yc(e,e=>{let r=Xc(e);if(null===r)return;let i=r.event;if(!er(i))return;let o=function(e){return"number"==typeof e?e:er(e)?ms(e).valueOf():NaN}(r.time);if(Number.isNaN(o))return;if((null===s.minTimeMs||o<s.minTimeMs)&&(s.minTimeMs=o),!(o>t))return;let u=n(o),l=s.ev[u];void 0===l&&(l={count:0,kp:{}},s.ev[u]=l),l.count+=1,l.kp[i]=(l.kp[i]||0)+1}),s}async function zc(e,t,r){let n=vc(r),s=[];for(let i of e)try{let e=await jc(i.path,t,r,n);s.push({name:i.name,ok:!0,agg:e})}catch(e){s.push({name:i.name,ok:!1,err:String(Me(e,"message",e))})}return s}function Gc(e,t){for(let r in t.ev){let n=t.ev[r],s=e[r];void 0===s&&(s={count:0,kp:{}},e[r]=s),s.count+=n.count;for(let e in n.kp)s.kp[e]=(s.kp[e]||0)+n.kp[e]}return e}async function Wc(t,r={}){let n=!1!==Me(r,"useCache"),s=Me(r,"scanFiles");Gr(s)||(s=zc);let i=Me(r,"srLog",null),o=Zc(t.fdLog,t.tStart,t.fmt),u=function(e){let t=Ec.get(e);return t||(t=new Map,Ec.set(e,t)),t}((l=t.fdLog,a=t.fmt,`${e.resolve(l)}|${a}`));var l,a;let c=[],d={};for(let e of o){let r=n?u.get(e.name):void 0;void 0!==r&&r.size===e.size&&r.mtimeMs===e.mtimeMs&&(null===r.minTimeMs||r.minTimeMs>r.scanTStartMs&&r.minTimeMs>t.tStartMs)?d[e.name]=r.agg:c.push(e)}if(n){let e=new Set(o.map(e=>e.name));for(let t of u.keys())e.has(t)||u.delete(t)}let w=[];if(c.length>0){let e=await s(c.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),r={};for(let t of e)r[t.name]=t;for(let e of c){let s=r[e.name];if(s&&s.ok)d[e.name]=s.agg,n&&u.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:s.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:s.agg});else{let t=Me(s,"err","no result");w.push({name:e.name,err:t}),n&&u.delete(e.name),i&&Gr(i.warn)&&i.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let D={};for(let e of o){let t=d[e.name];t&&Gc(D,t)}let y=function(e,t){let r={};for(let e of t)r[e]={count:0};for(let t in e){let n=e[t];r[t]={count:n.count,...n.kp}}return Object.keys(r).sort().map(e=>({time:e,data:r[e]}))}(D,t.kpTime);return{rs:y,stat:{nFiles:o.length,nScanned:c.length,nCached:o.length-c.length,errors:w}}}function Kc(t=7,r="hr",n={}){let s=function(e=7,t="hr",r={}){let n=Sc(r),s=function(e){return"day"===e?"day":"hr"}(t),i="day"===s?"YYYY-MM-DD":"YYYY-MM-DDTHH",o="day"===s?"day":"hour",u=Me(r,"timeNow"),l="number"==typeof u?ms(u):ms(),a=l.subtract(e,"day"),c=a.valueOf(),d=a.startOf(o),w=l.startOf(o),D=[];for(;!d.isAfter(w);)D.push(d.format(i)),d=d.add(1,o);return{fdLog:n,timeInterval:s,fmt:i,unit:o,tStart:a,tStartMs:c,kpTime:D,timeNow:l.valueOf()}}(t,r,n),i=JSON.stringify([e.resolve(s.fdLog),t,s.timeInterval,Me(n,"timeNow",null)]);if(Tc.has(i))return Tc.get(i);let o=Wc(s,n).finally(()=>{Tc.delete(i)});return Tc.set(i,o),o}function kc(e,t){return null==e?t:"number"==typeof e?e:ms(e).valueOf()}async function Fc(e,t){let r={},n=[];for(let s of e)try{await Yc(s.path,e=>{let n=Xc(e);if(null===n)return;let s=n.event;if(!er(s))return;let i=kc(n.time,t),o=(u=(t-i)/36e5)<0?Math.ceil(u)||0:Math.floor(u);var u;o<0||o>24||(r[s]||(r[s]={last1Day:0,last8Hour:0,last4Hour:0,last1Hour:0}),o<=24&&(r[s].last1Day+=1),o<=8&&(r[s].last8Hour+=1),o<=4&&(r[s].last4Hour+=1),o<=1&&(r[s].last1Hour+=1))})}catch(e){n.push({name:s.name,err:String(Me(e,"message",e))})}return{kp:r,errors:n}}function Vc(r={}){let n=r.fpSelf,s=r.cwd||process.cwd(),i=r.pkgName||"w-web-perm",o=r.rel||"server/staLogs/staLogsCore.shellWorker.mjs",u=r.existsSync||t.existsSync,l=r.readFileSync||t.readFileSync,a=r.createRequire||c.createRequire;if("string"!=typeof n||""===n)throw new Error("invalid fpSelf");let d=[],w=function(t,r){let n=t;for(;;){if(r(e.join(n,"package.json")))return n;let t=e.dirname(n);if(t===n)return"";n=t}}(e.dirname(n),u);if(""===w)d.push(`(a) no package.json above ${e.dirname(n)}`);else{let t="";try{t=JSON.parse(l(e.join(w,"package.json"),"utf8")).name}catch(e){}let r=e.join(w,o);if(t!==i)d.push(`(a) ${e.join(w,"package.json")} name[${t}]`);else{if(u(r))return r;d.push(`(a) ${r}`)}}let D=`${i}/${o}`,y=[["b",n],["c",e.join(s,"noop.js")]];for(let[e,t]of y)try{let r=a(t).resolve(D);if(u(r))return r;d.push(`(${e}) ${r}`)}catch(r){d.push(`(${e}) resolve ${D} from ${t}`)}throw new Error(`cannot resolve ${o} of ${i} (the package must be installed with its server folder), tried: ${d.join("; ")}`)}let Hc="";function Uc(e,t=""){let r=Hr();if("string"!=typeof t||""===t)try{""===Hc&&(Hc=Vc({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:w&&"SCRIPT"===w.tagName.toUpperCase()&&w.src||new URL("w-web-perm.umd.js",document.baseURI).href)})),t=Hc}catch(e){return r.reject(e),r}let n=new o.Worker(t),s=!1,i=(e,t)=>{s||(s=!0,e(t));try{n.terminate().catch(()=>{})}catch(e){}};return n.on("message",e=>{"done"===e.mode?i(r.resolve,e.payload):"error"===e.mode&&i(r.reject,e.payload)}),n.on("error",e=>{i(r.reject,e)}),n.on("exit",e=>{i(r.reject,new Error(`staLogs worker exited without result, code=${e}`))}),n.postMessage(e),r}async function Bc(e,t,r){return 0===e.length?[]:Uc({kind:"scan",files:e,tStartMs:t,fmt:r})}async function Rc(e,t){return 0===e.length?{kp:{},errors:[]}:Uc({kind:"table",files:e,nowMs:t})}function Qc(e={}){return async function(e={}){let t=Sc(e),r=Me(e,"timeNow"),n="number"==typeof r?ms(r):ms(),s=n.valueOf(),i=Me(e,"scanTableFiles");Gr(i)||(i=Fc);let o=Me(e,"srLog",null),u=Zc(t,n.subtract(25,"hour"),"YYYY-MM-DDTHH"),{kp:l,errors:a}=await i(u.map(e=>({path:e.path,name:e.name})),s);for(let e of a)o&&Gr(o.warn)&&o.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:e.err});let c=[];for(let e in l)c.push({event:e,...l[e]});return c.sort((e,t)=>t.last1Day-e.last1Day),{rs:c,stat:{nFiles:u.length,errors:a}}}({...e,scanTableFiles:Rc})}async function Oc(e=7,t="hr",r={}){let n=await function(e=7,t="hr",r={}){return Kc(e,t,{...r,scanFiles:Bc})}(e,t,r);return n.rs}let Pc=["verifyConn","updateTargets-success","checkUser-error","api/getPerm-success","getWebInfor-success"],Jc=["api/getPermUserInfor-success","api/getUserByToken-success","getStaEvent-success","getStaEventTable-success","getTokenUser-error","getWebInfor-success","updateGrups-success","updatePemis-success","updateTabItems-pickKeysOnly","updateTargets-success","updateUsers-success","verifyConn","verifyConn-error"];function $c(e="hr",t=!0){let r="day"===e?"YYYY-MM-DD":"YYYY-MM-DDTHH",n="hr"===e?"hour":"day",s="hr"===e?48:7,i=function(e){return"many"===e?Jc:Pc}(t),o=ms("2025-01-01T00:00:00"),u=[];for(let e=0;e<s;e++){let t=o.add(e,n),s={count:0};i.forEach((t,r)=>{let n=Math.round(20+15*Math.sin((e+3*r)/4));s[t]=n,s.count+=n}),u.push({time:t.format(r),data:s})}return u}function _c(e={}){let t=Me(e,"fdLog","");er(t)||(t="./logs");let r=Me(e,"mock",!1),n=Me(e,"srLog",null),s=async(e=7,s="hr")=>{if(r)return $c(s,r);return await Oc(e,s,{fdLog:t,srLog:n})},i=Ac(),o=async()=>{if(r)return function(e=!0){if("many"!==e)return[{event:"verifyConn",last1Day:240,last8Hour:90,last4Hour:50,last1Hour:15},{event:"updateTargets-success",last1Day:180,last8Hour:70,last4Hour:38,last1Hour:11},{event:"checkUser-error",last1Day:120,last8Hour:45,last4Hour:24,last1Hour:7},{event:"api/getPerm-success",last1Day:90,last8Hour:33,last4Hour:18,last1Hour:5},{event:"getWebInfor-success",last1Day:60,last8Hour:22,last4Hour:12,last1Hour:3}];return Jc.map((e,t)=>{let r=400-20*t;return{event:e,last1Day:r,last8Hour:Math.round(.4*r),last4Hour:Math.round(.2*r),last1Hour:Math.round(.05*r)}})}(r);let e=await async function(e={}){return(await Qc(e)).rs}({fdLog:t,srLog:n});return e},u=Ac(),l={getStaEvent:async(e,t=7,r="hr")=>{let n=`${t}:${r}`,o=await i.getProxy(n,{fun:s,inputs:[t,r],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEvent"));return Array.isArray(o)?o:Promise.reject("cannotGetStaEvent")},getStaEventTable:async e=>{let t=await u.getProxy("staEventTable",{fun:o,inputs:[],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEventTable"));return Array.isArray(t)?t:Promise.reject("cannotGetStaEventTable")}};return l}function qc(e){return Array.from(e,e=>{let t=e.charCodeAt(0);return t<32||127===t?"?":e}).join("")}function ed(e){if(Lr(e))return e.map(ed);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=e.length,r=Math.min(4,Math.floor(t/8));return 0===r?`(len=${t})`:`${qc(e.slice(0,r))}...${qc(e.slice(-r))}(len=${t})`}function td(e){if(null===e||"object"!=typeof e||Lr(e))return ed(e);let t={};for(let r of Object.keys(e))t[r]="token"===r.toLowerCase()?ed(e[r]):e[r];return t}function rd(e){if(Lr(e))return e.map(rd);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=null;try{t=new URL(e)}catch(e){return"(invalid-url)"}return"http:"!==t.protocol&&"https:"!==t.protocol?t.protocol:`${t.origin}${t.pathname}`}let nd=["invalidUrl","invalidTokenSelf","invalidTokenTar","invalidUserIdTar","noTokenKeyValueInUrl","noTokenKeyUserIdInUrl","noTokenInUrl","cannotGetUserByUrl","cannotGetUsersByUrl","cannotGetUserDataByUrl","cannotGetUsersDataByUrl","noUserDataByUrl","noUsersDataByUrl","noUserDataAfterConvert"],sd=/^[A-Za-z]{1,40}$/;function id(e,t={}){let r=Me(t,"failValue",null),n=Me(t,"onFail",null);return async(...t)=>{try{return await e(...t)}catch(e){if(Gr(n))try{n(function(e){let t=er(e)?e:Me(e,"message");if(er(t)&&nd.includes(t))return{upstream:t};let r=null===e?"null":Lr(e)?"array":typeof e,n=Me(e,"name");return{upstreamType:r,upstreamName:er(n)&&sd.test(n)?n:""}}(e))}catch(e){}return r}}}function od({srLog:e}){return({userId:t,tableName:r,methodName:n})=>{let s="";return er(t)?"select"!==n&&(s="userNoPermission"):s="cannotFindUserId",""===s||(e.error({event:"authorizeExec",ok:!1,msg:s,userId:t,tableName:r,methodName:n}),!1)}}function ud(e,{srLog:t}){return async(r,n,s,i)=>{try{return await e(r,n,s,i)}catch(e){let i="string"==typeof e?e:e&&e.message||String(e);return t.error({event:"operOrm-error",msg:"anUnexpectedErrorOccurred",raw:i,userId:r,tableName:n,methodName:s}),Promise.reject("anUnexpectedErrorOccurred")}}}let ld=e=>"string"==typeof e,ad=e=>null!==e&&"object"==typeof e,cd=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),dd=e=>{let t=ad(e)?e.id:void 0;return ld(t)&&""!==t?t:"number"==typeof t&&Number.isFinite(t)?String(t):null};return function(r,n,s,i,o,u,l={}){let a=null;if(!Gr(r))throw console.log("invalid WOrm",r),new Error("invalid WOrm");if(!er(n))throw console.log("invalid url",n),new Error("invalid url");if(!er(s))throw console.log("invalid db",s),new Error("invalid db");if(!Gr(i))throw console.log("invalid getUserByToken",i),new Error("invalid getUserByToken");if(!Gr(o))throw console.log("invalid verifyClientUser",o),new Error("invalid verifyClientUser");if(!Gr(u))throw console.log("invalid verifyAppUser",u),new Error("invalid verifyAppUser");let c=Me(l,"serverPort");hr(c)||(c=11006),c=Cr(c);let d=Me(l,"webName",{}),w=Me(l,"webDescription",{}),D=Me(l,"webLogo",""),y=Me(l,"subfolder","");var M,g;er(y)&&("/"===Vr(y,1)&&(g=1,y=er(M=y)&&kr(g)?0===(g=Cr(g))?M:Fr(M,M.length-g):""),"/"!==Fr(y,1)&&(y=`/${y}`));let m=Me(l,"urlRedirect",""),I=Me(l,"showLanguage","n"),f=Me(l,"language","eng"),p=Me(l,"showModeEditTargets","n"),C=Me(l,"showModeEditPemis","n"),h=Me(l,"showModeEditGrups","n"),L=Me(l,"showModeEditUsers","n"),b=Me(l,"modeEditTargets","n"),N=Me(l,"modeEditPemis","n"),A=Me(l,"modeEditGrups","n"),x=Me(l,"modeEditUsers","n"),E=Me(l,"widthTargetId",""),T=Me(l,"widthTargetDescription",""),S=Me(l,"widthPemisName",""),Z=Me(l,"widthPemisDescription",""),v=Me(l,"widthGrupsName",""),Y=Me(l,"widthGrupsDescription",""),X=Me(l,"widthUsersName",""),j=Me(l,"widthUsersEmail",""),z=Me(l,"widthUsersDescription",""),G=Me(l,"mappingBy","");"id"!==G&&"email"!==G&&"name"!==G&&(G="id");let W=!1!==Me(l,"cascadeRename",!0),K=!("n"===Me(l,"lockExternalRows","y")||!1===Me(l,"lockExternalRows","y")),k=Me(l,"kpLangExt",null),F=Za({kpLangExt:k,webName:d,webDescription:w}),V=((e={})=>{let t=Me(e,"logFd","");er(t)||(t="./logs");let r=Me(e,"logInterval","");er(r)||(r="hr");let n=Me(e,"logNumKeep",null),s={fdLog:t,interval:r};if(null!=n&&""!==n){if(!hr(n))throw new Error(`invalid logNumKeep[${n}], must be positive integer`);s.numKeep=Cr(n)}return Nc(s)})(l);try{Qo(l)}catch(e){throw V.error({event:"WWebPerm-init-error",msg:e.message}),e}let H=e=>t=>{V.warn({event:`inject-${e}-fail`,...t})};i=id(i,{failValue:null,onFail:H("getUserByToken")}),o=id(o,{failValue:!1,onFail:H("verifyClientUser")}),u=id(u,{failValue:!1,onFail:H("verifyAppUser")});let U={};try{U=Pl(da,r,n,s)}catch(e){throw console.log(e),V.error({event:"WServOrm-init-error",msg:e&&e.message||"WServOrmInitFailed"}),e}let{woItems:B,procOrm:R}=U,Q=new function(){let e=new Map,t=new Map;return async(r,n)=>{let s=(e.get(r)||Promise.resolve()).then(async()=>await n(),async()=>await n());e.set(r,s.catch(()=>{})),t.set(r,(t.get(r)||0)+1);try{return await s}finally{let n=t.get(r)-1;n<=0?(t.delete(r),e.delete(r)):t.set(r,n)}}},O=new Map,P=function(e){return async(t,r,n,s={})=>{let i=Me(s,"errKey","");er(i)||(i="saveInProgress");let o=`${t}:${r}`;return await e.setWithFree([o],n).catch(e=>e===`setWithFree: key in use: ${o}`?Promise.reject(i):Promise.reject(e))}}(wn()),J=mc(B,R,{srLog:V,kmx:Q,lockSave:P,mappingBy:G,cascadeRename:W,lockExternalRows:K}),$=Me(l,"logFd","");er($)||($="./logs");let _=_c({fdLog:$,mock:Me(l,"staEventMock",!1),srLog:V}),q=async e=>{let t=null;if(er(e)&&(t=i(e),Wr(t)&&(t=await t)),!_t(t))return console.log("token",ed(e)),V.error({event:"getTokenUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");await(async e=>{if(!er(Me(e,"id","")))return console.log("user",e),V.error({event:"checkUser-error",msg:"cannotGetUserId"}),Promise.reject("cannotGetUserId");if(!er(Me(e,"email","")))return console.log("user",e),V.error({event:"checkUser-error",msg:"cannotGetUserEmail"}),Promise.reject("cannotGetUserEmail");if(!er(Me(e,"name","")))return console.log("user",e),V.error({event:"checkUser-error",msg:"cannotGetUserName"}),Promise.reject("cannotGetUserName");let t=Me(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),V.error({event:"checkUser-error",msg:"cannotGetUserRole"}),Promise.reject("cannotGetUserRole"))})(t);let r=Me(t,G,"");if(!er(r))return console.log("userSelf",t),console.log("mappingBy",G),V.error({event:"getTokenUser-error",msg:"cannotGetUserProp",mappingBy:G}),Promise.reject("cannotGetUserProp");let n=await B.users.select({[G]:r,isActive:"y"}),{user:s,count:o}=wc(n);return o>1?(console.log("mappingBy",G,"count",o),V.error({event:"getTokenUser-error",msg:"ambiguousUserFromPerm",mappingBy:G,count:o}),Promise.reject("ambiguousUserFromPerm")):_t(s)?s:(console.log("userSelf",t),console.log("mappingBy",G),V.error({event:"getTokenUser-error",msg:"cannotGetUserFromPerm",mappingBy:G}),Promise.reject("cannotGetUserFromPerm"))},ee=async(e,t="")=>{let r=await q(e),n=o(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),V.error({event:"getAndVerifyClientUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},te=async(e,t="")=>{let r=null;if(er(e)&&(r=i(e),Wr(r)&&(r=await r)),!_t(r))return console.log("token",ed(e)),V.error({event:"getAndVerifyAppUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");let n=u(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),V.error({event:"getAndVerifyAppUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},re=async(e,t="")=>(await ee(e,t),!0),ne=async(e,t,r)=>await ac(Q,[r],async()=>{let n=Me(t,"from","");if(!er(n))return console.log("inp",t),V.error({event:"syncAndReplaceTabs-error",msg:"invalidFrom",keyTable:r}),Promise.reject("invalidFrom");let s=Me(t,"rows",[]);if(!Er(s))return console.log("inp",t),console.log("keyTable",r),V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",keyTable:r}),Promise.reject("invalidRows");let i=s.findIndex(e=>!gc(e));if(i>=0)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowInvalid",keyTable:r,from:n,row:i}),Promise.reject("invalidRows");let o="users"===r?"cgrups":"grups"===r?"cpemis":"pemis"===r?"crules":null,u=null!==o?(l=o,s.map(e=>ad(e)&&cd(e,l))):null;var l;s=Ot(s,(e,t)=>(e.from=n,e)),s=en(s,da[r].keys);let a={from:!0,userId:!0,timeCreate:!0,userIdUpdate:!0,timeUpdate:!0},c=s.findIndex(e=>!Object.keys(e).some(t=>{return!0!==a[t]&&("string"==typeof(r=e[t])&&""!==r||"number"==typeof r&&Number.isFinite(r)||"boolean"==typeof r);var r}));if(c>=0)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowBlank",keyTable:r,from:n,row:c}),Promise.reject("invalidRows");let d="targets"===r?"id":"grups"===r||"pemis"===r?"name":null;if(null!==d){let e=s.findIndex(e=>!er(Me(e,d)));if(e>=0)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"id"===d?"idInvalid":"nameInvalid",keyTable:r,from:n,row:e,field:d}),Promise.reject("invalidRows")}if("name"===d){let e=oc(s,"name");if(e>=0)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"nameDuplicate",keyTable:r,from:n,row:e,field:"name"}),Promise.reject("invalidRows")}if("users"===r){let e=function(e,t){let r=cc(t);if(null===r||!Array.isArray(e))return null;let n=e=>null!==e&&"object"==typeof e&&"y"===e.isActive,s=e.findIndex(e=>n(e)&&!(ic(e[r])&&e[r].trim().length>0));if(s>=0)return{reason:"mapKeyInvalid",k:s};let i=oc(e,r,n);return i>=0?{reason:"mapKeyDuplicate",k:i}:null}(s,G);if(null!==e)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:e.reason,keyTable:r,from:n,row:e.k,field:G}),Promise.reject("invalidRows")}let w=va(s);if(null!==w){let e="htmlMarkup"===w.reason?"htmlMarkupNotAllowed":"invalidRows";return V.error({event:"syncAndReplaceTabs-error",msg:e,reason:w.reason,keyTable:r,from:n,row:w.k,field:w.field}),Promise.reject(e)}let D=e=>{let t=Me(e,"id");return er(t)||"number"==typeof t&&Number.isFinite(t)?String(t):null},y=s.map(D).filter(e=>null!==e);if(y.length>0){let e=null;try{e=await B[r].select({id:{$in:y}})}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=fc(e,"anUnexpectedErrorOccurred");return V.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let t=new Map;for(let r of e)t.set(String(r.id),r.from);let i=s.findIndex(e=>{let r=D(e);return null!==r&&t.has(r)&&t.get(r)!==n});if(i>=0)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"idOtherFrom",keyTable:r,from:n,row:i,field:"id"}),Promise.reject("invalidRows")}let M="name"===d?"name":"users"===r?cc(G):null;if(null!==M){let e=null;try{e=await B[r].select()}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=fc(e,"anUnexpectedErrorOccurred");return V.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let t=function(e,t,r,n,s={}){if(!Array.isArray(e)||!Array.isArray(t))return-1;let i=!0===s.onlyActive,o=new Set;for(let e of t)null!==e&&"object"==typeof e&&e.from!==r&&(i&&"y"!==e.isActive||ic(e[n])&&o.add(e[n]));for(let t=0;t<e.length;t++){let r=e[t];if(null!==r&&"object"==typeof r&&(!i||"y"===r.isActive)&&ic(r[n])&&o.has(r[n]))return t}return-1}(s,e,n,M,{onlyActive:"users"===r});if(t>=0)return V.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"users"===r?"mapKeyOtherFrom":"nameOtherFrom",keyTable:r,from:n,row:t,field:M}),Promise.reject("invalidRows")}if(null!==u&&u.some(e=>!1===e)){let e=null;try{e=await B[r].select({from:n})}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=fc(e,"anUnexpectedErrorOccurred");return V.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let t=e=>null===va([{id:"keep",[o]:e}]),i="users"===r?function({rows:e,hasKey:t,rowsOldSameFrom:r,mappingBy:n="id",key:s="cgrups",isKeepable:i=()=>!0}){let o=new Map,u=new Map;r.forEach(e=>{ad(e)&&(ld(e.id)&&o.set(e.id,e),"email"!==n&&"name"!==n||!ld(e[n])||""===e[n]||(u.has(e[n])||u.set(e[n],[]),u.get(e[n]).push(e)))});let l="email"===n||"name"===n,a=0,c=0,d=0;return{rows:e.map((e,r)=>{if(!0===t[r]||!ad(e))return e;let w=dd(e),D=null;if(null!==w){if(D=o.has(w)?o.get(w):null,null!==D&&l&&(void 0===e[n]?"":e[n])!==(void 0===D[n]?"":D[n])&&(D=null,d++),null!==D&&l&&ld(e[n])&&""!==e[n]){let t=u.get(e[n]);void 0!==t&&t.some(e=>e!==D)&&(D=null,d++)}}else if(l&&ld(e[n])&&""!==e[n]){let t=u.get(e[n]);D=void 0!==t&&1===t.length?t[0]:null,void 0!==t&&t.length>1&&d++}return null!==D&&cd(D,s)?i(D[s])?(a++,{...e,[s]:D[s]}):(c++,e):e}),nKeep:a,nSkip:c,nConflict:d}}({rows:s,hasKey:u,rowsOldSameFrom:e,mappingBy:G,isKeepable:t}):function({rows:e,hasKey:t,rowsOldSameFrom:r,key:n,cascadeRename:s=!0,isKeepable:i=()=>!0}){let o=e=>void 0===e.name?"":e.name,u=new Set;e.forEach(e=>{let t=dd(e);null!==t&&u.add(t)});let l=new Map,a=new Map;r.forEach(e=>{ad(e)&&ld(e.id)&&(l.set(e.id,e),ld(e.name)&&!u.has(e.id)&&(a.has(e.name)||a.set(e.name,[]),a.get(e.name).push(e)))});let c=0,d=0,w=0;return{rows:e.map((e,r)=>{if(!0===t[r]||!ad(e))return e;let u=dd(e),D=null;if(null!==u)D=l.has(u)?l.get(u):null,null===D||o(D)===o(e)||!1!==s&&ld(o(D))&&ld(o(e))||(D=null,w++);else if(ld(e.name)&&a.has(e.name)){let t=a.get(e.name);1===t.length?D=t[0]:w++}return null!==D&&cd(D,n)?i(D[n])?(c++,{...e,[n]:D[n]}):(d++,e):e}),nKeep:c,nSkip:d,nConflict:w}}({rows:s,hasKey:u,rowsOldSameFrom:e,key:o,cascadeRename:W,isKeepable:t});s=i.rows,i.nKeep>0&&V.info({event:"syncAndReplaceTabs-keepAssign",keyTable:r,from:n,field:o,n:i.nKeep}),i.nSkip>0&&V.warn({event:"syncAndReplaceTabs-keepAssign-skip",keyTable:r,from:n,field:o,n:i.nSkip,reason:"notKeepable"}),i.nConflict>0&&V.warn({event:"syncAndReplaceTabs-keepAssign-skip",keyTable:r,from:n,field:o,n:i.nConflict,reason:"users"===r?"mapKeyConflict":"identityConflict"})}let g=null,m=null;if(Object.prototype.hasOwnProperty.call(Ya,r)){try{let e=await B[r].select();g={rowsOld:e,rowsNew:Mc(r,e,s,n)}}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=fc(e,"anUnexpectedErrorOccurred");return V.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}if(m=Va({keyTable:r,rowsOld:g.rowsOld,rowsNew:g.rowsNew,opt:{cascadeRename:W}}),"grups"===r||"pemis"===r){let e=function(e,t){let r=new Set;t.forEach(e=>{let t=dd(e);null!==t&&r.add(t)});let n=new Map;e.forEach(e=>{ad(e)&&ld(e.id)&&ld(e.name)&&!r.has(e.id)&&(n.has(e.name)||n.set(e.name,new Set),n.get(e.name).add(e.id))});let s=0;return t.forEach(e=>{null!==dd(e)&&ad(e)&&ld(e.name)&&n.has(e.name)&&s++}),s}(g.rowsOld.filter(e=>null!==e&&"object"==typeof e&&e.from===n),s);((e,t,r)=>{let n=`${e}\0${t}`;r>0?O.set(n,{keyTable:e,from:t,n:r,time:(new Date).toISOString()}):O.delete(n)})(r,n,e),e>0&&V.warn({event:"syncAndReplaceTabs-idRenumber",keyTable:r,from:n,n:e})}}let I=async(t,i)=>{let o=null;try{o=await yc({plan:t,holdersOld:i,woItems:B,procOrm:R,userId:e,srLog:V,writeMain:async()=>(await B[r].delAll({from:n}),await R(e,r,"insert",s))})}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=fc(e);return V.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n}),Promise.reject(s)}return o};if(null!==m&&(m.renames.length>0||m.delNames.length>0)){let e=Ya[r].holder;return await ac(Q,[e],async()=>{let t=null;try{t=await B[e].select()}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=fc(e,"anUnexpectedErrorOccurred");return V.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let s=Ha({keyTable:r,rowsOld:g.rowsOld,rowsNew:g.rowsNew,holdersOld:t,opt:{cascadeRename:W}}),i=null!==s.err?s.err:Dc(s);if(null!==i){let e="htmlMarkupNotAllowed"===i?"htmlMarkupNotAllowed":"invalidRows";return V.error({event:"syncAndReplaceTabs-error",msg:e,reason:i,keyTable:r,from:n}),Promise.reject(e)}return await I(s,t)},[r])}return await I(null,[])}),se=async e=>{let t=await(async(e,t)=>{let r=await B.users.select({[e]:t,isActive:"y"}),{user:n}=wc(r);return _t(n)?n:null})("id",e);return _t(t)?t:null},ie=async e=>{let t=await se(e),r=await B.grups.select(),n=await B.pemis.select(),s=await B.targets.select(),i=null;try{i=Aa(t,r,n,s)}catch(t){return console.log("userId",e),console.log("getUserRules",t),V.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules")}if(!_t(i))return console.log("userId",e),V.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules");let o=Ot(Me(i,"grups",[]),"name");return o=Jt(o,";"),{user:{...t,grupsNames:o},rules:Me(i,"rules",[])}},oe="dist",ue="./node_modules/w-web-perm/dist";Qr(ue)&&(oe=ue);let le="index.html";try{let r=e.resolve(oe,"index.tmp");if(Pr(r)||(r=e.resolve(oe,le)),!Pr(r))throw console.log("fpEntryIn",r),new Error("invalid fpEntryIn");let n=e.resolve(oe,le),s=t.readFileSync(r,"utf8");s=Jr(s,"/mperm/","{sfd}/"),s=Jr(s,"{sfd}",y),s=Jr(s,"{urlRedirect}",m),s=Jr(s,"{language}",f),t.writeFileSync(n,s,"utf8")}catch(e){console.log(e),console.log(`can not generate ${le}`)}let ae=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let r=await Ur(async function(){let t=Me(e,"query.token","");if(!er(t))return console.log("req.query",td(Me(e,"query"))),console.log("token",ed(t)),console.log("[API]getUserByToken/check token: invalid token"),V.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await ee(t,"getUserByToken");return _t(r)?(V.info({event:"api/getUserByToken-success",userId:Me(r,"id","")}),r):(console.log("token",ed(t)),console.log("[API]getUserByToken/check user: invalid user"),V.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPerm",handler:async function(e,t){let r=await Ur(async function(){let t=Me(e,"query.token","");if(!er(t))return console.log("req.query",td(Me(e,"query"))),console.log("token",ed(t)),console.log("[API]getPerm/check token: invalid token"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await ee(t,"getPerm");if(!_t(r))return console.log("token",ed(t)),console.log("[API]getPerm/check userSelf: invalid userSelf"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=Me(r,"id","");if(!er(n))return console.log("token",ed(t)),console.log("userSelf",r),console.log("[API]getPerm/check userIdSelf: invalid userIdSelf"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=await ie(n);return _t(s)?(V.info({event:"api/getPerm-success",userId:n}),s):(console.log("token",ed(t)),console.log("userSelf",r),console.log("userIdSelf",n),console.log("[API]getPerm/check userWithRulesSelf: invalid userWithRulesSelf"),V.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPermUserInfor",handler:async function(e,t){let r=await Ur(async function(){let t=Me(e,"query.token","");if(!er(t))return console.log("req.query",td(Me(e,"query"))),console.log("[API]getPermUserInfor/check tokenSelf: invalid tokenSelf"),V.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!_t(await te(t,"getPermUserInfor")))return console.log("req.query",td(Me(e,"query"))),console.log("tokenSelf",ed(t)),console.log("[API]getPermUserInfor/check userSelf: invalid userSelf"),V.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=Me(e,"query.userId","");if(!er(r))return console.log("req.query",td(Me(e,"query"))),console.log("tokenSelf",ed(t)),console.log("[API]getPermUserInfor/check userIdFind: invalid userIdFind"),V.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await ie(r);return _t(n)?(V.info({event:"api/getPermUserInfor-success",userId:r}),n):(console.log("userIdFind",r),console.log("[API]getPermUserInfor/check userWithRulesFind: invalid userWithRulesFind"),V.error({event:"api/getPermUserInfor-error",msg:"userIdNoPermrules"}),Promise.reject("userIdNoPermrules"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let r=await Ur(async function(){let t=Me(e,"query.token","");if(!er(t))return console.log("req.query",td(Me(e,"query"))),console.log("token",ed(t)),console.log("[API]syncAndReplaceTabs/check token: invalid token"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=Me(e,"query.keyTable","");if(!er(r))return console.log("req.query",td(Me(e,"query"))),console.log("keyTable",r),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!["targets","pemis","grups","users"].includes(r))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",r),V.error({event:"api/syncAndReplaceTabs-error",msg:"invalidKeyTable",keyTable:r}),Promise.reject("invalidKeyTable");let n=await te(t,"syncAndReplaceTabs");if(!_t(n))return console.log("token",ed(t)),console.log("[API]syncAndReplaceTabs/check user: invalid user"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=Me(n,"id","");if(!er(s))return console.log("token",ed(t)),console.log("user",n),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),V.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let i=await(async e=>{let t=Me(e,"payload");if(er(t)&&(t=Kr(t)),!_t(t))return console.log("payload",t),V.error({event:"parsePayload-error",msg:"invalidPayload"}),Promise.reject("invalidPayload");let r=Me(t,"from","");if(!er(r))return console.log("payload",t),V.error({event:"parsePayload-error",msg:"invalidFromInPayload"}),Promise.reject("invalidFromInPayload");let n=Me(t,"rows",[]);return Er(n)?{from:r,rows:n}:(console.log("payload",t),V.error({event:"parsePayload-error",msg:"invalidRowsInPayload"}),Promise.reject("invalidRowsInPayload"))})(e),o=await ne(s,i,r);return V.info({event:"api/syncAndReplaceTabs-success",userId:s,keyTable:r}),o})();return zr(r.msg)&&(r.msg=r.msg.message),r}}],ce=at(da),de=ce,we={port:c,pathStaticFiles:oe,apiName:"api",apis:ae,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:r,headers:n,req:s})=>{let i=function(e,t){return er(e)&&kr(t)?0===(t=Cr(t))?e:Vr(e,e.length-t):""}(t,7);if(!er(i))return console.log("apiType",e),console.log("authorization",ed(t)),console.log("invalid token"),V.error({event:"verifyConn-error",ok:!1,apiType:e,msg:"tokenNoPermission"}),!1;let o=!1,u="";await re(i,e).then(()=>{o=!0}).catch(e=>{u="string"==typeof e?e:e&&e.message||"checkTokenFail"});let l=Me(n,"x-forwarded-for","").split(",")[0].trim();er(l)||(l=Me(s,"info.remoteAddress","")||Me(s,"socket.remoteAddress","")||Me(s,"connection.remoteAddress",""));let a=Me(n,"origin",""),c=rd(Me(n,"referer",""));return o?V.info({event:"verifyConn",ok:o,apiType:e,ip:l,origin:a,referer:c}):V.error({event:"verifyConn-error",ok:o,apiType:e,ip:l,origin:a,referer:c,msg:u}),o},getUserIdByToken:async e=>{let t=Me(await i(e),"id","");return er(t)?t:(console.log("token",ed(e)),console.log("userId",t),V.error({event:"getUserIdByToken-error",msg:"cannotFindUserId"}),Promise.reject("cannotFindUserId"))},corsOrigins:["*"],useDbOrm:!0,kpOrm:B,operOrm:ud(R,{srLog:V}),tableNamesExec:ce,methodsExec:["select"],authorizeExec:od({srLog:V}),tableNamesSync:de,kpFunExt:{getWebInfor:e=>(V.info({event:"getWebInfor-success",userId:e}),{webLogo:D,showLanguage:I,language:f,kpLang:F,showModeEditTargets:p,showModeEditPemis:C,showModeEditGrups:h,showModeEditUsers:L,modeEditTargets:b,modeEditPemis:N,modeEditGrups:A,modeEditUsers:x,cascadeRename:W,lockExternalRows:K?"y":"n",syncWarns:[...O.values()],widthTargetId:E,widthTargetDescription:T,widthPemisName:S,widthPemisDescription:Z,widthGrupsName:v,widthGrupsDescription:Y,widthUsersName:X,widthUsersEmail:j,widthUsersDescription:z}),updateTargets:(e,t,r)=>J.updateTargets(e,t,r),updatePemis:(e,t,r)=>J.updatePemis(e,t,r),updateGrups:(e,t,r)=>J.updateGrups(e,t,r),updateUsers:(e,t,r)=>{let n=null!==r&&"object"==typeof r&&void 0!==r.baseline&&null!==r.baseline?{baseline:r.baseline}:{};return"for:grups"===x&&(n.pickKeysOnly=["cgrups"]),J.updateUsers(e,t,n)},getStaEvent:async(e,t,r)=>{try{let n=await _.getStaEvent(e,t,r);return V.info({event:"getStaEvent-success",userId:e}),n}catch(t){throw V.error({event:"getStaEvent-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEvent"}),t}},getStaEventTable:async e=>{try{let t=await _.getStaEventTable(e);return V.info({event:"getStaEventTable-success",userId:e}),t}catch(t){throw V.error({event:"getStaEventTable-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEventTable"}),t}}},fpTableTags:"tableTags-web-perm.json"};try{a=new Uo(we)}catch(e){throw console.log(e),V.error({event:"WServHapiServer-init-error",msg:e&&e.message||"WServHapiServerInitFailed"}),e}return a}});
7
7
  //# sourceMappingURL=w-web-perm.umd.js.map