diff --git a/.gitignore b/.gitignore index 552518b..9b4b59f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,29 @@ +# Node modules node_modules/ -package-lock.json -.netlify + +# Build outputs +dist/ +build/ + +# Rust/WASM build artifacts +wasm-keystroke-capture/target/ +wasm-keystroke-capture/Cargo.lock + +# OS files .DS_Store +Thumbs.db + +# IDE files +.vscode/ +.idea/ + +# Environment variables +.env +.env.local + +# Logs +*.log +npm-debug.log* + +# Local Netlify folder +.netlify diff --git a/.netlify/functions-serve/data-handler/___netlify-telemetry.mjs b/.netlify/functions-serve/data-handler/___netlify-telemetry.mjs new file mode 100644 index 0000000..99af0d9 --- /dev/null +++ b/.netlify/functions-serve/data-handler/___netlify-telemetry.mjs @@ -0,0 +1,86 @@ + +var SERVICE_NAME = undefined; +var SERVICE_VERSION = undefined; +import{createRequire}from"module";const require=createRequire(import.meta.url); +var YY=Object.create;var Du=Object.defineProperty;var KY=Object.getOwnPropertyDescriptor;var zY=Object.getOwnPropertyNames;var $Y=Object.getPrototypeOf,XY=Object.prototype.hasOwnProperty;var bR=r=>{throw TypeError(r)};var V=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var p=(r,e)=>()=>(r&&(e=r(r=0)),e);var T=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ae=(r,e)=>{for(var t in e)Du(r,t,{get:e[t],enumerable:!0})},xR=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of zY(e))!XY.call(r,s)&&s!==t&&Du(r,s,{get:()=>e[s],enumerable:!(o=KY(e,s))||o.enumerable});return r};var Nn=(r,e,t)=>(t=r!=null?YY($Y(r)):{},xR(e||!r||!r.__esModule?Du(t,"default",{value:r,enumerable:!0}):t,r)),ee=r=>xR(Du({},"__esModule",{value:!0}),r);var Tm=(r,e,t)=>e.has(r)||bR("Cannot "+t);var Bo=(r,e,t)=>(Tm(r,e,"read from private field"),t?t.call(r):e.get(r)),Uu=(r,e,t)=>e.has(r)?bR("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),Sm=(r,e,t,o)=>(Tm(r,e,"write to private field"),o?o.call(r,t):e.set(r,t),t),gm=(r,e,t)=>(Tm(r,e,"access private method"),t);var MR,wR=p(()=>{MR=typeof globalThis=="object"?globalThis:global});var DR=p(()=>{wR()});var UR=p(()=>{DR()});var cn,vm=p(()=>{cn="1.9.0"});function WY(r){var e=new Set([r]),t=new Set,o=r.match(kR);if(!o)return function(){return!1};var s={major:+o[1],minor:+o[2],patch:+o[3],prerelease:o[4]};if(s.prerelease!=null)return function(l){return l===r};function a(n){return t.add(n),!1}function i(n){return e.add(n),!0}return function(l){if(e.has(l))return!0;if(t.has(l))return!1;var c=l.match(kR);if(!c)return a(l);var u={major:+c[1],minor:+c[2],patch:+c[3],prerelease:c[4]};return u.prerelease!=null||s.major!==u.major?a(l):s.major===0?s.minor===u.minor&&s.patch<=u.patch?i(l):a(l):s.minor<=u.minor?i(l):a(l)}}var kR,BR,VR=p(()=>{vm();kR=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;BR=WY(cn)});function Pr(r,e,t,o){var s;o===void 0&&(o=!1);var a=Ya[ja]=(s=Ya[ja])!==null&&s!==void 0?s:{version:cn};if(!o&&a[r]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+r);return t.error(i.stack||i.message),!1}if(a.version!==cn){var i=new Error("@opentelemetry/api: Registration of version v"+a.version+" for "+r+" does not match previously registered API v"+cn);return t.error(i.stack||i.message),!1}return a[r]=e,t.debug("@opentelemetry/api: Registered a global for "+r+" v"+cn+"."),!0}function xt(r){var e,t,o=(e=Ya[ja])===null||e===void 0?void 0:e.version;if(!(!o||!BR(o)))return(t=Ya[ja])===null||t===void 0?void 0:t[r]}function Ir(r,e){e.debug("@opentelemetry/api: Unregistering a global for "+r+" v"+cn+".");var t=Ya[ja];t&&delete t[r]}var JY,ja,Ya,Si=p(()=>{UR();vm();VR();JY=cn.split(".")[0],ja=Symbol.for("opentelemetry.js.api."+JY),Ya=MR});function Ka(r,e,t){var o=xt("diag");if(o)return t.unshift(e),o[r].apply(o,ZY([],QY(t),!1))}var QY,ZY,FR,GR=p(()=>{Si();QY=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a},ZY=function(r,e,t){if(t||arguments.length===2)for(var o=0,s=e.length,a;o{(function(r){r[r.NONE=0]="NONE",r[r.ERROR=30]="ERROR",r[r.WARN=50]="WARN",r[r.INFO=60]="INFO",r[r.DEBUG=70]="DEBUG",r[r.VERBOSE=80]="VERBOSE",r[r.ALL=9999]="ALL"})(H||(H={}))});function HR(r,e){rH.ALL&&(r=H.ALL),e=e||{};function t(o,s){var a=e[o];return typeof a=="function"&&r>=s?a.bind(e):function(){}}return{error:t("error",H.ERROR),warn:t("warn",H.WARN),info:t("info",H.INFO),debug:t("debug",H.DEBUG),verbose:t("verbose",H.VERBOSE)}}var qR=p(()=>{ku()});var eK,tK,rK,ft,gi=p(()=>{GR();qR();ku();Si();eK=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a},tK=function(r,e,t){if(t||arguments.length===2)for(var o=0,s=e.length,a;o";u.warn("Current logger will be overwritten from "+_),f.warn("Current logger will overwrite one already registered from "+_)}return Pr("diag",f,t,!0)};t.setLogger=o,t.disable=function(){Ir(rK,t)},t.createComponentLogger=function(s){return new FR(s)},t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}return r.instance=function(){return this._instance||(this._instance=new r),this._instance},r}()});var nK,iK,jR,YR=p(()=>{nK=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a},iK=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],o=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&o>=r.length&&(r=void 0),{value:r&&r[o++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},jR=function(){function r(e){this._entries=e?new Map(e):new Map}return r.prototype.getEntry=function(e){var t=this._entries.get(e);if(t)return Object.assign({},t)},r.prototype.getAllEntries=function(){return Array.from(this._entries.entries()).map(function(e){var t=nK(e,2),o=t[0],s=t[1];return[o,s]})},r.prototype.setEntry=function(e,t){var o=new r(this._entries);return o._entries.set(e,t),o},r.prototype.removeEntry=function(e){var t=new r(this._entries);return t._entries.delete(e),t},r.prototype.removeEntries=function(){for(var e,t,o=[],s=0;s{KR=Symbol("BaggageEntryMetadata")});function $R(r){return r===void 0&&(r={}),new jR(new Map(Object.entries(r)))}function Lr(r){return typeof r!="string"&&(oK.error("Cannot create baggage metadata from unknown type: "+typeof r),r=""),{__TYPE__:KR,toString:function(){return r}}}var oK,ym=p(()=>{gi();YR();zR();oK=ft.instance()});function De(r){return Symbol.for(r)}var sK,Bu,za=p(()=>{sK=function(){function r(e){var t=this;t._currentContext=e?new Map(e):new Map,t.getValue=function(o){return t._currentContext.get(o)},t.setValue=function(o,s){var a=new r(t._currentContext);return a._currentContext.set(o,s),a},t.deleteValue=function(o){var s=new r(t._currentContext);return s._currentContext.delete(o),s}}return r}(),Bu=new sK});var Om,Vu,XR=p(()=>{Om=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}],Vu=function(){function r(){function e(o){return function(){for(var s=[],a=0;a{vi=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var a in s)Object.prototype.hasOwnProperty.call(s,a)&&(o[a]=s[a])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function o(){this.constructor=e}e.prototype=t===null?Object.create(t):(o.prototype=t.prototype,new o)}}(),aK=function(){function r(){}return r.prototype.createGauge=function(e,t){return EK},r.prototype.createHistogram=function(e,t){return mK},r.prototype.createCounter=function(e,t){return _K},r.prototype.createUpDownCounter=function(e,t){return TK},r.prototype.createObservableGauge=function(e,t){return gK},r.prototype.createObservableCounter=function(e,t){return SK},r.prototype.createObservableUpDownCounter=function(e,t){return vK},r.prototype.addBatchObservableCallback=function(e,t){},r.prototype.removeBatchObservableCallback=function(e){},r}(),Fu=function(){function r(){}return r}(),lK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.add=function(t,o){},e}(Fu),cK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.add=function(t,o){},e}(Fu),uK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.record=function(t,o){},e}(Fu),fK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.record=function(t,o){},e}(Fu),Am=function(){function r(){}return r.prototype.addCallback=function(e){},r.prototype.removeCallback=function(e){},r}(),pK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e}(Am),dK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e}(Am),hK=function(r){vi(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e}(Am),Rm=new aK,_K=new lK,EK=new uK,mK=new fK,TK=new cK,SK=new pK,gK=new dK,vK=new hK});var Ot,WR=p(()=>{(function(r){r[r.INT=0]="INT",r[r.DOUBLE=1]="DOUBLE"})(Ot||(Ot={}))});var Hu,qu,Cm=p(()=>{Hu={get:function(r,e){if(r!=null)return r[e]},keys:function(r){return r==null?[]:Object.keys(r)}},qu={set:function(r,e,t){r!=null&&(r[e]=t)}}});var yK,OK,JR,QR=p(()=>{za();yK=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a},OK=function(r,e,t){if(t||arguments.length===2)for(var o=0,s=e.length,a;o{QR();Si();gi();AK=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a},RK=function(r,e,t){if(t||arguments.length===2)for(var o=0,s=e.length,a;o{(function(r){r[r.NONE=0]="NONE",r[r.SAMPLED=1]="SAMPLED"})(se||(se={}))});var Xa,Wa,Vo,ju=p(()=>{Im();Xa="0000000000000000",Wa="00000000000000000000000000000000",Vo={traceId:Wa,spanId:Xa,traceFlags:se.NONE}});var Pn,Yu=p(()=>{ju();Pn=function(){function r(e){e===void 0&&(e=Vo),this._spanContext=e}return r.prototype.spanContext=function(){return this._spanContext},r.prototype.setAttribute=function(e,t){return this},r.prototype.setAttributes=function(e){return this},r.prototype.addEvent=function(e,t){return this},r.prototype.addLink=function(e){return this},r.prototype.addLinks=function(e){return this},r.prototype.setStatus=function(e){return this},r.prototype.updateName=function(e){return this},r.prototype.end=function(e){},r.prototype.isRecording=function(){return!1},r.prototype.recordException=function(e,t){},r}()});function Ku(r){return r.getValue(Lm)||void 0}function ZR(){return Ku(Cn.getInstance().active())}function Ja(r,e){return r.setValue(Lm,e)}function eN(r){return r.deleteValue(Lm)}function tN(r,e){return Ja(r,new Pn(e))}function zu(r){var e;return(e=Ku(r))===null||e===void 0?void 0:e.spanContext()}var Lm,bm=p(()=>{za();Yu();$a();Lm=De("OpenTelemetry Context Key SPAN")});function Mt(r){return CK.test(r)&&r!==Wa}function yi(r){return PK.test(r)&&r!==Xa}function xe(r){return Mt(r.traceId)&&yi(r.spanId)}function rN(r){return new Pn(r)}var CK,PK,$u=p(()=>{ju();Yu();CK=/^([0-9a-f]{32})$/i,PK=/^[0-9a-f]{16}$/i});function IK(r){return typeof r=="object"&&typeof r.spanId=="string"&&typeof r.traceId=="string"&&typeof r.traceFlags=="number"}var xm,Xu,Mm=p(()=>{$a();bm();Yu();$u();xm=Cn.getInstance(),Xu=function(){function r(){}return r.prototype.startSpan=function(e,t,o){o===void 0&&(o=xm.active());var s=!!(t!=null&&t.root);if(s)return new Pn;var a=o&&zu(o);return IK(a)&&xe(a)?new Pn(a):new Pn},r.prototype.startActiveSpan=function(e,t,o,s){var a,i,n;if(!(arguments.length<2)){arguments.length===2?n=t:arguments.length===3?(a=t,n=o):(a=t,i=o,n=s);var l=i??xm.active(),c=this.startSpan(e,a,l),u=Ja(l,c);return xm.with(u,n,void 0,c)}},r}()});var LK,Wu,wm=p(()=>{Mm();LK=new Xu,Wu=function(){function r(e,t,o,s){this._provider=e,this.name=t,this.version=o,this.options=s}return r.prototype.startSpan=function(e,t,o){return this._getTracer().startSpan(e,t,o)},r.prototype.startActiveSpan=function(e,t,o,s){var a=this._getTracer();return Reflect.apply(a.startActiveSpan,a,arguments)},r.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):LK},r}()});var nN,iN=p(()=>{Mm();nN=function(){function r(){}return r.prototype.getTracer=function(e,t,o){return new Xu},r}()});var bK,Qa,Dm=p(()=>{wm();iN();bK=new nN,Qa=function(){function r(){}return r.prototype.getTracer=function(e,t,o){var s;return(s=this.getDelegateTracer(e,t,o))!==null&&s!==void 0?s:new Wu(this,e,t,o)},r.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:bK},r.prototype.setDelegate=function(e){this._delegate=e},r.prototype.getDelegateTracer=function(e,t,o){var s;return(s=this._delegate)===null||s===void 0?void 0:s.getTracer(e,t,o)},r}()});var ke,oN=p(()=>{(function(r){r[r.NOT_RECORD=0]="NOT_RECORD",r[r.RECORD=1]="RECORD",r[r.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(ke||(ke={}))});var qt,sN=p(()=>{(function(r){r[r.INTERNAL=0]="INTERNAL",r[r.SERVER=1]="SERVER",r[r.CLIENT=2]="CLIENT",r[r.PRODUCER=3]="PRODUCER",r[r.CONSUMER=4]="CONSUMER"})(qt||(qt={}))});var br,aN=p(()=>{(function(r){r[r.UNSET=0]="UNSET",r[r.OK=1]="OK",r[r.ERROR=2]="ERROR"})(br||(br={}))});function lN(r){return wK.test(r)}function cN(r){return DK.test(r)&&!UK.test(r)}var Um,xK,MK,wK,DK,UK,uN=p(()=>{Um="[_0-9a-z-*/]",xK="[a-z]"+Um+"{0,255}",MK="[a-z0-9]"+Um+"{0,240}@[a-z]"+Um+"{0,13}",wK=new RegExp("^(?:"+xK+"|"+MK+")$"),DK=/^[ -~]{0,255}[!-~]$/,UK=/,|=/});var fN,kK,pN,dN,hN,_N=p(()=>{uN();fN=32,kK=512,pN=",",dN="=",hN=function(){function r(e){this._internalState=new Map,e&&this._parse(e)}return r.prototype.set=function(e,t){var o=this._clone();return o._internalState.has(e)&&o._internalState.delete(e),o._internalState.set(e,t),o},r.prototype.unset=function(e){var t=this._clone();return t._internalState.delete(e),t},r.prototype.get=function(e){return this._internalState.get(e)},r.prototype.serialize=function(){var e=this;return this._keys().reduce(function(t,o){return t.push(o+dN+e.get(o)),t},[]).join(pN)},r.prototype._parse=function(e){e.length>kK||(this._internalState=e.split(pN).reverse().reduce(function(t,o){var s=o.trim(),a=s.indexOf(dN);if(a!==-1){var i=s.slice(0,a),n=s.slice(a+1,o.length);lN(i)&&cN(n)&&t.set(i,n)}return t},new Map),this._internalState.size>fN&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,fN))))},r.prototype._keys=function(){return Array.from(this._internalState.keys()).reverse()},r.prototype._clone=function(){var e=new r;return e._internalState=new Map(this._internalState),e},r}()});function EN(r){return new hN(r)}var mN=p(()=>{_N()});var me,TN=p(()=>{$a();me=Cn.getInstance()});var S,SN=p(()=>{gi();S=ft.instance()});var BK,gN,vN=p(()=>{Nm();BK=function(){function r(){}return r.prototype.getMeter=function(e,t,o){return Rm},r}(),gN=new BK});var km,yN,ON=p(()=>{vN();Si();gi();km="metrics",yN=function(){function r(){}return r.getInstance=function(){return this._instance||(this._instance=new r),this._instance},r.prototype.setGlobalMeterProvider=function(e){return Pr(km,e,ft.instance())},r.prototype.getMeterProvider=function(){return xt(km)||gN},r.prototype.getMeter=function(e,t,o){return this.getMeterProvider().getMeter(e,t,o)},r.prototype.disable=function(){Ir(km,ft.instance())},r}()});var Oi,AN=p(()=>{ON();Oi=yN.getInstance()});var RN,NN=p(()=>{RN=function(){function r(){}return r.prototype.inject=function(e,t){},r.prototype.extract=function(e,t){return e},r.prototype.fields=function(){return[]},r}()});function Vm(r){return r.getValue(Bm)||void 0}function CN(){return Vm(Cn.getInstance().active())}function PN(r,e){return r.setValue(Bm,e)}function IN(r){return r.deleteValue(Bm)}var Bm,LN=p(()=>{$a();za();Bm=De("OpenTelemetry Baggage Key")});var Fm,VK,bN,xN=p(()=>{Si();NN();Cm();LN();ym();gi();Fm="propagation",VK=new RN,bN=function(){function r(){this.createBaggage=$R,this.getBaggage=Vm,this.getActiveBaggage=CN,this.setBaggage=PN,this.deleteBaggage=IN}return r.getInstance=function(){return this._instance||(this._instance=new r),this._instance},r.prototype.setGlobalPropagator=function(e){return Pr(Fm,e,ft.instance())},r.prototype.inject=function(e,t,o){return o===void 0&&(o=qu),this._getGlobalPropagator().inject(e,t,o)},r.prototype.extract=function(e,t,o){return o===void 0&&(o=Hu),this._getGlobalPropagator().extract(e,t,o)},r.prototype.fields=function(){return this._getGlobalPropagator().fields()},r.prototype.disable=function(){Ir(Fm,ft.instance())},r.prototype._getGlobalPropagator=function(){return xt(Fm)||VK},r}()});var Ue,MN=p(()=>{xN();Ue=bN.getInstance()});var Gm,wN,DN=p(()=>{Si();Dm();$u();bm();gi();Gm="trace",wN=function(){function r(){this._proxyTracerProvider=new Qa,this.wrapSpanContext=rN,this.isSpanContextValid=xe,this.deleteSpan=eN,this.getSpan=Ku,this.getActiveSpan=ZR,this.getSpanContext=zu,this.setSpan=Ja,this.setSpanContext=tN}return r.getInstance=function(){return this._instance||(this._instance=new r),this._instance},r.prototype.setGlobalTracerProvider=function(e){var t=Pr(Gm,this._proxyTracerProvider,ft.instance());return t&&this._proxyTracerProvider.setDelegate(e),t},r.prototype.getTracerProvider=function(){return xt(Gm)||this._proxyTracerProvider},r.prototype.getTracer=function(e,t){return this.getTracerProvider().getTracer(e,t)},r.prototype.disable=function(){Ir(Gm,ft.instance()),this._proxyTracerProvider=new Qa},r}()});var ie,UN=p(()=>{DN();ie=wN.getInstance()});var ot={};Ae(ot,{DiagConsoleLogger:()=>Vu,DiagLogLevel:()=>H,INVALID_SPANID:()=>Xa,INVALID_SPAN_CONTEXT:()=>Vo,INVALID_TRACEID:()=>Wa,ProxyTracer:()=>Wu,ProxyTracerProvider:()=>Qa,ROOT_CONTEXT:()=>Bu,SamplingDecision:()=>ke,SpanKind:()=>qt,SpanStatusCode:()=>br,TraceFlags:()=>se,ValueType:()=>Ot,baggageEntryMetadataFromString:()=>Lr,context:()=>me,createContextKey:()=>De,createNoopMeter:()=>Gu,createTraceState:()=>EN,default:()=>FK,defaultTextMapGetter:()=>Hu,defaultTextMapSetter:()=>qu,diag:()=>S,isSpanContextValid:()=>xe,isValidSpanId:()=>yi,isValidTraceId:()=>Mt,metrics:()=>Oi,propagation:()=>Ue,trace:()=>ie});var FK,P=p(()=>{ym();za();XR();ku();Nm();WR();Cm();wm();Dm();oN();sN();aN();Im();mN();$u();ju();TN();SN();AN();MN();UN();FK={context:me,diag:S,metrics:Oi,propagation:Ue,trace:ie}});function Be(r){for(var e={},t=r.length,o=0;o{});var kN,BN,VN,FN,GN,HN,qN,jN,YN,KN,zN,$N,XN,WN,JN,QN,ZN,eC,tC,rC,nC,iC,oC,sC,aC,lC,cC,uC,fC,pC,dC,hC,_C,EC,mC,TC,SC,gC,vC,yC,OC,AC,RC,NC,CC,PC,IC,LC,bC,xC,MC,wC,DC,UC,kC,BC,VC,FC,GC,HC,qC,jC,YC,KC,zC,$C,XC,WC,JC,QC,ZC,eP,tP,rP,nP,iP,oP,sP,aP,lP,cP,uP,fP,pP,dP,hP,_P,EP,mP,TP,SP,gP,vP,yP,OP,AP,RP,NP,CP,PP,IP,LP,bP,xP,MP,wP,DP,UP,kP,BP,VP,FP,GP,HP,qP,jP,YP,KP,zP,$P,XP,WP,JP,QP,ZP,eI,tI,rI,GK,HK,qK,jK,YK,KK,zK,$K,XK,WK,JK,QK,ZK,ez,tz,rz,nz,iz,oz,sz,az,Za,el,qm,lz,cz,uz,fz,pz,dz,hz,_z,Ez,mz,Tz,Sz,gz,vz,yz,Oz,Az,Rz,Nz,Cz,Pz,Iz,Lz,bz,xz,Mz,wz,Dz,Uz,kz,Bz,Vz,Fz,Gz,Hz,qz,jz,Yz,Kz,zz,$z,Xz,Wz,Jz,Qz,Zz,e$,t$,r$,n$,i$,o$,s$,a$,l$,c$,u$,f$,p$,d$,h$,_$,E$,m$,T$,S$,g$,v$,y$,O$,A$,R$,N$,C$,P$,I$,L$,b$,x$,M$,w$,D$,U$,k$,B$,V$,F$,G$,H$,q$,j$,Y$,K$,z$,$$,X$,W$,J$,Q$,Z$,eX,tX,rX,nX,iX,nI,iI,oI,sI,aI,lI,cI,uI,fI,pI,dI,hI,_I,EI,mI,TI,SI,gI,vI,yI,OI,AI,RI,NI,CI,PI,II,LI,bI,xI,MI,wI,DI,UI,kI,BI,VI,FI,GI,HI,qI,jI,YI,KI,zI,$I,XI,oX,sX,aX,lX,cX,uX,fX,pX,dX,hX,_X,EX,mX,TX,SX,gX,vX,yX,OX,AX,RX,NX,CX,PX,IX,LX,bX,xX,MX,wX,DX,UX,kX,BX,VX,FX,GX,HX,qX,jX,YX,KX,zX,$X,XX,WX,JX,QX,WI,JI,QI,ZI,eL,tL,rL,nL,iL,oL,sL,ZX,eW,tW,rW,nW,iW,oW,sW,aW,lW,cW,uW,aL,lL,cL,uL,fL,fW,pW,dW,hW,_W,EW,pL,dL,hL,mW,TW,SW,gW,_L,EL,mL,TL,vW,yW,OW,AW,RW,SL,gL,vL,yL,OL,AL,RL,NW,CW,PW,IW,LW,bW,xW,MW,NL,CL,PL,IL,LL,wW,DW,UW,kW,BW,VW,bL,xL,ML,wL,DL,UL,kL,BL,VL,FL,GL,HL,qL,jL,YL,KL,zL,$L,XL,WL,JL,FW,GW,HW,qW,jW,YW,KW,zW,$W,XW,WW,JW,QW,ZW,e8,t8,r8,n8,i8,o8,s8,a8,QL,ZL,eb,tb,rb,l8,c8,u8,f8,p8,d8,nb,ib,h8,_8,E8,ob,sb,m8,T8,S8,ab,lb,cb,ub,fb,pb,db,hb,_b,Eb,mb,Tb,Sb,gb,vb,yb,Ob,g8,v8,y8,O8,A8,R8,N8,C8,P8,I8,L8,b8,x8,M8,w8,D8,U8,k8,Ab,Rb,B8,V8,F8,Nb=p(()=>{Hm();kN="aws.lambda.invoked_arn",BN="db.system",VN="db.connection_string",FN="db.user",GN="db.jdbc.driver_classname",HN="db.name",qN="db.statement",jN="db.operation",YN="db.mssql.instance_name",KN="db.cassandra.keyspace",zN="db.cassandra.page_size",$N="db.cassandra.consistency_level",XN="db.cassandra.table",WN="db.cassandra.idempotence",JN="db.cassandra.speculative_execution_count",QN="db.cassandra.coordinator.id",ZN="db.cassandra.coordinator.dc",eC="db.hbase.namespace",tC="db.redis.database_index",rC="db.mongodb.collection",nC="db.sql.table",iC="exception.type",oC="exception.message",sC="exception.stacktrace",aC="exception.escaped",lC="faas.trigger",cC="faas.execution",uC="faas.document.collection",fC="faas.document.operation",pC="faas.document.time",dC="faas.document.name",hC="faas.time",_C="faas.cron",EC="faas.coldstart",mC="faas.invoked_name",TC="faas.invoked_provider",SC="faas.invoked_region",gC="net.transport",vC="net.peer.ip",yC="net.peer.port",OC="net.peer.name",AC="net.host.ip",RC="net.host.port",NC="net.host.name",CC="net.host.connection.type",PC="net.host.connection.subtype",IC="net.host.carrier.name",LC="net.host.carrier.mcc",bC="net.host.carrier.mnc",xC="net.host.carrier.icc",MC="peer.service",wC="enduser.id",DC="enduser.role",UC="enduser.scope",kC="thread.id",BC="thread.name",VC="code.function",FC="code.namespace",GC="code.filepath",HC="code.lineno",qC="http.method",jC="http.url",YC="http.target",KC="http.host",zC="http.scheme",$C="http.status_code",XC="http.flavor",WC="http.user_agent",JC="http.request_content_length",QC="http.request_content_length_uncompressed",ZC="http.response_content_length",eP="http.response_content_length_uncompressed",tP="http.server_name",rP="http.route",nP="http.client_ip",iP="aws.dynamodb.table_names",oP="aws.dynamodb.consumed_capacity",sP="aws.dynamodb.item_collection_metrics",aP="aws.dynamodb.provisioned_read_capacity",lP="aws.dynamodb.provisioned_write_capacity",cP="aws.dynamodb.consistent_read",uP="aws.dynamodb.projection",fP="aws.dynamodb.limit",pP="aws.dynamodb.attributes_to_get",dP="aws.dynamodb.index_name",hP="aws.dynamodb.select",_P="aws.dynamodb.global_secondary_indexes",EP="aws.dynamodb.local_secondary_indexes",mP="aws.dynamodb.exclusive_start_table",TP="aws.dynamodb.table_count",SP="aws.dynamodb.scan_forward",gP="aws.dynamodb.segment",vP="aws.dynamodb.total_segments",yP="aws.dynamodb.count",OP="aws.dynamodb.scanned_count",AP="aws.dynamodb.attribute_definitions",RP="aws.dynamodb.global_secondary_index_updates",NP="messaging.system",CP="messaging.destination",PP="messaging.destination_kind",IP="messaging.temp_destination",LP="messaging.protocol",bP="messaging.protocol_version",xP="messaging.url",MP="messaging.message_id",wP="messaging.conversation_id",DP="messaging.message_payload_size_bytes",UP="messaging.message_payload_compressed_size_bytes",kP="messaging.operation",BP="messaging.consumer_id",VP="messaging.rabbitmq.routing_key",FP="messaging.kafka.message_key",GP="messaging.kafka.consumer_group",HP="messaging.kafka.client_id",qP="messaging.kafka.partition",jP="messaging.kafka.tombstone",YP="rpc.system",KP="rpc.service",zP="rpc.method",$P="rpc.grpc.status_code",XP="rpc.jsonrpc.version",WP="rpc.jsonrpc.request_id",JP="rpc.jsonrpc.error_code",QP="rpc.jsonrpc.error_message",ZP="message.type",eI="message.id",tI="message.compressed_size",rI="message.uncompressed_size",GK=kN,HK=BN,qK=VN,jK=FN,YK=GN,KK=HN,zK=qN,$K=jN,XK=YN,WK=KN,JK=zN,QK=$N,ZK=XN,ez=WN,tz=JN,rz=QN,nz=ZN,iz=eC,oz=tC,sz=rC,az=nC,Za=iC,el=oC,qm=sC,lz=aC,cz=lC,uz=cC,fz=uC,pz=fC,dz=pC,hz=dC,_z=hC,Ez=_C,mz=EC,Tz=mC,Sz=TC,gz=SC,vz=gC,yz=vC,Oz=yC,Az=OC,Rz=AC,Nz=RC,Cz=NC,Pz=CC,Iz=PC,Lz=IC,bz=LC,xz=bC,Mz=xC,wz=MC,Dz=wC,Uz=DC,kz=UC,Bz=kC,Vz=BC,Fz=VC,Gz=FC,Hz=GC,qz=HC,jz=qC,Yz=jC,Kz=YC,zz=KC,$z=zC,Xz=$C,Wz=XC,Jz=WC,Qz=JC,Zz=QC,e$=ZC,t$=eP,r$=tP,n$=rP,i$=nP,o$=iP,s$=oP,a$=sP,l$=aP,c$=lP,u$=cP,f$=uP,p$=fP,d$=pP,h$=dP,_$=hP,E$=_P,m$=EP,T$=mP,S$=TP,g$=SP,v$=gP,y$=vP,O$=yP,A$=OP,R$=AP,N$=RP,C$=NP,P$=CP,I$=PP,L$=IP,b$=LP,x$=bP,M$=xP,w$=MP,D$=wP,U$=DP,k$=UP,B$=kP,V$=BP,F$=VP,G$=FP,H$=GP,q$=HP,j$=qP,Y$=jP,K$=YP,z$=KP,$$=zP,X$=$P,W$=XP,J$=WP,Q$=JP,Z$=QP,eX=ZP,tX=eI,rX=tI,nX=rI,iX=Be([kN,BN,VN,FN,GN,HN,qN,jN,YN,KN,zN,$N,XN,WN,JN,QN,ZN,eC,tC,rC,nC,iC,oC,sC,aC,lC,cC,uC,fC,pC,dC,hC,_C,EC,mC,TC,SC,gC,vC,yC,OC,AC,RC,NC,CC,PC,IC,LC,bC,xC,MC,wC,DC,UC,kC,BC,VC,FC,GC,HC,qC,jC,YC,KC,zC,$C,XC,WC,JC,QC,ZC,eP,tP,rP,nP,iP,oP,sP,aP,lP,cP,uP,fP,pP,dP,hP,_P,EP,mP,TP,SP,gP,vP,yP,OP,AP,RP,NP,CP,PP,IP,LP,bP,xP,MP,wP,DP,UP,kP,BP,VP,FP,GP,HP,qP,jP,YP,KP,zP,$P,XP,WP,JP,QP,ZP,eI,tI,rI]),nI="other_sql",iI="mssql",oI="mysql",sI="oracle",aI="db2",lI="postgresql",cI="redshift",uI="hive",fI="cloudscape",pI="hsqldb",dI="progress",hI="maxdb",_I="hanadb",EI="ingres",mI="firstsql",TI="edb",SI="cache",gI="adabas",vI="firebird",yI="derby",OI="filemaker",AI="informix",RI="instantdb",NI="interbase",CI="mariadb",PI="netezza",II="pervasive",LI="pointbase",bI="sqlite",xI="sybase",MI="teradata",wI="vertica",DI="h2",UI="coldfusion",kI="cassandra",BI="hbase",VI="mongodb",FI="redis",GI="couchbase",HI="couchdb",qI="cosmosdb",jI="dynamodb",YI="neo4j",KI="geode",zI="elasticsearch",$I="memcached",XI="cockroachdb",oX=nI,sX=iI,aX=oI,lX=sI,cX=aI,uX=lI,fX=cI,pX=uI,dX=fI,hX=pI,_X=dI,EX=hI,mX=_I,TX=EI,SX=mI,gX=TI,vX=SI,yX=gI,OX=vI,AX=yI,RX=OI,NX=AI,CX=RI,PX=NI,IX=CI,LX=PI,bX=II,xX=LI,MX=bI,wX=xI,DX=MI,UX=wI,kX=DI,BX=UI,VX=kI,FX=BI,GX=VI,HX=FI,qX=GI,jX=HI,YX=qI,KX=jI,zX=YI,$X=KI,XX=zI,WX=$I,JX=XI,QX=Be([nI,iI,oI,sI,aI,lI,cI,uI,fI,pI,dI,hI,_I,EI,mI,TI,SI,gI,vI,yI,OI,AI,RI,NI,CI,PI,II,LI,bI,xI,MI,wI,DI,UI,kI,BI,VI,FI,GI,HI,qI,jI,YI,KI,zI,$I,XI]),WI="all",JI="each_quorum",QI="quorum",ZI="local_quorum",eL="one",tL="two",rL="three",nL="local_one",iL="any",oL="serial",sL="local_serial",ZX=WI,eW=JI,tW=QI,rW=ZI,nW=eL,iW=tL,oW=rL,sW=nL,aW=iL,lW=oL,cW=sL,uW=Be([WI,JI,QI,ZI,eL,tL,rL,nL,iL,oL,sL]),aL="datasource",lL="http",cL="pubsub",uL="timer",fL="other",fW=aL,pW=lL,dW=cL,hW=uL,_W=fL,EW=Be([aL,lL,cL,uL,fL]),pL="insert",dL="edit",hL="delete",mW=pL,TW=dL,SW=hL,gW=Be([pL,dL,hL]),_L="alibaba_cloud",EL="aws",mL="azure",TL="gcp",vW=_L,yW=EL,OW=mL,AW=TL,RW=Be([_L,EL,mL,TL]),SL="ip_tcp",gL="ip_udp",vL="ip",yL="unix",OL="pipe",AL="inproc",RL="other",NW=SL,CW=gL,PW=vL,IW=yL,LW=OL,bW=AL,xW=RL,MW=Be([SL,gL,vL,yL,OL,AL,RL]),NL="wifi",CL="wired",PL="cell",IL="unavailable",LL="unknown",wW=NL,DW=CL,UW=PL,kW=IL,BW=LL,VW=Be([NL,CL,PL,IL,LL]),bL="gprs",xL="edge",ML="umts",wL="cdma",DL="evdo_0",UL="evdo_a",kL="cdma2000_1xrtt",BL="hsdpa",VL="hsupa",FL="hspa",GL="iden",HL="evdo_b",qL="lte",jL="ehrpd",YL="hspap",KL="gsm",zL="td_scdma",$L="iwlan",XL="nr",WL="nrnsa",JL="lte_ca",FW=bL,GW=xL,HW=ML,qW=wL,jW=DL,YW=UL,KW=kL,zW=BL,$W=VL,XW=FL,WW=GL,JW=HL,QW=qL,ZW=jL,e8=YL,t8=KL,r8=zL,n8=$L,i8=XL,o8=WL,s8=JL,a8=Be([bL,xL,ML,wL,DL,UL,kL,BL,VL,FL,GL,HL,qL,jL,YL,KL,zL,$L,XL,WL,JL]),QL="1.0",ZL="1.1",eb="2.0",tb="SPDY",rb="QUIC",l8=QL,c8=ZL,u8=eb,f8=tb,p8=rb,d8={HTTP_1_0:QL,HTTP_1_1:ZL,HTTP_2_0:eb,SPDY:tb,QUIC:rb},nb="queue",ib="topic",h8=nb,_8=ib,E8=Be([nb,ib]),ob="receive",sb="process",m8=ob,T8=sb,S8=Be([ob,sb]),ab=0,lb=1,cb=2,ub=3,fb=4,pb=5,db=6,hb=7,_b=8,Eb=9,mb=10,Tb=11,Sb=12,gb=13,vb=14,yb=15,Ob=16,g8=ab,v8=lb,y8=cb,O8=ub,A8=fb,R8=pb,N8=db,C8=hb,P8=_b,I8=Eb,L8=mb,b8=Tb,x8=Sb,M8=gb,w8=vb,D8=yb,U8=Ob,k8={OK:ab,CANCELLED:lb,UNKNOWN:cb,INVALID_ARGUMENT:ub,DEADLINE_EXCEEDED:fb,NOT_FOUND:pb,ALREADY_EXISTS:db,PERMISSION_DENIED:hb,RESOURCE_EXHAUSTED:_b,FAILED_PRECONDITION:Eb,ABORTED:mb,OUT_OF_RANGE:Tb,UNIMPLEMENTED:Sb,INTERNAL:gb,UNAVAILABLE:vb,DATA_LOSS:yb,UNAUTHENTICATED:Ob},Ab="SENT",Rb="RECEIVED",B8=Ab,V8=Rb,F8=Be([Ab,Rb])});var Cb=p(()=>{Nb()});var Pb,Ib,Lb,bb,xb,Mb,wb,Db,Ub,kb,Bb,Vb,Fb,Gb,Hb,qb,jb,Yb,Kb,zb,$b,Xb,Wb,Jb,Qb,Zb,e0,t0,r0,n0,i0,o0,s0,a0,l0,c0,u0,f0,p0,d0,h0,_0,E0,m0,T0,S0,g0,v0,y0,O0,A0,R0,N0,C0,P0,I0,L0,b0,x0,M0,w0,D0,U0,k0,B0,V0,F0,G0,H0,q0,j0,Y0,K0,z0,$0,X0,W0,J0,Q0,Z0,ex,G8,H8,q8,j8,Y8,K8,z8,$8,X8,W8,J8,Q8,Z8,e5,t5,r5,n5,i5,o5,s5,a5,l5,c5,u5,f5,p5,d5,h5,_5,E5,jm,Ym,m5,Km,T5,S5,g5,v5,y5,O5,A5,R5,N5,C5,P5,I5,L5,b5,x5,M5,w5,D5,U5,k5,B5,V5,zm,F5,G5,$m,Xm,Wm,Jm,Qm,H5,Zm,eT,st,Fo,tl,at,q5,tT,j5,Se,ge,ve,Y5,K5,z5,$5,X5,tx,rx,nx,ix,W5,J5,Q5,Z5,e7,ox,sx,ax,lx,cx,ux,fx,px,dx,hx,_x,Ex,mx,Tx,Sx,gx,vx,t7,r7,n7,i7,o7,s7,a7,l7,c7,u7,f7,p7,d7,h7,_7,E7,m7,T7,yx,Ox,S7,g7,v7,Ax,Rx,Nx,Cx,Px,Ix,Lx,y7,O7,A7,R7,N7,C7,P7,I7,bx,xx,Mx,wx,Dx,Ux,kx,Bx,Vx,Fx,Gx,L7,b7,x7,M7,w7,D7,U7,k7,B7,V7,F7,G7,Hx,qx,jx,Yx,Kx,zx,$x,Xx,Wx,Jx,H7,q7,j7,Y7,K7,wt,z7,$7,X7,W7,J7,Qx=p(()=>{Hm();Pb="cloud.provider",Ib="cloud.account.id",Lb="cloud.region",bb="cloud.availability_zone",xb="cloud.platform",Mb="aws.ecs.container.arn",wb="aws.ecs.cluster.arn",Db="aws.ecs.launchtype",Ub="aws.ecs.task.arn",kb="aws.ecs.task.family",Bb="aws.ecs.task.revision",Vb="aws.eks.cluster.arn",Fb="aws.log.group.names",Gb="aws.log.group.arns",Hb="aws.log.stream.names",qb="aws.log.stream.arns",jb="container.name",Yb="container.id",Kb="container.runtime",zb="container.image.name",$b="container.image.tag",Xb="deployment.environment",Wb="device.id",Jb="device.model.identifier",Qb="device.model.name",Zb="faas.name",e0="faas.id",t0="faas.version",r0="faas.instance",n0="faas.max_memory",i0="host.id",o0="host.name",s0="host.type",a0="host.arch",l0="host.image.name",c0="host.image.id",u0="host.image.version",f0="k8s.cluster.name",p0="k8s.node.name",d0="k8s.node.uid",h0="k8s.namespace.name",_0="k8s.pod.uid",E0="k8s.pod.name",m0="k8s.container.name",T0="k8s.replicaset.uid",S0="k8s.replicaset.name",g0="k8s.deployment.uid",v0="k8s.deployment.name",y0="k8s.statefulset.uid",O0="k8s.statefulset.name",A0="k8s.daemonset.uid",R0="k8s.daemonset.name",N0="k8s.job.uid",C0="k8s.job.name",P0="k8s.cronjob.uid",I0="k8s.cronjob.name",L0="os.type",b0="os.description",x0="os.name",M0="os.version",w0="process.pid",D0="process.executable.name",U0="process.executable.path",k0="process.command",B0="process.command_line",V0="process.command_args",F0="process.owner",G0="process.runtime.name",H0="process.runtime.version",q0="process.runtime.description",j0="service.name",Y0="service.namespace",K0="service.instance.id",z0="service.version",$0="telemetry.sdk.name",X0="telemetry.sdk.language",W0="telemetry.sdk.version",J0="telemetry.auto.version",Q0="webengine.name",Z0="webengine.version",ex="webengine.description",G8=Pb,H8=Ib,q8=Lb,j8=bb,Y8=xb,K8=Mb,z8=wb,$8=Db,X8=Ub,W8=kb,J8=Bb,Q8=Vb,Z8=Fb,e5=Gb,t5=Hb,r5=qb,n5=jb,i5=Yb,o5=Kb,s5=zb,a5=$b,l5=Xb,c5=Wb,u5=Jb,f5=Qb,p5=Zb,d5=e0,h5=t0,_5=r0,E5=n0,jm=i0,Ym=o0,m5=s0,Km=a0,T5=l0,S5=c0,g5=u0,v5=f0,y5=p0,O5=d0,A5=h0,R5=_0,N5=E0,C5=m0,P5=T0,I5=S0,L5=g0,b5=v0,x5=y0,M5=O0,w5=A0,D5=R0,U5=N0,k5=C0,B5=P0,V5=I0,zm=L0,F5=b0,G5=x0,$m=M0,Xm=w0,Wm=D0,Jm=U0,Qm=k0,H5=B0,Zm=V0,eT=F0,st=G0,Fo=H0,tl=q0,at=j0,q5=Y0,tT=K0,j5=z0,Se=$0,ge=X0,ve=W0,Y5=J0,K5=Q0,z5=Z0,$5=ex,X5=Be([Pb,Ib,Lb,bb,xb,Mb,wb,Db,Ub,kb,Bb,Vb,Fb,Gb,Hb,qb,jb,Yb,Kb,zb,$b,Xb,Wb,Jb,Qb,Zb,e0,t0,r0,n0,i0,o0,s0,a0,l0,c0,u0,f0,p0,d0,h0,_0,E0,m0,T0,S0,g0,v0,y0,O0,A0,R0,N0,C0,P0,I0,L0,b0,x0,M0,w0,D0,U0,k0,B0,V0,F0,G0,H0,q0,j0,Y0,K0,z0,$0,X0,W0,J0,Q0,Z0,ex]),tx="alibaba_cloud",rx="aws",nx="azure",ix="gcp",W5=tx,J5=rx,Q5=nx,Z5=ix,e7=Be([tx,rx,nx,ix]),ox="alibaba_cloud_ecs",sx="alibaba_cloud_fc",ax="aws_ec2",lx="aws_ecs",cx="aws_eks",ux="aws_lambda",fx="aws_elastic_beanstalk",px="azure_vm",dx="azure_container_instances",hx="azure_aks",_x="azure_functions",Ex="azure_app_service",mx="gcp_compute_engine",Tx="gcp_cloud_run",Sx="gcp_kubernetes_engine",gx="gcp_cloud_functions",vx="gcp_app_engine",t7=ox,r7=sx,n7=ax,i7=lx,o7=cx,s7=ux,a7=fx,l7=px,c7=dx,u7=hx,f7=_x,p7=Ex,d7=mx,h7=Tx,_7=Sx,E7=gx,m7=vx,T7=Be([ox,sx,ax,lx,cx,ux,fx,px,dx,hx,_x,Ex,mx,Tx,Sx,gx,vx]),yx="ec2",Ox="fargate",S7=yx,g7=Ox,v7=Be([yx,Ox]),Ax="amd64",Rx="arm32",Nx="arm64",Cx="ia64",Px="ppc32",Ix="ppc64",Lx="x86",y7=Ax,O7=Rx,A7=Nx,R7=Cx,N7=Px,C7=Ix,P7=Lx,I7=Be([Ax,Rx,Nx,Cx,Px,Ix,Lx]),bx="windows",xx="linux",Mx="darwin",wx="freebsd",Dx="netbsd",Ux="openbsd",kx="dragonflybsd",Bx="hpux",Vx="aix",Fx="solaris",Gx="z_os",L7=bx,b7=xx,x7=Mx,M7=wx,w7=Dx,D7=Ux,U7=kx,k7=Bx,B7=Vx,V7=Fx,F7=Gx,G7=Be([bx,xx,Mx,wx,Dx,Ux,kx,Bx,Vx,Fx,Gx]),Hx="cpp",qx="dotnet",jx="erlang",Yx="go",Kx="java",zx="nodejs",$x="php",Xx="python",Wx="ruby",Jx="webjs",H7=Hx,q7=qx,j7=jx,Y7=Yx,K7=Kx,wt=zx,z7=$x,$7=Xx,X7=Wx,W7=Jx,J7=Be([Hx,qx,jx,Yx,Kx,zx,$x,Xx,Wx,Jx])});var Zx=p(()=>{Qx()});var Q7,Z7,e9,t9,r9,n9,i9,o9,s9,a9,l9,c9,u9,f9,p9,d9,h9,_9,E9,m9,T9,S9,g9,v9,y9,O9,A9,R9,N9,C9,P9,I9,L9,b9,x9,M9,w9,D9,U9,k9,B9,V9,F9,G9,H9,q9,j9,Y9,K9,z9,$9,X9,W9,J9,Q9,Z9,eJ,tJ,rJ,nJ,iJ,oJ,sJ,aJ,lJ,cJ,uJ,fJ,pJ,dJ,hJ,_J,EJ,mJ,TJ,SJ,gJ,vJ,yJ,OJ,AJ,RJ,NJ,CJ,PJ,IJ,LJ,bJ,xJ,MJ,wJ,DJ,UJ,kJ,BJ,VJ,FJ,GJ,HJ,qJ,jJ,YJ,KJ,zJ,$J,XJ,WJ,JJ,QJ,ZJ,eM=p(()=>{Q7="aspnetcore.rate_limiting.result",Z7="acquired",e9="endpoint_limiter",t9="global_limiter",r9="request_canceled",n9="telemetry.sdk.language",i9="cpp",o9="dotnet",s9="erlang",a9="go",l9="java",c9="nodejs",u9="php",f9="python",p9="ruby",d9="rust",h9="swift",_9="webjs",E9="telemetry.sdk.name",m9="telemetry.sdk.version",T9="aspnetcore.diagnostics.handler.type",S9="aspnetcore.diagnostics.exception.result",g9="aborted",v9="handled",y9="skipped",O9="unhandled",A9="aspnetcore.rate_limiting.policy",R9="aspnetcore.request.is_unhandled",N9="aspnetcore.routing.is_fallback",C9="aspnetcore.routing.match_status",P9="failure",I9="success",L9="client.address",b9="client.port",x9="error.type",M9="_OTHER",w9="exception.escaped",D9="exception.message",U9="exception.stacktrace",k9="exception.type",B9=function(r){return"http.request.header."+r},V9="http.request.method",F9="_OTHER",G9="CONNECT",H9="DELETE",q9="GET",j9="HEAD",Y9="OPTIONS",K9="PATCH",z9="POST",$9="PUT",X9="TRACE",W9="http.request.method_original",J9="http.request.resend_count",Q9=function(r){return"http.response.header."+r},Z9="http.response.status_code",eJ="http.route",tJ="jvm.gc.action",rJ="jvm.gc.name",nJ="jvm.memory.pool.name",iJ="jvm.memory.type",oJ="heap",sJ="non_heap",aJ="jvm.thread.daemon",lJ="jvm.thread.state",cJ="blocked",uJ="new",fJ="runnable",pJ="terminated",dJ="timed_waiting",hJ="waiting",_J="network.local.address",EJ="network.local.port",mJ="network.peer.address",TJ="network.peer.port",SJ="network.protocol.name",gJ="network.protocol.version",vJ="network.transport",yJ="pipe",OJ="quic",AJ="tcp",RJ="udp",NJ="unix",CJ="network.type",PJ="ipv4",IJ="ipv6",LJ="otel.scope.name",bJ="otel.scope.version",xJ="otel.status_code",MJ="ERROR",wJ="OK",DJ="otel.status_description",UJ="server.address",kJ="server.port",BJ="service.name",VJ="service.version",FJ="signalr.connection.status",GJ="app_shutdown",HJ="normal_closure",qJ="timeout",jJ="signalr.transport",YJ="long_polling",KJ="server_sent_events",zJ="web_sockets",$J="url.fragment",XJ="url.full",WJ="url.path",JJ="url.query",QJ="url.scheme",ZJ="user_agent.original"});var eQ,tQ,rQ,nQ,iQ,oQ,sQ,aQ,lQ,cQ,uQ,fQ,pQ,dQ,hQ,_Q,EQ,mQ,TQ,SQ,gQ,vQ,yQ,OQ,AQ,RQ,NQ,CQ,PQ,IQ,LQ,tM=p(()=>{eQ="aspnetcore.diagnostics.exceptions",tQ="aspnetcore.rate_limiting.active_request_leases",rQ="aspnetcore.rate_limiting.queued_requests",nQ="aspnetcore.rate_limiting.request.time_in_queue",iQ="aspnetcore.rate_limiting.request_lease.duration",oQ="aspnetcore.rate_limiting.requests",sQ="aspnetcore.routing.match_attempts",aQ="http.client.request.duration",lQ="http.server.request.duration",cQ="jvm.class.count",uQ="jvm.class.loaded",fQ="jvm.class.unloaded",pQ="jvm.cpu.count",dQ="jvm.cpu.recent_utilization",hQ="jvm.cpu.time",_Q="jvm.gc.duration",EQ="jvm.memory.committed",mQ="jvm.memory.limit",TQ="jvm.memory.used",SQ="jvm.memory.used_after_last_gc",gQ="jvm.thread.count",vQ="kestrel.active_connections",yQ="kestrel.active_tls_handshakes",OQ="kestrel.connection.duration",AQ="kestrel.queued_connections",RQ="kestrel.queued_requests",NQ="kestrel.rejected_connections",CQ="kestrel.tls_handshake.duration",PQ="kestrel.upgraded_connections",IQ="signalr.server.active_connections",LQ="signalr.server.connection.duration"});var rM={};Ae(rM,{ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED:()=>g9,ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED:()=>v9,ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED:()=>y9,ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED:()=>O9,ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED:()=>Z7,ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER:()=>e9,ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER:()=>t9,ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED:()=>r9,ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE:()=>P9,ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS:()=>I9,ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT:()=>S9,ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE:()=>T9,ATTR_ASPNETCORE_RATE_LIMITING_POLICY:()=>A9,ATTR_ASPNETCORE_RATE_LIMITING_RESULT:()=>Q7,ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED:()=>R9,ATTR_ASPNETCORE_ROUTING_IS_FALLBACK:()=>N9,ATTR_ASPNETCORE_ROUTING_MATCH_STATUS:()=>C9,ATTR_CLIENT_ADDRESS:()=>L9,ATTR_CLIENT_PORT:()=>b9,ATTR_ERROR_TYPE:()=>x9,ATTR_EXCEPTION_ESCAPED:()=>w9,ATTR_EXCEPTION_MESSAGE:()=>D9,ATTR_EXCEPTION_STACKTRACE:()=>U9,ATTR_EXCEPTION_TYPE:()=>k9,ATTR_HTTP_REQUEST_HEADER:()=>B9,ATTR_HTTP_REQUEST_METHOD:()=>V9,ATTR_HTTP_REQUEST_METHOD_ORIGINAL:()=>W9,ATTR_HTTP_REQUEST_RESEND_COUNT:()=>J9,ATTR_HTTP_RESPONSE_HEADER:()=>Q9,ATTR_HTTP_RESPONSE_STATUS_CODE:()=>Z9,ATTR_HTTP_ROUTE:()=>eJ,ATTR_JVM_GC_ACTION:()=>tJ,ATTR_JVM_GC_NAME:()=>rJ,ATTR_JVM_MEMORY_POOL_NAME:()=>nJ,ATTR_JVM_MEMORY_TYPE:()=>iJ,ATTR_JVM_THREAD_DAEMON:()=>aJ,ATTR_JVM_THREAD_STATE:()=>lJ,ATTR_NETWORK_LOCAL_ADDRESS:()=>_J,ATTR_NETWORK_LOCAL_PORT:()=>EJ,ATTR_NETWORK_PEER_ADDRESS:()=>mJ,ATTR_NETWORK_PEER_PORT:()=>TJ,ATTR_NETWORK_PROTOCOL_NAME:()=>SJ,ATTR_NETWORK_PROTOCOL_VERSION:()=>gJ,ATTR_NETWORK_TRANSPORT:()=>vJ,ATTR_NETWORK_TYPE:()=>CJ,ATTR_OTEL_SCOPE_NAME:()=>LJ,ATTR_OTEL_SCOPE_VERSION:()=>bJ,ATTR_OTEL_STATUS_CODE:()=>xJ,ATTR_OTEL_STATUS_DESCRIPTION:()=>DJ,ATTR_SERVER_ADDRESS:()=>UJ,ATTR_SERVER_PORT:()=>kJ,ATTR_SERVICE_NAME:()=>BJ,ATTR_SERVICE_VERSION:()=>VJ,ATTR_SIGNALR_CONNECTION_STATUS:()=>FJ,ATTR_SIGNALR_TRANSPORT:()=>jJ,ATTR_TELEMETRY_SDK_LANGUAGE:()=>n9,ATTR_TELEMETRY_SDK_NAME:()=>E9,ATTR_TELEMETRY_SDK_VERSION:()=>m9,ATTR_URL_FRAGMENT:()=>$J,ATTR_URL_FULL:()=>XJ,ATTR_URL_PATH:()=>WJ,ATTR_URL_QUERY:()=>JJ,ATTR_URL_SCHEME:()=>QJ,ATTR_USER_AGENT_ORIGINAL:()=>ZJ,AWSECSLAUNCHTYPEVALUES_EC2:()=>S7,AWSECSLAUNCHTYPEVALUES_FARGATE:()=>g7,AwsEcsLaunchtypeValues:()=>v7,CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS:()=>t7,CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC:()=>r7,CLOUDPLATFORMVALUES_AWS_EC2:()=>n7,CLOUDPLATFORMVALUES_AWS_ECS:()=>i7,CLOUDPLATFORMVALUES_AWS_EKS:()=>o7,CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK:()=>a7,CLOUDPLATFORMVALUES_AWS_LAMBDA:()=>s7,CLOUDPLATFORMVALUES_AZURE_AKS:()=>u7,CLOUDPLATFORMVALUES_AZURE_APP_SERVICE:()=>p7,CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES:()=>c7,CLOUDPLATFORMVALUES_AZURE_FUNCTIONS:()=>f7,CLOUDPLATFORMVALUES_AZURE_VM:()=>l7,CLOUDPLATFORMVALUES_GCP_APP_ENGINE:()=>m7,CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS:()=>E7,CLOUDPLATFORMVALUES_GCP_CLOUD_RUN:()=>h7,CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE:()=>d7,CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE:()=>_7,CLOUDPROVIDERVALUES_ALIBABA_CLOUD:()=>W5,CLOUDPROVIDERVALUES_AWS:()=>J5,CLOUDPROVIDERVALUES_AZURE:()=>Q5,CLOUDPROVIDERVALUES_GCP:()=>Z5,CloudPlatformValues:()=>T7,CloudProviderValues:()=>e7,DBCASSANDRACONSISTENCYLEVELVALUES_ALL:()=>ZX,DBCASSANDRACONSISTENCYLEVELVALUES_ANY:()=>aW,DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM:()=>eW,DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE:()=>sW,DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM:()=>rW,DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL:()=>cW,DBCASSANDRACONSISTENCYLEVELVALUES_ONE:()=>nW,DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM:()=>tW,DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL:()=>lW,DBCASSANDRACONSISTENCYLEVELVALUES_THREE:()=>oW,DBCASSANDRACONSISTENCYLEVELVALUES_TWO:()=>iW,DBSYSTEMVALUES_ADABAS:()=>yX,DBSYSTEMVALUES_CACHE:()=>vX,DBSYSTEMVALUES_CASSANDRA:()=>VX,DBSYSTEMVALUES_CLOUDSCAPE:()=>dX,DBSYSTEMVALUES_COCKROACHDB:()=>JX,DBSYSTEMVALUES_COLDFUSION:()=>BX,DBSYSTEMVALUES_COSMOSDB:()=>YX,DBSYSTEMVALUES_COUCHBASE:()=>qX,DBSYSTEMVALUES_COUCHDB:()=>jX,DBSYSTEMVALUES_DB2:()=>cX,DBSYSTEMVALUES_DERBY:()=>AX,DBSYSTEMVALUES_DYNAMODB:()=>KX,DBSYSTEMVALUES_EDB:()=>gX,DBSYSTEMVALUES_ELASTICSEARCH:()=>XX,DBSYSTEMVALUES_FILEMAKER:()=>RX,DBSYSTEMVALUES_FIREBIRD:()=>OX,DBSYSTEMVALUES_FIRSTSQL:()=>SX,DBSYSTEMVALUES_GEODE:()=>$X,DBSYSTEMVALUES_H2:()=>kX,DBSYSTEMVALUES_HANADB:()=>mX,DBSYSTEMVALUES_HBASE:()=>FX,DBSYSTEMVALUES_HIVE:()=>pX,DBSYSTEMVALUES_HSQLDB:()=>hX,DBSYSTEMVALUES_INFORMIX:()=>NX,DBSYSTEMVALUES_INGRES:()=>TX,DBSYSTEMVALUES_INSTANTDB:()=>CX,DBSYSTEMVALUES_INTERBASE:()=>PX,DBSYSTEMVALUES_MARIADB:()=>IX,DBSYSTEMVALUES_MAXDB:()=>EX,DBSYSTEMVALUES_MEMCACHED:()=>WX,DBSYSTEMVALUES_MONGODB:()=>GX,DBSYSTEMVALUES_MSSQL:()=>sX,DBSYSTEMVALUES_MYSQL:()=>aX,DBSYSTEMVALUES_NEO4J:()=>zX,DBSYSTEMVALUES_NETEZZA:()=>LX,DBSYSTEMVALUES_ORACLE:()=>lX,DBSYSTEMVALUES_OTHER_SQL:()=>oX,DBSYSTEMVALUES_PERVASIVE:()=>bX,DBSYSTEMVALUES_POINTBASE:()=>xX,DBSYSTEMVALUES_POSTGRESQL:()=>uX,DBSYSTEMVALUES_PROGRESS:()=>_X,DBSYSTEMVALUES_REDIS:()=>HX,DBSYSTEMVALUES_REDSHIFT:()=>fX,DBSYSTEMVALUES_SQLITE:()=>MX,DBSYSTEMVALUES_SYBASE:()=>wX,DBSYSTEMVALUES_TERADATA:()=>DX,DBSYSTEMVALUES_VERTICA:()=>UX,DbCassandraConsistencyLevelValues:()=>uW,DbSystemValues:()=>QX,ERROR_TYPE_VALUE_OTHER:()=>M9,FAASDOCUMENTOPERATIONVALUES_DELETE:()=>SW,FAASDOCUMENTOPERATIONVALUES_EDIT:()=>TW,FAASDOCUMENTOPERATIONVALUES_INSERT:()=>mW,FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD:()=>vW,FAASINVOKEDPROVIDERVALUES_AWS:()=>yW,FAASINVOKEDPROVIDERVALUES_AZURE:()=>OW,FAASINVOKEDPROVIDERVALUES_GCP:()=>AW,FAASTRIGGERVALUES_DATASOURCE:()=>fW,FAASTRIGGERVALUES_HTTP:()=>pW,FAASTRIGGERVALUES_OTHER:()=>_W,FAASTRIGGERVALUES_PUBSUB:()=>dW,FAASTRIGGERVALUES_TIMER:()=>hW,FaasDocumentOperationValues:()=>gW,FaasInvokedProviderValues:()=>RW,FaasTriggerValues:()=>EW,HOSTARCHVALUES_AMD64:()=>y7,HOSTARCHVALUES_ARM32:()=>O7,HOSTARCHVALUES_ARM64:()=>A7,HOSTARCHVALUES_IA64:()=>R7,HOSTARCHVALUES_PPC32:()=>N7,HOSTARCHVALUES_PPC64:()=>C7,HOSTARCHVALUES_X86:()=>P7,HTTPFLAVORVALUES_HTTP_1_0:()=>l8,HTTPFLAVORVALUES_HTTP_1_1:()=>c8,HTTPFLAVORVALUES_HTTP_2_0:()=>u8,HTTPFLAVORVALUES_QUIC:()=>p8,HTTPFLAVORVALUES_SPDY:()=>f8,HTTP_REQUEST_METHOD_VALUE_CONNECT:()=>G9,HTTP_REQUEST_METHOD_VALUE_DELETE:()=>H9,HTTP_REQUEST_METHOD_VALUE_GET:()=>q9,HTTP_REQUEST_METHOD_VALUE_HEAD:()=>j9,HTTP_REQUEST_METHOD_VALUE_OPTIONS:()=>Y9,HTTP_REQUEST_METHOD_VALUE_OTHER:()=>F9,HTTP_REQUEST_METHOD_VALUE_PATCH:()=>K9,HTTP_REQUEST_METHOD_VALUE_POST:()=>z9,HTTP_REQUEST_METHOD_VALUE_PUT:()=>$9,HTTP_REQUEST_METHOD_VALUE_TRACE:()=>X9,HostArchValues:()=>I7,HttpFlavorValues:()=>d8,JVM_MEMORY_TYPE_VALUE_HEAP:()=>oJ,JVM_MEMORY_TYPE_VALUE_NON_HEAP:()=>sJ,JVM_THREAD_STATE_VALUE_BLOCKED:()=>cJ,JVM_THREAD_STATE_VALUE_NEW:()=>uJ,JVM_THREAD_STATE_VALUE_RUNNABLE:()=>fJ,JVM_THREAD_STATE_VALUE_TERMINATED:()=>pJ,JVM_THREAD_STATE_VALUE_TIMED_WAITING:()=>dJ,JVM_THREAD_STATE_VALUE_WAITING:()=>hJ,MESSAGETYPEVALUES_RECEIVED:()=>V8,MESSAGETYPEVALUES_SENT:()=>B8,MESSAGINGDESTINATIONKINDVALUES_QUEUE:()=>h8,MESSAGINGDESTINATIONKINDVALUES_TOPIC:()=>_8,MESSAGINGOPERATIONVALUES_PROCESS:()=>T8,MESSAGINGOPERATIONVALUES_RECEIVE:()=>m8,METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS:()=>eQ,METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES:()=>tQ,METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS:()=>rQ,METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS:()=>oQ,METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION:()=>iQ,METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE:()=>nQ,METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS:()=>sQ,METRIC_HTTP_CLIENT_REQUEST_DURATION:()=>aQ,METRIC_HTTP_SERVER_REQUEST_DURATION:()=>lQ,METRIC_JVM_CLASS_COUNT:()=>cQ,METRIC_JVM_CLASS_LOADED:()=>uQ,METRIC_JVM_CLASS_UNLOADED:()=>fQ,METRIC_JVM_CPU_COUNT:()=>pQ,METRIC_JVM_CPU_RECENT_UTILIZATION:()=>dQ,METRIC_JVM_CPU_TIME:()=>hQ,METRIC_JVM_GC_DURATION:()=>_Q,METRIC_JVM_MEMORY_COMMITTED:()=>EQ,METRIC_JVM_MEMORY_LIMIT:()=>mQ,METRIC_JVM_MEMORY_USED:()=>TQ,METRIC_JVM_MEMORY_USED_AFTER_LAST_GC:()=>SQ,METRIC_JVM_THREAD_COUNT:()=>gQ,METRIC_KESTREL_ACTIVE_CONNECTIONS:()=>vQ,METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES:()=>yQ,METRIC_KESTREL_CONNECTION_DURATION:()=>OQ,METRIC_KESTREL_QUEUED_CONNECTIONS:()=>AQ,METRIC_KESTREL_QUEUED_REQUESTS:()=>RQ,METRIC_KESTREL_REJECTED_CONNECTIONS:()=>NQ,METRIC_KESTREL_TLS_HANDSHAKE_DURATION:()=>CQ,METRIC_KESTREL_UPGRADED_CONNECTIONS:()=>PQ,METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS:()=>IQ,METRIC_SIGNALR_SERVER_CONNECTION_DURATION:()=>LQ,MessageTypeValues:()=>F8,MessagingDestinationKindValues:()=>E8,MessagingOperationValues:()=>S8,NETHOSTCONNECTIONSUBTYPEVALUES_CDMA:()=>qW,NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT:()=>KW,NETHOSTCONNECTIONSUBTYPEVALUES_EDGE:()=>GW,NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD:()=>ZW,NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0:()=>jW,NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A:()=>YW,NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B:()=>JW,NETHOSTCONNECTIONSUBTYPEVALUES_GPRS:()=>FW,NETHOSTCONNECTIONSUBTYPEVALUES_GSM:()=>t8,NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA:()=>zW,NETHOSTCONNECTIONSUBTYPEVALUES_HSPA:()=>XW,NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP:()=>e8,NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA:()=>$W,NETHOSTCONNECTIONSUBTYPEVALUES_IDEN:()=>WW,NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN:()=>n8,NETHOSTCONNECTIONSUBTYPEVALUES_LTE:()=>QW,NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA:()=>s8,NETHOSTCONNECTIONSUBTYPEVALUES_NR:()=>i8,NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA:()=>o8,NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA:()=>r8,NETHOSTCONNECTIONSUBTYPEVALUES_UMTS:()=>HW,NETHOSTCONNECTIONTYPEVALUES_CELL:()=>UW,NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE:()=>kW,NETHOSTCONNECTIONTYPEVALUES_UNKNOWN:()=>BW,NETHOSTCONNECTIONTYPEVALUES_WIFI:()=>wW,NETHOSTCONNECTIONTYPEVALUES_WIRED:()=>DW,NETTRANSPORTVALUES_INPROC:()=>bW,NETTRANSPORTVALUES_IP:()=>PW,NETTRANSPORTVALUES_IP_TCP:()=>NW,NETTRANSPORTVALUES_IP_UDP:()=>CW,NETTRANSPORTVALUES_OTHER:()=>xW,NETTRANSPORTVALUES_PIPE:()=>LW,NETTRANSPORTVALUES_UNIX:()=>IW,NETWORK_TRANSPORT_VALUE_PIPE:()=>yJ,NETWORK_TRANSPORT_VALUE_QUIC:()=>OJ,NETWORK_TRANSPORT_VALUE_TCP:()=>AJ,NETWORK_TRANSPORT_VALUE_UDP:()=>RJ,NETWORK_TRANSPORT_VALUE_UNIX:()=>NJ,NETWORK_TYPE_VALUE_IPV4:()=>PJ,NETWORK_TYPE_VALUE_IPV6:()=>IJ,NetHostConnectionSubtypeValues:()=>a8,NetHostConnectionTypeValues:()=>VW,NetTransportValues:()=>MW,OSTYPEVALUES_AIX:()=>B7,OSTYPEVALUES_DARWIN:()=>x7,OSTYPEVALUES_DRAGONFLYBSD:()=>U7,OSTYPEVALUES_FREEBSD:()=>M7,OSTYPEVALUES_HPUX:()=>k7,OSTYPEVALUES_LINUX:()=>b7,OSTYPEVALUES_NETBSD:()=>w7,OSTYPEVALUES_OPENBSD:()=>D7,OSTYPEVALUES_SOLARIS:()=>V7,OSTYPEVALUES_WINDOWS:()=>L7,OSTYPEVALUES_Z_OS:()=>F7,OTEL_STATUS_CODE_VALUE_ERROR:()=>MJ,OTEL_STATUS_CODE_VALUE_OK:()=>wJ,OsTypeValues:()=>G7,RPCGRPCSTATUSCODEVALUES_ABORTED:()=>L8,RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS:()=>N8,RPCGRPCSTATUSCODEVALUES_CANCELLED:()=>v8,RPCGRPCSTATUSCODEVALUES_DATA_LOSS:()=>D8,RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED:()=>A8,RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION:()=>I8,RPCGRPCSTATUSCODEVALUES_INTERNAL:()=>M8,RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT:()=>O8,RPCGRPCSTATUSCODEVALUES_NOT_FOUND:()=>R8,RPCGRPCSTATUSCODEVALUES_OK:()=>g8,RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE:()=>b8,RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED:()=>C8,RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED:()=>P8,RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED:()=>U8,RPCGRPCSTATUSCODEVALUES_UNAVAILABLE:()=>w8,RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED:()=>x8,RPCGRPCSTATUSCODEVALUES_UNKNOWN:()=>y8,RpcGrpcStatusCodeValues:()=>k8,SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET:()=>d$,SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS:()=>R$,SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ:()=>u$,SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY:()=>s$,SEMATTRS_AWS_DYNAMODB_COUNT:()=>O$,SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE:()=>T$,SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES:()=>E$,SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES:()=>N$,SEMATTRS_AWS_DYNAMODB_INDEX_NAME:()=>h$,SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS:()=>a$,SEMATTRS_AWS_DYNAMODB_LIMIT:()=>p$,SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES:()=>m$,SEMATTRS_AWS_DYNAMODB_PROJECTION:()=>f$,SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY:()=>l$,SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY:()=>c$,SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT:()=>A$,SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD:()=>g$,SEMATTRS_AWS_DYNAMODB_SEGMENT:()=>v$,SEMATTRS_AWS_DYNAMODB_SELECT:()=>_$,SEMATTRS_AWS_DYNAMODB_TABLE_COUNT:()=>S$,SEMATTRS_AWS_DYNAMODB_TABLE_NAMES:()=>o$,SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS:()=>y$,SEMATTRS_AWS_LAMBDA_INVOKED_ARN:()=>GK,SEMATTRS_CODE_FILEPATH:()=>Hz,SEMATTRS_CODE_FUNCTION:()=>Fz,SEMATTRS_CODE_LINENO:()=>qz,SEMATTRS_CODE_NAMESPACE:()=>Gz,SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL:()=>QK,SEMATTRS_DB_CASSANDRA_COORDINATOR_DC:()=>nz,SEMATTRS_DB_CASSANDRA_COORDINATOR_ID:()=>rz,SEMATTRS_DB_CASSANDRA_IDEMPOTENCE:()=>ez,SEMATTRS_DB_CASSANDRA_KEYSPACE:()=>WK,SEMATTRS_DB_CASSANDRA_PAGE_SIZE:()=>JK,SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT:()=>tz,SEMATTRS_DB_CASSANDRA_TABLE:()=>ZK,SEMATTRS_DB_CONNECTION_STRING:()=>qK,SEMATTRS_DB_HBASE_NAMESPACE:()=>iz,SEMATTRS_DB_JDBC_DRIVER_CLASSNAME:()=>YK,SEMATTRS_DB_MONGODB_COLLECTION:()=>sz,SEMATTRS_DB_MSSQL_INSTANCE_NAME:()=>XK,SEMATTRS_DB_NAME:()=>KK,SEMATTRS_DB_OPERATION:()=>$K,SEMATTRS_DB_REDIS_DATABASE_INDEX:()=>oz,SEMATTRS_DB_SQL_TABLE:()=>az,SEMATTRS_DB_STATEMENT:()=>zK,SEMATTRS_DB_SYSTEM:()=>HK,SEMATTRS_DB_USER:()=>jK,SEMATTRS_ENDUSER_ID:()=>Dz,SEMATTRS_ENDUSER_ROLE:()=>Uz,SEMATTRS_ENDUSER_SCOPE:()=>kz,SEMATTRS_EXCEPTION_ESCAPED:()=>lz,SEMATTRS_EXCEPTION_MESSAGE:()=>el,SEMATTRS_EXCEPTION_STACKTRACE:()=>qm,SEMATTRS_EXCEPTION_TYPE:()=>Za,SEMATTRS_FAAS_COLDSTART:()=>mz,SEMATTRS_FAAS_CRON:()=>Ez,SEMATTRS_FAAS_DOCUMENT_COLLECTION:()=>fz,SEMATTRS_FAAS_DOCUMENT_NAME:()=>hz,SEMATTRS_FAAS_DOCUMENT_OPERATION:()=>pz,SEMATTRS_FAAS_DOCUMENT_TIME:()=>dz,SEMATTRS_FAAS_EXECUTION:()=>uz,SEMATTRS_FAAS_INVOKED_NAME:()=>Tz,SEMATTRS_FAAS_INVOKED_PROVIDER:()=>Sz,SEMATTRS_FAAS_INVOKED_REGION:()=>gz,SEMATTRS_FAAS_TIME:()=>_z,SEMATTRS_FAAS_TRIGGER:()=>cz,SEMATTRS_HTTP_CLIENT_IP:()=>i$,SEMATTRS_HTTP_FLAVOR:()=>Wz,SEMATTRS_HTTP_HOST:()=>zz,SEMATTRS_HTTP_METHOD:()=>jz,SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH:()=>Qz,SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED:()=>Zz,SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH:()=>e$,SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED:()=>t$,SEMATTRS_HTTP_ROUTE:()=>n$,SEMATTRS_HTTP_SCHEME:()=>$z,SEMATTRS_HTTP_SERVER_NAME:()=>r$,SEMATTRS_HTTP_STATUS_CODE:()=>Xz,SEMATTRS_HTTP_TARGET:()=>Kz,SEMATTRS_HTTP_URL:()=>Yz,SEMATTRS_HTTP_USER_AGENT:()=>Jz,SEMATTRS_MESSAGE_COMPRESSED_SIZE:()=>rX,SEMATTRS_MESSAGE_ID:()=>tX,SEMATTRS_MESSAGE_TYPE:()=>eX,SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE:()=>nX,SEMATTRS_MESSAGING_CONSUMER_ID:()=>V$,SEMATTRS_MESSAGING_CONVERSATION_ID:()=>D$,SEMATTRS_MESSAGING_DESTINATION:()=>P$,SEMATTRS_MESSAGING_DESTINATION_KIND:()=>I$,SEMATTRS_MESSAGING_KAFKA_CLIENT_ID:()=>q$,SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP:()=>H$,SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY:()=>G$,SEMATTRS_MESSAGING_KAFKA_PARTITION:()=>j$,SEMATTRS_MESSAGING_KAFKA_TOMBSTONE:()=>Y$,SEMATTRS_MESSAGING_MESSAGE_ID:()=>w$,SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES:()=>k$,SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES:()=>U$,SEMATTRS_MESSAGING_OPERATION:()=>B$,SEMATTRS_MESSAGING_PROTOCOL:()=>b$,SEMATTRS_MESSAGING_PROTOCOL_VERSION:()=>x$,SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY:()=>F$,SEMATTRS_MESSAGING_SYSTEM:()=>C$,SEMATTRS_MESSAGING_TEMP_DESTINATION:()=>L$,SEMATTRS_MESSAGING_URL:()=>M$,SEMATTRS_NET_HOST_CARRIER_ICC:()=>Mz,SEMATTRS_NET_HOST_CARRIER_MCC:()=>bz,SEMATTRS_NET_HOST_CARRIER_MNC:()=>xz,SEMATTRS_NET_HOST_CARRIER_NAME:()=>Lz,SEMATTRS_NET_HOST_CONNECTION_SUBTYPE:()=>Iz,SEMATTRS_NET_HOST_CONNECTION_TYPE:()=>Pz,SEMATTRS_NET_HOST_IP:()=>Rz,SEMATTRS_NET_HOST_NAME:()=>Cz,SEMATTRS_NET_HOST_PORT:()=>Nz,SEMATTRS_NET_PEER_IP:()=>yz,SEMATTRS_NET_PEER_NAME:()=>Az,SEMATTRS_NET_PEER_PORT:()=>Oz,SEMATTRS_NET_TRANSPORT:()=>vz,SEMATTRS_PEER_SERVICE:()=>wz,SEMATTRS_RPC_GRPC_STATUS_CODE:()=>X$,SEMATTRS_RPC_JSONRPC_ERROR_CODE:()=>Q$,SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE:()=>Z$,SEMATTRS_RPC_JSONRPC_REQUEST_ID:()=>J$,SEMATTRS_RPC_JSONRPC_VERSION:()=>W$,SEMATTRS_RPC_METHOD:()=>$$,SEMATTRS_RPC_SERVICE:()=>z$,SEMATTRS_RPC_SYSTEM:()=>K$,SEMATTRS_THREAD_ID:()=>Bz,SEMATTRS_THREAD_NAME:()=>Vz,SEMRESATTRS_AWS_ECS_CLUSTER_ARN:()=>z8,SEMRESATTRS_AWS_ECS_CONTAINER_ARN:()=>K8,SEMRESATTRS_AWS_ECS_LAUNCHTYPE:()=>$8,SEMRESATTRS_AWS_ECS_TASK_ARN:()=>X8,SEMRESATTRS_AWS_ECS_TASK_FAMILY:()=>W8,SEMRESATTRS_AWS_ECS_TASK_REVISION:()=>J8,SEMRESATTRS_AWS_EKS_CLUSTER_ARN:()=>Q8,SEMRESATTRS_AWS_LOG_GROUP_ARNS:()=>e5,SEMRESATTRS_AWS_LOG_GROUP_NAMES:()=>Z8,SEMRESATTRS_AWS_LOG_STREAM_ARNS:()=>r5,SEMRESATTRS_AWS_LOG_STREAM_NAMES:()=>t5,SEMRESATTRS_CLOUD_ACCOUNT_ID:()=>H8,SEMRESATTRS_CLOUD_AVAILABILITY_ZONE:()=>j8,SEMRESATTRS_CLOUD_PLATFORM:()=>Y8,SEMRESATTRS_CLOUD_PROVIDER:()=>G8,SEMRESATTRS_CLOUD_REGION:()=>q8,SEMRESATTRS_CONTAINER_ID:()=>i5,SEMRESATTRS_CONTAINER_IMAGE_NAME:()=>s5,SEMRESATTRS_CONTAINER_IMAGE_TAG:()=>a5,SEMRESATTRS_CONTAINER_NAME:()=>n5,SEMRESATTRS_CONTAINER_RUNTIME:()=>o5,SEMRESATTRS_DEPLOYMENT_ENVIRONMENT:()=>l5,SEMRESATTRS_DEVICE_ID:()=>c5,SEMRESATTRS_DEVICE_MODEL_IDENTIFIER:()=>u5,SEMRESATTRS_DEVICE_MODEL_NAME:()=>f5,SEMRESATTRS_FAAS_ID:()=>d5,SEMRESATTRS_FAAS_INSTANCE:()=>_5,SEMRESATTRS_FAAS_MAX_MEMORY:()=>E5,SEMRESATTRS_FAAS_NAME:()=>p5,SEMRESATTRS_FAAS_VERSION:()=>h5,SEMRESATTRS_HOST_ARCH:()=>Km,SEMRESATTRS_HOST_ID:()=>jm,SEMRESATTRS_HOST_IMAGE_ID:()=>S5,SEMRESATTRS_HOST_IMAGE_NAME:()=>T5,SEMRESATTRS_HOST_IMAGE_VERSION:()=>g5,SEMRESATTRS_HOST_NAME:()=>Ym,SEMRESATTRS_HOST_TYPE:()=>m5,SEMRESATTRS_K8S_CLUSTER_NAME:()=>v5,SEMRESATTRS_K8S_CONTAINER_NAME:()=>C5,SEMRESATTRS_K8S_CRONJOB_NAME:()=>V5,SEMRESATTRS_K8S_CRONJOB_UID:()=>B5,SEMRESATTRS_K8S_DAEMONSET_NAME:()=>D5,SEMRESATTRS_K8S_DAEMONSET_UID:()=>w5,SEMRESATTRS_K8S_DEPLOYMENT_NAME:()=>b5,SEMRESATTRS_K8S_DEPLOYMENT_UID:()=>L5,SEMRESATTRS_K8S_JOB_NAME:()=>k5,SEMRESATTRS_K8S_JOB_UID:()=>U5,SEMRESATTRS_K8S_NAMESPACE_NAME:()=>A5,SEMRESATTRS_K8S_NODE_NAME:()=>y5,SEMRESATTRS_K8S_NODE_UID:()=>O5,SEMRESATTRS_K8S_POD_NAME:()=>N5,SEMRESATTRS_K8S_POD_UID:()=>R5,SEMRESATTRS_K8S_REPLICASET_NAME:()=>I5,SEMRESATTRS_K8S_REPLICASET_UID:()=>P5,SEMRESATTRS_K8S_STATEFULSET_NAME:()=>M5,SEMRESATTRS_K8S_STATEFULSET_UID:()=>x5,SEMRESATTRS_OS_DESCRIPTION:()=>F5,SEMRESATTRS_OS_NAME:()=>G5,SEMRESATTRS_OS_TYPE:()=>zm,SEMRESATTRS_OS_VERSION:()=>$m,SEMRESATTRS_PROCESS_COMMAND:()=>Qm,SEMRESATTRS_PROCESS_COMMAND_ARGS:()=>Zm,SEMRESATTRS_PROCESS_COMMAND_LINE:()=>H5,SEMRESATTRS_PROCESS_EXECUTABLE_NAME:()=>Wm,SEMRESATTRS_PROCESS_EXECUTABLE_PATH:()=>Jm,SEMRESATTRS_PROCESS_OWNER:()=>eT,SEMRESATTRS_PROCESS_PID:()=>Xm,SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION:()=>tl,SEMRESATTRS_PROCESS_RUNTIME_NAME:()=>st,SEMRESATTRS_PROCESS_RUNTIME_VERSION:()=>Fo,SEMRESATTRS_SERVICE_INSTANCE_ID:()=>tT,SEMRESATTRS_SERVICE_NAME:()=>at,SEMRESATTRS_SERVICE_NAMESPACE:()=>q5,SEMRESATTRS_SERVICE_VERSION:()=>j5,SEMRESATTRS_TELEMETRY_AUTO_VERSION:()=>Y5,SEMRESATTRS_TELEMETRY_SDK_LANGUAGE:()=>ge,SEMRESATTRS_TELEMETRY_SDK_NAME:()=>Se,SEMRESATTRS_TELEMETRY_SDK_VERSION:()=>ve,SEMRESATTRS_WEBENGINE_DESCRIPTION:()=>$5,SEMRESATTRS_WEBENGINE_NAME:()=>K5,SEMRESATTRS_WEBENGINE_VERSION:()=>z5,SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN:()=>GJ,SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE:()=>HJ,SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT:()=>qJ,SIGNALR_TRANSPORT_VALUE_LONG_POLLING:()=>YJ,SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS:()=>KJ,SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS:()=>zJ,SemanticAttributes:()=>iX,SemanticResourceAttributes:()=>X5,TELEMETRYSDKLANGUAGEVALUES_CPP:()=>H7,TELEMETRYSDKLANGUAGEVALUES_DOTNET:()=>q7,TELEMETRYSDKLANGUAGEVALUES_ERLANG:()=>j7,TELEMETRYSDKLANGUAGEVALUES_GO:()=>Y7,TELEMETRYSDKLANGUAGEVALUES_JAVA:()=>K7,TELEMETRYSDKLANGUAGEVALUES_NODEJS:()=>wt,TELEMETRYSDKLANGUAGEVALUES_PHP:()=>z7,TELEMETRYSDKLANGUAGEVALUES_PYTHON:()=>$7,TELEMETRYSDKLANGUAGEVALUES_RUBY:()=>X7,TELEMETRYSDKLANGUAGEVALUES_WEBJS:()=>W7,TELEMETRY_SDK_LANGUAGE_VALUE_CPP:()=>i9,TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET:()=>o9,TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG:()=>s9,TELEMETRY_SDK_LANGUAGE_VALUE_GO:()=>a9,TELEMETRY_SDK_LANGUAGE_VALUE_JAVA:()=>l9,TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS:()=>c9,TELEMETRY_SDK_LANGUAGE_VALUE_PHP:()=>u9,TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON:()=>f9,TELEMETRY_SDK_LANGUAGE_VALUE_RUBY:()=>p9,TELEMETRY_SDK_LANGUAGE_VALUE_RUST:()=>d9,TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT:()=>h9,TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS:()=>_9,TelemetrySdkLanguageValues:()=>J7});var Ve=p(()=>{Cb();Zx();eM();tM()});function Zu(r){return r.setValue(rT,!0)}function iM(r){return r.deleteValue(rT)}function At(r){return r.getValue(rT)===!0}var rT,nl=p(()=>{P();rT=De("OpenTelemetry SDK Context Key SUPPRESS_TRACING")});var oM,ef,Ho,tf,nT=p(()=>{oM="=",ef=";",Ho=",",tf="baggage"});function rf(r){return r.reduce((e,t)=>{let o=`${e}${e!==""?Ho:""}${t}`;return o.length>8192?e:o},"")}function nf(r){return r.getAllEntries().map(([e,t])=>{let o=`${encodeURIComponent(e)}=${encodeURIComponent(t.value)}`;return t.metadata!==void 0&&(o+=ef+t.metadata.toString()),o})}function il(r){let e=r.split(ef);if(e.length<=0)return;let t=e.shift();if(!t)return;let o=t.indexOf(oM);if(o<=0)return;let s=decodeURIComponent(t.substring(0,o).trim()),a=decodeURIComponent(t.substring(o+1).trim()),i;return e.length>0&&(i=Lr(e.join(ef))),{key:s,value:a,metadata:i}}function sM(r){return typeof r!="string"||r.length===0?{}:r.split(Ho).map(e=>il(e)).filter(e=>e!==void 0&&e.value.length>0).reduce((e,t)=>(e[t.key]=t.value,e),{})}var iT=p(()=>{P();nT()});var of,aM=p(()=>{P();nl();nT();iT();of=class{inject(e,t,o){let s=Ue.getBaggage(e);if(!s||At(e))return;let a=nf(s).filter(n=>n.length<=4096).slice(0,180),i=rf(a);i.length>0&&o.set(t,tf,i)}extract(e,t,o){let s=o.get(t,tf),a=Array.isArray(s)?s.join(Ho):s;if(!a)return e;let i={};return a.length===0||(a.split(Ho).forEach(l=>{let c=il(l);if(c){let u={value:c.value};c.metadata&&(u.metadata=c.metadata),i[c.key]=u}}),Object.entries(i).length===0)?e:Ue.setBaggage(e,Ue.createBaggage(i))}fields(){return[tf]}}});var sf,lM=p(()=>{sf=class{constructor(e,t){this._monotonicClock=t,this._epochMillis=e.now(),this._performanceMillis=t.now()}now(){let e=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+e}}});function cM(r){let e={};if(typeof r!="object"||r==null)return e;for(let[t,o]of Object.entries(r)){if(!oT(t)){S.warn(`Invalid attribute key: ${t}`);continue}if(!sT(o)){S.warn(`Invalid attribute value set for key: ${t}`);continue}Array.isArray(o)?e[t]=o.slice():e[t]=o}return e}function oT(r){return typeof r=="string"&&r.length>0}function sT(r){return r==null?!0:Array.isArray(r)?GQ(r):uM(r)}function GQ(r){let e;for(let t of r)if(t!=null){if(!e){if(uM(t)){e=typeof t;continue}return!1}if(typeof t!==e)return!1}return!0}function uM(r){switch(typeof r){case"number":case"boolean":case"string":return!0}return!1}var fM=p(()=>{P()});function af(){return r=>{S.error(HQ(r))}}function HQ(r){return typeof r=="string"?r:JSON.stringify(qQ(r))}function qQ(r){let e={},t=r;for(;t!==null;)Object.getOwnPropertyNames(t).forEach(o=>{if(e[o])return;let s=t[o];s&&(e[o]=String(s))}),t=Object.getPrototypeOf(t);return e}var aT=p(()=>{P()});function dM(r){pM=r}function lf(r){try{pM(r)}catch{}}var pM,lT=p(()=>{aT();pM=af()});var qo,cT=p(()=>{(function(r){r.AlwaysOff="always_off",r.AlwaysOn="always_on",r.ParentBasedAlwaysOff="parentbased_always_off",r.ParentBasedAlwaysOn="parentbased_always_on",r.ParentBasedTraceIdRatio="parentbased_traceidratio",r.TraceIdRatio="traceidratio"})(qo||(qo={}))});function KQ(r){return YQ.indexOf(r)>-1}function $Q(r){return zQ.indexOf(r)>-1}function WQ(r){return XQ.indexOf(r)>-1}function JQ(r,e,t){if(typeof t[r]>"u")return;let o=String(t[r]);e[r]=o.toLowerCase()==="true"}function QQ(r,e,t,o=-1/0,s=1/0){if(typeof t[r]<"u"){let a=Number(t[r]);isNaN(a)||(as?e[r]=s:e[r]=a)}}function ZQ(r,e,t,o=jQ){let s=t[r];typeof s=="string"&&(e[r]=s.split(o).map(a=>a.trim()))}function tZ(r,e,t){let o=t[r];if(typeof o=="string"){let s=eZ[o.toUpperCase()];s!=null&&(e[r]=s)}}function ll(r){let e={};for(let t in al){let o=t;switch(o){case"OTEL_LOG_LEVEL":tZ(o,e,r);break;default:if(KQ(o))JQ(o,e,r);else if($Q(o))QQ(o,e,r);else if(WQ(o))ZQ(o,e,r);else{let s=r[o];typeof s<"u"&&s!==null&&(e[o]=String(s))}}}return e}var jQ,YQ,zQ,XQ,ol,sl,uT,fT,al,eZ,pT=p(()=>{P();cT();jQ=",",YQ=["OTEL_SDK_DISABLED"];zQ=["OTEL_BSP_EXPORT_TIMEOUT","OTEL_BSP_MAX_EXPORT_BATCH_SIZE","OTEL_BSP_MAX_QUEUE_SIZE","OTEL_BSP_SCHEDULE_DELAY","OTEL_BLRP_EXPORT_TIMEOUT","OTEL_BLRP_MAX_EXPORT_BATCH_SIZE","OTEL_BLRP_MAX_QUEUE_SIZE","OTEL_BLRP_SCHEDULE_DELAY","OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_SPAN_LINK_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_EXPORTER_OTLP_TIMEOUT","OTEL_EXPORTER_OTLP_TRACES_TIMEOUT","OTEL_EXPORTER_OTLP_METRICS_TIMEOUT","OTEL_EXPORTER_OTLP_LOGS_TIMEOUT","OTEL_EXPORTER_JAEGER_AGENT_PORT"];XQ=["OTEL_NO_PATCH_MODULES","OTEL_PROPAGATORS","OTEL_SEMCONV_STABILITY_OPT_IN"];ol=1/0,sl=128,uT=128,fT=128,al={OTEL_SDK_DISABLED:!1,CONTAINER_NAME:"",ECS_CONTAINER_METADATA_URI_V4:"",ECS_CONTAINER_METADATA_URI:"",HOSTNAME:"",KUBERNETES_SERVICE_HOST:"",NAMESPACE:"",OTEL_BSP_EXPORT_TIMEOUT:3e4,OTEL_BSP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BSP_MAX_QUEUE_SIZE:2048,OTEL_BSP_SCHEDULE_DELAY:5e3,OTEL_BLRP_EXPORT_TIMEOUT:3e4,OTEL_BLRP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BLRP_MAX_QUEUE_SIZE:2048,OTEL_BLRP_SCHEDULE_DELAY:5e3,OTEL_EXPORTER_JAEGER_AGENT_HOST:"",OTEL_EXPORTER_JAEGER_AGENT_PORT:6832,OTEL_EXPORTER_JAEGER_ENDPOINT:"",OTEL_EXPORTER_JAEGER_PASSWORD:"",OTEL_EXPORTER_JAEGER_USER:"",OTEL_EXPORTER_OTLP_ENDPOINT:"",OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:"",OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:"",OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:"",OTEL_EXPORTER_OTLP_HEADERS:"",OTEL_EXPORTER_OTLP_TRACES_HEADERS:"",OTEL_EXPORTER_OTLP_METRICS_HEADERS:"",OTEL_EXPORTER_OTLP_LOGS_HEADERS:"",OTEL_EXPORTER_OTLP_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_TRACES_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_METRICS_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_LOGS_TIMEOUT:1e4,OTEL_EXPORTER_ZIPKIN_ENDPOINT:"http://localhost:9411/api/v2/spans",OTEL_LOG_LEVEL:H.INFO,OTEL_NO_PATCH_MODULES:[],OTEL_PROPAGATORS:["tracecontext","baggage"],OTEL_RESOURCE_ATTRIBUTES:"",OTEL_SERVICE_NAME:"",OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT:ol,OTEL_ATTRIBUTE_COUNT_LIMIT:sl,OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT:ol,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT:sl,OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT:ol,OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT:sl,OTEL_SPAN_EVENT_COUNT_LIMIT:128,OTEL_SPAN_LINK_COUNT_LIMIT:128,OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:uT,OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:fT,OTEL_TRACES_EXPORTER:"",OTEL_TRACES_SAMPLER:qo.ParentBasedAlwaysOn,OTEL_TRACES_SAMPLER_ARG:"",OTEL_LOGS_EXPORTER:"",OTEL_EXPORTER_OTLP_INSECURE:"",OTEL_EXPORTER_OTLP_TRACES_INSECURE:"",OTEL_EXPORTER_OTLP_METRICS_INSECURE:"",OTEL_EXPORTER_OTLP_LOGS_INSECURE:"",OTEL_EXPORTER_OTLP_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_COMPRESSION:"",OTEL_EXPORTER_OTLP_TRACES_COMPRESSION:"",OTEL_EXPORTER_OTLP_METRICS_COMPRESSION:"",OTEL_EXPORTER_OTLP_LOGS_COMPRESSION:"",OTEL_EXPORTER_OTLP_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_TRACES_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_LOGS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE:"cumulative",OTEL_SEMCONV_STABILITY_OPT_IN:[]};eZ={ALL:H.ALL,VERBOSE:H.VERBOSE,DEBUG:H.DEBUG,INFO:H.INFO,WARN:H.WARN,ERROR:H.ERROR,NONE:H.NONE}});function jo(){let r=ll(process.env);return Object.assign({},al,r)}function cf(){return ll(process.env)}var hM=p(()=>{pT()});var uf,_M=p(()=>{uf=typeof globalThis=="object"?globalThis:global});function EM(r){return r>=48&&r<=57?r-48:r>=97&&r<=102?r-87:r-55}function ff(r){let e=new Uint8Array(r.length/2),t=0;for(let o=0;o{});function pf(r){return Buffer.from(ff(r)).toString("base64")}var mM=p(()=>{dT()});function TM(r){return function(){for(let t=0;t>>0,t*4);for(let t=0;t0);t++)t===r-1&&(df[r-1]=1);return df.toString("hex",0,r)}}var Yo,df,SM=p(()=>{Yo=class{constructor(){this.generateTraceId=TM(16),this.generateSpanId=TM(8)}},df=Buffer.allocUnsafe(16)});import{performance as rZ}from"perf_hooks";var In,gM=p(()=>{In=rZ});var hf,hT=p(()=>{hf="1.29.0"});var Ln,vM=p(()=>{hT();Ve();Ln={[Se]:"opentelemetry",[st]:"node",[ge]:wt,[ve]:hf}});function _f(r){r.unref()}var yM=p(()=>{});var OM=p(()=>{hM();_M();mM();SM();gM();vM();yM()});var _T=p(()=>{OM()});function Ko(r){let e=r/1e3,t=Math.trunc(e),o=Math.round(r%1e3*iZ);return[t,o]}function mf(){let r=In.timeOrigin;if(typeof r!="number"){let e=In;r=e.timing&&e.timing.fetchStart}return r}function ET(r){let e=Ko(mf()),t=Ko(typeof r=="number"?r:In.now());return mT(e,t)}function RM(r){if(Tf(r))return r;if(typeof r=="number")return r=Ef&&(t[1]-=Ef,t[0]+=1),t}var AM,nZ,iZ,Ef,xM=p(()=>{_T();AM=9,nZ=6,iZ=Math.pow(10,nZ),Ef=Math.pow(10,AM)});var Sf,MM=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(Sf||(Sf={}))});var gf,wM=p(()=>{P();gf=class{constructor(e={}){var t;this._propagators=(t=e.propagators)!==null&&t!==void 0?t:[],this._fields=Array.from(new Set(this._propagators.map(o=>typeof o.fields=="function"?o.fields():[]).reduce((o,s)=>o.concat(s),[])))}inject(e,t,o){for(let s of this._propagators)try{s.inject(e,t,o)}catch(a){S.warn(`Failed to inject with ${s.constructor.name}. Err: ${a.message}`)}}extract(e,t,o){return this._propagators.reduce((s,a)=>{try{return a.extract(s,t,o)}catch(i){S.warn(`Failed to extract with ${a.constructor.name}. Err: ${i.message}`)}return s},e)}fields(){return this._fields.slice()}}});function DM(r){return aZ.test(r)}function UM(r){return lZ.test(r)&&!cZ.test(r)}var TT,oZ,sZ,aZ,lZ,cZ,kM=p(()=>{TT="[_0-9a-z-*/]",oZ=`[a-z]${TT}{0,255}`,sZ=`[a-z0-9]${TT}{0,240}@[a-z]${TT}{0,13}`,aZ=new RegExp(`^(?:${oZ}|${sZ})$`),lZ=/^[ -~]{0,255}[!-~]$/,cZ=/,|=/});var BM,uZ,VM,FM,zo,ST=p(()=>{kM();BM=32,uZ=512,VM=",",FM="=",zo=class r{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let o=this._clone();return o._internalState.has(e)&&o._internalState.delete(e),o._internalState.set(e,t),o}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+FM+this.get(t)),e),[]).join(VM)}_parse(e){e.length>uZ||(this._internalState=e.split(VM).reverse().reduce((t,o)=>{let s=o.trim(),a=s.indexOf(FM);if(a!==-1){let i=s.slice(0,a),n=s.slice(a+1,o.length);DM(i)&&UM(n)&&t.set(i,n)}return t},new Map),this._internalState.size>BM&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,BM))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new r;return e._internalState=new Map(this._internalState),e}}});function gT(r){let e=EZ.exec(r);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var cl,ul,fZ,pZ,dZ,hZ,_Z,EZ,vf,GM=p(()=>{P();nl();ST();cl="traceparent",ul="tracestate",fZ="00",pZ="(?!ff)[\\da-f]{2}",dZ="(?![0]{32})[\\da-f]{32}",hZ="(?![0]{16})[\\da-f]{16}",_Z="[\\da-f]{2}",EZ=new RegExp(`^\\s?(${pZ})-(${dZ})-(${hZ})-(${_Z})(-.*)?\\s?$`);vf=class{inject(e,t,o){let s=ie.getSpanContext(e);if(!s||At(e)||!xe(s))return;let a=`${fZ}-${s.traceId}-${s.spanId}-0${Number(s.traceFlags||se.NONE).toString(16)}`;o.set(t,cl,a),s.traceState&&o.set(t,ul,s.traceState.serialize())}extract(e,t,o){let s=o.get(t,cl);if(!s)return e;let a=Array.isArray(s)?s[0]:s;if(typeof a!="string")return e;let i=gT(a);if(!i)return e;i.isRemote=!0;let n=o.get(t,ul);if(n){let l=Array.isArray(n)?n.join(","):n;i.traceState=new zo(typeof l=="string"?l:void 0)}return ie.setSpanContext(e,i)}fields(){return[cl,ul]}}});function HM(r,e){return r.setValue(vT,e)}function qM(r){return r.deleteValue(vT)}function jM(r){return r.getValue(vT)}var vT,yf,YM=p(()=>{P();vT=De("OpenTelemetry SDK Context Key RPC_METADATA");(function(r){r.HTTP="http"})(yf||(yf={}))});var Ni,yT=p(()=>{P();Ni=class{shouldSample(){return{decision:ke.NOT_RECORD}}toString(){return"AlwaysOffSampler"}}});var bn,OT=p(()=>{P();bn=class{shouldSample(){return{decision:ke.RECORD_AND_SAMPLED}}toString(){return"AlwaysOnSampler"}}});var Of,KM=p(()=>{P();lT();yT();OT();Of=class{constructor(e){var t,o,s,a;this._root=e.root,this._root||(lf(new Error("ParentBasedSampler must have a root sampler configured")),this._root=new bn),this._remoteParentSampled=(t=e.remoteParentSampled)!==null&&t!==void 0?t:new bn,this._remoteParentNotSampled=(o=e.remoteParentNotSampled)!==null&&o!==void 0?o:new Ni,this._localParentSampled=(s=e.localParentSampled)!==null&&s!==void 0?s:new bn,this._localParentNotSampled=(a=e.localParentNotSampled)!==null&&a!==void 0?a:new Ni}shouldSample(e,t,o,s,a,i){let n=ie.getSpanContext(e);return!n||!xe(n)?this._root.shouldSample(e,t,o,s,a,i):n.isRemote?n.traceFlags&se.SAMPLED?this._remoteParentSampled.shouldSample(e,t,o,s,a,i):this._remoteParentNotSampled.shouldSample(e,t,o,s,a,i):n.traceFlags&se.SAMPLED?this._localParentSampled.shouldSample(e,t,o,s,a,i):this._localParentNotSampled.shouldSample(e,t,o,s,a,i)}toString(){return`ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`}}});var Af,zM=p(()=>{P();Af=class{constructor(e=0){this._ratio=e,this._ratio=this._normalize(e),this._upperBound=Math.floor(this._ratio*4294967295)}shouldSample(e,t){return{decision:Mt(t)&&this._accumulate(t)=1?1:e<=0?0:e}_accumulate(e){let t=0;for(let o=0;o>>0}return t}}});function OZ(r,e){return function(t){return r(e(t))}}function AT(r){if(!AZ(r)||RZ(r)!==mZ)return!1;let e=yZ(r);if(e===null)return!0;let t=WM.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&$M.call(t)===vZ}function AZ(r){return r!=null&&typeof r=="object"}function RZ(r){return r==null?r===void 0?SZ:TZ:Ci&&Ci in Object(r)?NZ(r):CZ(r)}function NZ(r){let e=WM.call(r,Ci),t=r[Ci],o=!1;try{r[Ci]=void 0,o=!0}catch{}let s=JM.call(r);return o&&(e?r[Ci]=t:delete r[Ci]),s}function CZ(r){return JM.call(r)}var mZ,TZ,SZ,gZ,$M,vZ,yZ,XM,WM,Ci,JM,QM=p(()=>{mZ="[object Object]",TZ="[object Null]",SZ="[object Undefined]",gZ=Function.prototype,$M=gZ.toString,vZ=$M.call(Object),yZ=OZ(Object.getPrototypeOf,Object),XM=Object.prototype,WM=XM.hasOwnProperty,Ci=Symbol?Symbol.toStringTag:void 0,JM=XM.toString});function ew(...r){let e=r.shift(),t=new WeakMap;for(;r.length>0;)e=tw(e,r.shift(),0,t);return e}function RT(r){return Nf(r)?r.slice():r}function tw(r,e,t=0,o){let s;if(!(t>PZ)){if(t++,Rf(r)||Rf(e)||rw(e))s=RT(e);else if(Nf(r)){if(s=r.slice(),Nf(e))for(let a=0,i=e.length;a"u"?delete s[l]:s[l]=c;else{let u=s[l],f=c;if(ZM(r,l,o)||ZM(e,l,o))delete s[l];else{if(fl(u)&&fl(f)){let _=o.get(u)||[],m=o.get(f)||[];_.push({obj:r,key:l}),m.push({obj:e,key:l}),o.set(u,_),o.set(f,m)}s[l]=tw(s[l],c,t,o)}}}}else s=e;return s}}function ZM(r,e,t){let o=t.get(r[e])||[];for(let s=0,a=o.length;s"u"||r instanceof Date||r instanceof RegExp||r===null}function IZ(r,e){return!(!AT(r)||!AT(e))}var PZ,nw=p(()=>{QM();PZ=20});function iw(r,e){let t,o=new Promise(function(a,i){t=setTimeout(function(){i(new pl("Operation timed out."))},e)});return Promise.race([r,o]).then(s=>(clearTimeout(t),s),s=>{throw clearTimeout(t),s})}var pl,ow=p(()=>{pl=class r extends Error{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype)}}});function NT(r,e){return typeof e=="string"?r===e:!!r.match(e)}function sw(r,e){if(!e)return!1;for(let t of e)if(NT(r,t))return!0;return!1}var aw=p(()=>{});function lw(r){return typeof r=="function"&&typeof r.__original=="function"&&typeof r.__unwrap=="function"&&r.__wrapped===!0}var cw=p(()=>{});var Cf,uw=p(()=>{Cf=class{constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}}});var Pf,fw=p(()=>{uw();Pf=class{constructor(e,t){this._callback=e,this._that=t,this._isCalled=!1,this._deferred=new Cf}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(t=>this._deferred.resolve(t),t=>this._deferred.reject(t))}catch(t){this._deferred.reject(t)}}return this._deferred.promise}}});function pw(r,e){return new Promise(t=>{me.with(Zu(me.active()),()=>{r.export(e,o=>{t(o)})})})}var dw=p(()=>{P();nl()});var If={};Ae(If,{AlwaysOffSampler:()=>Ni,AlwaysOnSampler:()=>bn,AnchoredClock:()=>sf,BindOnceFuture:()=>Pf,CompositePropagator:()=>gf,DEFAULT_ATTRIBUTE_COUNT_LIMIT:()=>sl,DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT:()=>ol,DEFAULT_ENVIRONMENT:()=>al,DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:()=>uT,DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:()=>fT,ExportResultCode:()=>Sf,ParentBasedSampler:()=>Of,RPCType:()=>yf,RandomIdGenerator:()=>Yo,SDK_INFO:()=>Ln,TRACE_PARENT_HEADER:()=>cl,TRACE_STATE_HEADER:()=>ul,TimeoutError:()=>pl,TraceIdRatioBasedSampler:()=>Af,TraceState:()=>zo,TracesSamplerValues:()=>qo,VERSION:()=>hf,W3CBaggagePropagator:()=>of,W3CTraceContextPropagator:()=>vf,_globalThis:()=>uf,addHrTimes:()=>mT,baggageUtils:()=>LZ,callWithTimeout:()=>iw,deleteRPCMetadata:()=>qM,getEnv:()=>jo,getEnvWithoutDefaults:()=>cf,getRPCMetadata:()=>jM,getTimeOrigin:()=>mf,globalErrorHandler:()=>lf,hexToBase64:()=>pf,hexToBinary:()=>ff,hrTime:()=>ET,hrTimeDuration:()=>NM,hrTimeToMicroseconds:()=>LM,hrTimeToMilliseconds:()=>IM,hrTimeToNanoseconds:()=>PM,hrTimeToTimeStamp:()=>CM,internal:()=>bZ,isAttributeKey:()=>oT,isAttributeValue:()=>sT,isTimeInput:()=>bM,isTimeInputHrTime:()=>Tf,isTracingSuppressed:()=>At,isUrlIgnored:()=>sw,isWrapped:()=>lw,loggingErrorHandler:()=>af,merge:()=>ew,millisToHrTime:()=>Ko,otperformance:()=>In,parseEnvironment:()=>ll,parseTraceParent:()=>gT,sanitizeAttributes:()=>cM,setGlobalErrorHandler:()=>dM,setRPCMetadata:()=>HM,suppressTracing:()=>Zu,timeInputToHrTime:()=>RM,unrefTimer:()=>_f,unsuppressTracing:()=>iM,urlMatches:()=>NT});var LZ,bZ,xr=p(()=>{aM();lM();fM();lT();aT();xM();dT();MM();iT();_T();wM();GM();YM();yT();OT();KM();zM();nl();ST();pT();nw();cT();ow();aw();cw();fw();hT();dw();LZ={getKeyPairs:nf,serializeKeyPairs:rf,parseKeyPairsIntoRecord:sM,parsePairKeyValue:il},bZ={_export:pw}});var Lf,hw=p(()=>{(function(r){r[r.UNSPECIFIED=0]="UNSPECIFIED",r[r.TRACE=1]="TRACE",r[r.TRACE2=2]="TRACE2",r[r.TRACE3=3]="TRACE3",r[r.TRACE4=4]="TRACE4",r[r.DEBUG=5]="DEBUG",r[r.DEBUG2=6]="DEBUG2",r[r.DEBUG3=7]="DEBUG3",r[r.DEBUG4=8]="DEBUG4",r[r.INFO=9]="INFO",r[r.INFO2=10]="INFO2",r[r.INFO3=11]="INFO3",r[r.INFO4=12]="INFO4",r[r.WARN=13]="WARN",r[r.WARN2=14]="WARN2",r[r.WARN3=15]="WARN3",r[r.WARN4=16]="WARN4",r[r.ERROR=17]="ERROR",r[r.ERROR2=18]="ERROR2",r[r.ERROR3=19]="ERROR3",r[r.ERROR4=20]="ERROR4",r[r.FATAL=21]="FATAL",r[r.FATAL2=22]="FATAL2",r[r.FATAL3=23]="FATAL3",r[r.FATAL4=24]="FATAL4"})(Lf||(Lf={}))});var Pi,$o,bf=p(()=>{Pi=class{emit(e){}},$o=new Pi});var dl,Xo,xf=p(()=>{bf();dl=class{getLogger(e,t,o){return new Pi}},Xo=new dl});var Wo,CT=p(()=>{bf();Wo=class{constructor(e,t,o,s){this._provider=e,this.name=t,this.version=o,this.options=s}emit(e){this._getLogger().emit(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):$o}}});var Ii,PT=p(()=>{xf();CT();Ii=class{getLogger(e,t,o){var s;return(s=this.getDelegateLogger(e,t,o))!==null&&s!==void 0?s:new Wo(this,e,t,o)}getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:Xo}setDelegate(e){this._delegate=e}getDelegateLogger(e,t,o){var s;return(s=this._delegate)===null||s===void 0?void 0:s.getLogger(e,t,o)}}});var Mf,_w=p(()=>{Mf=typeof globalThis=="object"?globalThis:global});var Ew=p(()=>{_w()});var mw=p(()=>{Ew()});function Tw(r,e,t){return o=>o===r?e:t}var hl,Jo,IT,Sw=p(()=>{mw();hl=Symbol.for("io.opentelemetry.js.api.logs"),Jo=Mf;IT=1});var wf,gw=p(()=>{Sw();xf();PT();wf=class r{constructor(){this._proxyLoggerProvider=new Ii}static getInstance(){return this._instance||(this._instance=new r),this._instance}setGlobalLoggerProvider(e){return Jo[hl]?this.getLoggerProvider():(Jo[hl]=Tw(IT,e,Xo),this._proxyLoggerProvider.setDelegate(e),e)}getLoggerProvider(){var e,t;return(t=(e=Jo[hl])===null||e===void 0?void 0:e.call(Jo,IT))!==null&&t!==void 0?t:this._proxyLoggerProvider}getLogger(e,t,o){return this.getLoggerProvider().getLogger(e,t,o)}disable(){delete Jo[hl],this._proxyLoggerProvider=new Ii}}});var vw={};Ae(vw,{NOOP_LOGGER:()=>$o,NOOP_LOGGER_PROVIDER:()=>Xo,NoopLogger:()=>Pi,NoopLoggerProvider:()=>dl,ProxyLogger:()=>Wo,ProxyLoggerProvider:()=>Ii,SeverityNumber:()=>Lf,logs:()=>_l});var _l,El=p(()=>{hw();bf();xf();CT();PT();gw();_l=wf.getInstance()});function yw(r){return r.setValue(xZ,!0)}var xZ,Ow=p(()=>{P();xZ=De("OpenTelemetry SDK Context Key SUPPRESS_TRACING")});function Df(r){return r==null?!0:Array.isArray(r)?MZ(r):Aw(r)}function MZ(r){let e;for(let t of r)if(t!=null){if(!e){if(Aw(t)){e=typeof t;continue}return!1}if(typeof t!==e)return!1}return!0}function Aw(r){switch(typeof r){case"number":case"boolean":case"string":return!0}return!1}var Rw=p(()=>{});function Nw(){return r=>{S.error(wZ(r))}}function wZ(r){return typeof r=="string"?r:JSON.stringify(DZ(r))}function DZ(r){let e={},t=r;for(;t!==null;)Object.getOwnPropertyNames(t).forEach(o=>{if(e[o])return;let s=t[o];s&&(e[o]=String(s))}),t=Object.getPrototypeOf(t);return e}var Cw=p(()=>{P()});function Mr(r){try{UZ(r)}catch{}}var UZ,Pw=p(()=>{Cw();UZ=Nw()});var Uf,Iw=p(()=>{(function(r){r.AlwaysOff="always_off",r.AlwaysOn="always_on",r.ParentBasedAlwaysOff="parentbased_always_off",r.ParentBasedAlwaysOn="parentbased_always_on",r.ParentBasedTraceIdRatio="parentbased_traceidratio",r.TraceIdRatio="traceidratio"})(Uf||(Uf={}))});function VZ(r){return BZ.indexOf(r)>-1}function GZ(r){return FZ.indexOf(r)>-1}function qZ(r){return HZ.indexOf(r)>-1}function jZ(r,e,t){if(typeof t[r]>"u")return;let o=String(t[r]);e[r]=o.toLowerCase()==="true"}function YZ(r,e,t,o=-1/0,s=1/0){if(typeof t[r]<"u"){let a=Number(t[r]);isNaN(a)||(as?e[r]=s:e[r]=a)}}function KZ(r,e,t,o=kZ){let s=t[r];typeof s=="string"&&(e[r]=s.split(o).map(a=>a.trim()))}function $Z(r,e,t){let o=t[r];if(typeof o=="string"){let s=zZ[o.toUpperCase()];s!=null&&(e[r]=s)}}function Bf(r){let e={};for(let t in kf){let o=t;switch(o){case"OTEL_LOG_LEVEL":$Z(o,e,r);break;default:if(VZ(o))jZ(o,e,r);else if(GZ(o))YZ(o,e,r);else if(qZ(o))KZ(o,e,r);else{let s=r[o];typeof s<"u"&&s!==null&&(e[o]=String(s))}}}return e}var kZ,BZ,FZ,HZ,Qo,Zo,Lw,bw,kf,zZ,LT=p(()=>{P();Iw();kZ=",",BZ=["OTEL_SDK_DISABLED"];FZ=["OTEL_BSP_EXPORT_TIMEOUT","OTEL_BSP_MAX_EXPORT_BATCH_SIZE","OTEL_BSP_MAX_QUEUE_SIZE","OTEL_BSP_SCHEDULE_DELAY","OTEL_BLRP_EXPORT_TIMEOUT","OTEL_BLRP_MAX_EXPORT_BATCH_SIZE","OTEL_BLRP_MAX_QUEUE_SIZE","OTEL_BLRP_SCHEDULE_DELAY","OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_SPAN_LINK_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_EXPORTER_OTLP_TIMEOUT","OTEL_EXPORTER_OTLP_TRACES_TIMEOUT","OTEL_EXPORTER_OTLP_METRICS_TIMEOUT","OTEL_EXPORTER_OTLP_LOGS_TIMEOUT","OTEL_EXPORTER_JAEGER_AGENT_PORT"];HZ=["OTEL_NO_PATCH_MODULES","OTEL_PROPAGATORS","OTEL_SEMCONV_STABILITY_OPT_IN"];Qo=1/0,Zo=128,Lw=128,bw=128,kf={OTEL_SDK_DISABLED:!1,CONTAINER_NAME:"",ECS_CONTAINER_METADATA_URI_V4:"",ECS_CONTAINER_METADATA_URI:"",HOSTNAME:"",KUBERNETES_SERVICE_HOST:"",NAMESPACE:"",OTEL_BSP_EXPORT_TIMEOUT:3e4,OTEL_BSP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BSP_MAX_QUEUE_SIZE:2048,OTEL_BSP_SCHEDULE_DELAY:5e3,OTEL_BLRP_EXPORT_TIMEOUT:3e4,OTEL_BLRP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BLRP_MAX_QUEUE_SIZE:2048,OTEL_BLRP_SCHEDULE_DELAY:5e3,OTEL_EXPORTER_JAEGER_AGENT_HOST:"",OTEL_EXPORTER_JAEGER_AGENT_PORT:6832,OTEL_EXPORTER_JAEGER_ENDPOINT:"",OTEL_EXPORTER_JAEGER_PASSWORD:"",OTEL_EXPORTER_JAEGER_USER:"",OTEL_EXPORTER_OTLP_ENDPOINT:"",OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:"",OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:"",OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:"",OTEL_EXPORTER_OTLP_HEADERS:"",OTEL_EXPORTER_OTLP_TRACES_HEADERS:"",OTEL_EXPORTER_OTLP_METRICS_HEADERS:"",OTEL_EXPORTER_OTLP_LOGS_HEADERS:"",OTEL_EXPORTER_OTLP_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_TRACES_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_METRICS_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_LOGS_TIMEOUT:1e4,OTEL_EXPORTER_ZIPKIN_ENDPOINT:"http://localhost:9411/api/v2/spans",OTEL_LOG_LEVEL:H.INFO,OTEL_NO_PATCH_MODULES:[],OTEL_PROPAGATORS:["tracecontext","baggage"],OTEL_RESOURCE_ATTRIBUTES:"",OTEL_SERVICE_NAME:"",OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT:Qo,OTEL_ATTRIBUTE_COUNT_LIMIT:Zo,OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT:Qo,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT:Zo,OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT:Qo,OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT:Zo,OTEL_SPAN_EVENT_COUNT_LIMIT:128,OTEL_SPAN_LINK_COUNT_LIMIT:128,OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:Lw,OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:bw,OTEL_TRACES_EXPORTER:"",OTEL_TRACES_SAMPLER:Uf.ParentBasedAlwaysOn,OTEL_TRACES_SAMPLER_ARG:"",OTEL_LOGS_EXPORTER:"",OTEL_EXPORTER_OTLP_INSECURE:"",OTEL_EXPORTER_OTLP_TRACES_INSECURE:"",OTEL_EXPORTER_OTLP_METRICS_INSECURE:"",OTEL_EXPORTER_OTLP_LOGS_INSECURE:"",OTEL_EXPORTER_OTLP_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_COMPRESSION:"",OTEL_EXPORTER_OTLP_TRACES_COMPRESSION:"",OTEL_EXPORTER_OTLP_METRICS_COMPRESSION:"",OTEL_EXPORTER_OTLP_LOGS_COMPRESSION:"",OTEL_EXPORTER_OTLP_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_TRACES_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_LOGS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE:"cumulative",OTEL_SEMCONV_STABILITY_OPT_IN:[]};zZ={ALL:H.ALL,VERBOSE:H.VERBOSE,DEBUG:H.DEBUG,INFO:H.INFO,WARN:H.WARN,ERROR:H.ERROR,NONE:H.NONE}});function xn(){let r=Bf(process.env);return Object.assign({},kf,r)}function ml(){return Bf(process.env)}var xw=p(()=>{LT()});import{performance as XZ}from"perf_hooks";var Li,Mw=p(()=>{Li=XZ});var ww,Dw=p(()=>{ww="1.29.0"});var bi,Uw=p(()=>{Dw();Ve();bi={[Se]:"opentelemetry",[st]:"node",[ge]:wt,[ve]:ww}});function Tl(r){r.unref()}var kw=p(()=>{});var Bw=p(()=>{xw();Mw();Uw();kw()});var bT=p(()=>{Bw()});function Sl(r){let e=r/1e3,t=Math.trunc(e),o=Math.round(r%1e3*tee);return[t,o]}function xT(){let r=Li.timeOrigin;if(typeof r!="number"){let e=Li;r=e.timing&&e.timing.fetchStart}return r}function Fw(r){let e=Sl(xT()),t=Sl(typeof r=="number"?r:Li.now());return Hw(e,t)}function Vf(r){if(Gw(r))return r;if(typeof r=="number")return r=Vw&&(t[1]-=Vw,t[0]+=1),t}var ZZ,eee,tee,Vw,qw=p(()=>{bT();ZZ=9,eee=6,tee=Math.pow(10,eee),Vw=Math.pow(10,ZZ)});var jt,jw=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(jt||(jt={}))});function lee(r,e){return function(t){return r(e(t))}}function wT(r){if(!cee(r)||uee(r)!==ree)return!1;let e=aee(r);if(e===null)return!0;let t=zw.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Yw.call(t)===see}function cee(r){return r!=null&&typeof r=="object"}function uee(r){return r==null?r===void 0?iee:nee:xi&&xi in Object(r)?fee(r):pee(r)}function fee(r){let e=zw.call(r,xi),t=r[xi],o=!1;try{r[xi]=void 0,o=!0}catch{}let s=$w.call(r);return o&&(e?r[xi]=t:delete r[xi]),s}function pee(r){return $w.call(r)}var ree,nee,iee,oee,Yw,see,aee,Kw,zw,xi,$w,Xw=p(()=>{ree="[object Object]",nee="[object Null]",iee="[object Undefined]",oee=Function.prototype,Yw=oee.toString,see=Yw.call(Object),aee=lee(Object.getPrototypeOf,Object),Kw=Object.prototype,zw=Kw.hasOwnProperty,xi=Symbol?Symbol.toStringTag:void 0,$w=Kw.toString});function UT(...r){let e=r.shift(),t=new WeakMap;for(;r.length>0;)e=Jw(e,r.shift(),0,t);return e}function DT(r){return Gf(r)?r.slice():r}function Jw(r,e,t=0,o){let s;if(!(t>dee)){if(t++,Ff(r)||Ff(e)||Qw(e))s=DT(e);else if(Gf(r)){if(s=r.slice(),Gf(e))for(let a=0,i=e.length;a"u"?delete s[l]:s[l]=c;else{let u=s[l],f=c;if(Ww(r,l,o)||Ww(e,l,o))delete s[l];else{if(gl(u)&&gl(f)){let _=o.get(u)||[],m=o.get(f)||[];_.push({obj:r,key:l}),m.push({obj:e,key:l}),o.set(u,_),o.set(f,m)}s[l]=Jw(s[l],c,t,o)}}}}else s=e;return s}}function Ww(r,e,t){let o=t.get(r[e])||[];for(let s=0,a=o.length;s"u"||r instanceof Date||r instanceof RegExp||r===null}function hee(r,e){return!(!wT(r)||!wT(e))}var dee,Zw=p(()=>{Xw();dee=20});function vl(r,e){let t,o=new Promise(function(a,i){t=setTimeout(function(){i(new Hf("Operation timed out."))},e)});return Promise.race([r,o]).then(s=>(clearTimeout(t),s),s=>{throw clearTimeout(t),s})}var Hf,e1=p(()=>{Hf=class r extends Error{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype)}}});var qf,t1=p(()=>{qf=class{constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}}});var un,r1=p(()=>{t1();un=class{constructor(e,t){this._callback=e,this._that=t,this._isCalled=!1,this._deferred=new qf}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(t=>this._deferred.resolve(t),t=>this._deferred.reject(t))}catch(t){this._deferred.reject(t)}}return this._deferred.promise}}});function n1(r,e){return new Promise(t=>{me.with(yw(me.active()),()=>{r.export(e,o=>{t(o)})})})}var i1=p(()=>{P();Ow()});var jf,lr=p(()=>{Rw();Pw();qw();jw();bT();LT();Zw();e1();r1();i1();jf={_export:n1}});function Yf(){return`unknown_service:${process.argv0}`}var o1=p(()=>{});var s1=p(()=>{o1()});var a1=p(()=>{s1()});var Mn,l1=p(()=>{P();Ve();lr();a1();Mn=class r{constructor(e,t){var o;this._attributes=e,this.asyncAttributesPending=t!=null,this._syncAttributes=(o=this._attributes)!==null&&o!==void 0?o:{},this._asyncAttributesPromise=t==null?void 0:t.then(s=>(this._attributes=Object.assign({},this._attributes,s),this.asyncAttributesPending=!1,s),s=>(S.debug("a resource's async attributes promise rejected: %s",s),this.asyncAttributesPending=!1,{}))}static empty(){return r.EMPTY}static default(){return new r({[at]:Yf(),[ge]:bi[ge],[Se]:bi[Se],[ve]:bi[ve]})}get attributes(){var e;return this.asyncAttributesPending&&S.error("Accessing resource attributes before async attributes settled"),(e=this._attributes)!==null&&e!==void 0?e:{}}async waitForAsyncAttributes(){this.asyncAttributesPending&&await this._asyncAttributesPromise}merge(e){var t;if(!e)return this;let o=Object.assign(Object.assign({},this._syncAttributes),(t=e._syncAttributes)!==null&&t!==void 0?t:e.attributes);if(!this._asyncAttributesPromise&&!e._asyncAttributesPromise)return new r(o);let s=Promise.all([this._asyncAttributesPromise,e._asyncAttributesPromise]).then(([a,i])=>{var n;return Object.assign(Object.assign(Object.assign(Object.assign({},this._syncAttributes),a),(n=e._syncAttributes)!==null&&n!==void 0?n:e.attributes),i)});return new r(o,s)}};Mn.EMPTY=new Mn({})});var c1=p(()=>{l1()});var es,kT=p(()=>{P();P();lr();es=class{constructor(e,t,o){this.attributes={},this.totalAttributesCount=0,this._isReadonly=!1;let{timestamp:s,observedTimestamp:a,severityNumber:i,severityText:n,body:l,attributes:c={},context:u}=o,f=Date.now();if(this.hrTime=Vf(s??f),this.hrTimeObserved=Vf(a??f),u){let _=ie.getSpanContext(u);_&&xe(_)&&(this.spanContext=_)}this.severityNumber=i,this.severityText=n,this.body=l,this.resource=e.resource,this.instrumentationScope=t,this._logRecordLimits=e.logRecordLimits,this.setAttributes(c)}set severityText(e){this._isLogRecordReadonly()||(this._severityText=e)}get severityText(){return this._severityText}set severityNumber(e){this._isLogRecordReadonly()||(this._severityNumber=e)}get severityNumber(){return this._severityNumber}set body(e){this._isLogRecordReadonly()||(this._body=e)}get body(){return this._body}get droppedAttributesCount(){return this.totalAttributesCount-Object.keys(this.attributes).length}setAttribute(e,t){return this._isLogRecordReadonly()?this:t===null?this:e.length===0?(S.warn(`Invalid attribute key: ${e}`),this):!Df(t)&&!(typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length>0)?(S.warn(`Invalid attribute value set for key: ${e}`),this):(this.totalAttributesCount+=1,Object.keys(this.attributes).length>=this._logRecordLimits.attributeCountLimit&&!Object.prototype.hasOwnProperty.call(this.attributes,e)?(this.droppedAttributesCount===1&&S.warn("Dropping extra attributes."),this):(Df(t)?this.attributes[e]=this._truncateToSize(t):this.attributes[e]=t,this))}setAttributes(e){for(let[t,o]of Object.entries(e))this.setAttribute(t,o);return this}setBody(e){return this.body=e,this}setSeverityNumber(e){return this.severityNumber=e,this}setSeverityText(e){return this.severityText=e,this}_makeReadonly(){this._isReadonly=!0}_truncateToSize(e){let t=this._logRecordLimits.attributeValueLengthLimit;return t<=0?(S.warn(`Attribute value limit must be positive, got ${t}`),e):typeof e=="string"?this._truncateToLimitUtil(e,t):Array.isArray(e)?e.map(o=>typeof o=="string"?this._truncateToLimitUtil(o,t):o):e}_truncateToLimitUtil(e,t){return e.length<=t?e:e.substring(0,t)}_isLogRecordReadonly(){return this._isReadonly&&S.warn("Can not execute the operation on emitted log record"),this._isReadonly}}});var Kf,u1=p(()=>{P();kT();Kf=class{constructor(e,t){this.instrumentationScope=e,this._sharedState=t}emit(e){let t=e.context||me.active(),o=new es(this._sharedState,this.instrumentationScope,Object.assign({context:t},e));this._sharedState.activeProcessor.onEmit(o,t),o._makeReadonly()}}});function f1(){return{forceFlushTimeoutMillis:3e4,logRecordLimits:{attributeValueLengthLimit:xn().OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT,attributeCountLimit:xn().OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT},includeTraceContext:!0,mergeResourceWithDefaults:!0}}function p1(r){var e,t,o,s,a,i;let n=ml();return{attributeCountLimit:(o=(t=(e=r.attributeCountLimit)!==null&&e!==void 0?e:n.OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT)!==null&&t!==void 0?t:n.OTEL_ATTRIBUTE_COUNT_LIMIT)!==null&&o!==void 0?o:Zo,attributeValueLengthLimit:(i=(a=(s=r.attributeValueLengthLimit)!==null&&s!==void 0?s:n.OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT)!==null&&a!==void 0?a:n.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT)!==null&&i!==void 0?i:Qo}}var d1=p(()=>{lr()});var zf,h1=p(()=>{lr();zf=class{constructor(e,t){this.processors=e,this.forceFlushTimeoutMillis=t}async forceFlush(){let e=this.forceFlushTimeoutMillis;await Promise.all(this.processors.map(t=>vl(t.forceFlush(),e)))}onEmit(e,t){this.processors.forEach(o=>o.onEmit(e,t))}async shutdown(){await Promise.all(this.processors.map(e=>e.shutdown()))}}});var ts,BT=p(()=>{ts=class{forceFlush(){return Promise.resolve()}onEmit(e,t){}shutdown(){return Promise.resolve()}}});var $f,_1=p(()=>{BT();$f=class{constructor(e,t,o){this.resource=e,this.forceFlushTimeoutMillis=t,this.logRecordLimits=o,this.loggers=new Map,this.registeredLogRecordProcessors=[],this.activeProcessor=new ts}}});function Eee(r,e){let t=e??Mn.empty();return r?Mn.default().merge(t):t}var _ee,Xf,E1=p(()=>{P();El();c1();lr();u1();d1();h1();_1();_ee="unknown";Xf=class{constructor(e={}){let t=UT({},f1(),e),o=Eee(t.mergeResourceWithDefaults,e.resource);this._sharedState=new $f(o,t.forceFlushTimeoutMillis,p1(t.logRecordLimits)),this._shutdownOnce=new un(this._shutdown,this)}getLogger(e,t,o){if(this._shutdownOnce.isCalled)return S.warn("A shutdown LoggerProvider cannot provide a Logger"),$o;e||S.warn("Logger requested without instrumentation scope name.");let s=e||_ee,a=`${s}@${t||""}:${(o==null?void 0:o.schemaUrl)||""}`;return this._sharedState.loggers.has(a)||this._sharedState.loggers.set(a,new Kf({name:s,version:t,schemaUrl:o==null?void 0:o.schemaUrl},this._sharedState)),this._sharedState.loggers.get(a)}addLogRecordProcessor(e){this._sharedState.registeredLogRecordProcessors.length===0&&this._sharedState.activeProcessor.shutdown().catch(t=>S.error("Error while trying to shutdown current log record processor",t)),this._sharedState.registeredLogRecordProcessors.push(e),this._sharedState.activeProcessor=new zf(this._sharedState.registeredLogRecordProcessors,this._sharedState.forceFlushTimeoutMillis)}forceFlush(){return this._shutdownOnce.isCalled?(S.warn("invalid attempt to force flush after LoggerProvider shutdown"),this._shutdownOnce.promise):this._sharedState.activeProcessor.forceFlush()}shutdown(){return this._shutdownOnce.isCalled?(S.warn("shutdown may only be called once per LoggerProvider"),this._shutdownOnce.promise):this._shutdownOnce.call()}_shutdown(){return this._sharedState.activeProcessor.shutdown()}}});var Wf,m1=p(()=>{lr();lr();Wf=class{export(e,t){this._sendLogRecords(e,t)}shutdown(){return Promise.resolve()}_exportInfo(e){var t,o,s;return{resource:{attributes:e.resource.attributes},instrumentationScope:e.instrumentationScope,timestamp:MT(e.hrTime),traceId:(t=e.spanContext)===null||t===void 0?void 0:t.traceId,spanId:(o=e.spanContext)===null||o===void 0?void 0:o.spanId,traceFlags:(s=e.spanContext)===null||s===void 0?void 0:s.traceFlags,severityText:e.severityText,severityNumber:e.severityNumber,body:e.body,attributes:e.attributes}}_sendLogRecords(e,t){for(let o of e)console.dir(this._exportInfo(o),{depth:3});t==null||t({code:jt.SUCCESS})}}});var Jf,T1=p(()=>{lr();Jf=class{constructor(e){this._exporter=e,this._shutdownOnce=new un(this._shutdown,this),this._unresolvedExports=new Set}onEmit(e){var t,o;if(this._shutdownOnce.isCalled)return;let s=()=>jf._export(this._exporter,[e]).then(a=>{var i;a.code!==jt.SUCCESS&&Mr((i=a.error)!==null&&i!==void 0?i:new Error(`SimpleLogRecordProcessor: log record export failed (status ${a})`))}).catch(Mr);if(e.resource.asyncAttributesPending){let a=(o=(t=e.resource).waitForAsyncAttributes)===null||o===void 0?void 0:o.call(t).then(()=>(this._unresolvedExports.delete(a),s()),Mr);a!=null&&this._unresolvedExports.add(a)}else s()}async forceFlush(){await Promise.all(Array.from(this._unresolvedExports))}shutdown(){return this._shutdownOnce.call()}_shutdown(){return this._exporter.shutdown()}}});var Qf,S1=p(()=>{lr();Qf=class{constructor(){this._finishedLogRecords=[],this._stopped=!1}export(e,t){if(this._stopped)return t({code:jt.FAILED,error:new Error("Exporter has been stopped")});this._finishedLogRecords.push(...e),t({code:jt.SUCCESS})}shutdown(){return this._stopped=!0,this.reset(),Promise.resolve()}getFinishedLogRecords(){return this._finishedLogRecords}reset(){this._finishedLogRecords=[]}}});var Zf,g1=p(()=>{P();lr();Zf=class{constructor(e,t){var o,s,a,i;this._exporter=e,this._finishedLogRecords=[];let n=xn();this._maxExportBatchSize=(o=t==null?void 0:t.maxExportBatchSize)!==null&&o!==void 0?o:n.OTEL_BLRP_MAX_EXPORT_BATCH_SIZE,this._maxQueueSize=(s=t==null?void 0:t.maxQueueSize)!==null&&s!==void 0?s:n.OTEL_BLRP_MAX_QUEUE_SIZE,this._scheduledDelayMillis=(a=t==null?void 0:t.scheduledDelayMillis)!==null&&a!==void 0?a:n.OTEL_BLRP_SCHEDULE_DELAY,this._exportTimeoutMillis=(i=t==null?void 0:t.exportTimeoutMillis)!==null&&i!==void 0?i:n.OTEL_BLRP_EXPORT_TIMEOUT,this._shutdownOnce=new un(this._shutdown,this),this._maxExportBatchSize>this._maxQueueSize&&(S.warn("BatchLogRecordProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize"),this._maxExportBatchSize=this._maxQueueSize)}onEmit(e){this._shutdownOnce.isCalled||this._addToBuffer(e)}forceFlush(){return this._shutdownOnce.isCalled?this._shutdownOnce.promise:this._flushAll()}shutdown(){return this._shutdownOnce.call()}async _shutdown(){this.onShutdown(),await this._flushAll(),await this._exporter.shutdown()}_addToBuffer(e){this._finishedLogRecords.length>=this._maxQueueSize||(this._finishedLogRecords.push(e),this._maybeStartTimer())}_flushAll(){return new Promise((e,t)=>{let o=[],s=Math.ceil(this._finishedLogRecords.length/this._maxExportBatchSize);for(let a=0;a{e()}).catch(t)})}_flushOneBatch(){return this._clearTimer(),this._finishedLogRecords.length===0?Promise.resolve():new Promise((e,t)=>{vl(this._export(this._finishedLogRecords.splice(0,this._maxExportBatchSize)),this._exportTimeoutMillis).then(()=>e()).catch(t)})}_maybeStartTimer(){this._timer===void 0&&(this._timer=setTimeout(()=>{this._flushOneBatch().then(()=>{this._finishedLogRecords.length>0&&(this._clearTimer(),this._maybeStartTimer())}).catch(e=>{Mr(e)})},this._scheduledDelayMillis),Tl(this._timer))}_clearTimer(){this._timer!==void 0&&(clearTimeout(this._timer),this._timer=void 0)}_export(e){let t=()=>jf._export(this._exporter,e).then(s=>{var a;s.code!==jt.SUCCESS&&Mr((a=s.error)!==null&&a!==void 0?a:new Error(`BatchLogRecordProcessor: log record export failed (status ${s})`))}).catch(Mr),o=e.map(s=>s.resource).filter(s=>s.asyncAttributesPending);return o.length===0?t():Promise.all(o.map(s=>{var a;return(a=s.waitForAsyncAttributes)===null||a===void 0?void 0:a.call(s)})).then(t,Mr)}}});var rs,v1=p(()=>{g1();rs=class extends Zf{onShutdown(){}}});var y1=p(()=>{v1()});var O1=p(()=>{y1()});var VT={};Ae(VT,{BatchLogRecordProcessor:()=>rs,ConsoleLogRecordExporter:()=>Wf,InMemoryLogRecordExporter:()=>Qf,LogRecord:()=>es,LoggerProvider:()=>Xf,NoopLogRecordProcessor:()=>ts,SimpleLogRecordProcessor:()=>Jf});var FT=p(()=>{E1();kT();BT();m1();T1();S1();O1()});var cr,ep=p(()=>{(function(r){r[r.DELTA=0]="DELTA",r[r.CUMULATIVE=1]="CUMULATIVE"})(cr||(cr={}))});var lt,ns=p(()=>{(function(r){r[r.HISTOGRAM=0]="HISTOGRAM",r[r.EXPONENTIAL_HISTOGRAM=1]="EXPONENTIAL_HISTOGRAM",r[r.GAUGE=2]="GAUGE",r[r.SUM=3]="SUM"})(lt||(lt={}))});function A1(r){return r!=null}function tp(r){let e=Object.keys(r);return e.length===0?"":(e=e.sort(),JSON.stringify(e.map(t=>[t,r[t]])))}function R1(r){var e,t;return`${r.name}:${(e=r.version)!==null&&e!==void 0?e:""}:${(t=r.schemaUrl)!==null&&t!==void 0?t:""}`}function wn(r,e){let t,o=new Promise(function(a,i){t=setTimeout(function(){i(new Mi("Operation timed out."))},e)});return Promise.race([r,o]).then(s=>(clearTimeout(t),s),s=>{throw clearTimeout(t),s})}async function N1(r){return Promise.all(r.map(async e=>{try{return{status:"fulfilled",value:await e}}catch(t){return{status:"rejected",reason:t}}}))}function C1(r){return r.status==="rejected"}function GT(r,e){let t=[];return r.forEach(o=>{t.push(...e(o))}),t}function P1(r,e){if(r.size!==e.size)return!1;for(let t of r)if(!e.has(t))return!1;return!0}function I1(r,e){let t=0,o=r.length-1,s=r.length;for(;o>=t;){let a=t+Math.trunc((o-t)/2);r[a]{Mi=class r extends Error{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype)}}});var Yt,is=p(()=>{(function(r){r[r.DROP=0]="DROP",r[r.SUM=1]="SUM",r[r.LAST_VALUE=2]="LAST_VALUE",r[r.HISTOGRAM=3]="HISTOGRAM",r[r.EXPONENTIAL_HISTOGRAM=4]="EXPONENTIAL_HISTOGRAM"})(Yt||(Yt={}))});var yl,b1=p(()=>{is();yl=class{constructor(){this.kind=Yt.DROP}createAccumulation(){}merge(e,t){}diff(e,t){}toMetricData(e,t,o,s){}}});function wr(r,e,t){var o,s,a,i;return Tee(r)||S.warn(`Invalid metric name: "${r}". The metric name should be a ASCII string with a length no greater than 255 characters.`),{name:r,type:e,description:(o=t==null?void 0:t.description)!==null&&o!==void 0?o:"",unit:(s=t==null?void 0:t.unit)!==null&&s!==void 0?s:"",valueType:(a=t==null?void 0:t.valueType)!==null&&a!==void 0?a:Ot.DOUBLE,advice:(i=t==null?void 0:t.advice)!==null&&i!==void 0?i:{}}}function x1(r,e){var t,o;return{name:(t=r.name)!==null&&t!==void 0?t:e.name,description:(o=r.description)!==null&&o!==void 0?o:e.description,type:e.type,unit:e.unit,valueType:e.valueType,advice:e.advice}}function M1(r,e){return L1(r.name,e.name)&&r.unit===e.unit&&r.type===e.type&&r.valueType===e.valueType}function Tee(r){return r.match(mee)!=null}var he,mee,fn=p(()=>{P();ur();(function(r){r.COUNTER="COUNTER",r.GAUGE="GAUGE",r.HISTOGRAM="HISTOGRAM",r.UP_DOWN_COUNTER="UP_DOWN_COUNTER",r.OBSERVABLE_COUNTER="OBSERVABLE_COUNTER",r.OBSERVABLE_GAUGE="OBSERVABLE_GAUGE",r.OBSERVABLE_UP_DOWN_COUNTER="OBSERVABLE_UP_DOWN_COUNTER"})(he||(he={}));mee=/^[a-z][a-z0-9_.\-/]{0,254}$/i});function See(r){let e=r.map(()=>0);return e.push(0),{buckets:{boundaries:r,counts:e},sum:0,count:0,hasMinMax:!1,min:1/0,max:-1/0}}var os,ss,w1=p(()=>{is();ns();fn();ur();os=class{constructor(e,t,o=!0,s=See(t)){this.startTime=e,this._boundaries=t,this._recordMinMax=o,this._current=s}record(e){if(Number.isNaN(e))return;this._current.count+=1,this._current.sum+=e,this._recordMinMax&&(this._current.min=Math.min(e,this._current.min),this._current.max=Math.max(e,this._current.max),this._current.hasMinMax=!0);let t=I1(this._boundaries,e);this._current.buckets.counts[t]+=1}setStartTime(e){this.startTime=e}toPointValue(){return this._current}},ss=class{constructor(e,t){this._boundaries=e,this._recordMinMax=t,this.kind=Yt.HISTOGRAM}createAccumulation(e){return new os(e,this._boundaries,this._recordMinMax)}merge(e,t){let o=e.toPointValue(),s=t.toPointValue(),a=o.buckets.counts,i=s.buckets.counts,n=new Array(a.length);for(let u=0;u{let n=i.toPointValue(),l=e.type===he.GAUGE||e.type===he.UP_DOWN_COUNTER||e.type===he.OBSERVABLE_GAUGE||e.type===he.OBSERVABLE_UP_DOWN_COUNTER;return{attributes:a,startTime:i.startTime,endTime:s,value:{min:n.hasMinMax?n.min:void 0,max:n.hasMinMax?n.max:void 0,sum:l?void 0:n.sum,buckets:n.buckets,count:n.count}}})}}}});var Ol,HT,D1=p(()=>{Ol=class r{constructor(e=new HT,t=0,o=0,s=0){this.backing=e,this.indexBase=t,this.indexStart=o,this.indexEnd=s}get offset(){return this.indexStart}get length(){return this.backing.length===0||this.indexEnd===this.indexStart&&this.at(0)===0?0:this.indexEnd-this.indexStart+1}counts(){return Array.from({length:this.length},(e,t)=>this.at(t))}at(e){let t=this.indexBase-this.indexStart;return e=0;e--)if(this.at(e)!==0){this.indexEnd-=this.length-e-1;break}this._rotate()}downscale(e){this._rotate();let t=1+this.indexEnd-this.indexStart,o=1<>=e,this.indexEnd>>=e,this.indexBase=this.indexStart}clone(){return new r(this.backing.clone(),this.indexBase,this.indexStart,this.indexEnd)}_rotate(){let e=this.indexBase-this.indexStart;e!==0&&(e>0?(this.backing.reverse(0,this.backing.length),this.backing.reverse(0,e),this.backing.reverse(e,this.backing.length)):(this.backing.reverse(0,this.backing.length),this.backing.reverse(0,this.backing.length+e)),this.indexBase=this.indexStart)}_relocateBucket(e,t){e!==t&&this.incrementBucket(e,this.backing.emptyBucket(t))}},HT=class r{constructor(e=[0]){this._counts=e}get length(){return this._counts.length}countAt(e){return this._counts[e]}growTo(e,t,o){let s=new Array(e).fill(0);s.splice(o,this._counts.length-t,...this._counts.slice(t)),s.splice(0,t,...this._counts.slice(0,t)),this._counts=s}reverse(e,t){let o=Math.floor((e+t)/2)-e;for(let s=0;s=t?this._counts[e]-=t:this._counts[e]=0}clone(){return new r([...this._counts])}}});function rp(r){let e=new DataView(new ArrayBuffer(8));return e.setFloat64(0,r),((e.getUint32(0)&2146435072)>>20)-1023}function np(r){let e=new DataView(new ArrayBuffer(8));e.setFloat64(0,r);let t=e.getUint32(0),o=e.getUint32(4);return(t&1048575)*Math.pow(2,32)+o}var Al,qT=p(()=>{Al=Math.pow(2,-1022)});function Rl(r,e){return r===0||r===Number.POSITIVE_INFINITY||r===Number.NEGATIVE_INFINITY||Number.isNaN(r)?r:r*Math.pow(2,e)}function k1(r){return r--,r|=r>>1,r|=r>>2,r|=r>>4,r|=r>>8,r|=r>>16,r++,r}var ip=p(()=>{});var Dr,op=p(()=>{Dr=class extends Error{}});var sp,V1=p(()=>{qT();ip();op();sp=class{constructor(e){this._shift=-e}mapToIndex(e){if(e>this._shift}lowerBoundary(e){let t=this._minNormalLowerBoundaryIndex();if(eo)throw new Dr(`overflow: ${e} is > maximum lower boundary: ${o}`);return Rl(1,e<>this._shift;return this._shift<2&&e--,e}_maxNormalLowerBoundaryIndex(){return 1023>>this._shift}_rightShift(e,t){return Math.floor(e*Math.pow(2,-t))}}});var ap,F1=p(()=>{qT();ip();op();ap=class{constructor(e){this._scale=e,this._scaleFactor=Rl(Math.LOG2E,e),this._inverseFactor=Rl(Math.LN2,-e)}mapToIndex(e){if(e<=Al)return this._minNormalLowerBoundaryIndex()-1;if(np(e)===0)return(rp(e)<=o?o:t}lowerBoundary(e){let t=this._maxNormalLowerBoundaryIndex();if(e>=t){if(e===t)return 2*Math.exp((e-(1< maximum lower boundary: ${t}`)}let o=this._minNormalLowerBoundaryIndex();if(e<=o){if(e===o)return Al;if(e===o-1)return Math.exp((e+(1<H1||r= ${G1} && <= ${H1}, got: ${r}`);return vee[r+10]}var G1,H1,vee,q1=p(()=>{V1();F1();op();G1=-10,H1=20,vee=Array.from({length:31},(r,e)=>e>10?new ap(e-10):new sp(e-10))});var as,yee,Oee,zT,lp,Nl,j1=p(()=>{is();ns();P();fn();D1();q1();ip();as=class r{constructor(e,t){this.low=e,this.high=t}static combine(e,t){return new r(Math.min(e.low,t.low),Math.max(e.high,t.high))}},yee=20,Oee=160,zT=2,lp=class r{constructor(e=e,t=Oee,o=!0,s=0,a=0,i=0,n=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,c=new Ol,u=new Ol,f=KT(yee)){this.startTime=e,this._maxSize=t,this._recordMinMax=o,this._sum=s,this._count=a,this._zeroCount=i,this._min=n,this._max=l,this._positive=c,this._negative=u,this._mapping=f,this._maxSizethis._max&&(this._max=e),e0?this._updateBuckets(this._positive,e,t):this._updateBuckets(this._negative,-e,t)}}merge(e){this._count===0?(this._min=e.min,this._max=e.max):e.count!==0&&(e.minthis.max&&(this._max=e.max)),this.startTime=e.startTime,this._sum+=e.sum,this._count+=e.count,this._zeroCount+=e.zeroCount;let t=this._minScale(e);this._downscale(this.scale-t),this._mergeBuckets(this.positive,e,e.positive,t),this._mergeBuckets(this.negative,e,e.negative,t)}diff(e){this._min=1/0,this._max=-1/0,this._sum-=e.sum,this._count-=e.count,this._zeroCount-=e.zeroCount;let t=this._minScale(e);this._downscale(this.scale-t),this._diffBuckets(this.positive,e,e.positive,t),this._diffBuckets(this.negative,e,e.negative,t)}clone(){return new r(this.startTime,this._maxSize,this._recordMinMax,this._sum,this._count,this._zeroCount,this._min,this._max,this.positive.clone(),this.negative.clone(),this._mapping)}_updateBuckets(e,t,o){let s=this._mapping.mapToIndex(t),a=!1,i=0,n=0;if(e.length===0?(e.indexStart=s,e.indexEnd=e.indexStart,e.indexBase=e.indexStart):s=this._maxSize?(a=!0,n=s,i=e.indexEnd):s>e.indexEnd&&s-e.indexStart>=this._maxSize&&(a=!0,n=e.indexStart,i=s),a){let l=this._changeScale(i,n);this._downscale(l),s=this._mapping.mapToIndex(t)}this._incrementIndexBy(e,s,o)}_incrementIndexBy(e,t,o){if(o===0)return;if(e.length===0&&(e.indexStart=e.indexEnd=e.indexBase=t),t=e.backing.length&&this._grow(e,a+1),e.indexStart=t}else if(t>e.indexEnd){let a=t-e.indexStart;a>=e.backing.length&&this._grow(e,a+1),e.indexEnd=t}let s=t-e.indexBase;s<0&&(s+=e.backing.length),e.incrementBucket(s,o)}_grow(e,t){let o=e.backing.length,s=e.indexBase-e.indexStart,a=o-s,i=k1(t);i>this._maxSize&&(i=this._maxSize);let n=i-s;e.backing.growTo(i,a,n)}_changeScale(e,t){let o=0;for(;e-t>=this._maxSize;)e>>=1,t>>=1,o++;return o}_downscale(e){if(e===0)return;if(e<0)throw new Error(`impossible change of scale: ${this.scale}`);let t=this._mapping.scale-e;this._positive.downscale(e),this._negative.downscale(e),this._mapping=KT(t)}_minScale(e){let t=Math.min(this.scale,e.scale),o=as.combine(this._highLowAtScale(this.positive,this.scale,t),this._highLowAtScale(e.positive,e.scale,t)),s=as.combine(this._highLowAtScale(this.negative,this.scale,t),this._highLowAtScale(e.negative,e.scale,t));return Math.min(t-this._changeScale(o.high,o.low),t-this._changeScale(s.high,s.low))}_highLowAtScale(e,t,o){if(e.length===0)return new as(0,-1);let s=t-o;return new as(e.indexStart>>s,e.indexEnd>>s)}_mergeBuckets(e,t,o,s){let a=o.offset,i=t.scale-s;for(let n=0;n>i,o.at(n))}_diffBuckets(e,t,o,s){let a=o.offset,i=t.scale-s;for(let n=0;n>i)-e.indexBase;c<0&&(c+=e.backing.length),e.decrementBucket(c,o.at(n))}e.trim()}},Nl=class{constructor(e,t){this._maxSize=e,this._recordMinMax=t,this.kind=Yt.EXPONENTIAL_HISTOGRAM}createAccumulation(e){return new lp(e,this._maxSize,this._recordMinMax)}merge(e,t){let o=t.clone();return o.merge(e),o}diff(e,t){let o=t.clone();return o.diff(e),o}toMetricData(e,t,o,s){return{descriptor:e,aggregationTemporality:t,dataPointType:lt.EXPONENTIAL_HISTOGRAM,dataPoints:o.map(([a,i])=>{let n=i.toPointValue(),l=e.type===he.GAUGE||e.type===he.UP_DOWN_COUNTER||e.type===he.OBSERVABLE_GAUGE||e.type===he.OBSERVABLE_UP_DOWN_COUNTER;return{attributes:a,startTime:i.startTime,endTime:s,value:{min:n.hasMinMax?n.min:void 0,max:n.hasMinMax?n.max:void 0,sum:l?void 0:n.sum,positive:{offset:n.positive.offset,bucketCounts:n.positive.bucketCounts},negative:{offset:n.negative.offset,bucketCounts:n.negative.bucketCounts},count:n.count,scale:n.scale,zeroCount:n.zeroCount}}})}}}});function Y1(r){return r.setValue(Aee,!0)}var Aee,K1=p(()=>{P();Aee=De("OpenTelemetry SDK Context Key SUPPRESS_TRACING")});function z1(){return r=>{S.error(Ree(r))}}function Ree(r){return typeof r=="string"?r:JSON.stringify(Nee(r))}function Nee(r){let e={},t=r;for(;t!==null;)Object.getOwnPropertyNames(t).forEach(o=>{if(e[o])return;let s=t[o];s&&(e[o]=String(s))}),t=Object.getPrototypeOf(t);return e}var $1=p(()=>{P()});function cp(r){try{Cee(r)}catch{}}var Cee,X1=p(()=>{$1();Cee=z1()});var W1,J1=p(()=>{W1="1.29.0"});var wi,Q1=p(()=>{J1();Ve();wi={[Se]:"opentelemetry",[st]:"node",[ge]:wt,[ve]:W1}});function Cl(r){r.unref()}var Z1=p(()=>{});var eD=p(()=>{Q1();Z1()});var tD=p(()=>{eD()});function Di(r){let e=r/1e3,t=Math.trunc(e),o=Math.round(r%1e3*Uee);return[t,o]}function ls(r){return r[0]*1e6+r[1]/1e3}var wee,Dee,Uee,APe,rD=p(()=>{wee=9,Dee=6,Uee=Math.pow(10,Dee),APe=Math.pow(10,wee)});var fr,nD=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(fr||(fr={}))});function iD(r,e){return new Promise(t=>{me.with(Y1(me.active()),()=>{r.export(e,o=>{t(o)})})})}var oD=p(()=>{P();K1()});var sD,Dn=p(()=>{X1();rD();nD();tD();oD();sD={_export:iD}});var cs,Pl,aD=p(()=>{is();Dn();ns();cs=class{constructor(e,t=0,o=[0,0]){this.startTime=e,this._current=t,this.sampleTime=o}record(e){this._current=e,this.sampleTime=Di(Date.now())}setStartTime(e){this.startTime=e}toPointValue(){return this._current}},Pl=class{constructor(){this.kind=Yt.LAST_VALUE}createAccumulation(e){return new cs(e)}merge(e,t){let o=ls(t.sampleTime)>=ls(e.sampleTime)?t:e;return new cs(e.startTime,o.toPointValue(),o.sampleTime)}diff(e,t){let o=ls(t.sampleTime)>=ls(e.sampleTime)?t:e;return new cs(t.startTime,o.toPointValue(),o.sampleTime)}toMetricData(e,t,o,s){return{descriptor:e,aggregationTemporality:t,dataPointType:lt.GAUGE,dataPoints:o.map(([a,i])=>({attributes:a,startTime:i.startTime,endTime:s,value:i.toPointValue()}))}}}});var Un,us,lD=p(()=>{is();ns();Un=class{constructor(e,t,o=0,s=!1){this.startTime=e,this.monotonic=t,this._current=o,this.reset=s}record(e){this.monotonic&&e<0||(this._current+=e)}setStartTime(e){this.startTime=e}toPointValue(){return this._current}},us=class{constructor(e){this.monotonic=e,this.kind=Yt.SUM}createAccumulation(e){return new Un(e,this.monotonic)}merge(e,t){let o=e.toPointValue(),s=t.toPointValue();return t.reset?new Un(t.startTime,this.monotonic,s,t.reset):new Un(e.startTime,this.monotonic,o+s)}diff(e,t){let o=e.toPointValue(),s=t.toPointValue();return this.monotonic&&o>s?new Un(t.startTime,this.monotonic,s,!0):new Un(t.startTime,this.monotonic,s-o)}toMetricData(e,t,o,s){return{descriptor:e,aggregationTemporality:t,dataPointType:lt.SUM,dataPoints:o.map(([a,i])=>({attributes:a,startTime:i.startTime,endTime:s,value:i.toPointValue()})),isMonotonic:this.monotonic}}}});var cD=p(()=>{b1();w1();j1();aD();lD()});var mt,fs,Ui,ps,ds,Il,Ll,bl,uD,fD,pD,dD,kee,Bee,up=p(()=>{P();cD();fn();mt=class{static Drop(){return uD}static Sum(){return fD}static LastValue(){return pD}static Histogram(){return dD}static ExponentialHistogram(){return kee}static Default(){return Bee}},fs=class r extends mt{createAggregator(e){return r.DEFAULT_INSTANCE}};fs.DEFAULT_INSTANCE=new yl;Ui=class r extends mt{createAggregator(e){switch(e.type){case he.COUNTER:case he.OBSERVABLE_COUNTER:case he.HISTOGRAM:return r.MONOTONIC_INSTANCE;default:return r.NON_MONOTONIC_INSTANCE}}};Ui.MONOTONIC_INSTANCE=new us(!0);Ui.NON_MONOTONIC_INSTANCE=new us(!1);ps=class r extends mt{createAggregator(e){return r.DEFAULT_INSTANCE}};ps.DEFAULT_INSTANCE=new Pl;ds=class r extends mt{createAggregator(e){return r.DEFAULT_INSTANCE}};ds.DEFAULT_INSTANCE=new ss([0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4],!0);Il=class extends mt{constructor(e,t=!0){if(super(),this._recordMinMax=t,e==null)throw new Error("ExplicitBucketHistogramAggregation should be created with explicit boundaries, if a single bucket histogram is required, please pass an empty array");e=e.concat(),e=e.sort((a,i)=>a-i);let o=e.lastIndexOf(-1/0),s=e.indexOf(1/0);s===-1&&(s=void 0),this._boundaries=e.slice(o+1,s)}createAggregator(e){return new ss(this._boundaries,this._recordMinMax)}},Ll=class extends mt{constructor(e=160,t=!0){super(),this._maxSize=e,this._recordMinMax=t}createAggregator(e){return new Nl(this._maxSize,this._recordMinMax)}},bl=class extends mt{_resolve(e){switch(e.type){case he.COUNTER:case he.UP_DOWN_COUNTER:case he.OBSERVABLE_COUNTER:case he.OBSERVABLE_UP_DOWN_COUNTER:return fD;case he.GAUGE:case he.OBSERVABLE_GAUGE:return pD;case he.HISTOGRAM:return e.advice.explicitBucketBoundaries?new Il(e.advice.explicitBucketBoundaries):dD}return S.warn(`Unable to recognize instrument type: ${e.type}`),uD}createAggregator(e){return this._resolve(e).createAggregator(e)}},uD=new fs,fD=new Ui,pD=new ps,dD=new ds,kee=new Ll,Bee=new bl});var hD,fp,$T=p(()=>{up();ep();hD=r=>mt.Default(),fp=r=>cr.CUMULATIVE});var hs,XT=p(()=>{P();ur();$T();hs=class{constructor(e){var t,o,s;this._shutdown=!1,this._aggregationSelector=(t=e==null?void 0:e.aggregationSelector)!==null&&t!==void 0?t:hD,this._aggregationTemporalitySelector=(o=e==null?void 0:e.aggregationTemporalitySelector)!==null&&o!==void 0?o:fp,this._metricProducers=(s=e==null?void 0:e.metricProducers)!==null&&s!==void 0?s:[],this._cardinalitySelector=e==null?void 0:e.cardinalitySelector}setMetricProducer(e){if(this._sdkMetricProducer)throw new Error("MetricReader can not be bound to a MeterProvider again.");this._sdkMetricProducer=e,this.onInitialized()}selectAggregation(e){return this._aggregationSelector(e)}selectAggregationTemporality(e){return this._aggregationTemporalitySelector(e)}selectCardinalityLimit(e){return this._cardinalitySelector?this._cardinalitySelector(e):2e3}onInitialized(){}async collect(e){if(this._sdkMetricProducer===void 0)throw new Error("MetricReader is not bound to a MetricProducer");if(this._shutdown)throw new Error("MetricReader is shutdown");let[t,...o]=await Promise.all([this._sdkMetricProducer.collect({timeoutMillis:e==null?void 0:e.timeoutMillis}),...this._metricProducers.map(n=>n.collect({timeoutMillis:e==null?void 0:e.timeoutMillis}))]),s=t.errors.concat(GT(o,n=>n.errors)),a=t.resourceMetrics.resource,i=t.resourceMetrics.scopeMetrics.concat(GT(o,n=>n.resourceMetrics.scopeMetrics));return{resourceMetrics:{resource:a,scopeMetrics:i},errors:s}}async shutdown(e){if(this._shutdown){S.error("Cannot call shutdown twice.");return}(e==null?void 0:e.timeoutMillis)==null?await this.onShutdown():await wn(this.onShutdown(),e.timeoutMillis),this._shutdown=!0}async forceFlush(e){if(this._shutdown){S.warn("Cannot forceFlush on already shutdown MetricReader.");return}if((e==null?void 0:e.timeoutMillis)==null){await this.onForceFlush();return}await wn(this.onForceFlush(),e.timeoutMillis)}}});var pp,_D=p(()=>{P();Dn();XT();ur();pp=class extends hs{constructor(e){var t,o,s,a;if(super({aggregationSelector:(t=e.exporter.selectAggregation)===null||t===void 0?void 0:t.bind(e.exporter),aggregationTemporalitySelector:(o=e.exporter.selectAggregationTemporality)===null||o===void 0?void 0:o.bind(e.exporter),metricProducers:e.metricProducers}),e.exportIntervalMillis!==void 0&&e.exportIntervalMillis<=0)throw Error("exportIntervalMillis must be greater than 0");if(e.exportTimeoutMillis!==void 0&&e.exportTimeoutMillis<=0)throw Error("exportTimeoutMillis must be greater than 0");if(e.exportTimeoutMillis!==void 0&&e.exportIntervalMillis!==void 0&&e.exportIntervalMillis0&&S.error("PeriodicExportingMetricReader: metrics collection errors",...s),o.resource.asyncAttributesPending)try{await((t=(e=o.resource).waitForAsyncAttributes)===null||t===void 0?void 0:t.call(e))}catch(i){S.debug("Error while resolving async portion of resource: ",i),cp(i)}let a=await sD._export(this._exporter,o);if(a.code!==fr.SUCCESS)throw new Error(`PeriodicExportingMetricReader: metrics export failed (error ${a.error})`)}onInitialized(){this._interval=setInterval(()=>{this._runOnce()},this._exportInterval),Cl(this._interval)}async onForceFlush(){await this._runOnce(),await this._exporter.forceFlush()}async onShutdown(){this._interval&&clearInterval(this._interval),await this._exporter.shutdown()}}});var dp,ED=p(()=>{Dn();dp=class{constructor(e){this._shutdown=!1,this._metrics=[],this._aggregationTemporality=e}export(e,t){if(this._shutdown){setTimeout(()=>t({code:fr.FAILED}),0);return}this._metrics.push(e),setTimeout(()=>t({code:fr.SUCCESS}),0)}getMetrics(){return this._metrics}forceFlush(){return Promise.resolve()}reset(){this._metrics=[]}selectAggregationTemporality(e){return this._aggregationTemporality}shutdown(){return this._shutdown=!0,Promise.resolve()}}});var hp,mD=p(()=>{Dn();$T();hp=class r{constructor(e){var t;this._shutdown=!1,this._temporalitySelector=(t=e==null?void 0:e.temporalitySelector)!==null&&t!==void 0?t:fp}export(e,t){if(this._shutdown){setImmediate(t,{code:fr.FAILED});return}return r._sendMetrics(e,t)}forceFlush(){return Promise.resolve()}selectAggregationTemporality(e){return this._temporalitySelector(e)}shutdown(){return this._shutdown=!0,Promise.resolve()}static _sendMetrics(e,t){for(let o of e.scopeMetrics)for(let s of o.metrics)console.dir({descriptor:s.descriptor,dataPointType:s.dataPointType,dataPoints:s.dataPoints},{depth:null});t({code:fr.SUCCESS})}}});function _p(){return`unknown_service:${process.argv0}`}var TD=p(()=>{});var SD=p(()=>{TD()});var gD=p(()=>{SD()});var kn,vD=p(()=>{P();Ve();Dn();gD();kn=class r{constructor(e,t){var o;this._attributes=e,this.asyncAttributesPending=t!=null,this._syncAttributes=(o=this._attributes)!==null&&o!==void 0?o:{},this._asyncAttributesPromise=t==null?void 0:t.then(s=>(this._attributes=Object.assign({},this._attributes,s),this.asyncAttributesPending=!1,s),s=>(S.debug("a resource's async attributes promise rejected: %s",s),this.asyncAttributesPending=!1,{}))}static empty(){return r.EMPTY}static default(){return new r({[at]:_p(),[ge]:wi[ge],[Se]:wi[Se],[ve]:wi[ve]})}get attributes(){var e;return this.asyncAttributesPending&&S.error("Accessing resource attributes before async attributes settled"),(e=this._attributes)!==null&&e!==void 0?e:{}}async waitForAsyncAttributes(){this.asyncAttributesPending&&await this._asyncAttributesPromise}merge(e){var t;if(!e)return this;let o=Object.assign(Object.assign({},this._syncAttributes),(t=e._syncAttributes)!==null&&t!==void 0?t:e.attributes);if(!this._asyncAttributesPromise&&!e._asyncAttributesPromise)return new r(o);let s=Promise.all([this._asyncAttributesPromise,e._asyncAttributesPromise]).then(([a,i])=>{var n;return Object.assign(Object.assign(Object.assign(Object.assign({},this._syncAttributes),a),(n=e._syncAttributes)!==null&&n!==void 0?n:e.attributes),i)});return new r(o,s)}};kn.EMPTY=new kn({})});var yD=p(()=>{vD()});var Ep,OD=p(()=>{Ep=class{constructor(){this._registeredViews=[]}addView(e){this._registeredViews.push(e)}findViews(e,t){return this._registeredViews.filter(s=>this._matchInstrument(s.instrumentSelector,e)&&this._matchMeter(s.meterSelector,t))}_matchInstrument(e,t){return(e.getType()===void 0||t.type===e.getType())&&e.getNameFilter().match(t.name)&&e.getUnitFilter().match(t.unit)}_matchMeter(e,t){return e.getNameFilter().match(t.name)&&(t.version===void 0||e.getVersionFilter().match(t.version))&&(t.schemaUrl===void 0||e.getSchemaUrlFilter().match(t.schemaUrl))}}});function xl(r){return r instanceof Es}var _s,mp,Tp,Sp,gp,Es,vp,yp,Op,Ap=p(()=>{P();Dn();_s=class{constructor(e,t){this._writableMetricStorage=e,this._descriptor=t}_record(e,t={},o=me.active()){if(typeof e!="number"){S.warn(`non-number value provided to metric ${this._descriptor.name}: ${e}`);return}this._descriptor.valueType===Ot.INT&&!Number.isInteger(e)&&(S.warn(`INT value type cannot accept a floating-point value for ${this._descriptor.name}, ignoring the fractional digits.`),e=Math.trunc(e),!Number.isInteger(e))||this._writableMetricStorage.record(e,t,o,Di(Date.now()))}},mp=class extends _s{add(e,t,o){this._record(e,t,o)}},Tp=class extends _s{add(e,t,o){if(e<0){S.warn(`negative value provided to counter ${this._descriptor.name}: ${e}`);return}this._record(e,t,o)}},Sp=class extends _s{record(e,t,o){this._record(e,t,o)}},gp=class extends _s{record(e,t,o){if(e<0){S.warn(`negative value provided to histogram ${this._descriptor.name}: ${e}`);return}this._record(e,t,o)}},Es=class{constructor(e,t,o){this._observableRegistry=o,this._descriptor=e,this._metricStorages=t}addCallback(e){this._observableRegistry.addCallback(e,this)}removeCallback(e){this._observableRegistry.removeCallback(e,this)}},vp=class extends Es{},yp=class extends Es{},Op=class extends Es{}});var Rp,AD=p(()=>{fn();Ap();Rp=class{constructor(e){this._meterSharedState=e}createGauge(e,t){let o=wr(e,he.GAUGE,t),s=this._meterSharedState.registerMetricStorage(o);return new Sp(s,o)}createHistogram(e,t){let o=wr(e,he.HISTOGRAM,t),s=this._meterSharedState.registerMetricStorage(o);return new gp(s,o)}createCounter(e,t){let o=wr(e,he.COUNTER,t),s=this._meterSharedState.registerMetricStorage(o);return new Tp(s,o)}createUpDownCounter(e,t){let o=wr(e,he.UP_DOWN_COUNTER,t),s=this._meterSharedState.registerMetricStorage(o);return new mp(s,o)}createObservableGauge(e,t){let o=wr(e,he.OBSERVABLE_GAUGE,t),s=this._meterSharedState.registerAsyncMetricStorage(o);return new yp(o,s,this._meterSharedState.observableRegistry)}createObservableCounter(e,t){let o=wr(e,he.OBSERVABLE_COUNTER,t),s=this._meterSharedState.registerAsyncMetricStorage(o);return new vp(o,s,this._meterSharedState.observableRegistry)}createObservableUpDownCounter(e,t){let o=wr(e,he.OBSERVABLE_UP_DOWN_COUNTER,t),s=this._meterSharedState.registerAsyncMetricStorage(o);return new Op(o,s,this._meterSharedState.observableRegistry)}addBatchObservableCallback(e,t){this._meterSharedState.observableRegistry.addBatchCallback(e,t)}removeBatchObservableCallback(e,t){this._meterSharedState.observableRegistry.removeBatchCallback(e,t)}}});var ms,WT=p(()=>{fn();ms=class{constructor(e){this._instrumentDescriptor=e}getInstrumentDescriptor(){return this._instrumentDescriptor}updateDescription(e){this._instrumentDescriptor=wr(this._instrumentDescriptor.name,this._instrumentDescriptor.type,{description:e,valueType:this._instrumentDescriptor.valueType,unit:this._instrumentDescriptor.unit,advice:this._instrumentDescriptor.advice})}}});var JT,Dt,Ml=p(()=>{ur();JT=class{constructor(e){this._hash=e,this._valueMap=new Map,this._keyMap=new Map}get(e,t){return t??(t=this._hash(e)),this._valueMap.get(t)}getOrDefault(e,t){let o=this._hash(e);if(this._valueMap.has(o))return this._valueMap.get(o);let s=t();return this._keyMap.has(o)||this._keyMap.set(o,e),this._valueMap.set(o,s),s}set(e,t,o){o??(o=this._hash(e)),this._keyMap.has(o)||this._keyMap.set(o,e),this._valueMap.set(o,t)}has(e,t){return t??(t=this._hash(e)),this._valueMap.has(t)}*keys(){let e=this._keyMap.entries(),t=e.next();for(;t.done!==!0;)yield[t.value[1],t.value[0]],t=e.next()}*entries(){let e=this._valueMap.entries(),t=e.next();for(;t.done!==!0;)yield[this._keyMap.get(t.value[0]),t.value[1],t.value[0]],t=e.next()}get size(){return this._valueMap.size}},Dt=class extends JT{constructor(){super(tp)}}});var Ts,QT=p(()=>{ur();Ml();Ts=class{constructor(e,t){this._aggregator=e,this._activeCollectionStorage=new Dt,this._cumulativeMemoStorage=new Dt,this._overflowAttributes={"otel.metric.overflow":!0},this._cardinalityLimit=(t??2e3)-1,this._overflowHashCode=tp(this._overflowAttributes)}record(e,t,o,s){let a=this._activeCollectionStorage.get(t);if(!a){if(this._activeCollectionStorage.size>=this._cardinalityLimit){let i=this._activeCollectionStorage.getOrDefault(this._overflowAttributes,()=>this._aggregator.createAccumulation(s));i==null||i.record(e);return}a=this._aggregator.createAccumulation(s),this._activeCollectionStorage.set(t,a)}a==null||a.record(e)}batchCumulate(e,t){Array.from(e.entries()).forEach(([o,s,a])=>{let i=this._aggregator.createAccumulation(t);i==null||i.record(s);let n=i;if(this._cumulativeMemoStorage.has(o,a)){let l=this._cumulativeMemoStorage.get(o,a);n=this._aggregator.diff(l,i)}else if(this._cumulativeMemoStorage.size>=this._cardinalityLimit&&(o=this._overflowAttributes,a=this._overflowHashCode,this._cumulativeMemoStorage.has(o,a))){let l=this._cumulativeMemoStorage.get(o,a);n=this._aggregator.diff(l,i)}if(this._activeCollectionStorage.has(o,a)){let l=this._activeCollectionStorage.get(o,a);n=this._aggregator.merge(l,n)}this._cumulativeMemoStorage.set(o,i,a),this._activeCollectionStorage.set(o,n,a)})}collect(){let e=this._activeCollectionStorage;return this._activeCollectionStorage=new Dt,e}}});function Vee(r){return Array.from(r.entries())}var Ss,ZT=p(()=>{ep();Ml();Ss=class r{constructor(e,t){this._aggregator=e,this._unreportedAccumulations=new Map,this._reportHistory=new Map,t.forEach(o=>{this._unreportedAccumulations.set(o,[])})}buildMetrics(e,t,o,s){this._stashAccumulations(o);let a=this._getMergedUnreportedAccumulations(e),i=a,n;if(this._reportHistory.has(e)){let c=this._reportHistory.get(e),u=c.collectionTime;n=c.aggregationTemporality,n===cr.CUMULATIVE?i=r.merge(c.accumulations,a,this._aggregator):i=r.calibrateStartTime(c.accumulations,a,u)}else n=e.selectAggregationTemporality(t.type);this._reportHistory.set(e,{accumulations:i,collectionTime:s,aggregationTemporality:n});let l=Vee(i);if(l.length!==0)return this._aggregator.toMetricData(t,n,l,s)}_stashAccumulations(e){let t=this._unreportedAccumulations.keys();for(let o of t){let s=this._unreportedAccumulations.get(o);s===void 0&&(s=[],this._unreportedAccumulations.set(o,s)),s.push(e)}}_getMergedUnreportedAccumulations(e){let t=new Dt,o=this._unreportedAccumulations.get(e);if(this._unreportedAccumulations.set(e,[]),o===void 0)return t;for(let s of o)t=r.merge(t,s,this._aggregator);return t}static merge(e,t,o){let s=e,a=t.entries(),i=a.next();for(;i.done!==!0;){let[n,l,c]=i.value;if(e.has(n,c)){let u=e.get(n,c),f=o.merge(u,l);s.set(n,f,c)}else s.set(n,l,c);i=a.next()}return s}static calibrateStartTime(e,t,o){for(let[s,a]of e.keys()){let i=t.get(s,a);i==null||i.setStartTime(o)}return t}}});var Np,RD=p(()=>{WT();QT();ZT();Ml();Np=class extends ms{constructor(e,t,o,s,a){super(e),this._attributesProcessor=o,this._aggregationCardinalityLimit=a,this._deltaMetricStorage=new Ts(t,this._aggregationCardinalityLimit),this._temporalMetricStorage=new Ss(t,s)}record(e,t){let o=new Dt;Array.from(e.entries()).forEach(([s,a])=>{o.set(this._attributesProcessor.process(s),a)}),this._deltaMetricStorage.batchCumulate(o,t)}collect(e,t){let o=this._deltaMetricStorage.collect();return this._temporalMetricStorage.buildMetrics(e,this._instrumentDescriptor,o,t)}}});function eS(r,e){let t="";return r.unit!==e.unit&&(t+=` - Unit '${r.unit}' does not match '${e.unit}' +`),r.type!==e.type&&(t+=` - Type '${r.type}' does not match '${e.type}' +`),r.valueType!==e.valueType&&(t+=` - Value Type '${r.valueType}' does not match '${e.valueType}' +`),r.description!==e.description&&(t+=` - Description '${r.description}' does not match '${e.description}' +`),t}function Fee(r,e){return` - use valueType '${r.valueType}' on instrument creation or use an instrument name other than '${e.name}'`}function Gee(r,e){return` - use unit '${r.unit}' on instrument creation or use an instrument name other than '${e.name}'`}function Hee(r,e){let t={name:e.name,type:e.type,unit:e.unit},o=JSON.stringify(t);return` - create a new view with a name other than '${r.name}' and InstrumentSelector '${o}'`}function qee(r,e){let t={name:e.name,type:e.type,unit:e.unit},o=JSON.stringify(t);return` - create a new view with a name other than '${r.name}' and InstrumentSelector '${o}' + - OR - create a new view with the name ${r.name} and description '${r.description}' and InstrumentSelector ${o} + - OR - create a new view with the name ${e.name} and description '${r.description}' and InstrumentSelector ${o}`}function tS(r,e){return r.valueType!==e.valueType?Fee(r,e):r.unit!==e.unit?Gee(r,e):r.type!==e.type?Hee(r,e):r.description!==e.description?qee(r,e):""}var ND=p(()=>{});var Cp,CD=p(()=>{fn();P();ND();Cp=class r{constructor(){this._sharedRegistry=new Map,this._perCollectorRegistry=new Map}static create(){return new r}getStorages(e){let t=[];for(let s of this._sharedRegistry.values())t=t.concat(s);let o=this._perCollectorRegistry.get(e);if(o!=null)for(let s of o.values())t=t.concat(s);return t}register(e){this._registerStorage(e,this._sharedRegistry)}registerForCollector(e,t){let o=this._perCollectorRegistry.get(e);o==null&&(o=new Map,this._perCollectorRegistry.set(e,o)),this._registerStorage(t,o)}findOrUpdateCompatibleStorage(e){let t=this._sharedRegistry.get(e.name);return t===void 0?null:this._findOrUpdateCompatibleStorage(e,t)}findOrUpdateCompatibleCollectorStorage(e,t){let o=this._perCollectorRegistry.get(e);if(o===void 0)return null;let s=o.get(t.name);return s===void 0?null:this._findOrUpdateCompatibleStorage(t,s)}_registerStorage(e,t){let o=e.getInstrumentDescriptor(),s=t.get(o.name);if(s===void 0){t.set(o.name,[e]);return}s.push(e)}_findOrUpdateCompatibleStorage(e,t){let o=null;for(let s of t){let a=s.getInstrumentDescriptor();M1(a,e)?(a.description!==e.description&&(e.description.length>a.description.length&&s.updateDescription(e.description),S.warn("A view or instrument with the name ",e.name,` has already been registered, but has a different description and is incompatible with another registered view. +`,`Details: +`,eS(a,e),`The longer description will be used. +To resolve the conflict:`,tS(a,e))),o=s):S.warn("A view or instrument with the name ",e.name,` has already been registered and is incompatible with another registered view. +`,`Details: +`,eS(a,e),`To resolve the conflict: +`,tS(a,e))}return o}}});var Pp,PD=p(()=>{Pp=class{constructor(e){this._backingStorages=e}record(e,t,o,s){this._backingStorages.forEach(a=>{a.record(e,t,o,s)})}}});var Ip,Lp,ID=p(()=>{P();Ml();Ap();Ip=class{constructor(e,t){this._instrumentName=e,this._valueType=t,this._buffer=new Dt}observe(e,t={}){if(typeof e!="number"){S.warn(`non-number value provided to metric ${this._instrumentName}: ${e}`);return}this._valueType===Ot.INT&&!Number.isInteger(e)&&(S.warn(`INT value type cannot accept a floating-point value for ${this._instrumentName}, ignoring the fractional digits.`),e=Math.trunc(e),!Number.isInteger(e))||this._buffer.set(t,e)}},Lp=class{constructor(){this._buffer=new Map}observe(e,t,o={}){if(!xl(e))return;let s=this._buffer.get(e);if(s==null&&(s=new Dt,this._buffer.set(e,s)),typeof t!="number"){S.warn(`non-number value provided to metric ${e._descriptor.name}: ${t}`);return}e._descriptor.valueType===Ot.INT&&!Number.isInteger(t)&&(S.warn(`INT value type cannot accept a floating-point value for ${e._descriptor.name}, ignoring the fractional digits.`),t=Math.trunc(t),!Number.isInteger(t))||s.set(o,t)}}});var bp,LD=p(()=>{P();Ap();ID();ur();bp=class{constructor(){this._callbacks=[],this._batchCallbacks=[]}addCallback(e,t){this._findCallback(e,t)>=0||this._callbacks.push({callback:e,instrument:t})}removeCallback(e,t){let o=this._findCallback(e,t);o<0||this._callbacks.splice(o,1)}addBatchCallback(e,t){let o=new Set(t.filter(xl));if(o.size===0){S.error("BatchObservableCallback is not associated with valid instruments",t);return}this._findBatchCallback(e,o)>=0||this._batchCallbacks.push({callback:e,instruments:o})}removeBatchCallback(e,t){let o=new Set(t.filter(xl)),s=this._findBatchCallback(e,o);s<0||this._batchCallbacks.splice(s,1)}async observe(e,t){let o=this._observeCallbacks(e,t),s=this._observeBatchCallbacks(e,t);return(await N1([...o,...s])).filter(C1).map(n=>n.reason)}_observeCallbacks(e,t){return this._callbacks.map(async({callback:o,instrument:s})=>{let a=new Ip(s._descriptor.name,s._descriptor.valueType),i=Promise.resolve(o(a));t!=null&&(i=wn(i,t)),await i,s._metricStorages.forEach(n=>{n.record(a._buffer,e)})})}_observeBatchCallbacks(e,t){return this._batchCallbacks.map(async({callback:o,instruments:s})=>{let a=new Lp,i=Promise.resolve(o(a));t!=null&&(i=wn(i,t)),await i,s.forEach(n=>{let l=a._buffer.get(n);l!=null&&n._metricStorages.forEach(c=>{c.record(l,e)})})})}_findCallback(e,t){return this._callbacks.findIndex(o=>o.callback===e&&o.instrument===t)}_findBatchCallback(e,t){return this._batchCallbacks.findIndex(o=>o.callback===e&&P1(o.instruments,t))}}});var xp,bD=p(()=>{WT();QT();ZT();xp=class extends ms{constructor(e,t,o,s,a){super(e),this._attributesProcessor=o,this._aggregationCardinalityLimit=a,this._deltaMetricStorage=new Ts(t,this._aggregationCardinalityLimit),this._temporalMetricStorage=new Ss(t,s)}record(e,t,o,s){t=this._attributesProcessor.process(t,o),this._deltaMetricStorage.record(e,t,o,s)}collect(e,t){let o=this._deltaMetricStorage.collect();return this._temporalMetricStorage.buildMetrics(e,this._instrumentDescriptor,o,t)}}});var Bn,rS,Mp,jee,nS=p(()=>{Bn=class{static Noop(){return jee}},rS=class extends Bn{process(e,t){return e}},Mp=class extends Bn{constructor(e){super(),this._allowedAttributeNames=e}process(e,t){let o={};return Object.keys(e).filter(s=>this._allowedAttributeNames.includes(s)).forEach(s=>o[s]=e[s]),o}},jee=new rS});var wp,xD=p(()=>{fn();AD();ur();RD();CD();PD();LD();bD();nS();wp=class{constructor(e,t){this._meterProviderSharedState=e,this._instrumentationScope=t,this.metricStorageRegistry=new Cp,this.observableRegistry=new bp,this.meter=new Rp(this)}registerMetricStorage(e){let t=this._registerMetricStorage(e,xp);return t.length===1?t[0]:new Pp(t)}registerAsyncMetricStorage(e){return this._registerMetricStorage(e,Np)}async collect(e,t,o){let s=await this.observableRegistry.observe(t,o==null?void 0:o.timeoutMillis),a=this.metricStorageRegistry.getStorages(e);if(a.length===0)return null;let i=a.map(n=>n.collect(e,t)).filter(A1);return i.length===0?{errors:s}:{scopeMetrics:{scope:this._instrumentationScope,metrics:i},errors:s}}_registerMetricStorage(e,t){let s=this._meterProviderSharedState.viewRegistry.findViews(e,this._instrumentationScope).map(a=>{let i=x1(a,e),n=this.metricStorageRegistry.findOrUpdateCompatibleStorage(i);if(n!=null)return n;let l=a.aggregation.createAggregator(i),c=new t(i,l,a.attributesProcessor,this._meterProviderSharedState.metricCollectors,a.aggregationCardinalityLimit);return this.metricStorageRegistry.register(c),c});if(s.length===0){let i=this._meterProviderSharedState.selectAggregations(e.type).map(([n,l])=>{let c=this.metricStorageRegistry.findOrUpdateCompatibleCollectorStorage(n,e);if(c!=null)return c;let u=l.createAggregator(e),f=n.selectCardinalityLimit(e.type),_=new t(e,u,Bn.Noop(),[n],f);return this.metricStorageRegistry.registerForCollector(n,_),_});s=s.concat(i)}return s}}});var Dp,MD=p(()=>{ur();OD();xD();Dp=class{constructor(e){this.resource=e,this.viewRegistry=new Ep,this.metricCollectors=[],this.meterSharedStates=new Map}getMeterSharedState(e){let t=R1(e),o=this.meterSharedStates.get(t);return o==null&&(o=new wp(this,e),this.meterSharedStates.set(t,o)),o}selectAggregations(e){let t=[];for(let o of this.metricCollectors)t.push([o,o.selectAggregation(e)]);return t}}});var Up,wD=p(()=>{Dn();Up=class{constructor(e,t){this._sharedState=e,this._metricReader=t}async collect(e){let t=Di(Date.now()),o=[],s=[],a=Array.from(this._sharedState.meterSharedStates.values()).map(async i=>{let n=await i.collect(this,t,e);(n==null?void 0:n.scopeMetrics)!=null&&o.push(n.scopeMetrics),(n==null?void 0:n.errors)!=null&&s.push(...n.errors)});return await Promise.all(a),{resourceMetrics:{resource:this._sharedState.resource,scopeMetrics:o},errors:s}}async forceFlush(e){await this._metricReader.forceFlush(e)}async shutdown(e){await this._metricReader.shutdown(e)}selectAggregationTemporality(e){return this._metricReader.selectAggregationTemporality(e)}selectAggregation(e){return this._metricReader.selectAggregation(e)}selectCardinalityLimit(e){var t,o,s;return(s=(o=(t=this._metricReader).selectCardinalityLimit)===null||o===void 0?void 0:o.call(t,e))!==null&&s!==void 0?s:2e3}}});function Yee(r,e){let t=e??kn.empty();return r?kn.default().merge(t):t}var kp,DD=p(()=>{P();yD();MD();wD();kp=class{constructor(e){var t;if(this._shutdown=!1,this._sharedState=new Dp(Yee((t=e==null?void 0:e.mergeResourceWithDefaults)!==null&&t!==void 0?t:!0,e==null?void 0:e.resource)),(e==null?void 0:e.views)!=null&&e.views.length>0)for(let o of e.views)this._sharedState.viewRegistry.addView(o);if((e==null?void 0:e.readers)!=null&&e.readers.length>0)for(let o of e.readers)this.addMetricReader(o)}getMeter(e,t="",o={}){return this._shutdown?(S.warn("A shutdown MeterProvider cannot provide a Meter"),Gu()):this._sharedState.getMeterSharedState({name:e,version:t,schemaUrl:o.schemaUrl}).meter}addMetricReader(e){let t=new Up(this._sharedState,e);e.setMetricProducer(t),this._sharedState.metricCollectors.push(t)}async shutdown(e){if(this._shutdown){S.warn("shutdown may only be called once per MeterProvider");return}this._shutdown=!0,await Promise.all(this._sharedState.metricCollectors.map(t=>t.shutdown(e)))}async forceFlush(e){if(this._shutdown){S.warn("invalid attempt to force flush after MeterProvider shutdown");return}await Promise.all(this._sharedState.metricCollectors.map(t=>t.forceFlush(e)))}}});var Kee,gs,Vn,Bp=p(()=>{Kee=/[\^$\\.+?()[\]{}|]/g,gs=class r{constructor(e){e==="*"?(this._matchAll=!0,this._regexp=/.*/):(this._matchAll=!1,this._regexp=new RegExp(r.escapePattern(e)))}match(e){return this._matchAll?!0:this._regexp.test(e)}static escapePattern(e){return`^${e.replace(Kee,"\\$&").replace("*",".*")}$`}static hasWildcard(e){return e.includes("*")}},Vn=class{constructor(e){this._matchAll=e===void 0,this._pattern=e}match(e){return!!(this._matchAll||e===this._pattern)}}});var Vp,UD=p(()=>{Bp();Vp=class{constructor(e){var t;this._nameFilter=new gs((t=e==null?void 0:e.name)!==null&&t!==void 0?t:"*"),this._type=e==null?void 0:e.type,this._unitFilter=new Vn(e==null?void 0:e.unit)}getType(){return this._type}getNameFilter(){return this._nameFilter}getUnitFilter(){return this._unitFilter}}});var Fp,kD=p(()=>{Bp();Fp=class{constructor(e){this._nameFilter=new Vn(e==null?void 0:e.name),this._versionFilter=new Vn(e==null?void 0:e.version),this._schemaUrlFilter=new Vn(e==null?void 0:e.schemaUrl)}getNameFilter(){return this._nameFilter}getVersionFilter(){return this._versionFilter}getSchemaUrlFilter(){return this._schemaUrlFilter}}});function zee(r){return r.instrumentName==null&&r.instrumentType==null&&r.instrumentUnit==null&&r.meterName==null&&r.meterVersion==null&&r.meterSchemaUrl==null}var Gp,BD=p(()=>{Bp();nS();UD();kD();up();Gp=class{constructor(e){var t;if(zee(e))throw new Error("Cannot create view with no selector arguments supplied");if(e.name!=null&&((e==null?void 0:e.instrumentName)==null||gs.hasWildcard(e.instrumentName)))throw new Error("Views with a specified name must be declared with an instrument selector that selects at most one instrument per meter.");e.attributeKeys!=null?this.attributesProcessor=new Mp(e.attributeKeys):this.attributesProcessor=Bn.Noop(),this.name=e.name,this.description=e.description,this.aggregation=(t=e.aggregation)!==null&&t!==void 0?t:mt.Default(),this.instrumentSelector=new Vp({name:e.instrumentName,type:e.instrumentType,unit:e.instrumentUnit}),this.meterSelector=new Fp({name:e.meterName,version:e.meterVersion,schemaUrl:e.meterSchemaUrl}),this.aggregationCardinalityLimit=e.aggregationCardinalityLimit}}});var iS={};Ae(iS,{Aggregation:()=>mt,AggregationTemporality:()=>cr,ConsoleMetricExporter:()=>hp,DataPointType:()=>lt,DefaultAggregation:()=>bl,DropAggregation:()=>fs,ExplicitBucketHistogramAggregation:()=>Il,ExponentialHistogramAggregation:()=>Ll,HistogramAggregation:()=>ds,InMemoryMetricExporter:()=>dp,InstrumentType:()=>he,LastValueAggregation:()=>ps,MeterProvider:()=>kp,MetricReader:()=>hs,PeriodicExportingMetricReader:()=>pp,SumAggregation:()=>Ui,TimeoutError:()=>Mi,View:()=>Gp});var Hp=p(()=>{ep();ns();XT();_D();ED();mD();fn();DD();up();BD();ur()});var sS=T(qp=>{"use strict";Object.defineProperty(qp,"__esModule",{value:!0});qp.AbstractAsyncHooksContextManager=void 0;var $ee=V("events"),Xee=["addListener","on","once","prependListener","prependOnceListener"],oS=class{constructor(){this._kOtListeners=Symbol("OtListeners"),this._wrapped=!1}bind(e,t){return t instanceof $ee.EventEmitter?this._bindEventEmitter(e,t):typeof t=="function"?this._bindFunction(e,t):t}_bindFunction(e,t){let o=this,s=function(...a){return o.with(e,()=>t.apply(this,a))};return Object.defineProperty(s,"length",{enumerable:!1,configurable:!0,writable:!1,value:t.length}),s}_bindEventEmitter(e,t){return this._getPatchMap(t)!==void 0||(this._createPatchMap(t),Xee.forEach(s=>{t[s]!==void 0&&(t[s]=this._patchAddListener(t,t[s],e))}),typeof t.removeListener=="function"&&(t.removeListener=this._patchRemoveListener(t,t.removeListener)),typeof t.off=="function"&&(t.off=this._patchRemoveListener(t,t.off)),typeof t.removeAllListeners=="function"&&(t.removeAllListeners=this._patchRemoveAllListeners(t,t.removeAllListeners))),t}_patchRemoveListener(e,t){let o=this;return function(s,a){var i;let n=(i=o._getPatchMap(e))===null||i===void 0?void 0:i[s];if(n===void 0)return t.call(this,s,a);let l=n.get(a);return t.call(this,s,l||a)}}_patchRemoveAllListeners(e,t){let o=this;return function(s){let a=o._getPatchMap(e);return a!==void 0&&(arguments.length===0?o._createPatchMap(e):a[s]!==void 0&&delete a[s]),t.apply(this,arguments)}}_patchAddListener(e,t,o){let s=this;return function(a,i){if(s._wrapped)return t.call(this,a,i);let n=s._getPatchMap(e);n===void 0&&(n=s._createPatchMap(e));let l=n[a];l===void 0&&(l=new WeakMap,n[a]=l);let c=s.bind(o,i);l.set(i,c),s._wrapped=!0;try{return t.call(this,a,c)}finally{s._wrapped=!1}}}_createPatchMap(e){let t=Object.create(null);return e[this._kOtListeners]=t,t}_getPatchMap(e){return e[this._kOtListeners]}};qp.AbstractAsyncHooksContextManager=oS});var VD=T(jp=>{"use strict";Object.defineProperty(jp,"__esModule",{value:!0});jp.AsyncHooksContextManager=void 0;var Wee=(P(),ee(ot)),Jee=V("async_hooks"),Qee=sS(),aS=class extends Qee.AbstractAsyncHooksContextManager{constructor(){super(),this._contexts=new Map,this._stack=[],this._asyncHook=Jee.createHook({init:this._init.bind(this),before:this._before.bind(this),after:this._after.bind(this),destroy:this._destroy.bind(this),promiseResolve:this._destroy.bind(this)})}active(){var e;return(e=this._stack[this._stack.length-1])!==null&&e!==void 0?e:Wee.ROOT_CONTEXT}with(e,t,o,...s){this._enterContext(e);try{return t.call(o,...s)}finally{this._exitContext()}}enable(){return this._asyncHook.enable(),this}disable(){return this._asyncHook.disable(),this._contexts.clear(),this._stack=[],this}_init(e,t){if(t==="TIMERWRAP")return;let o=this._stack[this._stack.length-1];o!==void 0&&this._contexts.set(e,o)}_destroy(e){this._contexts.delete(e)}_before(e){let t=this._contexts.get(e);t!==void 0&&this._enterContext(t)}_after(){this._exitContext()}_enterContext(e){this._stack.push(e)}_exitContext(){this._stack.pop()}};jp.AsyncHooksContextManager=aS});var FD=T(Yp=>{"use strict";Object.defineProperty(Yp,"__esModule",{value:!0});Yp.AsyncLocalStorageContextManager=void 0;var Zee=(P(),ee(ot)),ete=V("async_hooks"),tte=sS(),lS=class extends tte.AbstractAsyncHooksContextManager{constructor(){super(),this._asyncLocalStorage=new ete.AsyncLocalStorage}active(){var e;return(e=this._asyncLocalStorage.getStore())!==null&&e!==void 0?e:Zee.ROOT_CONTEXT}with(e,t,o,...s){let a=o==null?t:t.bind(o);return this._asyncLocalStorage.run(e,a,...s)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}};Yp.AsyncLocalStorageContextManager=lS});var GD=T(vs=>{"use strict";Object.defineProperty(vs,"__esModule",{value:!0});vs.AsyncLocalStorageContextManager=vs.AsyncHooksContextManager=void 0;var rte=VD();Object.defineProperty(vs,"AsyncHooksContextManager",{enumerable:!0,get:function(){return rte.AsyncHooksContextManager}});var nte=FD();Object.defineProperty(vs,"AsyncLocalStorageContextManager",{enumerable:!0,get:function(){return nte.AsyncLocalStorageContextManager}})});var ys,cS=p(()=>{P();ys=De("OpenTelemetry Context Key B3 Debug Flag")});var Fn,Os,As,Rs,Kp,Ns,wl=p(()=>{Fn="b3",Os="x-b3-traceid",As="x-b3-spanid",Rs="x-b3-sampled",Kp="x-b3-parentspanid",Ns="x-b3-flags"});function ste(r){return r===se.SAMPLED||r===se.NONE}function ate(r){return Array.isArray(r)?r[0]:r}function $p(r,e,t){let o=e.get(r,t);return ate(o)}function lte(r,e){let t=$p(r,e,Os);return typeof t=="string"?t.padStart(32,"0"):""}function cte(r,e){let t=$p(r,e,As);return typeof t=="string"?t:""}function HD(r,e){return $p(r,e,Ns)==="1"?"1":void 0}function ute(r,e){let t=$p(r,e,Rs);if(HD(r,e)==="1"||ite.has(t))return se.SAMPLED;if(t===void 0||ote.has(t))return se.NONE}var ite,ote,zp,qD=p(()=>{P();xr();cS();wl();ite=new Set([!0,"true","True","1",1]),ote=new Set([!1,"false","False","0",0]);zp=class{inject(e,t,o){let s=ie.getSpanContext(e);if(!s||!xe(s)||At(e))return;let a=e.getValue(ys);o.set(t,Os,s.traceId),o.set(t,As,s.spanId),a==="1"?o.set(t,Ns,a):s.traceFlags!==void 0&&o.set(t,Rs,(se.SAMPLED&s.traceFlags)===se.SAMPLED?"1":"0")}extract(e,t,o){let s=lte(t,o),a=cte(t,o),i=ute(t,o),n=HD(t,o);return Mt(s)&&yi(a)&&ste(i)?(e=e.setValue(ys,n),ie.setSpanContext(e,{traceId:s,spanId:a,isRemote:!0,traceFlags:i})):e}fields(){return[Os,As,Ns,Rs,Kp]}}});function _te(r){return r.length===32?r:`${pte}${r}`}function Ete(r){return r&&dte.has(r)?se.SAMPLED:se.NONE}var fte,pte,dte,hte,Xp,jD=p(()=>{P();xr();cS();wl();fte=/((?:[0-9a-f]{16}){1,2})-([0-9a-f]{16})(?:-([01d](?![0-9a-f])))?(?:-([0-9a-f]{16}))?/,pte="0".repeat(16),dte=new Set(["d","1"]),hte="d";Xp=class{inject(e,t,o){let s=ie.getSpanContext(e);if(!s||!xe(s)||At(e))return;let a=e.getValue(ys)||s.traceFlags&1,i=`${s.traceId}-${s.spanId}-${a}`;o.set(t,Fn,i)}extract(e,t,o){let s=o.get(t,Fn),a=Array.isArray(s)?s[0]:s;if(typeof a!="string")return e;let i=a.match(fte);if(!i)return e;let[,n,l,c]=i,u=_te(n);if(!Mt(u)||!yi(l))return e;let f=Ete(c);return c===hte&&(e=e.setValue(ys,c)),ie.setSpanContext(e,{traceId:u,spanId:l,isRemote:!0,traceFlags:f})}fields(){return[Fn]}}});var Cs,uS=p(()=>{(function(r){r[r.SINGLE_HEADER=0]="SINGLE_HEADER",r[r.MULTI_HEADER=1]="MULTI_HEADER"})(Cs||(Cs={}))});var Wp,YD=p(()=>{xr();qD();jD();wl();uS();Wp=class{constructor(e={}){this._b3MultiPropagator=new zp,this._b3SinglePropagator=new Xp,e.injectEncoding===Cs.MULTI_HEADER?(this._inject=this._b3MultiPropagator.inject,this._fields=this._b3MultiPropagator.fields()):(this._inject=this._b3SinglePropagator.inject,this._fields=this._b3SinglePropagator.fields())}inject(e,t,o){At(e)||this._inject(e,t,o)}extract(e,t,o){let s=o.get(t,Fn);return(Array.isArray(s)?s[0]:s)?this._b3SinglePropagator.extract(e,t,o):this._b3MultiPropagator.extract(e,t,o)}fields(){return this._fields}}});var KD={};Ae(KD,{B3InjectEncoding:()=>Cs,B3Propagator:()=>Wp,B3_CONTEXT_HEADER:()=>Fn,X_B3_FLAGS:()=>Ns,X_B3_PARENT_SPAN_ID:()=>Kp,X_B3_SAMPLED:()=>Rs,X_B3_SPAN_ID:()=>As,X_B3_TRACE_ID:()=>Os});var zD=p(()=>{YD();wl();uS()});function Dl(r){return r.setValue($D,!0)}function ki(r){return r.getValue($D)===!0}var $D,Ul=p(()=>{P();$D=De("OpenTelemetry SDK Context Key SUPPRESS_TRACING")});var XD,Jp,kl,Qp,fS=p(()=>{XD="=",Jp=";",kl=",",Qp="baggage"});function WD(r){return r.reduce((e,t)=>{let o=`${e}${e!==""?kl:""}${t}`;return o.length>8192?e:o},"")}function JD(r){return r.getAllEntries().map(([e,t])=>{let o=`${encodeURIComponent(e)}=${encodeURIComponent(t.value)}`;return t.metadata!==void 0&&(o+=Jp+t.metadata.toString()),o})}function QD(r){let e=r.split(Jp);if(e.length<=0)return;let t=e.shift();if(!t)return;let o=t.indexOf(XD);if(o<=0)return;let s=decodeURIComponent(t.substring(0,o).trim()),a=decodeURIComponent(t.substring(o+1).trim()),i;return e.length>0&&(i=Lr(e.join(Jp))),{key:s,value:a,metadata:i}}var ZD=p(()=>{P();fS()});var Bl,eU=p(()=>{P();Ul();fS();ZD();Bl=class{inject(e,t,o){let s=Ue.getBaggage(e);if(!s||ki(e))return;let a=JD(s).filter(n=>n.length<=4096).slice(0,180),i=WD(a);i.length>0&&o.set(t,Qp,i)}extract(e,t,o){let s=o.get(t,Qp),a=Array.isArray(s)?s.join(kl):s;if(!a)return e;let i={};return a.length===0||(a.split(kl).forEach(l=>{let c=QD(l);if(c){let u={value:c.value};c.metadata&&(u.metadata=c.metadata),i[c.key]=u}}),Object.entries(i).length===0)?e:Ue.setBaggage(e,Ue.createBaggage(i))}fields(){return[Qp]}}});function Bi(r){let e={};if(typeof r!="object"||r==null)return e;for(let[t,o]of Object.entries(r)){if(!tU(t)){S.warn(`Invalid attribute key: ${t}`);continue}if(!Zp(o)){S.warn(`Invalid attribute value set for key: ${t}`);continue}Array.isArray(o)?e[t]=o.slice():e[t]=o}return e}function tU(r){return typeof r=="string"&&r.length>0}function Zp(r){return r==null?!0:Array.isArray(r)?gte(r):rU(r)}function gte(r){let e;for(let t of r)if(t!=null){if(!e){if(rU(t)){e=typeof t;continue}return!1}if(typeof t!==e)return!1}return!0}function rU(r){switch(typeof r){case"number":case"boolean":case"string":return!0}return!1}var nU=p(()=>{P()});function iU(){return r=>{S.error(vte(r))}}function vte(r){return typeof r=="string"?r:JSON.stringify(yte(r))}function yte(r){let e={},t=r;for(;t!==null;)Object.getOwnPropertyNames(t).forEach(o=>{if(e[o])return;let s=t[o];s&&(e[o]=String(s))}),t=Object.getPrototypeOf(t);return e}var oU=p(()=>{P()});function Kt(r){try{Ote(r)}catch{}}var Ote,sU=p(()=>{oU();Ote=iU()});var Ut,pS=p(()=>{(function(r){r.AlwaysOff="always_off",r.AlwaysOn="always_on",r.ParentBasedAlwaysOff="parentbased_always_off",r.ParentBasedAlwaysOn="parentbased_always_on",r.ParentBasedTraceIdRatio="parentbased_traceidratio",r.TraceIdRatio="traceidratio"})(Ut||(Ut={}))});function Nte(r){return Rte.indexOf(r)>-1}function Pte(r){return Cte.indexOf(r)>-1}function Lte(r){return Ite.indexOf(r)>-1}function bte(r,e,t){if(typeof t[r]>"u")return;let o=String(t[r]);e[r]=o.toLowerCase()==="true"}function xte(r,e,t,o=-1/0,s=1/0){if(typeof t[r]<"u"){let a=Number(t[r]);isNaN(a)||(as?e[r]=s:e[r]=a)}}function Mte(r,e,t,o=Ate){let s=t[r];typeof s=="string"&&(e[r]=s.split(o).map(a=>a.trim()))}function Dte(r,e,t){let o=t[r];if(typeof o=="string"){let s=wte[o.toUpperCase()];s!=null&&(e[r]=s)}}function td(r){let e={};for(let t in ed){let o=t;switch(o){case"OTEL_LOG_LEVEL":Dte(o,e,r);break;default:if(Nte(o))bte(o,e,r);else if(Pte(o))xte(o,e,r);else if(Lte(o))Mte(o,e,r);else{let s=r[o];typeof s<"u"&&s!==null&&(e[o]=String(s))}}}return e}var Ate,Rte,Cte,Ite,Ps,Is,aU,lU,ed,wte,dS=p(()=>{P();pS();Ate=",",Rte=["OTEL_SDK_DISABLED"];Cte=["OTEL_BSP_EXPORT_TIMEOUT","OTEL_BSP_MAX_EXPORT_BATCH_SIZE","OTEL_BSP_MAX_QUEUE_SIZE","OTEL_BSP_SCHEDULE_DELAY","OTEL_BLRP_EXPORT_TIMEOUT","OTEL_BLRP_MAX_EXPORT_BATCH_SIZE","OTEL_BLRP_MAX_QUEUE_SIZE","OTEL_BLRP_SCHEDULE_DELAY","OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_SPAN_LINK_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_EXPORTER_OTLP_TIMEOUT","OTEL_EXPORTER_OTLP_TRACES_TIMEOUT","OTEL_EXPORTER_OTLP_METRICS_TIMEOUT","OTEL_EXPORTER_OTLP_LOGS_TIMEOUT","OTEL_EXPORTER_JAEGER_AGENT_PORT"];Ite=["OTEL_NO_PATCH_MODULES","OTEL_PROPAGATORS","OTEL_SEMCONV_STABILITY_OPT_IN"];Ps=1/0,Is=128,aU=128,lU=128,ed={OTEL_SDK_DISABLED:!1,CONTAINER_NAME:"",ECS_CONTAINER_METADATA_URI_V4:"",ECS_CONTAINER_METADATA_URI:"",HOSTNAME:"",KUBERNETES_SERVICE_HOST:"",NAMESPACE:"",OTEL_BSP_EXPORT_TIMEOUT:3e4,OTEL_BSP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BSP_MAX_QUEUE_SIZE:2048,OTEL_BSP_SCHEDULE_DELAY:5e3,OTEL_BLRP_EXPORT_TIMEOUT:3e4,OTEL_BLRP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BLRP_MAX_QUEUE_SIZE:2048,OTEL_BLRP_SCHEDULE_DELAY:5e3,OTEL_EXPORTER_JAEGER_AGENT_HOST:"",OTEL_EXPORTER_JAEGER_AGENT_PORT:6832,OTEL_EXPORTER_JAEGER_ENDPOINT:"",OTEL_EXPORTER_JAEGER_PASSWORD:"",OTEL_EXPORTER_JAEGER_USER:"",OTEL_EXPORTER_OTLP_ENDPOINT:"",OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:"",OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:"",OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:"",OTEL_EXPORTER_OTLP_HEADERS:"",OTEL_EXPORTER_OTLP_TRACES_HEADERS:"",OTEL_EXPORTER_OTLP_METRICS_HEADERS:"",OTEL_EXPORTER_OTLP_LOGS_HEADERS:"",OTEL_EXPORTER_OTLP_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_TRACES_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_METRICS_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_LOGS_TIMEOUT:1e4,OTEL_EXPORTER_ZIPKIN_ENDPOINT:"http://localhost:9411/api/v2/spans",OTEL_LOG_LEVEL:H.INFO,OTEL_NO_PATCH_MODULES:[],OTEL_PROPAGATORS:["tracecontext","baggage"],OTEL_RESOURCE_ATTRIBUTES:"",OTEL_SERVICE_NAME:"",OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT:Ps,OTEL_ATTRIBUTE_COUNT_LIMIT:Is,OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT:Ps,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT:Is,OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT:Ps,OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT:Is,OTEL_SPAN_EVENT_COUNT_LIMIT:128,OTEL_SPAN_LINK_COUNT_LIMIT:128,OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:aU,OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:lU,OTEL_TRACES_EXPORTER:"",OTEL_TRACES_SAMPLER:Ut.ParentBasedAlwaysOn,OTEL_TRACES_SAMPLER_ARG:"",OTEL_LOGS_EXPORTER:"",OTEL_EXPORTER_OTLP_INSECURE:"",OTEL_EXPORTER_OTLP_TRACES_INSECURE:"",OTEL_EXPORTER_OTLP_METRICS_INSECURE:"",OTEL_EXPORTER_OTLP_LOGS_INSECURE:"",OTEL_EXPORTER_OTLP_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_COMPRESSION:"",OTEL_EXPORTER_OTLP_TRACES_COMPRESSION:"",OTEL_EXPORTER_OTLP_METRICS_COMPRESSION:"",OTEL_EXPORTER_OTLP_LOGS_COMPRESSION:"",OTEL_EXPORTER_OTLP_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_TRACES_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_LOGS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE:"cumulative",OTEL_SEMCONV_STABILITY_OPT_IN:[]};wte={ALL:H.ALL,VERBOSE:H.VERBOSE,DEBUG:H.DEBUG,INFO:H.INFO,WARN:H.WARN,ERROR:H.ERROR,NONE:H.NONE}});function zt(){let r=td(process.env);return Object.assign({},ed,r)}function Vl(){return td(process.env)}var cU=p(()=>{dS()});import{performance as Ute}from"perf_hooks";var pr,uU=p(()=>{pr=Ute});var fU,pU=p(()=>{fU="1.29.0"});var Vi,dU=p(()=>{pU();Ve();Vi={[Se]:"opentelemetry",[st]:"node",[ge]:wt,[ve]:fU}});function Fl(r){r.unref()}var hU=p(()=>{});var _U=p(()=>{cU();uU();dU();hU()});var hS=p(()=>{_U()});function Gn(r){let e=r/1e3,t=Math.trunc(e),o=Math.round(r%1e3*Hte);return[t,o]}function rd(){let r=pr.timeOrigin;if(typeof r!="number"){let e=pr;r=e.timing&&e.timing.fetchStart}return r}function ES(r){let e=Gn(rd()),t=Gn(typeof r=="number"?r:pr.now());return sd(e,t)}function mS(r,e){let t=e[0]-r[0],o=e[1]-r[1];return o<0&&(t-=1,o+=_S),[t,o]}function nd(r){return r[0]*1e6+r[1]/1e3}function id(r){return Array.isArray(r)&&r.length===2&&typeof r[0]=="number"&&typeof r[1]=="number"}function od(r){return id(r)||typeof r=="number"||r instanceof Date}function sd(r,e){let t=[r[0]+e[0],r[1]+e[1]];return t[1]>=_S&&(t[1]-=_S,t[0]+=1),t}var Fte,Gte,Hte,_S,EU=p(()=>{hS();Fte=9,Gte=6,Hte=Math.pow(10,Gte),_S=Math.pow(10,Fte)});var $t,mU=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})($t||($t={}))});var Gl,TU=p(()=>{P();Gl=class{constructor(e={}){var t;this._propagators=(t=e.propagators)!==null&&t!==void 0?t:[],this._fields=Array.from(new Set(this._propagators.map(o=>typeof o.fields=="function"?o.fields():[]).reduce((o,s)=>o.concat(s),[])))}inject(e,t,o){for(let s of this._propagators)try{s.inject(e,t,o)}catch(a){S.warn(`Failed to inject with ${s.constructor.name}. Err: ${a.message}`)}}extract(e,t,o){return this._propagators.reduce((s,a)=>{try{return a.extract(s,t,o)}catch(i){S.warn(`Failed to extract with ${a.constructor.name}. Err: ${i.message}`)}return s},e)}fields(){return this._fields.slice()}}});function SU(r){return Yte.test(r)}function gU(r){return Kte.test(r)&&!zte.test(r)}var TS,qte,jte,Yte,Kte,zte,vU=p(()=>{TS="[_0-9a-z-*/]",qte=`[a-z]${TS}{0,255}`,jte=`[a-z0-9]${TS}{0,240}@[a-z]${TS}{0,13}`,Yte=new RegExp(`^(?:${qte}|${jte})$`),Kte=/^[ -~]{0,255}[!-~]$/,zte=/,|=/});var yU,$te,OU,AU,ad,RU=p(()=>{vU();yU=32,$te=512,OU=",",AU="=",ad=class r{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let o=this._clone();return o._internalState.has(e)&&o._internalState.delete(e),o._internalState.set(e,t),o}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+AU+this.get(t)),e),[]).join(OU)}_parse(e){e.length>$te||(this._internalState=e.split(OU).reverse().reduce((t,o)=>{let s=o.trim(),a=s.indexOf(AU);if(a!==-1){let i=s.slice(0,a),n=s.slice(a+1,o.length);SU(i)&&gU(n)&&t.set(i,n)}return t},new Map),this._internalState.size>yU&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,yU))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new r;return e._internalState=new Map(this._internalState),e}}});function NU(r){let e=ere.exec(r);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var ld,cd,Xte,Wte,Jte,Qte,Zte,ere,Hl,CU=p(()=>{P();Ul();RU();ld="traceparent",cd="tracestate",Xte="00",Wte="(?!ff)[\\da-f]{2}",Jte="(?![0]{32})[\\da-f]{32}",Qte="(?![0]{16})[\\da-f]{16}",Zte="[\\da-f]{2}",ere=new RegExp(`^\\s?(${Wte})-(${Jte})-(${Qte})-(${Zte})(-.*)?\\s?$`);Hl=class{inject(e,t,o){let s=ie.getSpanContext(e);if(!s||ki(e)||!xe(s))return;let a=`${Xte}-${s.traceId}-${s.spanId}-0${Number(s.traceFlags||se.NONE).toString(16)}`;o.set(t,ld,a),s.traceState&&o.set(t,cd,s.traceState.serialize())}extract(e,t,o){let s=o.get(t,ld);if(!s)return e;let a=Array.isArray(s)?s[0]:s;if(typeof a!="string")return e;let i=NU(a);if(!i)return e;i.isRemote=!0;let n=o.get(t,cd);if(n){let l=Array.isArray(n)?n.join(","):n;i.traceState=new ad(typeof l=="string"?l:void 0)}return ie.setSpanContext(e,i)}fields(){return[ld,cd]}}});function are(r,e){return function(t){return r(e(t))}}function SS(r){if(!lre(r)||cre(r)!==tre)return!1;let e=sre(r);if(e===null)return!0;let t=LU.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&PU.call(t)===ore}function lre(r){return r!=null&&typeof r=="object"}function cre(r){return r==null?r===void 0?nre:rre:Fi&&Fi in Object(r)?ure(r):fre(r)}function ure(r){let e=LU.call(r,Fi),t=r[Fi],o=!1;try{r[Fi]=void 0,o=!0}catch{}let s=bU.call(r);return o&&(e?r[Fi]=t:delete r[Fi]),s}function fre(r){return bU.call(r)}var tre,rre,nre,ire,PU,ore,sre,IU,LU,Fi,bU,xU=p(()=>{tre="[object Object]",rre="[object Null]",nre="[object Undefined]",ire=Function.prototype,PU=ire.toString,ore=PU.call(Object),sre=are(Object.getPrototypeOf,Object),IU=Object.prototype,LU=IU.hasOwnProperty,Fi=Symbol?Symbol.toStringTag:void 0,bU=IU.toString});function vS(...r){let e=r.shift(),t=new WeakMap;for(;r.length>0;)e=wU(e,r.shift(),0,t);return e}function gS(r){return fd(r)?r.slice():r}function wU(r,e,t=0,o){let s;if(!(t>pre)){if(t++,ud(r)||ud(e)||DU(e))s=gS(e);else if(fd(r)){if(s=r.slice(),fd(e))for(let a=0,i=e.length;a"u"?delete s[l]:s[l]=c;else{let u=s[l],f=c;if(MU(r,l,o)||MU(e,l,o))delete s[l];else{if(ql(u)&&ql(f)){let _=o.get(u)||[],m=o.get(f)||[];_.push({obj:r,key:l}),m.push({obj:e,key:l}),o.set(u,_),o.set(f,m)}s[l]=wU(s[l],c,t,o)}}}}else s=e;return s}}function MU(r,e,t){let o=t.get(r[e])||[];for(let s=0,a=o.length;s"u"||r instanceof Date||r instanceof RegExp||r===null}function dre(r,e){return!(!SS(r)||!SS(e))}var pre,UU=p(()=>{xU();pre=20});var pd,kU=p(()=>{pd=class{constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}}});var Gi,BU=p(()=>{kU();Gi=class{constructor(e,t){this._callback=e,this._that=t,this._isCalled=!1,this._deferred=new pd}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(t=>this._deferred.resolve(t),t=>this._deferred.reject(t))}catch(t){this._deferred.reject(t)}}return this._deferred.promise}}});function VU(r,e){return new Promise(t=>{me.with(Dl(me.active()),()=>{r.export(e,o=>{t(o)})})})}var FU=p(()=>{P();Ul()});var GU,kt=p(()=>{eU();nU();sU();EU();mU();hS();TU();CU();Ul();dS();UU();pS();BU();FU();GU={_export:VU}});var HU,qU=p(()=>{HU="exception"});var Ls,yS=p(()=>{P();kt();Ve();qU();Ls=class{constructor(e,t,o,s,a,i,n=[],l,c,u){this.attributes={},this.links=[],this.events=[],this._droppedAttributesCount=0,this._droppedEventsCount=0,this._droppedLinksCount=0,this.status={code:br.UNSET},this.endTime=[0,0],this._ended=!1,this._duration=[-1,-1],this.name=o,this._spanContext=s,this.parentSpanId=i,this.kind=a,this.links=n;let f=Date.now();this._performanceStartTime=pr.now(),this._performanceOffset=f-(this._performanceStartTime+rd()),this._startTimeProvided=l!=null,this.startTime=this._getTime(l??f),this.resource=e.resource,this.instrumentationLibrary=e.instrumentationLibrary,this._spanLimits=e.getSpanLimits(),this._attributeValueLengthLimit=this._spanLimits.attributeValueLengthLimit||0,u!=null&&this.setAttributes(u),this._spanProcessor=e.getActiveSpanProcessor(),this._spanProcessor.onStart(this,t)}spanContext(){return this._spanContext}setAttribute(e,t){return t==null||this._isSpanEnded()?this:e.length===0?(S.warn(`Invalid attribute key: ${e}`),this):Zp(t)?Object.keys(this.attributes).length>=this._spanLimits.attributeCountLimit&&!Object.prototype.hasOwnProperty.call(this.attributes,e)?(this._droppedAttributesCount++,this):(this.attributes[e]=this._truncateToSize(t),this):(S.warn(`Invalid attribute value set for key: ${e}`),this)}setAttributes(e){for(let[t,o]of Object.entries(e))this.setAttribute(t,o);return this}addEvent(e,t,o){if(this._isSpanEnded())return this;if(this._spanLimits.eventCountLimit===0)return S.warn("No events allowed."),this._droppedEventsCount++,this;this.events.length>=this._spanLimits.eventCountLimit&&(this._droppedEventsCount===0&&S.debug("Dropping extra events."),this.events.shift(),this._droppedEventsCount++),od(t)&&(od(o)||(o=t),t=void 0);let s=Bi(t);return this.events.push({name:e,attributes:s,time:this._getTime(o),droppedAttributesCount:0}),this}addLink(e){return this.links.push(e),this}addLinks(e){return this.links.push(...e),this}setStatus(e){return this._isSpanEnded()?this:(this.status=Object.assign({},e),this.status.message!=null&&typeof e.message!="string"&&(S.warn(`Dropping invalid status.message of type '${typeof e.message}', expected 'string'`),delete this.status.message),this)}updateName(e){return this._isSpanEnded()?this:(this.name=e,this)}end(e){if(this._isSpanEnded()){S.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);return}this._ended=!0,this.endTime=this._getTime(e),this._duration=mS(this.startTime,this.endTime),this._duration[0]<0&&(S.warn("Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.",this.startTime,this.endTime),this.endTime=this.startTime.slice(),this._duration=[0,0]),this._droppedEventsCount>0&&S.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`),this._spanProcessor.onEnd(this)}_getTime(e){if(typeof e=="number"&&e<=pr.now())return ES(e+this._performanceOffset);if(typeof e=="number")return Gn(e);if(e instanceof Date)return Gn(e.getTime());if(id(e))return e;if(this._startTimeProvided)return Gn(Date.now());let t=pr.now()-this._performanceStartTime;return sd(this.startTime,Gn(t))}isRecording(){return this._ended===!1}recordException(e,t){let o={};typeof e=="string"?o[el]=e:e&&(e.code?o[Za]=e.code.toString():e.name&&(o[Za]=e.name),e.message&&(o[el]=e.message),e.stack&&(o[qm]=e.stack)),o[Za]||o[el]?this.addEvent(HU,o,t):S.warn(`Failed to record an exception ${e}`)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}_isSpanEnded(){return this._ended&&S.warn(`Can not execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`),this._ended}_truncateToLimitUtil(e,t){return e.length<=t?e:e.substring(0,t)}_truncateToSize(e){let t=this._attributeValueLengthLimit;return t<=0?(S.warn(`Attribute value limit must be positive, got ${t}`),e):typeof e=="string"?this._truncateToLimitUtil(e,t):Array.isArray(e)?e.map(o=>typeof o=="string"?this._truncateToLimitUtil(o,t):o):e}}});var dr,jl=p(()=>{(function(r){r[r.NOT_RECORD=0]="NOT_RECORD",r[r.RECORD=1]="RECORD",r[r.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(dr||(dr={}))});var Ur,dd=p(()=>{jl();Ur=class{shouldSample(){return{decision:dr.NOT_RECORD}}toString(){return"AlwaysOffSampler"}}});var Xt,hd=p(()=>{jl();Xt=class{shouldSample(){return{decision:dr.RECORD_AND_SAMPLED}}toString(){return"AlwaysOnSampler"}}});var Hn,OS=p(()=>{P();kt();dd();hd();Hn=class{constructor(e){var t,o,s,a;this._root=e.root,this._root||(Kt(new Error("ParentBasedSampler must have a root sampler configured")),this._root=new Xt),this._remoteParentSampled=(t=e.remoteParentSampled)!==null&&t!==void 0?t:new Xt,this._remoteParentNotSampled=(o=e.remoteParentNotSampled)!==null&&o!==void 0?o:new Ur,this._localParentSampled=(s=e.localParentSampled)!==null&&s!==void 0?s:new Xt,this._localParentNotSampled=(a=e.localParentNotSampled)!==null&&a!==void 0?a:new Ur}shouldSample(e,t,o,s,a,i){let n=ie.getSpanContext(e);return!n||!xe(n)?this._root.shouldSample(e,t,o,s,a,i):n.isRemote?n.traceFlags&se.SAMPLED?this._remoteParentSampled.shouldSample(e,t,o,s,a,i):this._remoteParentNotSampled.shouldSample(e,t,o,s,a,i):n.traceFlags&se.SAMPLED?this._localParentSampled.shouldSample(e,t,o,s,a,i):this._localParentNotSampled.shouldSample(e,t,o,s,a,i)}toString(){return`ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`}}});var Hi,AS=p(()=>{P();jl();Hi=class{constructor(e=0){this._ratio=e,this._ratio=this._normalize(e),this._upperBound=Math.floor(this._ratio*4294967295)}shouldSample(e,t){return{decision:Mt(t)&&this._accumulate(t)=1?1:e<=0?0:e}_accumulate(e){let t=0;for(let o=0;o>>0}return t}}});function _d(){let r=zt();return{sampler:RS(hre),forceFlushTimeoutMillis:3e4,generalLimits:{attributeValueLengthLimit:r.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,attributeCountLimit:r.OTEL_ATTRIBUTE_COUNT_LIMIT},spanLimits:{attributeValueLengthLimit:r.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,attributeCountLimit:r.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,linkCountLimit:r.OTEL_SPAN_LINK_COUNT_LIMIT,eventCountLimit:r.OTEL_SPAN_EVENT_COUNT_LIMIT,attributePerEventCountLimit:r.OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,attributePerLinkCountLimit:r.OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT},mergeResourceWithDefaults:!0}}function RS(r=zt()){switch(r.OTEL_TRACES_SAMPLER){case Ut.AlwaysOn:return new Xt;case Ut.AlwaysOff:return new Ur;case Ut.ParentBasedAlwaysOn:return new Hn({root:new Xt});case Ut.ParentBasedAlwaysOff:return new Hn({root:new Ur});case Ut.TraceIdRatio:return new Hi(jU(r));case Ut.ParentBasedTraceIdRatio:return new Hn({root:new Hi(jU(r))});default:return S.error(`OTEL_TRACES_SAMPLER value "${r.OTEL_TRACES_SAMPLER} invalid, defaulting to ${_re}".`),new Xt}}function jU(r){if(r.OTEL_TRACES_SAMPLER_ARG===void 0||r.OTEL_TRACES_SAMPLER_ARG==="")return S.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${bs}.`),bs;let e=Number(r.OTEL_TRACES_SAMPLER_ARG);return isNaN(e)?(S.error(`OTEL_TRACES_SAMPLER_ARG=${r.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${bs}.`),bs):e<0||e>1?(S.error(`OTEL_TRACES_SAMPLER_ARG=${r.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${bs}.`),bs):e}var hre,_re,bs,NS=p(()=>{P();kt();dd();hd();OS();AS();hre=zt(),_re=Ut.AlwaysOn,bs=1});function YU(r){let e={sampler:RS()},t=_d(),o=Object.assign({},t,e,r);return o.generalLimits=Object.assign({},t.generalLimits,r.generalLimits||{}),o.spanLimits=Object.assign({},t.spanLimits,r.spanLimits||{}),o}function KU(r){var e,t,o,s,a,i,n,l,c,u,f,_;let m=Object.assign({},r.spanLimits),O=Vl();return m.attributeCountLimit=(i=(a=(s=(t=(e=r.spanLimits)===null||e===void 0?void 0:e.attributeCountLimit)!==null&&t!==void 0?t:(o=r.generalLimits)===null||o===void 0?void 0:o.attributeCountLimit)!==null&&s!==void 0?s:O.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT)!==null&&a!==void 0?a:O.OTEL_ATTRIBUTE_COUNT_LIMIT)!==null&&i!==void 0?i:Is,m.attributeValueLengthLimit=(_=(f=(u=(l=(n=r.spanLimits)===null||n===void 0?void 0:n.attributeValueLengthLimit)!==null&&l!==void 0?l:(c=r.generalLimits)===null||c===void 0?void 0:c.attributeValueLengthLimit)!==null&&u!==void 0?u:O.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT)!==null&&f!==void 0?f:O.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT)!==null&&_!==void 0?_:Ps,Object.assign({},r,{spanLimits:m})}var CS=p(()=>{NS();kt()});var Ed,zU=p(()=>{P();kt();Ed=class{constructor(e,t){this._exporter=e,this._isExporting=!1,this._finishedSpans=[],this._droppedSpansCount=0;let o=zt();this._maxExportBatchSize=typeof(t==null?void 0:t.maxExportBatchSize)=="number"?t.maxExportBatchSize:o.OTEL_BSP_MAX_EXPORT_BATCH_SIZE,this._maxQueueSize=typeof(t==null?void 0:t.maxQueueSize)=="number"?t.maxQueueSize:o.OTEL_BSP_MAX_QUEUE_SIZE,this._scheduledDelayMillis=typeof(t==null?void 0:t.scheduledDelayMillis)=="number"?t.scheduledDelayMillis:o.OTEL_BSP_SCHEDULE_DELAY,this._exportTimeoutMillis=typeof(t==null?void 0:t.exportTimeoutMillis)=="number"?t.exportTimeoutMillis:o.OTEL_BSP_EXPORT_TIMEOUT,this._shutdownOnce=new Gi(this._shutdown,this),this._maxExportBatchSize>this._maxQueueSize&&(S.warn("BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize"),this._maxExportBatchSize=this._maxQueueSize)}forceFlush(){return this._shutdownOnce.isCalled?this._shutdownOnce.promise:this._flushAll()}onStart(e,t){}onEnd(e){this._shutdownOnce.isCalled||(e.spanContext().traceFlags&se.SAMPLED)!==0&&this._addToBuffer(e)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return Promise.resolve().then(()=>this.onShutdown()).then(()=>this._flushAll()).then(()=>this._exporter.shutdown())}_addToBuffer(e){if(this._finishedSpans.length>=this._maxQueueSize){this._droppedSpansCount===0&&S.debug("maxQueueSize reached, dropping spans"),this._droppedSpansCount++;return}this._droppedSpansCount>0&&(S.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`),this._droppedSpansCount=0),this._finishedSpans.push(e),this._maybeStartTimer()}_flushAll(){return new Promise((e,t)=>{let o=[],s=Math.ceil(this._finishedSpans.length/this._maxExportBatchSize);for(let a=0,i=s;a{e()}).catch(t)})}_flushOneBatch(){return this._clearTimer(),this._finishedSpans.length===0?Promise.resolve():new Promise((e,t)=>{let o=setTimeout(()=>{t(new Error("Timeout"))},this._exportTimeoutMillis);me.with(Dl(me.active()),()=>{let s;this._finishedSpans.length<=this._maxExportBatchSize?(s=this._finishedSpans,this._finishedSpans=[]):s=this._finishedSpans.splice(0,this._maxExportBatchSize);let a=()=>this._exporter.export(s,n=>{var l;clearTimeout(o),n.code===$t.SUCCESS?e():t((l=n.error)!==null&&l!==void 0?l:new Error("BatchSpanProcessor: span export failed"))}),i=null;for(let n=0,l=s.length;n{Kt(n),t(n)})})})}_maybeStartTimer(){if(this._isExporting)return;let e=()=>{this._isExporting=!0,this._flushOneBatch().finally(()=>{this._isExporting=!1,this._finishedSpans.length>0&&(this._clearTimer(),this._maybeStartTimer())}).catch(t=>{this._isExporting=!1,Kt(t)})};if(this._finishedSpans.length>=this._maxExportBatchSize)return e();this._timer===void 0&&(this._timer=setTimeout(()=>e(),this._scheduledDelayMillis),Fl(this._timer))}_clearTimer(){this._timer!==void 0&&(clearTimeout(this._timer),this._timer=void 0)}}});var qn,$U=p(()=>{zU();qn=class extends Ed{onShutdown(){}}});function XU(r){return function(){for(let t=0;t>>0,t*4);for(let t=0;t0);t++)t===r-1&&(md[r-1]=1);return md.toString("hex",0,r)}}var jn,md,WU=p(()=>{jn=class{constructor(){this.generateTraceId=XU(16),this.generateSpanId=XU(8)}},md=Buffer.allocUnsafe(16)});var JU=p(()=>{$U();WU()});var Td=p(()=>{JU()});var xs,QU=p(()=>{P();kt();yS();CS();Td();xs=class{constructor(e,t,o){this._tracerProvider=o;let s=YU(t);this._sampler=s.sampler,this._generalLimits=s.generalLimits,this._spanLimits=s.spanLimits,this._idGenerator=t.idGenerator||new jn,this.resource=o.resource,this.instrumentationLibrary=e}startSpan(e,t={},o=me.active()){var s,a,i;t.root&&(o=ie.deleteSpan(o));let n=ie.getSpan(o);if(ki(o))return S.debug("Instrumentation suppressed, returning Noop Span"),ie.wrapSpanContext(Vo);let l=n==null?void 0:n.spanContext(),c=this._idGenerator.generateSpanId(),u,f,_;!l||!ie.isSpanContextValid(l)?u=this._idGenerator.generateTraceId():(u=l.traceId,f=l.traceState,_=l.spanId);let m=(s=t.kind)!==null&&s!==void 0?s:qt.INTERNAL,O=((a=t.links)!==null&&a!==void 0?a:[]).map(K=>({context:K.context,attributes:Bi(K.attributes)})),y=Bi(t.attributes),A=this._sampler.shouldSample(o,u,e,m,y,O);f=(i=A.traceState)!==null&&i!==void 0?i:f;let I=A.decision===ke.RECORD_AND_SAMPLED?se.SAMPLED:se.NONE,M={traceId:u,spanId:c,traceFlags:I,traceState:f};if(A.decision===ke.NOT_RECORD)return S.debug("Recording is off, propagating context in a non-recording span"),ie.wrapSpanContext(M);let F=Bi(Object.assign(y,A.attributes));return new Ls(this,o,e,M,m,_,O,t.startTime,void 0,F)}startActiveSpan(e,t,o,s){let a,i,n;if(arguments.length<2)return;arguments.length===2?n=t:arguments.length===3?(a=t,n=o):(a=t,i=o,n=s);let l=i??me.active(),c=this.startSpan(e,a,l),u=ie.setSpan(l,c);return me.with(u,n,void 0,c)}getGeneralLimits(){return this._generalLimits}getSpanLimits(){return this._spanLimits}getActiveSpanProcessor(){return this._tracerProvider.getActiveSpanProcessor()}}});function Sd(){return`unknown_service:${process.argv0}`}var ZU=p(()=>{});var ek=p(()=>{ZU()});var tk=p(()=>{ek()});var Yn,rk=p(()=>{P();Ve();kt();tk();Yn=class r{constructor(e,t){var o;this._attributes=e,this.asyncAttributesPending=t!=null,this._syncAttributes=(o=this._attributes)!==null&&o!==void 0?o:{},this._asyncAttributesPromise=t==null?void 0:t.then(s=>(this._attributes=Object.assign({},this._attributes,s),this.asyncAttributesPending=!1,s),s=>(S.debug("a resource's async attributes promise rejected: %s",s),this.asyncAttributesPending=!1,{}))}static empty(){return r.EMPTY}static default(){return new r({[at]:Sd(),[ge]:Vi[ge],[Se]:Vi[Se],[ve]:Vi[ve]})}get attributes(){var e;return this.asyncAttributesPending&&S.error("Accessing resource attributes before async attributes settled"),(e=this._attributes)!==null&&e!==void 0?e:{}}async waitForAsyncAttributes(){this.asyncAttributesPending&&await this._asyncAttributesPromise}merge(e){var t;if(!e)return this;let o=Object.assign(Object.assign({},this._syncAttributes),(t=e._syncAttributes)!==null&&t!==void 0?t:e.attributes);if(!this._asyncAttributesPromise&&!e._asyncAttributesPromise)return new r(o);let s=Promise.all([this._asyncAttributesPromise,e._asyncAttributesPromise]).then(([a,i])=>{var n;return Object.assign(Object.assign(Object.assign(Object.assign({},this._syncAttributes),a),(n=e._syncAttributes)!==null&&n!==void 0?n:e.attributes),i)});return new r(o,s)}};Yn.EMPTY=new Yn({})});var nk=p(()=>{rk()});var Yl,ik=p(()=>{kt();Yl=class{constructor(e){this._spanProcessors=e}forceFlush(){let e=[];for(let t of this._spanProcessors)e.push(t.forceFlush());return new Promise(t=>{Promise.all(e).then(()=>{t()}).catch(o=>{Kt(o||new Error("MultiSpanProcessor: forceFlush failed")),t()})})}onStart(e,t){for(let o of this._spanProcessors)o.onStart(e,t)}onEnd(e){for(let t of this._spanProcessors)t.onEnd(e)}shutdown(){let e=[];for(let t of this._spanProcessors)e.push(t.shutdown());return new Promise((t,o)=>{Promise.all(e).then(()=>{t()},o)})}}});var Ms,PS=p(()=>{Ms=class{onStart(e,t){}onEnd(e){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}});var pn,ws,ok=p(()=>{P();kt();nk();qi();NS();ik();PS();Td();CS();(function(r){r[r.resolved=0]="resolved",r[r.timeout=1]="timeout",r[r.error=2]="error",r[r.unresolved=3]="unresolved"})(pn||(pn={}));ws=class{constructor(e={}){var t,o;this._registeredSpanProcessors=[],this._tracers=new Map;let s=vS({},_d(),KU(e));if(this.resource=(t=s.resource)!==null&&t!==void 0?t:Yn.empty(),s.mergeResourceWithDefaults&&(this.resource=Yn.default().merge(this.resource)),this._config=Object.assign({},s,{resource:this.resource}),!((o=e.spanProcessors)===null||o===void 0)&&o.length)this._registeredSpanProcessors=[...e.spanProcessors],this.activeSpanProcessor=new Yl(this._registeredSpanProcessors);else{let a=this._buildExporterFromEnv();if(a!==void 0){let i=new qn(a);this.activeSpanProcessor=i}else this.activeSpanProcessor=new Ms}}getTracer(e,t,o){let s=`${e}@${t||""}:${(o==null?void 0:o.schemaUrl)||""}`;return this._tracers.has(s)||this._tracers.set(s,new xs({name:e,version:t,schemaUrl:o==null?void 0:o.schemaUrl},this._config,this)),this._tracers.get(s)}addSpanProcessor(e){this._registeredSpanProcessors.length===0&&this.activeSpanProcessor.shutdown().catch(t=>S.error("Error while trying to shutdown current span processor",t)),this._registeredSpanProcessors.push(e),this.activeSpanProcessor=new Yl(this._registeredSpanProcessors)}getActiveSpanProcessor(){return this.activeSpanProcessor}register(e={}){ie.setGlobalTracerProvider(this),e.propagator===void 0&&(e.propagator=this._buildPropagatorFromEnv()),e.contextManager&&me.setGlobalContextManager(e.contextManager),e.propagator&&Ue.setGlobalPropagator(e.propagator)}forceFlush(){let e=this._config.forceFlushTimeoutMillis,t=this._registeredSpanProcessors.map(o=>new Promise(s=>{let a,i=setTimeout(()=>{s(new Error(`Span processor did not completed within timeout period of ${e} ms`)),a=pn.timeout},e);o.forceFlush().then(()=>{clearTimeout(i),a!==pn.timeout&&(a=pn.resolved,s(a))}).catch(n=>{clearTimeout(i),a=pn.error,s(n)})}));return new Promise((o,s)=>{Promise.all(t).then(a=>{let i=a.filter(n=>n!==pn.resolved);i.length>0?s(i):o()}).catch(a=>s([a]))})}shutdown(){return this.activeSpanProcessor.shutdown()}_getPropagator(e){var t;return(t=this.constructor._registeredPropagators.get(e))===null||t===void 0?void 0:t()}_getSpanExporter(e){var t;return(t=this.constructor._registeredExporters.get(e))===null||t===void 0?void 0:t()}_buildPropagatorFromEnv(){let e=Array.from(new Set(zt().OTEL_PROPAGATORS)),o=e.map(s=>{let a=this._getPropagator(s);return a||S.warn(`Propagator "${s}" requested through environment variable is unavailable.`),a}).reduce((s,a)=>(a&&s.push(a),s),[]);if(o.length!==0)return e.length===1?o[0]:new Gl({propagators:o})}_buildExporterFromEnv(){let e=zt().OTEL_TRACES_EXPORTER;if(e==="none"||e==="")return;let t=this._getSpanExporter(e);return t||S.error(`Exporter "${e}" requested through environment variable is unavailable.`),t}};ws._registeredPropagators=new Map([["tracecontext",()=>new Hl],["baggage",()=>new Bl]]);ws._registeredExporters=new Map});var gd,sk=p(()=>{kt();gd=class{export(e,t){return this._sendSpans(e,t)}shutdown(){return this._sendSpans([]),this.forceFlush()}forceFlush(){return Promise.resolve()}_exportInfo(e){var t;return{resource:{attributes:e.resource.attributes},instrumentationScope:e.instrumentationLibrary,traceId:e.spanContext().traceId,parentId:e.parentSpanId,traceState:(t=e.spanContext().traceState)===null||t===void 0?void 0:t.serialize(),name:e.name,id:e.spanContext().spanId,kind:e.kind,timestamp:nd(e.startTime),duration:nd(e.duration),attributes:e.attributes,status:e.status,events:e.events,links:e.links}}_sendSpans(e,t){for(let o of e)console.dir(this._exportInfo(o),{depth:3});if(t)return t({code:$t.SUCCESS})}}});var vd,ak=p(()=>{kt();vd=class{constructor(){this._finishedSpans=[],this._stopped=!1}export(e,t){if(this._stopped)return t({code:$t.FAILED,error:new Error("Exporter has been stopped")});this._finishedSpans.push(...e),setTimeout(()=>t({code:$t.SUCCESS}),0)}shutdown(){return this._stopped=!0,this._finishedSpans=[],this.forceFlush()}forceFlush(){return Promise.resolve()}reset(){this._finishedSpans=[]}getFinishedSpans(){return this._finishedSpans}}});var yd,lk=p(()=>{P();kt();yd=class{constructor(e){this._exporter=e,this._shutdownOnce=new Gi(this._shutdown,this),this._unresolvedExports=new Set}async forceFlush(){await Promise.all(Array.from(this._unresolvedExports)),this._exporter.forceFlush&&await this._exporter.forceFlush()}onStart(e,t){}onEnd(e){var t,o;if(this._shutdownOnce.isCalled||(e.spanContext().traceFlags&se.SAMPLED)===0)return;let s=()=>GU._export(this._exporter,[e]).then(a=>{var i;a.code!==$t.SUCCESS&&Kt((i=a.error)!==null&&i!==void 0?i:new Error(`SimpleSpanProcessor: span export failed (status ${a})`))}).catch(a=>{Kt(a)});if(e.resource.asyncAttributesPending){let a=(o=(t=e.resource).waitForAsyncAttributes)===null||o===void 0?void 0:o.call(t).then(()=>(a!=null&&this._unresolvedExports.delete(a),s()),i=>Kt(i));a!=null&&this._unresolvedExports.add(a)}else s()}shutdown(){return this._shutdownOnce.call()}_shutdown(){return this._exporter.shutdown()}}});var Ds={};Ae(Ds,{AlwaysOffSampler:()=>Ur,AlwaysOnSampler:()=>Xt,BasicTracerProvider:()=>ws,BatchSpanProcessor:()=>qn,ConsoleSpanExporter:()=>gd,ForceFlushState:()=>pn,InMemorySpanExporter:()=>vd,NoopSpanProcessor:()=>Ms,ParentBasedSampler:()=>Hn,RandomIdGenerator:()=>jn,SamplingDecision:()=>dr,SimpleSpanProcessor:()=>yd,Span:()=>Ls,TraceIdRatioBasedSampler:()=>Hi,Tracer:()=>xs});var qi=p(()=>{QU();ok();Td();sk();ak();lk();PS();dd();hd();OS();AS();jl();yS()});var Kl=T((KMe,ck)=>{"use strict";var Ere="2.0.0",mre=Number.MAX_SAFE_INTEGER||9007199254740991,Tre=16,Sre=250,gre=["major","premajor","minor","preminor","patch","prepatch","prerelease"];ck.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Tre,MAX_SAFE_BUILD_LENGTH:Sre,MAX_SAFE_INTEGER:mre,RELEASE_TYPES:gre,SEMVER_SPEC_VERSION:Ere,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var zl=T((zMe,uk)=>{"use strict";var vre=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};uk.exports=vre});var Us=T((kr,fk)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:IS,MAX_SAFE_BUILD_LENGTH:yre,MAX_LENGTH:Ore}=Kl(),Are=zl();kr=fk.exports={};var Rre=kr.re=[],Nre=kr.safeRe=[],D=kr.src=[],Cre=kr.safeSrc=[],U=kr.t={},Pre=0,LS="[a-zA-Z0-9-]",Ire=[["\\s",1],["\\d",Ore],[LS,yre]],Lre=r=>{for(let[e,t]of Ire)r=r.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return r},re=(r,e,t)=>{let o=Lre(e),s=Pre++;Are(r,s,e),U[r]=s,D[s]=e,Cre[s]=o,Rre[s]=new RegExp(e,t?"g":void 0),Nre[s]=new RegExp(o,t?"g":void 0)};re("NUMERICIDENTIFIER","0|[1-9]\\d*");re("NUMERICIDENTIFIERLOOSE","\\d+");re("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${LS}*`);re("MAINVERSION",`(${D[U.NUMERICIDENTIFIER]})\\.(${D[U.NUMERICIDENTIFIER]})\\.(${D[U.NUMERICIDENTIFIER]})`);re("MAINVERSIONLOOSE",`(${D[U.NUMERICIDENTIFIERLOOSE]})\\.(${D[U.NUMERICIDENTIFIERLOOSE]})\\.(${D[U.NUMERICIDENTIFIERLOOSE]})`);re("PRERELEASEIDENTIFIER",`(?:${D[U.NONNUMERICIDENTIFIER]}|${D[U.NUMERICIDENTIFIER]})`);re("PRERELEASEIDENTIFIERLOOSE",`(?:${D[U.NONNUMERICIDENTIFIER]}|${D[U.NUMERICIDENTIFIERLOOSE]})`);re("PRERELEASE",`(?:-(${D[U.PRERELEASEIDENTIFIER]}(?:\\.${D[U.PRERELEASEIDENTIFIER]})*))`);re("PRERELEASELOOSE",`(?:-?(${D[U.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${D[U.PRERELEASEIDENTIFIERLOOSE]})*))`);re("BUILDIDENTIFIER",`${LS}+`);re("BUILD",`(?:\\+(${D[U.BUILDIDENTIFIER]}(?:\\.${D[U.BUILDIDENTIFIER]})*))`);re("FULLPLAIN",`v?${D[U.MAINVERSION]}${D[U.PRERELEASE]}?${D[U.BUILD]}?`);re("FULL",`^${D[U.FULLPLAIN]}$`);re("LOOSEPLAIN",`[v=\\s]*${D[U.MAINVERSIONLOOSE]}${D[U.PRERELEASELOOSE]}?${D[U.BUILD]}?`);re("LOOSE",`^${D[U.LOOSEPLAIN]}$`);re("GTLT","((?:<|>)?=?)");re("XRANGEIDENTIFIERLOOSE",`${D[U.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);re("XRANGEIDENTIFIER",`${D[U.NUMERICIDENTIFIER]}|x|X|\\*`);re("XRANGEPLAIN",`[v=\\s]*(${D[U.XRANGEIDENTIFIER]})(?:\\.(${D[U.XRANGEIDENTIFIER]})(?:\\.(${D[U.XRANGEIDENTIFIER]})(?:${D[U.PRERELEASE]})?${D[U.BUILD]}?)?)?`);re("XRANGEPLAINLOOSE",`[v=\\s]*(${D[U.XRANGEIDENTIFIERLOOSE]})(?:\\.(${D[U.XRANGEIDENTIFIERLOOSE]})(?:\\.(${D[U.XRANGEIDENTIFIERLOOSE]})(?:${D[U.PRERELEASELOOSE]})?${D[U.BUILD]}?)?)?`);re("XRANGE",`^${D[U.GTLT]}\\s*${D[U.XRANGEPLAIN]}$`);re("XRANGELOOSE",`^${D[U.GTLT]}\\s*${D[U.XRANGEPLAINLOOSE]}$`);re("COERCEPLAIN",`(^|[^\\d])(\\d{1,${IS}})(?:\\.(\\d{1,${IS}}))?(?:\\.(\\d{1,${IS}}))?`);re("COERCE",`${D[U.COERCEPLAIN]}(?:$|[^\\d])`);re("COERCEFULL",D[U.COERCEPLAIN]+`(?:${D[U.PRERELEASE]})?(?:${D[U.BUILD]})?(?:$|[^\\d])`);re("COERCERTL",D[U.COERCE],!0);re("COERCERTLFULL",D[U.COERCEFULL],!0);re("LONETILDE","(?:~>?)");re("TILDETRIM",`(\\s*)${D[U.LONETILDE]}\\s+`,!0);kr.tildeTrimReplace="$1~";re("TILDE",`^${D[U.LONETILDE]}${D[U.XRANGEPLAIN]}$`);re("TILDELOOSE",`^${D[U.LONETILDE]}${D[U.XRANGEPLAINLOOSE]}$`);re("LONECARET","(?:\\^)");re("CARETTRIM",`(\\s*)${D[U.LONECARET]}\\s+`,!0);kr.caretTrimReplace="$1^";re("CARET",`^${D[U.LONECARET]}${D[U.XRANGEPLAIN]}$`);re("CARETLOOSE",`^${D[U.LONECARET]}${D[U.XRANGEPLAINLOOSE]}$`);re("COMPARATORLOOSE",`^${D[U.GTLT]}\\s*(${D[U.LOOSEPLAIN]})$|^$`);re("COMPARATOR",`^${D[U.GTLT]}\\s*(${D[U.FULLPLAIN]})$|^$`);re("COMPARATORTRIM",`(\\s*)${D[U.GTLT]}\\s*(${D[U.LOOSEPLAIN]}|${D[U.XRANGEPLAIN]})`,!0);kr.comparatorTrimReplace="$1$2$3";re("HYPHENRANGE",`^\\s*(${D[U.XRANGEPLAIN]})\\s+-\\s+(${D[U.XRANGEPLAIN]})\\s*$`);re("HYPHENRANGELOOSE",`^\\s*(${D[U.XRANGEPLAINLOOSE]})\\s+-\\s+(${D[U.XRANGEPLAINLOOSE]})\\s*$`);re("STAR","(<|>)?=?\\s*\\*");re("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");re("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Od=T(($Me,pk)=>{"use strict";var bre=Object.freeze({loose:!0}),xre=Object.freeze({}),Mre=r=>r?typeof r!="object"?bre:r:xre;pk.exports=Mre});var bS=T((XMe,_k)=>{"use strict";var dk=/^[0-9]+$/,hk=(r,e)=>{let t=dk.test(r),o=dk.test(e);return t&&o&&(r=+r,e=+e),r===e?0:t&&!o?-1:o&&!t?1:rhk(e,r);_k.exports={compareIdentifiers:hk,rcompareIdentifiers:wre}});var pt=T((WMe,mk)=>{"use strict";var Ad=zl(),{MAX_LENGTH:Ek,MAX_SAFE_INTEGER:Rd}=Kl(),{safeRe:Nd,t:Cd}=Us(),Dre=Od(),{compareIdentifiers:ks}=bS(),xS=class r{constructor(e,t){if(t=Dre(t),e instanceof r){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Ek)throw new TypeError(`version is longer than ${Ek} characters`);Ad("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let o=e.trim().match(t.loose?Nd[Cd.LOOSE]:Nd[Cd.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>Rd||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Rd||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Rd||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map(s=>{if(/^[0-9]+$/.test(s)){let a=+s;if(a>=0&&a=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);if(a===-1){if(t===this.prerelease.join(".")&&o===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(t){let a=[t,s];o===!1&&(a=[t]),ks(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=a):this.prerelease=a}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};mk.exports=xS});var ji=T((JMe,Sk)=>{"use strict";var Tk=pt(),Ure=(r,e,t=!1)=>{if(r instanceof Tk)return r;try{return new Tk(r,e)}catch(o){if(!t)return null;throw o}};Sk.exports=Ure});var vk=T((QMe,gk)=>{"use strict";var kre=ji(),Bre=(r,e)=>{let t=kre(r,e);return t?t.version:null};gk.exports=Bre});var Ok=T((ZMe,yk)=>{"use strict";var Vre=ji(),Fre=(r,e)=>{let t=Vre(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};yk.exports=Fre});var Nk=T((ewe,Rk)=>{"use strict";var Ak=pt(),Gre=(r,e,t,o,s)=>{typeof t=="string"&&(s=o,o=t,t=void 0);try{return new Ak(r instanceof Ak?r.version:r,t).inc(e,o,s).version}catch{return null}};Rk.exports=Gre});var Ik=T((twe,Pk)=>{"use strict";var Ck=ji(),Hre=(r,e)=>{let t=Ck(r,null,!0),o=Ck(e,null,!0),s=t.compare(o);if(s===0)return null;let a=s>0,i=a?t:o,n=a?o:t,l=!!i.prerelease.length;if(!!n.prerelease.length&&!l){if(!n.patch&&!n.minor)return"major";if(n.compareMain(i)===0)return n.minor&&!n.patch?"minor":"patch"}let u=l?"pre":"";return t.major!==o.major?u+"major":t.minor!==o.minor?u+"minor":t.patch!==o.patch?u+"patch":"prerelease"};Pk.exports=Hre});var bk=T((rwe,Lk)=>{"use strict";var qre=pt(),jre=(r,e)=>new qre(r,e).major;Lk.exports=jre});var Mk=T((nwe,xk)=>{"use strict";var Yre=pt(),Kre=(r,e)=>new Yre(r,e).minor;xk.exports=Kre});var Dk=T((iwe,wk)=>{"use strict";var zre=pt(),$re=(r,e)=>new zre(r,e).patch;wk.exports=$re});var kk=T((owe,Uk)=>{"use strict";var Xre=ji(),Wre=(r,e)=>{let t=Xre(r,e);return t&&t.prerelease.length?t.prerelease:null};Uk.exports=Wre});var Wt=T((swe,Vk)=>{"use strict";var Bk=pt(),Jre=(r,e,t)=>new Bk(r,t).compare(new Bk(e,t));Vk.exports=Jre});var Gk=T((awe,Fk)=>{"use strict";var Qre=Wt(),Zre=(r,e,t)=>Qre(e,r,t);Fk.exports=Zre});var qk=T((lwe,Hk)=>{"use strict";var ene=Wt(),tne=(r,e)=>ene(r,e,!0);Hk.exports=tne});var Pd=T((cwe,Yk)=>{"use strict";var jk=pt(),rne=(r,e,t)=>{let o=new jk(r,t),s=new jk(e,t);return o.compare(s)||o.compareBuild(s)};Yk.exports=rne});var zk=T((uwe,Kk)=>{"use strict";var nne=Pd(),ine=(r,e)=>r.sort((t,o)=>nne(t,o,e));Kk.exports=ine});var Xk=T((fwe,$k)=>{"use strict";var one=Pd(),sne=(r,e)=>r.sort((t,o)=>one(o,t,e));$k.exports=sne});var $l=T((pwe,Wk)=>{"use strict";var ane=Wt(),lne=(r,e,t)=>ane(r,e,t)>0;Wk.exports=lne});var Id=T((dwe,Jk)=>{"use strict";var cne=Wt(),une=(r,e,t)=>cne(r,e,t)<0;Jk.exports=une});var MS=T((hwe,Qk)=>{"use strict";var fne=Wt(),pne=(r,e,t)=>fne(r,e,t)===0;Qk.exports=pne});var wS=T((_we,Zk)=>{"use strict";var dne=Wt(),hne=(r,e,t)=>dne(r,e,t)!==0;Zk.exports=hne});var Ld=T((Ewe,eB)=>{"use strict";var _ne=Wt(),Ene=(r,e,t)=>_ne(r,e,t)>=0;eB.exports=Ene});var bd=T((mwe,tB)=>{"use strict";var mne=Wt(),Tne=(r,e,t)=>mne(r,e,t)<=0;tB.exports=Tne});var DS=T((Twe,rB)=>{"use strict";var Sne=MS(),gne=wS(),vne=$l(),yne=Ld(),One=Id(),Ane=bd(),Rne=(r,e,t,o)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return Sne(r,t,o);case"!=":return gne(r,t,o);case">":return vne(r,t,o);case">=":return yne(r,t,o);case"<":return One(r,t,o);case"<=":return Ane(r,t,o);default:throw new TypeError(`Invalid operator: ${e}`)}};rB.exports=Rne});var iB=T((Swe,nB)=>{"use strict";var Nne=pt(),Cne=ji(),{safeRe:xd,t:Md}=Us(),Pne=(r,e)=>{if(r instanceof Nne)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?xd[Md.COERCEFULL]:xd[Md.COERCE]);else{let l=e.includePrerelease?xd[Md.COERCERTLFULL]:xd[Md.COERCERTL],c;for(;(c=l.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||c.index+c[0].length!==t.index+t[0].length)&&(t=c),l.lastIndex=c.index+c[1].length+c[2].length;l.lastIndex=-1}if(t===null)return null;let o=t[2],s=t[3]||"0",a=t[4]||"0",i=e.includePrerelease&&t[5]?`-${t[5]}`:"",n=e.includePrerelease&&t[6]?`+${t[6]}`:"";return Cne(`${o}.${s}.${a}${i}${n}`,e)};nB.exports=Pne});var sB=T((gwe,oB)=>{"use strict";var US=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let s=this.map.keys().next().value;this.delete(s)}this.map.set(e,t)}return this}};oB.exports=US});var Jt=T((vwe,uB)=>{"use strict";var Ine=/\s+/g,kS=class r{constructor(e,t){if(t=bne(t),e instanceof r)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new r(e.raw,t);if(e instanceof BS)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(Ine," "),this.set=this.raw.split("||").map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(s=>!lB(s[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let s of this.set)if(s.length===1&&Bne(s[0])){this.set=[s];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e0&&(this.formatted+="||");let t=this.set[e];for(let o=0;o0&&(this.formatted+=" "),this.formatted+=t[o].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let o=((this.options.includePrerelease&&Une)|(this.options.loose&&kne))+":"+e,s=aB.get(o);if(s)return s;let a=this.options.loose,i=a?Rt[Tt.HYPHENRANGELOOSE]:Rt[Tt.HYPHENRANGE];e=e.replace(i,$ne(this.options.includePrerelease)),Le("hyphen replace",e),e=e.replace(Rt[Tt.COMPARATORTRIM],Mne),Le("comparator trim",e),e=e.replace(Rt[Tt.TILDETRIM],wne),Le("tilde trim",e),e=e.replace(Rt[Tt.CARETTRIM],Dne),Le("caret trim",e);let n=e.split(" ").map(f=>Vne(f,this.options)).join(" ").split(/\s+/).map(f=>zne(f,this.options));a&&(n=n.filter(f=>(Le("loose invalid filter",f,this.options),!!f.match(Rt[Tt.COMPARATORLOOSE])))),Le("range list",n);let l=new Map,c=n.map(f=>new BS(f,this.options));for(let f of c){if(lB(f))return[f];l.set(f.value,f)}l.size>1&&l.has("")&&l.delete("");let u=[...l.values()];return aB.set(o,u),u}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Range is required");return this.set.some(o=>cB(o,t)&&e.set.some(s=>cB(s,t)&&o.every(a=>s.every(i=>a.intersects(i,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new xne(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",Bne=r=>r.value==="",cB=(r,e)=>{let t=!0,o=r.slice(),s=o.pop();for(;t&&o.length;)t=o.every(a=>s.intersects(a,e)),s=o.pop();return t},Vne=(r,e)=>(Le("comp",r,e),r=Hne(r,e),Le("caret",r),r=Fne(r,e),Le("tildes",r),r=jne(r,e),Le("xrange",r),r=Kne(r,e),Le("stars",r),r),St=r=>!r||r.toLowerCase()==="x"||r==="*",Fne=(r,e)=>r.trim().split(/\s+/).map(t=>Gne(t,e)).join(" "),Gne=(r,e)=>{let t=e.loose?Rt[Tt.TILDELOOSE]:Rt[Tt.TILDE];return r.replace(t,(o,s,a,i,n)=>{Le("tilde",r,o,s,a,i,n);let l;return St(s)?l="":St(a)?l=`>=${s}.0.0 <${+s+1}.0.0-0`:St(i)?l=`>=${s}.${a}.0 <${s}.${+a+1}.0-0`:n?(Le("replaceTilde pr",n),l=`>=${s}.${a}.${i}-${n} <${s}.${+a+1}.0-0`):l=`>=${s}.${a}.${i} <${s}.${+a+1}.0-0`,Le("tilde return",l),l})},Hne=(r,e)=>r.trim().split(/\s+/).map(t=>qne(t,e)).join(" "),qne=(r,e)=>{Le("caret",r,e);let t=e.loose?Rt[Tt.CARETLOOSE]:Rt[Tt.CARET],o=e.includePrerelease?"-0":"";return r.replace(t,(s,a,i,n,l)=>{Le("caret",r,s,a,i,n,l);let c;return St(a)?c="":St(i)?c=`>=${a}.0.0${o} <${+a+1}.0.0-0`:St(n)?a==="0"?c=`>=${a}.${i}.0${o} <${a}.${+i+1}.0-0`:c=`>=${a}.${i}.0${o} <${+a+1}.0.0-0`:l?(Le("replaceCaret pr",l),a==="0"?i==="0"?c=`>=${a}.${i}.${n}-${l} <${a}.${i}.${+n+1}-0`:c=`>=${a}.${i}.${n}-${l} <${a}.${+i+1}.0-0`:c=`>=${a}.${i}.${n}-${l} <${+a+1}.0.0-0`):(Le("no pr"),a==="0"?i==="0"?c=`>=${a}.${i}.${n}${o} <${a}.${i}.${+n+1}-0`:c=`>=${a}.${i}.${n}${o} <${a}.${+i+1}.0-0`:c=`>=${a}.${i}.${n} <${+a+1}.0.0-0`),Le("caret return",c),c})},jne=(r,e)=>(Le("replaceXRanges",r,e),r.split(/\s+/).map(t=>Yne(t,e)).join(" ")),Yne=(r,e)=>{r=r.trim();let t=e.loose?Rt[Tt.XRANGELOOSE]:Rt[Tt.XRANGE];return r.replace(t,(o,s,a,i,n,l)=>{Le("xRange",r,o,s,a,i,n,l);let c=St(a),u=c||St(i),f=u||St(n),_=f;return s==="="&&_&&(s=""),l=e.includePrerelease?"-0":"",c?s===">"||s==="<"?o="<0.0.0-0":o="*":s&&_?(u&&(i=0),n=0,s===">"?(s=">=",u?(a=+a+1,i=0,n=0):(i=+i+1,n=0)):s==="<="&&(s="<",u?a=+a+1:i=+i+1),s==="<"&&(l="-0"),o=`${s+a}.${i}.${n}${l}`):u?o=`>=${a}.0.0${l} <${+a+1}.0.0-0`:f&&(o=`>=${a}.${i}.0${l} <${a}.${+i+1}.0-0`),Le("xRange return",o),o})},Kne=(r,e)=>(Le("replaceStars",r,e),r.trim().replace(Rt[Tt.STAR],"")),zne=(r,e)=>(Le("replaceGTE0",r,e),r.trim().replace(Rt[e.includePrerelease?Tt.GTE0PRE:Tt.GTE0],"")),$ne=r=>(e,t,o,s,a,i,n,l,c,u,f,_)=>(St(o)?t="":St(s)?t=`>=${o}.0.0${r?"-0":""}`:St(a)?t=`>=${o}.${s}.0${r?"-0":""}`:i?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,St(c)?l="":St(u)?l=`<${+c+1}.0.0-0`:St(f)?l=`<${c}.${+u+1}.0-0`:_?l=`<=${c}.${u}.${f}-${_}`:r?l=`<${c}.${u}.${+f+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),Xne=(r,e,t)=>{for(let o=0;o0){let s=r[o].semver;if(s.major===e.major&&s.minor===e.minor&&s.patch===e.patch)return!0}return!1}return!0}});var Xl=T((ywe,EB)=>{"use strict";var Wl=Symbol("SemVer ANY"),GS=class r{static get ANY(){return Wl}constructor(e,t){if(t=fB(t),e instanceof r){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),FS("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Wl?this.value="":this.value=this.operator+this.semver.version,FS("comp",this)}parse(e){let t=this.options.loose?pB[dB.COMPARATORLOOSE]:pB[dB.COMPARATOR],o=e.match(t);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:"",this.operator==="="&&(this.operator=""),o[2]?this.semver=new hB(o[2],this.options.loose):this.semver=Wl}toString(){return this.value}test(e){if(FS("Comparator.test",e,this.options.loose),this.semver===Wl||e===Wl)return!0;if(typeof e=="string")try{e=new hB(e,this.options)}catch{return!1}return VS(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof r))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new _B(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new _B(this.value,t).test(e.semver):(t=fB(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||VS(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||VS(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};EB.exports=GS;var fB=Od(),{safeRe:pB,t:dB}=Us(),VS=DS(),FS=zl(),hB=pt(),_B=Jt()});var Jl=T((Owe,mB)=>{"use strict";var Wne=Jt(),Jne=(r,e,t)=>{try{e=new Wne(e,t)}catch{return!1}return e.test(r)};mB.exports=Jne});var SB=T((Awe,TB)=>{"use strict";var Qne=Jt(),Zne=(r,e)=>new Qne(r,e).set.map(t=>t.map(o=>o.value).join(" ").trim().split(" "));TB.exports=Zne});var vB=T((Rwe,gB)=>{"use strict";var eie=pt(),tie=Jt(),rie=(r,e,t)=>{let o=null,s=null,a=null;try{a=new tie(e,t)}catch{return null}return r.forEach(i=>{a.test(i)&&(!o||s.compare(i)===-1)&&(o=i,s=new eie(o,t))}),o};gB.exports=rie});var OB=T((Nwe,yB)=>{"use strict";var nie=pt(),iie=Jt(),oie=(r,e,t)=>{let o=null,s=null,a=null;try{a=new iie(e,t)}catch{return null}return r.forEach(i=>{a.test(i)&&(!o||s.compare(i)===1)&&(o=i,s=new nie(o,t))}),o};yB.exports=oie});var NB=T((Cwe,RB)=>{"use strict";var HS=pt(),sie=Jt(),AB=$l(),aie=(r,e)=>{r=new sie(r,e);let t=new HS("0.0.0");if(r.test(t)||(t=new HS("0.0.0-0"),r.test(t)))return t;t=null;for(let o=0;o{let n=new HS(i.semver.version);switch(i.operator){case">":n.prerelease.length===0?n.patch++:n.prerelease.push(0),n.raw=n.format();case"":case">=":(!a||AB(n,a))&&(a=n);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),a&&(!t||AB(t,a))&&(t=a)}return t&&r.test(t)?t:null};RB.exports=aie});var PB=T((Pwe,CB)=>{"use strict";var lie=Jt(),cie=(r,e)=>{try{return new lie(r,e).range||"*"}catch{return null}};CB.exports=cie});var wd=T((Iwe,xB)=>{"use strict";var uie=pt(),bB=Xl(),{ANY:fie}=bB,pie=Jt(),die=Jl(),IB=$l(),LB=Id(),hie=bd(),_ie=Ld(),Eie=(r,e,t,o)=>{r=new uie(r,o),e=new pie(e,o);let s,a,i,n,l;switch(t){case">":s=IB,a=hie,i=LB,n=">",l=">=";break;case"<":s=LB,a=_ie,i=IB,n="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(die(r,e,o))return!1;for(let c=0;c{m.semver===fie&&(m=new bB(">=0.0.0")),f=f||m,_=_||m,s(m.semver,f.semver,o)?f=m:i(m.semver,_.semver,o)&&(_=m)}),f.operator===n||f.operator===l||(!_.operator||_.operator===n)&&a(r,_.semver))return!1;if(_.operator===l&&i(r,_.semver))return!1}return!0};xB.exports=Eie});var wB=T((Lwe,MB)=>{"use strict";var mie=wd(),Tie=(r,e,t)=>mie(r,e,">",t);MB.exports=Tie});var UB=T((bwe,DB)=>{"use strict";var Sie=wd(),gie=(r,e,t)=>Sie(r,e,"<",t);DB.exports=gie});var VB=T((xwe,BB)=>{"use strict";var kB=Jt(),vie=(r,e,t)=>(r=new kB(r,t),e=new kB(e,t),r.intersects(e,t));BB.exports=vie});var GB=T((Mwe,FB)=>{"use strict";var yie=Jl(),Oie=Wt();FB.exports=(r,e,t)=>{let o=[],s=null,a=null,i=r.sort((u,f)=>Oie(u,f,t));for(let u of i)yie(u,e,t)?(a=u,s||(s=u)):(a&&o.push([s,a]),a=null,s=null);s&&o.push([s,null]);let n=[];for(let[u,f]of o)u===f?n.push(u):!f&&u===i[0]?n.push("*"):f?u===i[0]?n.push(`<=${f}`):n.push(`${u} - ${f}`):n.push(`>=${u}`);let l=n.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{"use strict";var HB=Jt(),jS=Xl(),{ANY:qS}=jS,Ql=Jl(),YS=Wt(),Aie=(r,e,t={})=>{if(r===e)return!0;r=new HB(r,t),e=new HB(e,t);let o=!1;e:for(let s of r.set){for(let a of e.set){let i=Nie(s,a,t);if(o=o||i!==null,i)continue e}if(o)return!1}return!0},Rie=[new jS(">=0.0.0-0")],qB=[new jS(">=0.0.0")],Nie=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===qS){if(e.length===1&&e[0].semver===qS)return!0;t.includePrerelease?r=Rie:r=qB}if(e.length===1&&e[0].semver===qS){if(t.includePrerelease)return!0;e=qB}let o=new Set,s,a;for(let m of r)m.operator===">"||m.operator===">="?s=jB(s,m,t):m.operator==="<"||m.operator==="<="?a=YB(a,m,t):o.add(m.semver);if(o.size>1)return null;let i;if(s&&a){if(i=YS(s.semver,a.semver,t),i>0)return null;if(i===0&&(s.operator!==">="||a.operator!=="<="))return null}for(let m of o){if(s&&!Ql(m,String(s),t)||a&&!Ql(m,String(a),t))return null;for(let O of e)if(!Ql(m,String(O),t))return!1;return!0}let n,l,c,u,f=a&&!t.includePrerelease&&a.semver.prerelease.length?a.semver:!1,_=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1;f&&f.prerelease.length===1&&a.operator==="<"&&f.prerelease[0]===0&&(f=!1);for(let m of e){if(u=u||m.operator===">"||m.operator===">=",c=c||m.operator==="<"||m.operator==="<=",s){if(_&&m.semver.prerelease&&m.semver.prerelease.length&&m.semver.major===_.major&&m.semver.minor===_.minor&&m.semver.patch===_.patch&&(_=!1),m.operator===">"||m.operator===">="){if(n=jB(s,m,t),n===m&&n!==s)return!1}else if(s.operator===">="&&!Ql(s.semver,String(m),t))return!1}if(a){if(f&&m.semver.prerelease&&m.semver.prerelease.length&&m.semver.major===f.major&&m.semver.minor===f.minor&&m.semver.patch===f.patch&&(f=!1),m.operator==="<"||m.operator==="<="){if(l=YB(a,m,t),l===m&&l!==a)return!1}else if(a.operator==="<="&&!Ql(a.semver,String(m),t))return!1}if(!m.operator&&(a||s)&&i!==0)return!1}return!(s&&c&&!a&&i!==0||a&&u&&!s&&i!==0||_||f)},jB=(r,e,t)=>{if(!r)return e;let o=YS(r.semver,e.semver,t);return o>0?r:o<0||e.operator===">"&&r.operator===">="?e:r},YB=(r,e,t)=>{if(!r)return e;let o=YS(r.semver,e.semver,t);return o<0?r:o>0||e.operator==="<"&&r.operator==="<="?e:r};KB.exports=Aie});var zS=T((Dwe,WB)=>{"use strict";var KS=Us(),$B=Kl(),Cie=pt(),XB=bS(),Pie=ji(),Iie=vk(),Lie=Ok(),bie=Nk(),xie=Ik(),Mie=bk(),wie=Mk(),Die=Dk(),Uie=kk(),kie=Wt(),Bie=Gk(),Vie=qk(),Fie=Pd(),Gie=zk(),Hie=Xk(),qie=$l(),jie=Id(),Yie=MS(),Kie=wS(),zie=Ld(),$ie=bd(),Xie=DS(),Wie=iB(),Jie=Xl(),Qie=Jt(),Zie=Jl(),eoe=SB(),toe=vB(),roe=OB(),noe=NB(),ioe=PB(),ooe=wd(),soe=wB(),aoe=UB(),loe=VB(),coe=GB(),uoe=zB();WB.exports={parse:Pie,valid:Iie,clean:Lie,inc:bie,diff:xie,major:Mie,minor:wie,patch:Die,prerelease:Uie,compare:kie,rcompare:Bie,compareLoose:Vie,compareBuild:Fie,sort:Gie,rsort:Hie,gt:qie,lt:jie,eq:Yie,neq:Kie,gte:zie,lte:$ie,cmp:Xie,coerce:Wie,Comparator:Jie,Range:Qie,satisfies:Zie,toComparators:eoe,maxSatisfying:toe,minSatisfying:roe,minVersion:noe,validRange:ioe,outside:ooe,gtr:soe,ltr:aoe,intersects:loe,simplifyRange:coe,subset:uoe,SemVer:Cie,re:KS.re,src:KS.src,tokens:KS.t,SEMVER_SPEC_VERSION:$B.SEMVER_SPEC_VERSION,RELEASE_TYPES:$B.RELEASE_TYPES,compareIdentifiers:XB.compareIdentifiers,rcompareIdentifiers:XB.rcompareIdentifiers}});function poe(r){var e=decodeURIComponent(r).split(":");if(e.length!==4)return null;var t=QB(e,4),o=t[0],s=t[1],a=t[3],i=o.padStart(32,"0"),n=s.padStart(16,"0"),l=foe.test(a)?parseInt(a,16)&1:1;return{traceId:i,spanId:n,isRemote:!0,traceFlags:l}}var JB,QB,$S,Dd,ZB,foe,eV=p(()=>{P();xr();JB=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],o=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&o>=r.length&&(r=void 0),{value:r&&r[o++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},QB=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a},$S="uber-trace-id",Dd="uberctx",ZB=function(){function r(e){typeof e=="string"?(this._jaegerTraceHeader=e,this._jaegerBaggageHeaderPrefix=Dd):(this._jaegerTraceHeader=(e==null?void 0:e.customTraceHeader)||$S,this._jaegerBaggageHeaderPrefix=(e==null?void 0:e.customBaggageHeaderPrefix)||Dd)}return r.prototype.inject=function(e,t,o){var s,a,i=ie.getSpanContext(e),n=Ue.getBaggage(e);if(i&&At(e)===!1){var l="0"+(i.traceFlags||se.NONE).toString(16);o.set(t,this._jaegerTraceHeader,i.traceId+":"+i.spanId+":0:"+l)}if(n)try{for(var c=JB(n.getAllEntries()),u=c.next();!u.done;u=c.next()){var f=QB(u.value,2),_=f[0],m=f[1];o.set(t,this._jaegerBaggageHeaderPrefix+"-"+_,encodeURIComponent(m.value))}}catch(O){s={error:O}}finally{try{u&&!u.done&&(a=c.return)&&a.call(c)}finally{if(s)throw s.error}}},r.prototype.extract=function(e,t,o){var s,a,i=this,n,l=o.get(t,this._jaegerTraceHeader),c=Array.isArray(l)?l[0]:l,u=o.keys(t).filter(function(I){return I.startsWith(i._jaegerBaggageHeaderPrefix+"-")}).map(function(I){var M=o.get(t,I);return{key:I.substring(i._jaegerBaggageHeaderPrefix.length+1),value:Array.isArray(M)?M[0]:M}}),f=e;if(typeof c=="string"){var _=poe(c);_&&(f=ie.setSpanContext(f,_))}if(u.length===0)return f;var m=(n=Ue.getBaggage(e))!==null&&n!==void 0?n:Ue.createBaggage();try{for(var O=JB(u),y=O.next();!y.done;y=O.next()){var A=y.value;A.value!==void 0&&(m=m.setEntry(A.key,{value:decodeURIComponent(A.value)}))}}catch(I){s={error:I}}finally{try{y&&!y.done&&(a=O.return)&&a.call(O)}finally{if(s)throw s.error}}return f=Ue.setBaggage(f,m),f},r.prototype.fields=function(){return[this._jaegerTraceHeader]},r}(),foe=/^[0-9a-f]{1,2}$/i});var tV={};Ae(tV,{JaegerPropagator:()=>ZB,UBER_BAGGAGE_HEADER_PREFIX:()=>Dd,UBER_TRACE_ID_HEADER:()=>$S});var rV=p(()=>{eV()});var oV=T(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.NodeTracerProvider=void 0;var nV=GD(),Ud=(zD(),ee(KD)),iV=(qi(),ee(Ds)),doe=zS(),hoe=(rV(),ee(tV)),kd=class extends iV.BasicTracerProvider{constructor(e={}){super(e)}register(e={}){if(e.contextManager===void 0){let t=doe.gte(process.version,"14.8.0")?nV.AsyncLocalStorageContextManager:nV.AsyncHooksContextManager;e.contextManager=new t,e.contextManager.enable()}super.register(e)}};Bd.NodeTracerProvider=kd;kd._registeredPropagators=new Map([...iV.BasicTracerProvider._registeredPropagators,["b3",()=>new Ud.B3Propagator({injectEncoding:Ud.B3InjectEncoding.SINGLE_HEADER})],["b3multi",()=>new Ud.B3Propagator({injectEncoding:Ud.B3InjectEncoding.MULTI_HEADER})],["jaeger",()=>new hoe.JaegerPropagator]])});var XS=T(fe=>{"use strict";Object.defineProperty(fe,"__esModule",{value:!0});fe.Tracer=fe.TraceIdRatioBasedSampler=fe.Span=fe.SimpleSpanProcessor=fe.SamplingDecision=fe.RandomIdGenerator=fe.ParentBasedSampler=fe.NoopSpanProcessor=fe.InMemorySpanExporter=fe.ForceFlushState=fe.ConsoleSpanExporter=fe.BatchSpanProcessor=fe.BasicTracerProvider=fe.AlwaysOnSampler=fe.AlwaysOffSampler=fe.NodeTracerProvider=void 0;var _oe=oV();Object.defineProperty(fe,"NodeTracerProvider",{enumerable:!0,get:function(){return _oe.NodeTracerProvider}});var gt=(qi(),ee(Ds));Object.defineProperty(fe,"AlwaysOffSampler",{enumerable:!0,get:function(){return gt.AlwaysOffSampler}});Object.defineProperty(fe,"AlwaysOnSampler",{enumerable:!0,get:function(){return gt.AlwaysOnSampler}});Object.defineProperty(fe,"BasicTracerProvider",{enumerable:!0,get:function(){return gt.BasicTracerProvider}});Object.defineProperty(fe,"BatchSpanProcessor",{enumerable:!0,get:function(){return gt.BatchSpanProcessor}});Object.defineProperty(fe,"ConsoleSpanExporter",{enumerable:!0,get:function(){return gt.ConsoleSpanExporter}});Object.defineProperty(fe,"ForceFlushState",{enumerable:!0,get:function(){return gt.ForceFlushState}});Object.defineProperty(fe,"InMemorySpanExporter",{enumerable:!0,get:function(){return gt.InMemorySpanExporter}});Object.defineProperty(fe,"NoopSpanProcessor",{enumerable:!0,get:function(){return gt.NoopSpanProcessor}});Object.defineProperty(fe,"ParentBasedSampler",{enumerable:!0,get:function(){return gt.ParentBasedSampler}});Object.defineProperty(fe,"RandomIdGenerator",{enumerable:!0,get:function(){return gt.RandomIdGenerator}});Object.defineProperty(fe,"SamplingDecision",{enumerable:!0,get:function(){return gt.SamplingDecision}});Object.defineProperty(fe,"SimpleSpanProcessor",{enumerable:!0,get:function(){return gt.SimpleSpanProcessor}});Object.defineProperty(fe,"Span",{enumerable:!0,get:function(){return gt.Span}});Object.defineProperty(fe,"TraceIdRatioBasedSampler",{enumerable:!0,get:function(){return gt.TraceIdRatioBasedSampler}});Object.defineProperty(fe,"Tracer",{enumerable:!0,get:function(){return gt.Tracer}})});function Bs(){return`unknown_service:${process.argv0}`}var sV=p(()=>{});var aV=p(()=>{sV()});var WS=p(()=>{aV()});var Ce,dn=p(()=>{P();Ve();xr();WS();Ce=class r{constructor(e,t){var o;this._attributes=e,this.asyncAttributesPending=t!=null,this._syncAttributes=(o=this._attributes)!==null&&o!==void 0?o:{},this._asyncAttributesPromise=t==null?void 0:t.then(s=>(this._attributes=Object.assign({},this._attributes,s),this.asyncAttributesPending=!1,s),s=>(S.debug("a resource's async attributes promise rejected: %s",s),this.asyncAttributesPending=!1,{}))}static empty(){return r.EMPTY}static default(){return new r({[at]:Bs(),[ge]:Ln[ge],[Se]:Ln[Se],[ve]:Ln[ve]})}get attributes(){var e;return this.asyncAttributesPending&&S.error("Accessing resource attributes before async attributes settled"),(e=this._attributes)!==null&&e!==void 0?e:{}}async waitForAsyncAttributes(){this.asyncAttributesPending&&await this._asyncAttributesPromise}merge(e){var t;if(!e)return this;let o=Object.assign(Object.assign({},this._syncAttributes),(t=e._syncAttributes)!==null&&t!==void 0?t:e.attributes);if(!this._asyncAttributesPromise&&!e._asyncAttributesPromise)return new r(o);let s=Promise.all([this._asyncAttributesPromise,e._asyncAttributesPromise]).then(([a,i])=>{var n;return Object.assign(Object.assign(Object.assign(Object.assign({},this._syncAttributes),a),(n=e._syncAttributes)!==null&&n!==void 0?n:e.attributes),i)});return new r(o,s)}};Ce.EMPTY=new Ce({})});var lV,cV,JS=p(()=>{lV=r=>{switch(r){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return r}},cV=r=>{switch(r){case"sunos":return"solaris";case"win32":return"windows";default:return r}}});import*as uV from"child_process";import*as fV from"util";var Vs,Vd=p(()=>{Vs=fV.promisify(uV.exec)});var pV={};Ae(pV,{getMachineId:()=>Eoe});async function Eoe(){try{let e=(await Vs('ioreg -rd1 -c "IOPlatformExpertDevice"')).stdout.split(` +`).find(o=>o.includes("IOPlatformUUID"));if(!e)return"";let t=e.split('" = "');if(t.length===2)return t[1].slice(0,-1)}catch(r){S.debug(`error reading machine id: ${r}`)}return""}var dV=p(()=>{Vd();P()});var hV={};Ae(hV,{getMachineId:()=>Toe});import{promises as moe}from"fs";async function Toe(){let r=["/etc/machine-id","/var/lib/dbus/machine-id"];for(let e of r)try{return(await moe.readFile(e,{encoding:"utf8"})).trim()}catch(t){S.debug(`error reading machine id: ${t}`)}return""}var _V=p(()=>{P()});var EV={};Ae(EV,{getMachineId:()=>goe});import{promises as Soe}from"fs";async function goe(){try{return(await Soe.readFile("/etc/hostid",{encoding:"utf8"})).trim()}catch(r){S.debug(`error reading machine id: ${r}`)}try{return(await Vs("kenv -q smbios.system.uuid")).stdout.trim()}catch(r){S.debug(`error reading machine id: ${r}`)}return""}var mV=p(()=>{Vd();P()});var TV={};Ae(TV,{getMachineId:()=>voe});import*as Fd from"process";async function voe(){let r="QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",e="%windir%\\System32\\REG.exe";Fd.arch==="ia32"&&"PROCESSOR_ARCHITEW6432"in Fd.env&&(e="%windir%\\sysnative\\cmd.exe /c "+e);try{let o=(await Vs(`${e} ${r}`)).stdout.split("REG_SZ");if(o.length===2)return o[1].trim()}catch(t){S.debug(`error reading machine id: ${t}`)}return""}var SV=p(()=>{Vd();P()});var gV={};Ae(gV,{getMachineId:()=>yoe});async function yoe(){return S.debug("could not read machine-id: unsupported platform"),""}var vV=p(()=>{P()});import*as yV from"process";var Yi,OV=p(()=>{switch(yV.platform){case"darwin":({getMachineId:Yi}=(dV(),ee(pV)));break;case"linux":({getMachineId:Yi}=(_V(),ee(hV)));break;case"freebsd":({getMachineId:Yi}=(mV(),ee(EV)));break;case"win32":({getMachineId:Yi}=(SV(),ee(TV)));break;default:({getMachineId:Yi}=(vV(),ee(gV)))}});import{arch as Ooe,hostname as Aoe}from"os";var QS,Ki,ZS=p(()=>{Ve();dn();JS();OV();QS=class{detect(e){let t={[Ym]:Aoe(),[Km]:lV(Ooe())};return new Ce(t,this._getAsyncAttributes())}_getAsyncAttributes(){return Yi().then(e=>{let t={};return e&&(t[jm]=e),t})}},Ki=new QS});var eg,Zl,AV=p(()=>{ZS();eg=class{detect(e){return Promise.resolve(Ki.detect(e))}},Zl=new eg});import{platform as Roe,release as Noe}from"os";var tg,zi,rg=p(()=>{Ve();dn();JS();tg=class{detect(e){let t={[zm]:cV(Roe()),[$m]:Noe()};return new Ce(t)}},zi=new tg});var ng,ec,RV=p(()=>{rg();ng=class{detect(e){return Promise.resolve(zi.detect(e))}},ec=new ng});import*as NV from"os";var ig,$i,og=p(()=>{P();Ve();dn();ig=class{detect(e){let t={[Xm]:process.pid,[Wm]:process.title,[Jm]:process.execPath,[Zm]:[process.argv[0],...process.execArgv,...process.argv.slice(1)],[Fo]:process.versions.node,[st]:"nodejs",[tl]:"Node.js"};process.argv.length>1&&(t[Qm]=process.argv[1]);try{let o=NV.userInfo();t[eT]=o.username}catch(o){S.debug(`error obtaining process owner: ${o}`)}return new Ce(t)}},$i=new ig});var sg,tc,CV=p(()=>{og();sg=class{detect(e){return Promise.resolve($i.detect(e))}},tc=new sg});import{randomUUID as Coe}from"crypto";var ag,rc,PV=p(()=>{Ve();dn();ag=class{detect(e){let t={[tT]:Coe()};return new Ce(t)}},rc=new ag});var IV=p(()=>{AV();ZS();RV();rg();CV();og();PV()});var LV=p(()=>{IV()});var lg,nc,cg=p(()=>{Ve();P();dn();lg=class{detect(e){var t,o,s;if(!(typeof navigator<"u"&&((o=(t=global.process)===null||t===void 0?void 0:t.versions)===null||o===void 0?void 0:o.node)===void 0&&((s=global.Bun)===null||s===void 0?void 0:s.version)===void 0))return Ce.empty();let i={[st]:"browser",[tl]:"Web Browser",[Fo]:navigator.userAgent};return this._getResourceAttributes(i,e)}_getResourceAttributes(e,t){return e[Fo]===""?(S.debug("BrowserDetector failed: Unable to find required browser resources. "),Ce.empty()):new Ce(Object.assign({},e))}},nc=new lg});var ug,fg,bV=p(()=>{cg();ug=class{detect(e){return Promise.resolve(nc.detect(e))}},fg=new ug});var pg,ic,dg=p(()=>{P();xr();Ve();dn();pg=class{constructor(){this._MAX_LENGTH=255,this._COMMA_SEPARATOR=",",this._LABEL_KEY_VALUE_SPLITTER="=",this._ERROR_MESSAGE_INVALID_CHARS="should be a ASCII string with a length greater than 0 and not exceed "+this._MAX_LENGTH+" characters.",this._ERROR_MESSAGE_INVALID_VALUE="should be a ASCII string with a length not exceed "+this._MAX_LENGTH+" characters."}detect(e){let t={},o=jo(),s=o.OTEL_RESOURCE_ATTRIBUTES,a=o.OTEL_SERVICE_NAME;if(s)try{let i=this._parseResourceAttributes(s);Object.assign(t,i)}catch(i){S.debug(`EnvDetector failed: ${i.message}`)}return a&&(t[at]=a),new Ce(t)}_parseResourceAttributes(e){if(!e)return{};let t={},o=e.split(this._COMMA_SEPARATOR,-1);for(let s of o){let a=s.split(this._LABEL_KEY_VALUE_SPLITTER,-1);if(a.length!==2)continue;let[i,n]=a;if(i=i.trim(),n=n.trim().split(/^"|"$/).join(""),!this._isValidAndNotEmpty(i))throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`);if(!this._isValid(n))throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`);t[i]=decodeURIComponent(n)}return t}_isValid(e){return e.length<=this._MAX_LENGTH&&this._isBaggageOctetString(e)}_isBaggageOctetString(e){for(let t=0;t126)return!1}return!0}_isValidAndNotEmpty(e){return e.length>0&&this._isValid(e)}},ic=new pg});var hg,_g,xV=p(()=>{dg();hg=class{detect(e){return Promise.resolve(ic.detect(e))}},_g=new hg});var MV=p(()=>{LV();bV();xV();cg();dg()});var wV,DV=p(()=>{wV=r=>r!==null&&typeof r=="object"&&typeof r.then=="function"});var UV,kV,BV,VV=p(()=>{dn();P();DV();UV=async(r={})=>{let e=await Promise.all((r.detectors||[]).map(async t=>{try{let o=await t.detect(r);return S.debug(`${t.constructor.name} found resource.`,o),o}catch(o){return S.debug(`${t.constructor.name} failed: ${o.message}`),Ce.empty()}}));return BV(e),e.reduce((t,o)=>t.merge(o),Ce.empty())},kV=(r={})=>{var e;let t=((e=r.detectors)!==null&&e!==void 0?e:[]).map(s=>{try{let a=s.detect(r),i;if(wV(a)){let n=async()=>{var l;let c=await a;return await((l=c.waitForAsyncAttributes)===null||l===void 0?void 0:l.call(c)),c.attributes};i=new Ce({},n())}else i=a;return i.waitForAsyncAttributes?i.waitForAsyncAttributes().then(()=>S.debug(`${s.constructor.name} found resource.`,i)):S.debug(`${s.constructor.name} found resource.`,i),i}catch(a){return S.error(`${s.constructor.name} failed: ${a.message}`),Ce.empty()}}),o=t.reduce((s,a)=>s.merge(a),Ce.empty());return o.waitForAsyncAttributes&&o.waitForAsyncAttributes().then(()=>{BV(t)}),o},BV=r=>{r.forEach(e=>{if(Object.keys(e.attributes).length>0){let t=JSON.stringify(e.attributes,null,4);S.verbose(t)}})}});var Gd={};Ae(Gd,{Resource:()=>Ce,browserDetector:()=>fg,browserDetectorSync:()=>nc,defaultServiceName:()=>Bs,detectResources:()=>UV,detectResourcesSync:()=>kV,envDetector:()=>_g,envDetectorSync:()=>ic,hostDetector:()=>Zl,hostDetectorSync:()=>Ki,osDetector:()=>ec,osDetectorSync:()=>zi,processDetector:()=>tc,processDetectorSync:()=>$i,serviceInstanceIdDetectorSync:()=>rc});var Hd=p(()=>{dn();WS();MV();VV()});function FV(r,e,t,o){for(let s=0,a=r.length;se.disable())}var HV=p(()=>{});function qV(r){var e,t;let o=r.tracerProvider||ie.getTracerProvider(),s=r.meterProvider||Oi.getMeterProvider(),a=r.loggerProvider||_l.getLoggerProvider(),i=(t=(e=r.instrumentations)===null||e===void 0?void 0:e.flat())!==null&&t!==void 0?t:[];return FV(i,o,s,a),()=>{GV(i)}}var jV=p(()=>{P();El();HV()});var mg=T((RDe,zV)=>{"use strict";function Eg(r){return typeof r=="function"}var vt=console.error.bind(console);function oc(r,e,t){var o=!!r[e]&&r.propertyIsEnumerable(e);Object.defineProperty(r,e,{configurable:!0,enumerable:o,writable:!0,value:t})}function sc(r){r&&r.logger&&(Eg(r.logger)?vt=r.logger:vt("new logger isn't a function, not replacing"))}function YV(r,e,t){if(!r||!r[e]){vt("no original function "+e+" to wrap");return}if(!t){vt("no wrapper function"),vt(new Error().stack);return}if(!Eg(r[e])||!Eg(t)){vt("original object and wrapper must be functions");return}var o=r[e],s=t(o,e);return oc(s,"__original",o),oc(s,"__unwrap",function(){r[e]===s&&oc(r,e,o)}),oc(s,"__wrapped",!0),oc(r,e,s),s}function Poe(r,e,t){if(r)Array.isArray(r)||(r=[r]);else{vt("must provide one or more modules to patch"),vt(new Error().stack);return}if(!(e&&Array.isArray(e))){vt("must provide one or more functions to wrap on modules");return}r.forEach(function(o){e.forEach(function(s){YV(o,s,t)})})}function KV(r,e){if(!r||!r[e]){vt("no function to unwrap."),vt(new Error().stack);return}if(!r[e].__unwrap)vt("no original to unwrap to -- has "+e+" already been unwrapped?");else return r[e].__unwrap()}function Ioe(r,e){if(r)Array.isArray(r)||(r=[r]);else{vt("must provide one or more modules to patch"),vt(new Error().stack);return}if(!(e&&Array.isArray(e))){vt("must provide one or more functions to unwrap on modules");return}r.forEach(function(t){e.forEach(function(o){KV(t,o)})})}sc.wrap=YV;sc.massWrap=Poe;sc.unwrap=KV;sc.massUnwrap=Ioe;zV.exports=sc});var Kn,qd,$V=p(()=>{P();El();Kn=Nn(mg()),qd=class{constructor(e,t,o){this.instrumentationName=e,this.instrumentationVersion=t,this._config={},this._wrap=Kn.wrap,this._unwrap=Kn.unwrap,this._massWrap=Kn.massWrap,this._massUnwrap=Kn.massUnwrap,this.setConfig(o),this._diag=S.createComponentLogger({namespace:e}),this._tracer=ie.getTracer(e,t),this._meter=Oi.getMeter(e,t),this._logger=_l.getLogger(e,t),this._updateMetricInstruments()}get meter(){return this._meter}setMeterProvider(e){this._meter=e.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(e){this._logger=e.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){var e;let t=(e=this.init())!==null&&e!==void 0?e:[];return Array.isArray(t)?t:[t]}_updateMetricInstruments(){}getConfig(){return this._config}setConfig(e){this._config=Object.assign({enabled:!0},e)}setTracerProvider(e){this._tracer=e.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(e,t,o,s){if(e)try{e(o,s)}catch(a){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:t},a)}}}});var WV=T((IDe,XV)=>{var Fs=1e3,Gs=Fs*60,Hs=Gs*60,Xi=Hs*24,Loe=Xi*7,boe=Xi*365.25;XV.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return xoe(r);if(t==="number"&&isFinite(r))return e.long?woe(r):Moe(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function xoe(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),o=(e[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return t*boe;case"weeks":case"week":case"w":return t*Loe;case"days":case"day":case"d":return t*Xi;case"hours":case"hour":case"hrs":case"hr":case"h":return t*Hs;case"minutes":case"minute":case"mins":case"min":case"m":return t*Gs;case"seconds":case"second":case"secs":case"sec":case"s":return t*Fs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function Moe(r){var e=Math.abs(r);return e>=Xi?Math.round(r/Xi)+"d":e>=Hs?Math.round(r/Hs)+"h":e>=Gs?Math.round(r/Gs)+"m":e>=Fs?Math.round(r/Fs)+"s":r+"ms"}function woe(r){var e=Math.abs(r);return e>=Xi?jd(r,e,Xi,"day"):e>=Hs?jd(r,e,Hs,"hour"):e>=Gs?jd(r,e,Gs,"minute"):e>=Fs?jd(r,e,Fs,"second"):r+" ms"}function jd(r,e,t,o){var s=e>=t*1.5;return Math.round(r/t)+" "+o+(s?"s":"")}});var Tg=T((LDe,JV)=>{function Doe(r){t.debug=t,t.default=t,t.coerce=l,t.disable=i,t.enable=s,t.enabled=n,t.humanize=WV(),t.destroy=c,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let _=0;_{if(B==="%%")return"%";N++;let te=t.formatters[G];if(typeof te=="function"){let $=A[N];B=te.call(I,$),A.splice(N,1),N--}return B}),t.formatArgs.call(I,A),(I.log||t.log).apply(I,A)}return y.namespace=u,y.useColors=t.useColors(),y.color=t.selectColor(u),y.extend=o,y.destroy=t.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>_!==null?_:(m!==t.namespaces&&(m=t.namespaces,O=t.enabled(u)),O),set:A=>{_=A}}),typeof t.init=="function"&&t.init(y),y}function o(u,f){let _=t(this.namespace+(typeof f>"u"?":":f)+u);return _.log=this.log,_}function s(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let _ of f)_[0]==="-"?t.skips.push(_.slice(1)):t.names.push(_)}function a(u,f){let _=0,m=0,O=-1,y=0;for(;_"-"+f)].join(",");return t.enable(""),u}function n(u){for(let f of t.skips)if(a(u,f))return!1;for(let f of t.names)if(a(u,f))return!0;return!1}function l(u){return u instanceof Error?u.stack||u.message:u}function c(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}JV.exports=Doe});var QV=T((Nt,Yd)=>{Nt.formatArgs=koe;Nt.save=Boe;Nt.load=Voe;Nt.useColors=Uoe;Nt.storage=Foe();Nt.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Nt.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Uoe(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let r;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(r=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(r[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function koe(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Yd.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,o=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(o=t))}),r.splice(o,0,e)}Nt.log=console.debug||console.log||(()=>{});function Boe(r){try{r?Nt.storage.setItem("debug",r):Nt.storage.removeItem("debug")}catch{}}function Voe(){let r;try{r=Nt.storage.getItem("debug")||Nt.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function Foe(){try{return localStorage}catch{}}Yd.exports=Tg()(Nt);var{formatters:Goe}=Yd.exports;Goe.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var e2=T((bDe,ZV)=>{"use strict";ZV.exports=(r,e=process.argv)=>{let t=r.startsWith("-")?"":r.length===1?"-":"--",o=e.indexOf(t+r),s=e.indexOf("--");return o!==-1&&(s===-1||o{"use strict";var Hoe=V("os"),t2=V("tty"),Qt=e2(),{env:Ze}=process,zn;Qt("no-color")||Qt("no-colors")||Qt("color=false")||Qt("color=never")?zn=0:(Qt("color")||Qt("colors")||Qt("color=true")||Qt("color=always"))&&(zn=1);"FORCE_COLOR"in Ze&&(Ze.FORCE_COLOR==="true"?zn=1:Ze.FORCE_COLOR==="false"?zn=0:zn=Ze.FORCE_COLOR.length===0?1:Math.min(parseInt(Ze.FORCE_COLOR,10),3));function Sg(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function gg(r,e){if(zn===0)return 0;if(Qt("color=16m")||Qt("color=full")||Qt("color=truecolor"))return 3;if(Qt("color=256"))return 2;if(r&&!e&&zn===void 0)return 0;let t=zn||0;if(Ze.TERM==="dumb")return t;if(process.platform==="win32"){let o=Hoe.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in Ze)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(o=>o in Ze)||Ze.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in Ze)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ze.TEAMCITY_VERSION)?1:0;if(Ze.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ze){let o=parseInt((Ze.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ze.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ze.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ze.TERM)||"COLORTERM"in Ze?1:t}function qoe(r){let e=gg(r,r&&r.isTTY);return Sg(e)}r2.exports={supportsColor:qoe,stdout:Sg(gg(!0,t2.isatty(1))),stderr:Sg(gg(!0,t2.isatty(2)))}});var o2=T((et,zd)=>{var joe=V("tty"),Kd=V("util");et.init=Joe;et.log=$oe;et.formatArgs=Koe;et.save=Xoe;et.load=Woe;et.useColors=Yoe;et.destroy=Kd.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");et.colors=[6,2,3,4,5,1];try{let r=n2();r&&(r.stderr||r).level>=2&&(et.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}et.inspectOpts=Object.keys(process.env).filter(r=>/^debug_/i.test(r)).reduce((r,e)=>{let t=e.substring(6).toLowerCase().replace(/_([a-z])/g,(s,a)=>a.toUpperCase()),o=process.env[e];return/^(yes|on|true|enabled)$/i.test(o)?o=!0:/^(no|off|false|disabled)$/i.test(o)?o=!1:o==="null"?o=null:o=Number(o),r[t]=o,r},{});function Yoe(){return"colors"in et.inspectOpts?!!et.inspectOpts.colors:joe.isatty(process.stderr.fd)}function Koe(r){let{namespace:e,useColors:t}=this;if(t){let o=this.color,s="\x1B[3"+(o<8?o:"8;5;"+o),a=` ${s};1m${e} \x1B[0m`;r[0]=a+r[0].split(` +`).join(` +`+a),r.push(s+"m+"+zd.exports.humanize(this.diff)+"\x1B[0m")}else r[0]=zoe()+e+" "+r[0]}function zoe(){return et.inspectOpts.hideDate?"":new Date().toISOString()+" "}function $oe(...r){return process.stderr.write(Kd.formatWithOptions(et.inspectOpts,...r)+` +`)}function Xoe(r){r?process.env.DEBUG=r:delete process.env.DEBUG}function Woe(){return process.env.DEBUG}function Joe(r){r.inspectOpts={};let e=Object.keys(et.inspectOpts);for(let t=0;te.trim()).join(" ")};i2.O=function(r){return this.inspectOpts.colors=this.useColors,Kd.inspect(r,this.inspectOpts)}});var s2=T((MDe,vg)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?vg.exports=QV():vg.exports=o2()});var Og=T((wDe,a2)=>{"use strict";var yg=V("path").sep;a2.exports=function(r){var e=r.split(yg),t=e.lastIndexOf("node_modules");if(t!==-1&&e[t+1]){for(var o=e[t+1][0]==="@",s=o?e[t+1]+"/"+e[t+2]:e[t+1],a=o?3:2,i="",n=t+a-1,l=0;l<=n;l++)l===n?i+=e[l]:i+=e[l]+yg;for(var c="",u=e.length-1,f=t+a;f<=u;f++)f===u?c+=e[f]:c+=e[f]+yg;return{name:s,basedir:i,path:c}}}});var Ag=T((DDe,l2)=>{"use strict";var Qoe=V("os");l2.exports=Qoe.homedir||function(){var e=process.env.HOME,t=process.env.LOGNAME||process.env.USER||process.env.LNAME||process.env.USERNAME;return process.platform==="win32"?process.env.USERPROFILE||process.env.HOMEDRIVE+process.env.HOMEPATH||e||null:process.platform==="darwin"?e||(t?"/Users/"+t:null):process.platform==="linux"?e||(process.getuid()===0?"/root":t?"/home/"+t:null):e||null}});var Rg=T((UDe,c2)=>{c2.exports=function(){var r=Error.prepareStackTrace;Error.prepareStackTrace=function(t,o){return o};var e=new Error().stack;return Error.prepareStackTrace=r,e[2].getFileName()}});var u2=T((kDe,ac)=>{"use strict";var Zoe=process.platform==="win32",ese=/^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/,Ng={};function tse(r){return ese.exec(r).slice(1)}Ng.parse=function(r){if(typeof r!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof r);var e=tse(r);if(!e||e.length!==5)throw new TypeError("Invalid path '"+r+"'");return{root:e[1],dir:e[0]===e[1]?e[0]:e[0].slice(0,-1),base:e[2],ext:e[4],name:e[3]}};var rse=/^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/,Cg={};function nse(r){return rse.exec(r).slice(1)}Cg.parse=function(r){if(typeof r!="string")throw new TypeError("Parameter 'pathString' must be a string, not "+typeof r);var e=nse(r);if(!e||e.length!==5)throw new TypeError("Invalid path '"+r+"'");return{root:e[1],dir:e[0].slice(0,-1),base:e[2],ext:e[4],name:e[3]}};Zoe?ac.exports=Ng.parse:ac.exports=Cg.parse;ac.exports.posix=Cg.parse;ac.exports.win32=Ng.parse});var Pg=T((BDe,h2)=>{var d2=V("path"),f2=d2.parse||u2(),p2=function(e,t){var o="/";/^([A-Za-z]:)/.test(e)?o="":/^\\\\/.test(e)&&(o="\\\\");for(var s=[e],a=f2(e);a.dir!==s[s.length-1];)s.push(a.dir),a=f2(a.dir);return s.reduce(function(i,n){return i.concat(t.map(function(l){return d2.resolve(o,n,l)}))},[])};h2.exports=function(e,t,o){var s=t&&t.moduleDirectory?[].concat(t.moduleDirectory):["node_modules"];if(t&&typeof t.paths=="function")return t.paths(o,e,function(){return p2(e,s)},t);var a=p2(e,s);return t&&t.paths?a.concat(t.paths):a}});var Ig=T((VDe,_2)=>{_2.exports=function(r,e){return e||{}}});var T2=T((FDe,m2)=>{"use strict";var ise="Function.prototype.bind called on incompatible ",ose=Object.prototype.toString,sse=Math.max,ase="[object Function]",E2=function(e,t){for(var o=[],s=0;s{"use strict";var use=T2();S2.exports=Function.prototype.bind||use});var y2=T((HDe,v2)=>{"use strict";var fse=Function.prototype.call,pse=Object.prototype.hasOwnProperty,dse=g2();v2.exports=dse.call(fse,pse)});var O2=T((qDe,hse)=>{hse.exports={assert:!0,"node:assert":[">= 14.18 && < 15",">= 16"],"assert/strict":">= 15","node:assert/strict":">= 16",async_hooks:">= 8","node:async_hooks":[">= 14.18 && < 15",">= 16"],buffer_ieee754:">= 0.5 && < 0.9.7",buffer:!0,"node:buffer":[">= 14.18 && < 15",">= 16"],child_process:!0,"node:child_process":[">= 14.18 && < 15",">= 16"],cluster:">= 0.5","node:cluster":[">= 14.18 && < 15",">= 16"],console:!0,"node:console":[">= 14.18 && < 15",">= 16"],constants:!0,"node:constants":[">= 14.18 && < 15",">= 16"],crypto:!0,"node:crypto":[">= 14.18 && < 15",">= 16"],_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,"node:dgram":[">= 14.18 && < 15",">= 16"],diagnostics_channel:[">= 14.17 && < 15",">= 15.1"],"node:diagnostics_channel":[">= 14.18 && < 15",">= 16"],dns:!0,"node:dns":[">= 14.18 && < 15",">= 16"],"dns/promises":">= 15","node:dns/promises":">= 16",domain:">= 0.7.12","node:domain":[">= 14.18 && < 15",">= 16"],events:!0,"node:events":[">= 14.18 && < 15",">= 16"],freelist:"< 6",fs:!0,"node:fs":[">= 14.18 && < 15",">= 16"],"fs/promises":[">= 10 && < 10.1",">= 14"],"node:fs/promises":[">= 14.18 && < 15",">= 16"],_http_agent:">= 0.11.1","node:_http_agent":[">= 14.18 && < 15",">= 16"],_http_client:">= 0.11.1","node:_http_client":[">= 14.18 && < 15",">= 16"],_http_common:">= 0.11.1","node:_http_common":[">= 14.18 && < 15",">= 16"],_http_incoming:">= 0.11.1","node:_http_incoming":[">= 14.18 && < 15",">= 16"],_http_outgoing:">= 0.11.1","node:_http_outgoing":[">= 14.18 && < 15",">= 16"],_http_server:">= 0.11.1","node:_http_server":[">= 14.18 && < 15",">= 16"],http:!0,"node:http":[">= 14.18 && < 15",">= 16"],http2:">= 8.8","node:http2":[">= 14.18 && < 15",">= 16"],https:!0,"node:https":[">= 14.18 && < 15",">= 16"],inspector:">= 8","node:inspector":[">= 14.18 && < 15",">= 16"],"inspector/promises":[">= 19"],"node:inspector/promises":[">= 19"],_linklist:"< 8",module:!0,"node:module":[">= 14.18 && < 15",">= 16"],net:!0,"node:net":[">= 14.18 && < 15",">= 16"],"node-inspect/lib/_inspect":">= 7.6 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6 && < 12",os:!0,"node:os":[">= 14.18 && < 15",">= 16"],path:!0,"node:path":[">= 14.18 && < 15",">= 16"],"path/posix":">= 15.3","node:path/posix":">= 16","path/win32":">= 15.3","node:path/win32":">= 16",perf_hooks:">= 8.5","node:perf_hooks":[">= 14.18 && < 15",">= 16"],process:">= 1","node:process":[">= 14.18 && < 15",">= 16"],punycode:">= 0.5","node:punycode":[">= 14.18 && < 15",">= 16"],querystring:!0,"node:querystring":[">= 14.18 && < 15",">= 16"],readline:!0,"node:readline":[">= 14.18 && < 15",">= 16"],"readline/promises":">= 17","node:readline/promises":">= 17",repl:!0,"node:repl":[">= 14.18 && < 15",">= 16"],"node:sea":[">= 20.12 && < 21",">= 21.7"],smalloc:">= 0.11.5 && < 3","node:sqlite":[">= 22.13 && < 23",">= 23.4"],_stream_duplex:">= 0.9.4","node:_stream_duplex":[">= 14.18 && < 15",">= 16"],_stream_transform:">= 0.9.4","node:_stream_transform":[">= 14.18 && < 15",">= 16"],_stream_wrap:">= 1.4.1","node:_stream_wrap":[">= 14.18 && < 15",">= 16"],_stream_passthrough:">= 0.9.4","node:_stream_passthrough":[">= 14.18 && < 15",">= 16"],_stream_readable:">= 0.9.4","node:_stream_readable":[">= 14.18 && < 15",">= 16"],_stream_writable:">= 0.9.4","node:_stream_writable":[">= 14.18 && < 15",">= 16"],stream:!0,"node:stream":[">= 14.18 && < 15",">= 16"],"stream/consumers":">= 16.7","node:stream/consumers":">= 16.7","stream/promises":">= 15","node:stream/promises":">= 16","stream/web":">= 16.5","node:stream/web":">= 16.5",string_decoder:!0,"node:string_decoder":[">= 14.18 && < 15",">= 16"],sys:[">= 0.4 && < 0.7",">= 0.8"],"node:sys":[">= 14.18 && < 15",">= 16"],"test/reporters":">= 19.9 && < 20.2","node:test/reporters":[">= 18.17 && < 19",">= 19.9",">= 20"],"test/mock_loader":">= 22.3 && < 22.7","node:test/mock_loader":">= 22.3 && < 22.7","node:test":[">= 16.17 && < 17",">= 18"],timers:!0,"node:timers":[">= 14.18 && < 15",">= 16"],"timers/promises":">= 15","node:timers/promises":">= 16",_tls_common:">= 0.11.13","node:_tls_common":[">= 14.18 && < 15",">= 16"],_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3","node:_tls_wrap":[">= 14.18 && < 15",">= 16"],tls:!0,"node:tls":[">= 14.18 && < 15",">= 16"],trace_events:">= 10","node:trace_events":[">= 14.18 && < 15",">= 16"],tty:!0,"node:tty":[">= 14.18 && < 15",">= 16"],url:!0,"node:url":[">= 14.18 && < 15",">= 16"],util:!0,"node:util":[">= 14.18 && < 15",">= 16"],"util/types":">= 15.3","node:util/types":">= 16","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/consarray":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/csvparser":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/logreader":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/profile_view":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/splaytree":[">= 4.4 && < 5",">= 5.2 && < 12"],v8:">= 1","node:v8":[">= 14.18 && < 15",">= 16"],vm:!0,"node:vm":[">= 14.18 && < 15",">= 16"],wasi:[">= 13.4 && < 13.5",">= 18.17 && < 19",">= 20"],"node:wasi":[">= 18.17 && < 19",">= 20"],worker_threads:">= 11.7","node:worker_threads":[">= 14.18 && < 15",">= 16"],zlib:">= 0.5","node:zlib":[">= 14.18 && < 15",">= 16"]}});var lc=T((jDe,N2)=>{"use strict";var _se=y2();function Ese(r,e){for(var t=r.split("."),o=e.split(" "),s=o.length>1?o[0]:"=",a=(o.length>1?o[1]:o[0]).split("."),i=0;i<3;++i){var n=parseInt(t[i]||0,10),l=parseInt(a[i]||0,10);if(n!==l)return s==="<"?n="?n>=l:!1}return s===">="}function A2(r,e){var t=e.split(/ ?&& ?/);if(t.length===0)return!1;for(var o=0;o"u"?process.versions&&process.versions.node:r;if(typeof t!="string")throw new TypeError(typeof r>"u"?"Unable to determine current node version":"If provided, a valid node version is required");if(e&&typeof e=="object"){for(var o=0;o{var Wi=V("fs"),Tse=Ag(),Ke=V("path"),Sse=Rg(),gse=Pg(),vse=Ig(),yse=lc(),Ose=process.platform!=="win32"&&Wi.realpath&&typeof Wi.realpath.native=="function"?Wi.realpath.native:Wi.realpath,C2=Tse(),Ase=function(){return[Ke.join(C2,".node_modules"),Ke.join(C2,".node_libraries")]},Rse=function(e,t){Wi.stat(e,function(o,s){return o?o.code==="ENOENT"||o.code==="ENOTDIR"?t(null,!1):t(o):t(null,s.isFile()||s.isFIFO())})},Nse=function(e,t){Wi.stat(e,function(o,s){return o?o.code==="ENOENT"||o.code==="ENOTDIR"?t(null,!1):t(o):t(null,s.isDirectory())})},Cse=function(e,t){Ose(e,function(o,s){o&&o.code!=="ENOENT"?t(o):t(null,o?e:s)})},cc=function(e,t,o,s){o&&o.preserveSymlinks===!1?e(t,s):s(null,t)},Pse=function(e,t,o){e(t,function(s,a){if(s)o(s);else try{var i=JSON.parse(a);o(null,i)}catch{o(null)}})},Ise=function(e,t,o){for(var s=gse(t,o,e),a=0;a{Lse.exports={assert:!0,"node:assert":[">= 14.18 && < 15",">= 16"],"assert/strict":">= 15","node:assert/strict":">= 16",async_hooks:">= 8","node:async_hooks":[">= 14.18 && < 15",">= 16"],buffer_ieee754:">= 0.5 && < 0.9.7",buffer:!0,"node:buffer":[">= 14.18 && < 15",">= 16"],child_process:!0,"node:child_process":[">= 14.18 && < 15",">= 16"],cluster:">= 0.5","node:cluster":[">= 14.18 && < 15",">= 16"],console:!0,"node:console":[">= 14.18 && < 15",">= 16"],constants:!0,"node:constants":[">= 14.18 && < 15",">= 16"],crypto:!0,"node:crypto":[">= 14.18 && < 15",">= 16"],_debug_agent:">= 1 && < 8",_debugger:"< 8",dgram:!0,"node:dgram":[">= 14.18 && < 15",">= 16"],diagnostics_channel:[">= 14.17 && < 15",">= 15.1"],"node:diagnostics_channel":[">= 14.18 && < 15",">= 16"],dns:!0,"node:dns":[">= 14.18 && < 15",">= 16"],"dns/promises":">= 15","node:dns/promises":">= 16",domain:">= 0.7.12","node:domain":[">= 14.18 && < 15",">= 16"],events:!0,"node:events":[">= 14.18 && < 15",">= 16"],freelist:"< 6",fs:!0,"node:fs":[">= 14.18 && < 15",">= 16"],"fs/promises":[">= 10 && < 10.1",">= 14"],"node:fs/promises":[">= 14.18 && < 15",">= 16"],_http_agent:">= 0.11.1","node:_http_agent":[">= 14.18 && < 15",">= 16"],_http_client:">= 0.11.1","node:_http_client":[">= 14.18 && < 15",">= 16"],_http_common:">= 0.11.1","node:_http_common":[">= 14.18 && < 15",">= 16"],_http_incoming:">= 0.11.1","node:_http_incoming":[">= 14.18 && < 15",">= 16"],_http_outgoing:">= 0.11.1","node:_http_outgoing":[">= 14.18 && < 15",">= 16"],_http_server:">= 0.11.1","node:_http_server":[">= 14.18 && < 15",">= 16"],http:!0,"node:http":[">= 14.18 && < 15",">= 16"],http2:">= 8.8","node:http2":[">= 14.18 && < 15",">= 16"],https:!0,"node:https":[">= 14.18 && < 15",">= 16"],inspector:">= 8","node:inspector":[">= 14.18 && < 15",">= 16"],"inspector/promises":[">= 19"],"node:inspector/promises":[">= 19"],_linklist:"< 8",module:!0,"node:module":[">= 14.18 && < 15",">= 16"],net:!0,"node:net":[">= 14.18 && < 15",">= 16"],"node-inspect/lib/_inspect":">= 7.6 && < 12","node-inspect/lib/internal/inspect_client":">= 7.6 && < 12","node-inspect/lib/internal/inspect_repl":">= 7.6 && < 12",os:!0,"node:os":[">= 14.18 && < 15",">= 16"],path:!0,"node:path":[">= 14.18 && < 15",">= 16"],"path/posix":">= 15.3","node:path/posix":">= 16","path/win32":">= 15.3","node:path/win32":">= 16",perf_hooks:">= 8.5","node:perf_hooks":[">= 14.18 && < 15",">= 16"],process:">= 1","node:process":[">= 14.18 && < 15",">= 16"],punycode:">= 0.5","node:punycode":[">= 14.18 && < 15",">= 16"],querystring:!0,"node:querystring":[">= 14.18 && < 15",">= 16"],readline:!0,"node:readline":[">= 14.18 && < 15",">= 16"],"readline/promises":">= 17","node:readline/promises":">= 17",repl:!0,"node:repl":[">= 14.18 && < 15",">= 16"],"node:sea":[">= 20.12 && < 21",">= 21.7"],smalloc:">= 0.11.5 && < 3","node:sqlite":">= 23.4",_stream_duplex:">= 0.9.4","node:_stream_duplex":[">= 14.18 && < 15",">= 16"],_stream_transform:">= 0.9.4","node:_stream_transform":[">= 14.18 && < 15",">= 16"],_stream_wrap:">= 1.4.1","node:_stream_wrap":[">= 14.18 && < 15",">= 16"],_stream_passthrough:">= 0.9.4","node:_stream_passthrough":[">= 14.18 && < 15",">= 16"],_stream_readable:">= 0.9.4","node:_stream_readable":[">= 14.18 && < 15",">= 16"],_stream_writable:">= 0.9.4","node:_stream_writable":[">= 14.18 && < 15",">= 16"],stream:!0,"node:stream":[">= 14.18 && < 15",">= 16"],"stream/consumers":">= 16.7","node:stream/consumers":">= 16.7","stream/promises":">= 15","node:stream/promises":">= 16","stream/web":">= 16.5","node:stream/web":">= 16.5",string_decoder:!0,"node:string_decoder":[">= 14.18 && < 15",">= 16"],sys:[">= 0.4 && < 0.7",">= 0.8"],"node:sys":[">= 14.18 && < 15",">= 16"],"test/reporters":">= 19.9 && < 20.2","node:test/reporters":[">= 18.17 && < 19",">= 19.9",">= 20"],"test/mock_loader":">= 22.3 && < 22.7","node:test/mock_loader":">= 22.3 && < 22.7","node:test":[">= 16.17 && < 17",">= 18"],timers:!0,"node:timers":[">= 14.18 && < 15",">= 16"],"timers/promises":">= 15","node:timers/promises":">= 16",_tls_common:">= 0.11.13","node:_tls_common":[">= 14.18 && < 15",">= 16"],_tls_legacy:">= 0.11.3 && < 10",_tls_wrap:">= 0.11.3","node:_tls_wrap":[">= 14.18 && < 15",">= 16"],tls:!0,"node:tls":[">= 14.18 && < 15",">= 16"],trace_events:">= 10","node:trace_events":[">= 14.18 && < 15",">= 16"],tty:!0,"node:tty":[">= 14.18 && < 15",">= 16"],url:!0,"node:url":[">= 14.18 && < 15",">= 16"],util:!0,"node:util":[">= 14.18 && < 15",">= 16"],"util/types":">= 15.3","node:util/types":">= 16","v8/tools/arguments":">= 10 && < 12","v8/tools/codemap":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/consarray":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/csvparser":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/logreader":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/profile_view":[">= 4.4 && < 5",">= 5.2 && < 12"],"v8/tools/splaytree":[">= 4.4 && < 5",">= 5.2 && < 12"],v8:">= 1","node:v8":[">= 14.18 && < 15",">= 16"],vm:!0,"node:vm":[">= 14.18 && < 15",">= 16"],wasi:[">= 13.4 && < 13.5",">= 18.17 && < 19",">= 20"],"node:wasi":[">= 18.17 && < 19",">= 20"],worker_threads:">= 11.7","node:worker_threads":[">= 14.18 && < 15",">= 16"],zlib:">= 0.5","node:zlib":[">= 14.18 && < 15",">= 16"]}});var w2=T((zDe,M2)=>{"use strict";var bse=lc(),b2=L2(),x2={};for($d in b2)Object.prototype.hasOwnProperty.call(b2,$d)&&(x2[$d]=bse($d));var $d;M2.exports=x2});var U2=T(($De,D2)=>{var xse=lc();D2.exports=function(e){return xse(e)}});var V2=T((XDe,B2)=>{var Mse=lc(),Ji=V("fs"),dt=V("path"),wse=Ag(),Dse=Rg(),Use=Pg(),kse=Ig(),Bse=process.platform!=="win32"&&Ji.realpathSync&&typeof Ji.realpathSync.native=="function"?Ji.realpathSync.native:Ji.realpathSync,k2=wse(),Vse=function(){return[dt.join(k2,".node_modules"),dt.join(k2,".node_libraries")]},Fse=function(e){try{var t=Ji.statSync(e,{throwIfNoEntry:!1})}catch(o){if(o&&(o.code==="ENOENT"||o.code==="ENOTDIR"))return!1;throw o}return!!t&&(t.isFile()||t.isFIFO())},Gse=function(e){try{var t=Ji.statSync(e,{throwIfNoEntry:!1})}catch(o){if(o&&(o.code==="ENOENT"||o.code==="ENOTDIR"))return!1;throw o}return!!t&&t.isDirectory()},Hse=function(e){try{return Bse(e)}catch(t){if(t.code!=="ENOENT")throw t}return e},uc=function(e,t,o){return o&&o.preserveSymlinks===!1?e(t):t},qse=function(e,t){var o=e(t);try{var s=JSON.parse(o);return s}catch{}},jse=function(e,t,o){for(var s=Use(t,o,e),a=0;a{var Xd=I2();Xd.core=w2();Xd.isCore=U2();Xd.sync=V2();F2.exports=Xd});var G2=T((JDe,Yse)=>{Yse.exports={name:"require-in-the-middle",version:"7.5.2",description:"Module to hook into the Node.js require function",main:"index.js",types:"types/index.d.ts",dependencies:{debug:"^4.3.5","module-details-from-path":"^1.0.3",resolve:"^1.22.8"},devDependencies:{"@babel/core":"^7.9.0","@babel/preset-env":"^7.9.5","@babel/preset-typescript":"^7.9.0","@babel/register":"^7.9.0","ipp-printer":"^1.0.0",patterns:"^1.0.3",roundround:"^0.2.0",semver:"^6.3.0",standard:"^14.3.1",tape:"^4.11.0"},scripts:{test:"npm run test:lint && npm run test:tape && npm run test:babel","test:lint":"standard","test:tape":"tape test/*.js","test:babel":"node test/babel/babel-register.js"},repository:{type:"git",url:"git+https://github.com/nodejs/require-in-the-middle.git"},keywords:["require","hook","shim","shimmer","shimming","patch","monkey","monkeypatch","module","load"],files:["types"],author:"Thomas Watson Steen (https://twitter.com/wa7son)",license:"MIT",bugs:{url:"https://github.com/nodejs/require-in-the-middle/issues"},homepage:"https://github.com/nodejs/require-in-the-middle#readme",engines:{node:">=8.6.0"}}});var wg=T((QDe,Mg)=>{"use strict";var js=V("path"),hr=V("module"),Fe=s2()("require-in-the-middle"),Kse=Og();Mg.exports=fc;Mg.exports.Hook=fc;var bg,qs;if(hr.isBuiltin)qs=hr.isBuiltin;else if(hr.builtinModules)qs=r=>r.startsWith("node:")?!0:(bg===void 0&&(bg=new Set(hr.builtinModules)),bg.has(r));else{let r=Lg(),[e,t]=process.versions.node.split(".").map(Number);e===8&&t<8?qs=o=>o==="http2"?!0:!!r.core[o]:qs=o=>!!r.core[o]}var Wd;function zse(r,e){if(!Wd)if(V.resolve&&V.resolve.paths)Wd=function(t,o){return V.resolve(t,{paths:[o]})};else{let t=Lg();Wd=function(o,s){return t.sync(o,{basedir:s})}}return Wd(r,e)}var $se=/([/\\]index)?(\.js)?$/,xg=class{constructor(){this._localCache=new Map,this._kRitmExports=Symbol("RitmExports")}has(e,t){if(this._localCache.has(e))return!0;if(t)return!1;{let o=V.cache[e];return!!(o&&this._kRitmExports in o)}}get(e,t){let o=this._localCache.get(e);if(o!==void 0)return o;if(!t){let s=V.cache[e];return s&&s[this._kRitmExports]}}set(e,t,o){o?this._localCache.set(e,t):e in V.cache?V.cache[e][this._kRitmExports]=t:(Fe('non-core module is unexpectedly not in require.cache: "%s"',e),this._localCache.set(e,t))}};function fc(r,e,t){if(!(this instanceof fc))return new fc(r,e,t);if(typeof r=="function"?(t=r,r=null,e=null):typeof e=="function"&&(t=e,e=null),typeof hr._resolveFilename!="function"){console.error("Error: Expected Module._resolveFilename to be a function (was: %s) - aborting!",typeof hr._resolveFilename),console.error("Please report this error as an issue related to Node.js %s at %s",process.version,G2().bugs.url);return}this._cache=new xg,this._unhooked=!1,this._origRequire=hr.prototype.require;let o=this,s=new Set,a=e?e.internals===!0:!1,i=Array.isArray(r);Fe("registering require hook"),this._require=hr.prototype.require=function(l){return o._unhooked===!0?(Fe("ignoring require call - module is soft-unhooked"),o._origRequire.apply(this,arguments)):n.call(this,arguments,!1)},typeof process.getBuiltinModule=="function"&&(this._origGetBuiltinModule=process.getBuiltinModule,this._getBuiltinModule=process.getBuiltinModule=function(l){return o._unhooked===!0?(Fe("ignoring process.getBuiltinModule call - module is soft-unhooked"),o._origGetBuiltinModule.apply(this,arguments)):n.call(this,arguments,!0)});function n(l,c){let u=l[0],f=qs(u),_;if(f){if(_=u,u.startsWith("node:")){let M=u.slice(5);qs(M)&&(_=M)}}else{if(c)return Fe("call to process.getBuiltinModule with unknown built-in id"),o._origGetBuiltinModule.apply(this,l);try{_=hr._resolveFilename(u,this)}catch(M){return Fe('Module._resolveFilename("%s") threw %j, calling original Module.require',u,M.message),o._origRequire.apply(this,l)}}let m,O;if(Fe("processing %s module require('%s'): %s",f===!0?"core":"non-core",u,_),o._cache.has(_,f)===!0)return Fe("returning already patched cached module: %s",_),o._cache.get(_,f);let y=s.has(_);y===!1&&s.add(_);let A=c?o._origGetBuiltinModule.apply(this,l):o._origRequire.apply(this,l);if(y===!0)return Fe("module is in the process of being patched already - ignoring: %s",_),A;if(s.delete(_),f===!0){if(i===!0&&r.includes(_)===!1)return Fe("ignoring core module not on whitelist: %s",_),A;m=_}else if(i===!0&&r.includes(_)){let M=js.parse(_);m=M.name,O=M.dir}else{let M=Kse(_);if(M===void 0)return Fe("could not parse filename: %s",_),A;m=M.name,O=M.basedir;let F=Xse(M);Fe("resolved filename to module: %s (id: %s, resolved: %s, basedir: %s)",m,u,F,O);let N=!1;if(i){if(!u.startsWith(".")&&r.includes(u)&&(m=u,N=!0),!r.includes(m)&&!r.includes(F))return A;r.includes(F)&&F!==m&&(m=F,N=!0)}if(!N){let K;try{K=zse(m,O)}catch{return Fe("could not resolve module: %s",m),o._cache.set(_,A,f),A}if(K!==_)if(a===!0)m=m+js.sep+js.relative(O,_),Fe("preparing to process require of internal file: %s",m);else return Fe("ignoring require of non-main module file: %s",K),o._cache.set(_,A,f),A}}o._cache.set(_,A,f),Fe("calling require hook: %s",m);let I=t(A,m,O);return o._cache.set(_,I,f),Fe("returning module: %s",m),I}}fc.prototype.unhook=function(){this._unhooked=!0,this._require===hr.prototype.require?(hr.prototype.require=this._origRequire,Fe("require unhook successful")):Fe("require unhook unsuccessful"),process.getBuiltinModule!==void 0&&(this._getBuiltinModule===process.getBuiltinModule?(process.getBuiltinModule=this._origGetBuiltinModule,Fe("process.getBuiltinModule unhook successful")):Fe("process.getBuiltinModule unhook unsuccessful"))};function Xse(r){let e=js.sep!=="/"?r.path.split(js.sep).join("/"):r.path;return js.posix.join(r.name,e).replace($se,"")}});var pc,Jd,Qd,H2=p(()=>{pc="/",Jd=class{constructor(){this.hooks=[],this.children=new Map}},Qd=class{constructor(){this._trie=new Jd,this._counter=0}insert(e){let t=this._trie;for(let o of e.moduleName.split(pc)){let s=t.children.get(o);s||(s=new Jd,t.children.set(o,s)),t=s}t.hooks.push({hook:e,insertedId:this._counter++})}search(e,{maintainInsertionOrder:t,fullOnly:o}={}){let s=this._trie,a=[],i=!0;for(let n of e.split(pc)){let l=s.children.get(n);if(!l){i=!1;break}o||a.push(...l.hooks),s=l}return o&&i&&a.push(...s.hooks),a.length===0?[]:a.length===1?[a[0].hook]:(t&&a.sort((n,l)=>n.insertedId-l.insertedId),a.map(({hook:n})=>n))}}});import*as Dg from"path";function Jse(r){return Dg.sep!==pc?r.split(Dg.sep).join(pc):r}var q2,Wse,Zd,j2=p(()=>{q2=Nn(wg());H2();Wse=["afterEach","after","beforeEach","before","describe","it"].every(r=>typeof global[r]=="function"),Zd=class r{constructor(){this._moduleNameTrie=new Qd,this._initialize()}_initialize(){new q2.Hook(null,{internals:!0},(e,t,o)=>{let s=Jse(t),a=this._moduleNameTrie.search(s,{maintainInsertionOrder:!0,fullOnly:o===void 0});for(let{onRequire:i}of a)e=i(e,t,o);return e})}register(e,t){let o={moduleName:e,onRequire:t};return this._moduleNameTrie.insert(o),o}static getInstance(){var e;return Wse?new r:this._instance=(e=this._instance)!==null&&e!==void 0?e:new r}}});var W2=T(Qi=>{var Y2=[],Ug=new WeakMap,K2=new WeakMap,z2=new Map,$2=[],Qse={set(r,e,t){return Ug.get(r)[e](t)},get(r,e){if(e===Symbol.toStringTag)return"Module";let t=K2.get(r)[e];if(typeof t=="function")return t()},defineProperty(r,e,t){if(!("value"in t))throw new Error("Getters/setters are not supported for exports property descriptors.");return Ug.get(r)[e](t.value)}};function Zse(r,e,t,o,s){z2.set(r,s),Ug.set(e,t),K2.set(e,o);let a=new Proxy(e,Qse);Y2.forEach(i=>i(r,a)),$2.push([r,a])}var X2=!1;function eae(){return X2}function tae(r){X2=r}Qi.register=Zse;Qi.importHooks=Y2;Qi.specifiers=z2;Qi.toHook=$2;Qi.getExperimentalPatchInternals=eae;Qi.setExperimentalPatchInternals=tae});var rF=T((iUe,Ys)=>{var J2=V("path"),rae=Og(),{fileURLToPath:Q2}=V("url"),{MessageChannel:nae}=V("worker_threads"),{importHooks:kg,specifiers:iae,toHook:oae,getExperimentalPatchInternals:sae}=W2();function eF(r){kg.push(r),oae.forEach(([e,t])=>r(e,t))}function tF(r){let e=kg.indexOf(r);e>-1&&kg.splice(e,1)}function Z2(r,e,t,o){let s=r(e,t,o);s&&s!==e&&(e.default=s)}var Bg;function aae(){let{port1:r,port2:e}=new nae,t=0,o;Bg=n=>{t++,r.postMessage(n)},r.on("message",()=>{t--,o&&t<=0&&o()}).unref();function s(){let n=setInterval(()=>{},1e3),l=new Promise(c=>{o=c}).then(()=>{clearInterval(n)});return t===0&&o(),l}let a=e;return{registerOptions:{data:{addHookMessagePort:a,include:[]},transferList:[a]},addHookMessagePort:a,waitForAllMessagesAcknowledged:s}}function dc(r,e,t){if(!(this instanceof dc))return new dc(r,e,t);typeof r=="function"?(t=r,r=null,e=null):typeof e=="function"&&(t=e,e=null);let o=e?e.internals===!0:!1;Bg&&Array.isArray(r)&&Bg(r),this._iitmHook=(s,a)=>{let i=s,n=s.startsWith("node:"),l;if(n)s=s.replace(/^node:/,"");else{if(s.startsWith("file://"))try{s=Q2(s)}catch{}let c=rae(s);c&&(s=c.name,l=c.basedir)}if(r){for(let c of r)if(c===s){if(l){if(o)s=s+J2.sep+J2.relative(l,Q2(i));else if(!sae()&&!l.endsWith(iae.get(i)))continue}Z2(t,a,s,l)}}else Z2(t,a,s,l)},eF(this._iitmHook)}dc.prototype.unhook=function(){tF(this._iitmHook)};Ys.exports=dc;Ys.exports.Hook=dc;Ys.exports.addHook=eF;Ys.exports.removeHook=tF;Ys.exports.createAddHookMessageChannel=aae});function nF(r,e,t){let o,s;try{s=r()}catch(a){o=a}finally{if(e(o,s),o&&!t)throw o;return s}}async function iF(r,e,t){let o,s;try{s=await r()}catch(a){o=a}finally{if(e(o,s),o&&!t)throw o;return s}}function eh(r){return typeof r=="function"&&typeof r.__original=="function"&&typeof r.__unwrap=="function"&&r.__wrapped===!0}var Vg=p(()=>{});import*as hn from"path";import{types as oF}from"util";import{readFileSync as lae}from"fs";function sF(r,e,t){return typeof e>"u"?r.includes("*"):r.some(o=>(0,aF.satisfies)(e,o,{includePrerelease:t}))}var aF,hc,lF,cF,Ks,uF=p(()=>{aF=Nn(zS()),hc=Nn(mg());$V();j2();lF=Nn(rF());P();cF=Nn(wg());Vg();Ks=class extends qd{constructor(e,t,o){super(e,t,o),this._hooks=[],this._requireInTheMiddleSingleton=Zd.getInstance(),this._enabled=!1,this._wrap=(a,i,n)=>{if(eh(a[i])&&this._unwrap(a,i),oF.isProxy(a)){let l=(0,hc.wrap)(Object.assign({},a),i,n);return Object.defineProperty(a,i,{value:l}),l}else return(0,hc.wrap)(a,i,n)},this._unwrap=(a,i)=>oF.isProxy(a)?Object.defineProperty(a,i,{value:a[i]}):(0,hc.unwrap)(a,i),this._massWrap=(a,i,n)=>{if(a)Array.isArray(a)||(a=[a]);else{S.error("must provide one or more modules to patch");return}if(!(i&&Array.isArray(i))){S.error("must provide one or more functions to wrap on modules");return}a.forEach(l=>{i.forEach(c=>{this._wrap(l,c,n)})})},this._massUnwrap=(a,i)=>{if(a)Array.isArray(a)||(a=[a]);else{S.error("must provide one or more modules to patch");return}if(!(i&&Array.isArray(i))){S.error("must provide one or more functions to wrap on modules");return}a.forEach(n=>{i.forEach(l=>{this._unwrap(n,l)})})};let s=this.init();s&&!Array.isArray(s)&&(s=[s]),this._modules=s||[],this._config.enabled&&this.enable()}_warnOnPreloadedModules(){this._modules.forEach(e=>{let{name:t}=e;try{let o=V.resolve(t);V.cache[o]&&this._diag.warn(`Module ${t} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${t}`)}catch{}})}_extractPackageVersion(e){try{let t=lae(hn.join(e,"package.json"),{encoding:"utf8"}),o=JSON.parse(t).version;return typeof o=="string"?o:void 0}catch{S.warn("Failed extracting version",e)}}_onRequire(e,t,o,s){var a;if(!s)return typeof e.patch=="function"&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:e.name}),e.patch(t)):t;let i=this._extractPackageVersion(s);if(e.moduleVersion=i,e.name===o)return sF(e.supportedVersions,i,e.includePrerelease)&&typeof e.patch=="function"&&(e.moduleExports=t,this._enabled)?(this._diag.debug("Applying instrumentation patch for module on require hook",{module:e.name,version:e.moduleVersion,baseDir:s}),e.patch(t,e.moduleVersion)):t;let n=(a=e.files)!==null&&a!==void 0?a:[],l=hn.normalize(o);return n.filter(u=>u.name===l).filter(u=>sF(u.supportedVersions,i,e.includePrerelease)).reduce((u,f)=>(f.moduleExports=u,this._enabled?(this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:e.name,version:e.moduleVersion,fileName:f.name,baseDir:s}),f.patch(u,e.moduleVersion)):u),t)}enable(){if(!this._enabled){if(this._enabled=!0,this._hooks.length>0){for(let e of this._modules){typeof e.patch=="function"&&e.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:e.name,version:e.moduleVersion}),e.patch(e.moduleExports,e.moduleVersion));for(let t of e.files)t.moduleExports&&(this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.patch(t.moduleExports,e.moduleVersion))}return}this._warnOnPreloadedModules();for(let e of this._modules){let t=(i,n,l)=>{if(!l&&hn.isAbsolute(n)){let c=hn.parse(n);n=c.name,l=c.dir}return this._onRequire(e,i,n,l)},o=(i,n,l)=>this._onRequire(e,i,n,l),s=hn.isAbsolute(e.name)?new cF.Hook([e.name],{internals:!0},o):this._requireInTheMiddleSingleton.register(e.name,o);this._hooks.push(s);let a=new lF.Hook([e.name],{internals:!1},t);this._hooks.push(a)}}}disable(){if(this._enabled){this._enabled=!1;for(let e of this._modules){typeof e.unpatch=="function"&&e.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:e.name,version:e.moduleVersion}),e.unpatch(e.moduleExports,e.moduleVersion));for(let t of e.files)t.moduleExports&&(this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:e.name,version:e.moduleVersion,fileName:t.name}),t.unpatch(t.moduleExports,e.moduleVersion))}}}isEnabled(){return this._enabled}}});import{normalize as th}from"path";var fF=p(()=>{});var pF=p(()=>{uF();fF()});var Fg=p(()=>{pF()});var rh,dF=p(()=>{rh=class{constructor(e,t,o,s,a){this.name=e,this.supportedVersions=t,this.patch=o,this.unpatch=s,this.files=a||[]}}});var nh,hF=p(()=>{Fg();nh=class{constructor(e,t,o,s){this.supportedVersions=t,this.patch=o,this.unpatch=s,this.name=th(e)}}});var _F={};Ae(_F,{InstrumentationBase:()=>Ks,InstrumentationNodeModuleDefinition:()=>rh,InstrumentationNodeModuleFile:()=>nh,isWrapped:()=>eh,registerInstrumentations:()=>qV,safeExecuteInTheMiddle:()=>nF,safeExecuteInTheMiddleAsync:()=>iF});var EF=p(()=>{jV();Fg();dF();hF();Vg()});var Br,mF=p(()=>{Br=function(){function r(e){this._delegate=e}return r.prototype.export=function(e,t){this._delegate.export(e,t)},r.prototype.forceFlush=function(){return this._delegate.forceFlush()},r.prototype.shutdown=function(){return this._delegate.shutdown()},r}()});var cae,Zi,ih=p(()=>{cae=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var a in s)Object.prototype.hasOwnProperty.call(s,a)&&(o[a]=s[a])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function o(){this.constructor=e}e.prototype=t===null?Object.create(t):(o.prototype=t.prototype,new o)}}(),Zi=function(r){cae(e,r);function e(t,o,s){var a=r.call(this,t)||this;return a.name="OTLPExporterError",a.data=s,a.code=o,a}return e}(Error)});function uae(r){if(!Number.isNaN(r)&&Number.isFinite(r)&&r>0)return r;throw new Error("Configuration: timeoutMillis is invalid, expected number greater than 0 (actual: '"+r+"')")}function oh(r){if(r!=null)return function(){return r}}function sh(r,e,t){var o,s,a,i,n,l;return{timeoutMillis:uae((s=(o=r.timeoutMillis)!==null&&o!==void 0?o:e.timeoutMillis)!==null&&s!==void 0?s:t.timeoutMillis),concurrencyLimit:(i=(a=r.concurrencyLimit)!==null&&a!==void 0?a:e.concurrencyLimit)!==null&&i!==void 0?i:t.concurrencyLimit,compression:(l=(n=r.compression)!==null&&n!==void 0?n:e.compression)!==null&&l!==void 0?l:t.compression}}function ah(){return{timeoutMillis:1e4,concurrencyLimit:30,compression:"none"}}var _c=p(()=>{});var lh,TF=p(()=>{(function(r){r.NONE="none",r.GZIP="gzip"})(lh||(lh={}))});function ch(r){return new dae(r.concurrencyLimit)}var fae,pae,dae,Gg=p(()=>{fae=function(r,e,t,o){function s(a){return a instanceof t?a:new t(function(i){i(a)})}return new(t||(t=Promise))(function(a,i){function n(u){try{c(o.next(u))}catch(f){i(f)}}function l(u){try{c(o.throw(u))}catch(f){i(f)}}function c(u){u.done?a(u.value):s(u.value).then(n,l)}c((o=o.apply(r,e||[])).next())})},pae=function(r,e){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,i;return i={next:n(0),throw:n(1),return:n(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function n(c){return function(u){return l([c,u])}}function l(c){if(o)throw new TypeError("Generator is already executing.");for(;t;)try{if(o=1,s&&(a=c[0]&2?s.return:c[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,c[1])).done)return a;switch(s=0,a&&(c=[c[0]&2,a.value]),c[0]){case 0:case 1:a=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!a||c[1]>a[0]&&c[1]=this._concurrencyLimit},r.prototype.awaitAll=function(){return fae(this,void 0,void 0,function(){return pae(this,function(e){switch(e.label){case 0:return[4,Promise.all(this._sendingPromises)];case 1:return e.sent(),[2]}})})},r}()});var SF,uh,Hg,gF=p(()=>{SF="=",uh=";",Hg=","});function vF(r){return r.reduce((e,t)=>{let o=`${e}${e!==""?Hg:""}${t}`;return o.length>8192?e:o},"")}function yF(r){return r.getAllEntries().map(([e,t])=>{let o=`${encodeURIComponent(e)}=${encodeURIComponent(t.value)}`;return t.metadata!==void 0&&(o+=uh+t.metadata.toString()),o})}function qg(r){let e=r.split(uh);if(e.length<=0)return;let t=e.shift();if(!t)return;let o=t.indexOf(SF);if(o<=0)return;let s=decodeURIComponent(t.substring(0,o).trim()),a=decodeURIComponent(t.substring(o+1).trim()),i;return e.length>0&&(i=Lr(e.join(uh))),{key:s,value:a,metadata:i}}function OF(r){return typeof r!="string"||r.length===0?{}:r.split(Hg).map(e=>qg(e)).filter(e=>e!==void 0&&e.value.length>0).reduce((e,t)=>(e[t.key]=t.value,e),{})}var AF=p(()=>{P();gF()});var _r,RF=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(_r||(_r={}))});var Ec,jg=p(()=>{RF();AF();Ec={getKeyPairs:yF,serializeKeyPairs:vF,parseKeyPairsIntoRecord:OF,parsePairKeyValue:qg}});function _ae(r){return Object.prototype.hasOwnProperty.call(r,"partialSuccess")}function NF(){return{handleResponse:function(r){r==null||!_ae(r)||r.partialSuccess==null||Object.keys(r.partialSuccess).length===0||S.warn("Received Partial Success response:",JSON.stringify(r.partialSuccess))}}}var CF=p(()=>{P()});function fh(r,e){return new Tae(r.transport,r.serializer,NF(),r.promiseHandler,e.timeout)}var Eae,mae,Tae,Yg=p(()=>{jg();ih();CF();P();Eae=function(r,e,t,o){function s(a){return a instanceof t?a:new t(function(i){i(a)})}return new(t||(t=Promise))(function(a,i){function n(u){try{c(o.next(u))}catch(f){i(f)}}function l(u){try{c(o.throw(u))}catch(f){i(f)}}function c(u){u.done?a(u.value):s(u.value).then(n,l)}c((o=o.apply(r,e||[])).next())})},mae=function(r,e){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,i;return i={next:n(0),throw:n(1),return:n(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function n(c){return function(u){return l([c,u])}}function l(c){if(o)throw new TypeError("Generator is already executing.");for(;t;)try{if(o=1,s&&(a=c[0]&2?s.return:c[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,c[1])).done)return a;switch(s=0,a&&(c=[c[0]&2,a.value]),c[0]){case 0:case 1:a=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!a||c[1]>a[0]&&c[1]{Gg();Yg()});var mc={};Ae(mc,{CompressionAlgorithm:()=>lh,OTLPExporterBase:()=>Br,OTLPExporterError:()=>Zi,createOtlpNetworkExportDelegate:()=>PF,getSharedConfigurationDefaults:()=>ah,mergeOtlpSharedConfigurationWithDefaults:()=>sh});var _n=p(()=>{mF();ih();_c();TF();IF()});function LF(r){return r>=48&&r<=57?r-48:r>=97&&r<=102?r-87:r-55}function Tc(r){let e=new Uint8Array(r.length/2),t=0;for(let o=0;o{});function Kg(r){return r[0]*vae+r[1]}var Sae,gae,ike,vae,xF=p(()=>{Sae=9,gae=6,ike=Math.pow(10,gae),vae=Math.pow(10,Sae)});var MF=p(()=>{xF();bF()});function ph(r){let e=BigInt(1e9);return BigInt(r[0])*e+BigInt(r[1])}function zg(r){let e=Number(BigInt.asUintN(32,r)),t=Number(BigInt.asUintN(32,r>>BigInt(32)));return{low:e,high:t}}function dh(r){let e=ph(r);return zg(e)}function $g(r){return ph(r).toString()}function wF(r){return r}function DF(r){if(r!==void 0)return Tc(r)}function $n(r){var e,t;if(r===void 0)return Oae;let o=(e=r.useLongBits)!==null&&e!==void 0?e:!0,s=(t=r.useHex)!==null&&t!==void 0?t:!1;return{encodeHrTime:o?dh:yae,encodeSpanContext:s?wF:Tc,encodeOptionalSpanContext:s?wF:DF}}var yae,Oae,Sc=p(()=>{MF();yae=typeof BigInt<"u"?$g:Kg;Oae={encodeHrTime:dh,encodeSpanContext:Tc,encodeOptionalSpanContext:DF}});var hh,UF=p(()=>{(function(r){r[r.SPAN_KIND_UNSPECIFIED=0]="SPAN_KIND_UNSPECIFIED",r[r.SPAN_KIND_INTERNAL=1]="SPAN_KIND_INTERNAL",r[r.SPAN_KIND_SERVER=2]="SPAN_KIND_SERVER",r[r.SPAN_KIND_CLIENT=3]="SPAN_KIND_CLIENT",r[r.SPAN_KIND_PRODUCER=4]="SPAN_KIND_PRODUCER",r[r.SPAN_KIND_CONSUMER=5]="SPAN_KIND_CONSUMER"})(hh||(hh={}))});function zs(r){return{name:r.name,version:r.version}}function Vr(r){return Object.keys(r).map(e=>_h(e,r[e]))}function _h(r,e){return{key:r,value:Eh(e)}}function Eh(r){let e=typeof r;return e==="string"?{stringValue:r}:e==="number"?Number.isInteger(r)?{intValue:r}:{doubleValue:r}:e==="boolean"?{boolValue:r}:r instanceof Uint8Array?{bytesValue:r}:Array.isArray(r)?{arrayValue:{values:r.map(Eh)}}:e==="object"&&r!=null?{kvlistValue:{values:Object.entries(r).map(([t,o])=>_h(t,o))}}:{}}var $s=p(()=>{});function kF(r,e){var t;let o=r.spanContext(),s=r.status;return{traceId:e.encodeSpanContext(o.traceId),spanId:e.encodeSpanContext(o.spanId),parentSpanId:e.encodeOptionalSpanContext(r.parentSpanId),traceState:(t=o.traceState)===null||t===void 0?void 0:t.serialize(),name:r.name,kind:r.kind==null?0:r.kind+1,startTimeUnixNano:e.encodeHrTime(r.startTime),endTimeUnixNano:e.encodeHrTime(r.endTime),attributes:Vr(r.attributes),droppedAttributesCount:r.droppedAttributesCount,events:r.events.map(a=>Rae(a,e)),droppedEventsCount:r.droppedEventsCount,status:{code:s.code,message:s.message},links:r.links.map(a=>Aae(a,e)),droppedLinksCount:r.droppedLinksCount}}function Aae(r,e){var t;return{attributes:r.attributes?Vr(r.attributes):[],spanId:e.encodeSpanContext(r.context.spanId),traceId:e.encodeSpanContext(r.context.traceId),traceState:(t=r.context.traceState)===null||t===void 0?void 0:t.serialize(),droppedAttributesCount:r.droppedAttributesCount||0}}function Rae(r,e){return{attributes:r.attributes?Vr(r.attributes):[],name:r.name,timeUnixNano:e.encodeHrTime(r.time),droppedAttributesCount:r.droppedAttributesCount||0}}var BF=p(()=>{$s()});function Xs(r){return{attributes:Vr(r.attributes),droppedAttributesCount:0}}var mh=p(()=>{$s()});function Xn(r,e){let t=$n(e);return{resourceSpans:Cae(r,t)}}function Nae(r){let e=new Map;for(let t of r){let o=e.get(t.resource);o||(o=new Map,e.set(t.resource,o));let s=`${t.instrumentationLibrary.name}@${t.instrumentationLibrary.version||""}:${t.instrumentationLibrary.schemaUrl||""}`,a=o.get(s);a||(a=[],o.set(s,a)),a.push(t)}return e}function Cae(r,e){let t=Nae(r),o=[],s=t.entries(),a=s.next();for(;!a.done;){let[i,n]=a.value,l=[],c=n.values(),u=c.next();for(;!u.done;){let _=u.value;if(_.length>0){let m=_.map(O=>kF(O,e));l.push({scope:zs(_[0].instrumentationLibrary),spans:m,schemaUrl:_[0].instrumentationLibrary.schemaUrl})}u=c.next()}let f={resource:Xs(i),scopeSpans:l,schemaUrl:void 0};o.push(f),a=s.next()}return o}var Th=p(()=>{BF();Sc();$s();mh()});function FF(r,e){let t=$n(e);return{resource:Xs(r.resource),schemaUrl:void 0,scopeMetrics:Pae(r.scopeMetrics,t)}}function Pae(r,e){return Array.from(r.map(t=>({scope:zs(t.scope),metrics:t.metrics.map(o=>Iae(o,e)),schemaUrl:t.scope.schemaUrl})))}function Iae(r,e){let t={name:r.descriptor.name,description:r.descriptor.description,unit:r.descriptor.unit},o=Mae(r.aggregationTemporality);switch(r.dataPointType){case lt.SUM:t.sum={aggregationTemporality:o,isMonotonic:r.isMonotonic,dataPoints:VF(r,e)};break;case lt.GAUGE:t.gauge={dataPoints:VF(r,e)};break;case lt.HISTOGRAM:t.histogram={aggregationTemporality:o,dataPoints:bae(r,e)};break;case lt.EXPONENTIAL_HISTOGRAM:t.exponentialHistogram={aggregationTemporality:o,dataPoints:xae(r,e)};break}return t}function Lae(r,e,t){let o={attributes:Vr(r.attributes),startTimeUnixNano:t.encodeHrTime(r.startTime),timeUnixNano:t.encodeHrTime(r.endTime)};switch(e){case Ot.INT:o.asInt=r.value;break;case Ot.DOUBLE:o.asDouble=r.value;break}return o}function VF(r,e){return r.dataPoints.map(t=>Lae(t,r.descriptor.valueType,e))}function bae(r,e){return r.dataPoints.map(t=>{let o=t.value;return{attributes:Vr(t.attributes),bucketCounts:o.buckets.counts,explicitBounds:o.buckets.boundaries,count:o.count,sum:o.sum,min:o.min,max:o.max,startTimeUnixNano:e.encodeHrTime(t.startTime),timeUnixNano:e.encodeHrTime(t.endTime)}})}function xae(r,e){return r.dataPoints.map(t=>{let o=t.value;return{attributes:Vr(t.attributes),count:o.count,min:o.min,max:o.max,sum:o.sum,positive:{offset:o.positive.offset,bucketCounts:o.positive.bucketCounts},negative:{offset:o.negative.offset,bucketCounts:o.negative.bucketCounts},scale:o.scale,zeroCount:o.zeroCount,startTimeUnixNano:e.encodeHrTime(t.startTime),timeUnixNano:e.encodeHrTime(t.endTime)}})}function Mae(r){switch(r){case cr.DELTA:return 1;case cr.CUMULATIVE:return 2}}var GF=p(()=>{P();Hp();Sc();$s();mh()});function Ws(r,e){return{resourceMetrics:r.map(t=>FF(t,e))}}var Sh=p(()=>{GF()});function Js(r,e){let t=$n(e);return{resourceLogs:Dae(r,t)}}function wae(r){let e=new Map;for(let t of r){let{resource:o,instrumentationScope:{name:s,version:a="",schemaUrl:i=""}}=t,n=e.get(o);n||(n=new Map,e.set(o,n));let l=`${s}@${a}:${i}`,c=n.get(l);c||(c=[],n.set(l,c)),c.push(t)}return e}function Dae(r,e){let t=wae(r);return Array.from(t,([o,s])=>({resource:Xs(o),scopeLogs:Array.from(s,([,a])=>({scope:zs(a[0].instrumentationScope),logRecords:a.map(i=>Uae(i,e)),schemaUrl:a[0].instrumentationScope.schemaUrl})),schemaUrl:void 0}))}function Uae(r,e){var t,o,s;return{timeUnixNano:e.encodeHrTime(r.hrTime),observedTimeUnixNano:e.encodeHrTime(r.hrTimeObserved),severityNumber:r.severityNumber,severityText:r.severityText,body:Eh(r.body),attributes:kae(r.attributes),droppedAttributesCount:r.droppedAttributesCount,flags:(t=r.spanContext)===null||t===void 0?void 0:t.traceFlags,traceId:e.encodeOptionalSpanContext((o=r.spanContext)===null||o===void 0?void 0:o.traceId),spanId:e.encodeOptionalSpanContext((s=r.spanContext)===null||s===void 0?void 0:s.spanId)}}function kae(r){return Object.keys(r).map(e=>_h(e,r[e]))}var gh=p(()=>{Sc();$s();mh()});var Xg=T((Yke,HF)=>{"use strict";HF.exports=Bae;function Bae(r,e){for(var t=new Array(arguments.length-1),o=0,s=2,a=!0;s{"use strict";var vh=YF;vh.length=function(e){var t=e.length;if(!t)return 0;for(var o=0;--t%4>1&&e.charAt(t)==="=";)++o;return Math.ceil(e.length*3)/4-o};var Qs=new Array(64),jF=new Array(123);for(Er=0;Er<64;)jF[Qs[Er]=Er<26?Er+65:Er<52?Er+71:Er<62?Er-4:Er-59|43]=Er++;var Er;vh.encode=function(e,t,o){for(var s=null,a=[],i=0,n=0,l;t>2],l=(c&3)<<4,n=1;break;case 1:a[i++]=Qs[l|c>>4],l=(c&15)<<2,n=2;break;case 2:a[i++]=Qs[l|c>>6],a[i++]=Qs[c&63],n=0;break}i>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,a)),i=0)}return n&&(a[i++]=Qs[l],a[i++]=61,n===1&&(a[i++]=61)),s?(i&&s.push(String.fromCharCode.apply(String,a.slice(0,i))),s.join("")):String.fromCharCode.apply(String,a.slice(0,i))};var qF="invalid encoding";vh.decode=function(e,t,o){for(var s=o,a=0,i,n=0;n1)break;if((l=jF[l])===void 0)throw Error(qF);switch(a){case 0:i=l,a=1;break;case 1:t[o++]=i<<2|(l&48)>>4,i=l,a=2;break;case 2:t[o++]=(i&15)<<4|(l&60)>>2,i=l,a=3;break;case 3:t[o++]=(i&3)<<6|l,a=0;break}}if(a===1)throw Error(qF);return o-s};vh.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}});var $F=T((zke,zF)=>{"use strict";zF.exports=yh;function yh(){this._listeners={}}yh.prototype.on=function(e,t,o){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:o||this}),this};yh.prototype.off=function(e,t){if(e===void 0)this._listeners={};else if(t===void 0)this._listeners[e]=[];else for(var o=this._listeners[e],s=0;s{"use strict";eG.exports=XF(XF);function XF(r){return typeof Float32Array<"u"?function(){var e=new Float32Array([-0]),t=new Uint8Array(e.buffer),o=t[3]===128;function s(l,c,u){e[0]=l,c[u]=t[0],c[u+1]=t[1],c[u+2]=t[2],c[u+3]=t[3]}function a(l,c,u){e[0]=l,c[u]=t[3],c[u+1]=t[2],c[u+2]=t[1],c[u+3]=t[0]}r.writeFloatLE=o?s:a,r.writeFloatBE=o?a:s;function i(l,c){return t[0]=l[c],t[1]=l[c+1],t[2]=l[c+2],t[3]=l[c+3],e[0]}function n(l,c){return t[3]=l[c],t[2]=l[c+1],t[1]=l[c+2],t[0]=l[c+3],e[0]}r.readFloatLE=o?i:n,r.readFloatBE=o?n:i}():function(){function e(o,s,a,i){var n=s<0?1:0;if(n&&(s=-s),s===0)o(1/s>0?0:2147483648,a,i);else if(isNaN(s))o(2143289344,a,i);else if(s>34028234663852886e22)o((n<<31|2139095040)>>>0,a,i);else if(s<11754943508222875e-54)o((n<<31|Math.round(s/1401298464324817e-60))>>>0,a,i);else{var l=Math.floor(Math.log(s)/Math.LN2),c=Math.round(s*Math.pow(2,-l)*8388608)&8388607;o((n<<31|l+127<<23|c)>>>0,a,i)}}r.writeFloatLE=e.bind(null,WF),r.writeFloatBE=e.bind(null,JF);function t(o,s,a){var i=o(s,a),n=(i>>31)*2+1,l=i>>>23&255,c=i&8388607;return l===255?c?NaN:n*(1/0):l===0?n*1401298464324817e-60*c:n*Math.pow(2,l-150)*(c+8388608)}r.readFloatLE=t.bind(null,QF),r.readFloatBE=t.bind(null,ZF)}(),typeof Float64Array<"u"?function(){var e=new Float64Array([-0]),t=new Uint8Array(e.buffer),o=t[7]===128;function s(l,c,u){e[0]=l,c[u]=t[0],c[u+1]=t[1],c[u+2]=t[2],c[u+3]=t[3],c[u+4]=t[4],c[u+5]=t[5],c[u+6]=t[6],c[u+7]=t[7]}function a(l,c,u){e[0]=l,c[u]=t[7],c[u+1]=t[6],c[u+2]=t[5],c[u+3]=t[4],c[u+4]=t[3],c[u+5]=t[2],c[u+6]=t[1],c[u+7]=t[0]}r.writeDoubleLE=o?s:a,r.writeDoubleBE=o?a:s;function i(l,c){return t[0]=l[c],t[1]=l[c+1],t[2]=l[c+2],t[3]=l[c+3],t[4]=l[c+4],t[5]=l[c+5],t[6]=l[c+6],t[7]=l[c+7],e[0]}function n(l,c){return t[7]=l[c],t[6]=l[c+1],t[5]=l[c+2],t[4]=l[c+3],t[3]=l[c+4],t[2]=l[c+5],t[1]=l[c+6],t[0]=l[c+7],e[0]}r.readDoubleLE=o?i:n,r.readDoubleBE=o?n:i}():function(){function e(o,s,a,i,n,l){var c=i<0?1:0;if(c&&(i=-i),i===0)o(0,n,l+s),o(1/i>0?0:2147483648,n,l+a);else if(isNaN(i))o(0,n,l+s),o(2146959360,n,l+a);else if(i>17976931348623157e292)o(0,n,l+s),o((c<<31|2146435072)>>>0,n,l+a);else{var u;if(i<22250738585072014e-324)u=i/5e-324,o(u>>>0,n,l+s),o((c<<31|u/4294967296)>>>0,n,l+a);else{var f=Math.floor(Math.log(i)/Math.LN2);f===1024&&(f=1023),u=i*Math.pow(2,-f),o(u*4503599627370496>>>0,n,l+s),o((c<<31|f+1023<<20|u*1048576&1048575)>>>0,n,l+a)}}}r.writeDoubleLE=e.bind(null,WF,0,4),r.writeDoubleBE=e.bind(null,JF,4,0);function t(o,s,a,i,n){var l=o(i,n+s),c=o(i,n+a),u=(c>>31)*2+1,f=c>>>20&2047,_=4294967296*(c&1048575)+l;return f===2047?_?NaN:u*(1/0):f===0?u*5e-324*_:u*Math.pow(2,f-1075)*(_+4503599627370496)}r.readDoubleLE=t.bind(null,QF,0,4),r.readDoubleBE=t.bind(null,ZF,4,0)}(),r}function WF(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function JF(r,e,t){e[t]=r>>>24,e[t+1]=r>>>16&255,e[t+2]=r>>>8&255,e[t+3]=r&255}function QF(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24)>>>0}function ZF(r,e){return(r[e]<<24|r[e+1]<<16|r[e+2]<<8|r[e+3])>>>0}});var Wg=T((exports,module)=>{"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(r){}return null}});var nG=T(rG=>{"use strict";var Jg=rG;Jg.length=function(e){for(var t=0,o=0,s=0;s191&&l<224?i[n++]=(l&31)<<6|e[t++]&63:l>239&&l<365?(l=((l&7)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536,i[n++]=55296+(l>>10),i[n++]=56320+(l&1023)):i[n++]=(l&15)<<12|(e[t++]&63)<<6|e[t++]&63,n>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,i)),n=0);return a?(n&&a.push(String.fromCharCode.apply(String,i.slice(0,n))),a.join("")):String.fromCharCode.apply(String,i.slice(0,n))};Jg.write=function(e,t,o){for(var s=o,a,i,n=0;n>6|192,t[o++]=a&63|128):(a&64512)===55296&&((i=e.charCodeAt(n+1))&64512)===56320?(a=65536+((a&1023)<<10)+(i&1023),++n,t[o++]=a>>18|240,t[o++]=a>>12&63|128,t[o++]=a>>6&63|128,t[o++]=a&63|128):(t[o++]=a>>12|224,t[o++]=a>>6&63|128,t[o++]=a&63|128);return o-s}});var oG=T((Wke,iG)=>{"use strict";iG.exports=Vae;function Vae(r,e,t){var o=t||8192,s=o>>>1,a=null,i=o;return function(l){if(l<1||l>s)return r(l);i+l>o&&(a=r(o),i=0);var c=e.call(a,i,i+=l);return i&7&&(i=(i|7)+1),c}}});var aG=T((Jke,sG)=>{"use strict";sG.exports=tt;var gc=Fr();function tt(r,e){this.lo=r>>>0,this.hi=e>>>0}var eo=tt.zero=new tt(0,0);eo.toNumber=function(){return 0};eo.zzEncode=eo.zzDecode=function(){return this};eo.length=function(){return 1};var Fae=tt.zeroHash="\0\0\0\0\0\0\0\0";tt.fromNumber=function(e){if(e===0)return eo;var t=e<0;t&&(e=-e);var o=e>>>0,s=(e-o)/4294967296>>>0;return t&&(s=~s>>>0,o=~o>>>0,++o>4294967295&&(o=0,++s>4294967295&&(s=0))),new tt(o,s)};tt.from=function(e){if(typeof e=="number")return tt.fromNumber(e);if(gc.isString(e))if(gc.Long)e=gc.Long.fromString(e);else return tt.fromNumber(parseInt(e,10));return e.low||e.high?new tt(e.low>>>0,e.high>>>0):eo};tt.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=~this.lo+1>>>0,o=~this.hi>>>0;return t||(o=o+1>>>0),-(t+o*4294967296)}return this.lo+this.hi*4294967296};tt.prototype.toLong=function(e){return gc.Long?new gc.Long(this.lo|0,this.hi|0,!!e):{low:this.lo|0,high:this.hi|0,unsigned:!!e}};var Wn=String.prototype.charCodeAt;tt.fromHash=function(e){return e===Fae?eo:new tt((Wn.call(e,0)|Wn.call(e,1)<<8|Wn.call(e,2)<<16|Wn.call(e,3)<<24)>>>0,(Wn.call(e,4)|Wn.call(e,5)<<8|Wn.call(e,6)<<16|Wn.call(e,7)<<24)>>>0)};tt.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)};tt.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this};tt.prototype.zzDecode=function(){var e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this};tt.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,o=this.hi>>>24;return o===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:o<128?9:10}});var Fr=T(Qg=>{"use strict";var z=Qg;z.asPromise=Xg();z.base64=KF();z.EventEmitter=$F();z.float=tG();z.inquire=Wg();z.utf8=nG();z.pool=oG();z.LongBits=aG();z.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node);z.global=z.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||Qg;z.emptyArray=Object.freeze?Object.freeze([]):[];z.emptyObject=Object.freeze?Object.freeze({}):{};z.isInteger=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e};z.isString=function(e){return typeof e=="string"||e instanceof String};z.isObject=function(e){return e&&typeof e=="object"};z.isset=z.isSet=function(e,t){var o=e[t];return o!=null&&e.hasOwnProperty(t)?typeof o!="object"||(Array.isArray(o)?o.length:Object.keys(o).length)>0:!1};z.Buffer=function(){try{var r=z.inquire("buffer").Buffer;return r.prototype.utf8Write?r:null}catch{return null}}();z._Buffer_from=null;z._Buffer_allocUnsafe=null;z.newBuffer=function(e){return typeof e=="number"?z.Buffer?z._Buffer_allocUnsafe(e):new z.Array(e):z.Buffer?z._Buffer_from(e):typeof Uint8Array>"u"?e:new Uint8Array(e)};z.Array=typeof Uint8Array<"u"?Uint8Array:Array;z.Long=z.global.dcodeIO&&z.global.dcodeIO.Long||z.global.Long||z.inquire("long");z.key2Re=/^true|false|0|1$/;z.key32Re=/^-?(?:0|[1-9][0-9]*)$/;z.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;z.longToHash=function(e){return e?z.LongBits.from(e).toHash():z.LongBits.zeroHash};z.longFromHash=function(e,t){var o=z.LongBits.fromHash(e);return z.Long?z.Long.fromBits(o.lo,o.hi,t):o.toNumber(!!t)};function lG(r,e,t){for(var o=Object.keys(e),s=0;s-1;--a)if(t[s[a]]===1&&this[s[a]]!==void 0&&this[s[a]]!==null)return s[a]}};z.oneOfSetter=function(e){return function(t){for(var o=0;o{"use strict";dG.exports=_e;var Zt=Fr(),Zg,Oh=Zt.LongBits,uG=Zt.base64,fG=Zt.utf8;function vc(r,e,t){this.fn=r,this.len=e,this.next=void 0,this.val=t}function tv(){}function Gae(r){this.head=r.head,this.tail=r.tail,this.len=r.len,this.next=r.states}function _e(){this.len=0,this.head=new vc(tv,0,0),this.tail=this.head,this.states=null}var pG=function(){return Zt.Buffer?function(){return(_e.create=function(){return new Zg})()}:function(){return new _e}};_e.create=pG();_e.alloc=function(e){return new Zt.Array(e)};Zt.Array!==Array&&(_e.alloc=Zt.pool(_e.alloc,Zt.Array.prototype.subarray));_e.prototype._push=function(e,t,o){return this.tail=this.tail.next=new vc(e,t,o),this.len+=t,this};function rv(r,e,t){e[t]=r&255}function Hae(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function nv(r,e){this.len=r,this.next=void 0,this.val=e}nv.prototype=Object.create(vc.prototype);nv.prototype.fn=Hae;_e.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new nv((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this};_e.prototype.int32=function(e){return e<0?this._push(iv,10,Oh.fromNumber(e)):this.uint32(e)};_e.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)};function iv(r,e,t){for(;r.hi;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}_e.prototype.uint64=function(e){var t=Oh.from(e);return this._push(iv,t.length(),t)};_e.prototype.int64=_e.prototype.uint64;_e.prototype.sint64=function(e){var t=Oh.from(e).zzEncode();return this._push(iv,t.length(),t)};_e.prototype.bool=function(e){return this._push(rv,1,e?1:0)};function ev(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}_e.prototype.fixed32=function(e){return this._push(ev,4,e>>>0)};_e.prototype.sfixed32=_e.prototype.fixed32;_e.prototype.fixed64=function(e){var t=Oh.from(e);return this._push(ev,4,t.lo)._push(ev,4,t.hi)};_e.prototype.sfixed64=_e.prototype.fixed64;_e.prototype.float=function(e){return this._push(Zt.float.writeFloatLE,4,e)};_e.prototype.double=function(e){return this._push(Zt.float.writeDoubleLE,8,e)};var qae=Zt.Array.prototype.set?function(e,t,o){t.set(e,o)}:function(e,t,o){for(var s=0;s>>0;if(!t)return this._push(rv,1,0);if(Zt.isString(e)){var o=_e.alloc(t=uG.length(e));uG.decode(e,o,0),e=o}return this.uint32(t)._push(qae,t,e)};_e.prototype.string=function(e){var t=fG.length(e);return t?this.uint32(t)._push(fG.write,t,e):this._push(rv,1,0)};_e.prototype.fork=function(){return this.states=new Gae(this),this.head=this.tail=new vc(tv,0,0),this.len=0,this};_e.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new vc(tv,0,0),this.len=0),this};_e.prototype.ldelim=function(){var e=this.head,t=this.tail,o=this.len;return this.reset().uint32(o),o&&(this.tail.next=e.next,this.tail=t,this.len+=o),this};_e.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),o=0;e;)e.fn(e.val,t,o),o+=e.len,e=e.next;return t};_e._configure=function(r){Zg=r,_e.create=pG(),Zg._configure()}});var EG=T((eBe,_G)=>{"use strict";_G.exports=Gr;var hG=Ah();(Gr.prototype=Object.create(hG.prototype)).constructor=Gr;var Jn=Fr();function Gr(){hG.call(this)}Gr._configure=function(){Gr.alloc=Jn._Buffer_allocUnsafe,Gr.writeBytesBuffer=Jn.Buffer&&Jn.Buffer.prototype instanceof Uint8Array&&Jn.Buffer.prototype.set.name==="set"?function(e,t,o){t.set(e,o)}:function(e,t,o){if(e.copy)e.copy(t,o,0,e.length);else for(var s=0;s>>0;return this.uint32(t),t&&this._push(Gr.writeBytesBuffer,t,e),this};function jae(r,e,t){r.length<40?Jn.utf8.write(r,e,t):e.utf8Write?e.utf8Write(r,t):e.write(r,t)}Gr.prototype.string=function(e){var t=Jn.Buffer.byteLength(e);return this.uint32(t),t&&this._push(jae,t,e),this};Gr._configure()});var Nh=T((tBe,vG)=>{"use strict";vG.exports=Ge;var mr=Fr(),sv,SG=mr.LongBits,Yae=mr.utf8;function Tr(r,e){return RangeError("index out of range: "+r.pos+" + "+(e||1)+" > "+r.len)}function Ge(r){this.buf=r,this.pos=0,this.len=r.length}var mG=typeof Uint8Array<"u"?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new Ge(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new Ge(e);throw Error("illegal buffer")},gG=function(){return mr.Buffer?function(t){return(Ge.create=function(s){return mr.Buffer.isBuffer(s)?new sv(s):mG(s)})(t)}:mG};Ge.create=gG();Ge.prototype._slice=mr.Array.prototype.subarray||mr.Array.prototype.slice;Ge.prototype.uint32=function(){var e=4294967295;return function(){if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Tr(this,10);return e}}();Ge.prototype.int32=function(){return this.uint32()|0};Ge.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(e&1)|0};function ov(){var r=new SG(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(r.lo=(r.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return r;if(r.lo=(r.lo|(this.buf[this.pos]&127)<<28)>>>0,r.hi=(r.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return r;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw Tr(this);if(r.lo=(r.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return r}return r.lo=(r.lo|(this.buf[this.pos++]&127)<>>0,r}if(this.len-this.pos>4){for(;e<5;++e)if(r.hi=(r.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return r}else for(;e<5;++e){if(this.pos>=this.len)throw Tr(this);if(r.hi=(r.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return r}throw Error("invalid varint encoding")}Ge.prototype.bool=function(){return this.uint32()!==0};function Rh(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}Ge.prototype.fixed32=function(){if(this.pos+4>this.len)throw Tr(this,4);return Rh(this.buf,this.pos+=4)};Ge.prototype.sfixed32=function(){if(this.pos+4>this.len)throw Tr(this,4);return Rh(this.buf,this.pos+=4)|0};function TG(){if(this.pos+8>this.len)throw Tr(this,8);return new SG(Rh(this.buf,this.pos+=4),Rh(this.buf,this.pos+=4))}Ge.prototype.float=function(){if(this.pos+4>this.len)throw Tr(this,4);var e=mr.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e};Ge.prototype.double=function(){if(this.pos+8>this.len)throw Tr(this,4);var e=mr.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e};Ge.prototype.bytes=function(){var e=this.uint32(),t=this.pos,o=this.pos+e;if(o>this.len)throw Tr(this,e);if(this.pos+=e,Array.isArray(this.buf))return this.buf.slice(t,o);if(t===o){var s=mr.Buffer;return s?s.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,o)};Ge.prototype.string=function(){var e=this.bytes();return Yae.read(e,0,e.length)};Ge.prototype.skip=function(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Tr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Tr(this);while(this.buf[this.pos++]&128);return this};Ge.prototype.skipType=function(r){switch(r){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(r=this.uint32()&7)!==4;)this.skipType(r);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+r+" at offset "+this.pos)}return this};Ge._configure=function(r){sv=r,Ge.create=gG(),sv._configure();var e=mr.Long?"toLong":"toNumber";mr.merge(Ge.prototype,{int64:function(){return ov.call(this)[e](!1)},uint64:function(){return ov.call(this)[e](!0)},sint64:function(){return ov.call(this).zzDecode()[e](!1)},fixed64:function(){return TG.call(this)[e](!0)},sfixed64:function(){return TG.call(this)[e](!1)}})}});var RG=T((rBe,AG)=>{"use strict";AG.exports=to;var OG=Nh();(to.prototype=Object.create(OG.prototype)).constructor=to;var yG=Fr();function to(r){OG.call(this,r)}to._configure=function(){yG.Buffer&&(to.prototype._slice=yG.Buffer.prototype.slice)};to.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))};to._configure()});var CG=T((nBe,NG)=>{"use strict";NG.exports=yc;var av=Fr();(yc.prototype=Object.create(av.EventEmitter.prototype)).constructor=yc;function yc(r,e,t){if(typeof r!="function")throw TypeError("rpcImpl must be a function");av.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!e,this.responseDelimited=!!t}yc.prototype.rpcCall=function r(e,t,o,s,a){if(!s)throw TypeError("request must be specified");var i=this;if(!a)return av.asPromise(r,i,e,t,o,s);if(!i.rpcImpl){setTimeout(function(){a(Error("already ended"))},0);return}try{return i.rpcImpl(e,t[i.requestDelimited?"encodeDelimited":"encode"](s).finish(),function(l,c){if(l)return i.emit("error",l,e),a(l);if(c===null){i.end(!0);return}if(!(c instanceof o))try{c=o[i.responseDelimited?"decodeDelimited":"decode"](c)}catch(u){return i.emit("error",u,e),a(u)}return i.emit("data",c,e),a(null,c)})}catch(n){i.emit("error",n,e),setTimeout(function(){a(n)},0);return}};yc.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}});var lv=T(PG=>{"use strict";var Kae=PG;Kae.Service=CG()});var cv=T((oBe,IG)=>{"use strict";IG.exports={}});var uv=T(bG=>{"use strict";var Ct=bG;Ct.build="minimal";Ct.Writer=Ah();Ct.BufferWriter=EG();Ct.Reader=Nh();Ct.BufferReader=RG();Ct.util=Fr();Ct.rpc=lv();Ct.roots=cv();Ct.configure=LG;function LG(){Ct.util._configure(),Ct.Writer._configure(Ct.BufferWriter),Ct.Reader._configure(Ct.BufferReader)}LG()});var MG=T((aBe,xG)=>{"use strict";xG.exports=uv()});var DG=T((lBe,wG)=>{"use strict";var X=MG(),g=X.Reader,oe=X.Writer,h=X.util,d=X.roots.default||(X.roots.default={});d.opentelemetry=function(){var r={};return r.proto=function(){var e={};return e.common=function(){var t={};return t.v1=function(){var o={};return o.AnyValue=function(){function s(i){if(i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.stringValue=n.string();break}case 2:{u.boolValue=n.bool();break}case 3:{u.intValue=n.int64();break}case 4:{u.doubleValue=n.double();break}case 5:{u.arrayValue=d.opentelemetry.proto.common.v1.ArrayValue.decode(n,n.uint32());break}case 6:{u.kvlistValue=d.opentelemetry.proto.common.v1.KeyValueList.decode(n,n.uint32());break}case 7:{u.bytesValue=n.bytes();break}default:n.skipType(f&7);break}}return u},s.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},s.verify=function(n){if(typeof n!="object"||n===null)return"object expected";var l={};if(n.stringValue!=null&&n.hasOwnProperty("stringValue")&&(l.value=1,!h.isString(n.stringValue)))return"stringValue: string expected";if(n.boolValue!=null&&n.hasOwnProperty("boolValue")){if(l.value===1)return"value: multiple values";if(l.value=1,typeof n.boolValue!="boolean")return"boolValue: boolean expected"}if(n.intValue!=null&&n.hasOwnProperty("intValue")){if(l.value===1)return"value: multiple values";if(l.value=1,!h.isInteger(n.intValue)&&!(n.intValue&&h.isInteger(n.intValue.low)&&h.isInteger(n.intValue.high)))return"intValue: integer|Long expected"}if(n.doubleValue!=null&&n.hasOwnProperty("doubleValue")){if(l.value===1)return"value: multiple values";if(l.value=1,typeof n.doubleValue!="number")return"doubleValue: number expected"}if(n.arrayValue!=null&&n.hasOwnProperty("arrayValue")){if(l.value===1)return"value: multiple values";l.value=1;{var c=d.opentelemetry.proto.common.v1.ArrayValue.verify(n.arrayValue);if(c)return"arrayValue."+c}}if(n.kvlistValue!=null&&n.hasOwnProperty("kvlistValue")){if(l.value===1)return"value: multiple values";l.value=1;{var c=d.opentelemetry.proto.common.v1.KeyValueList.verify(n.kvlistValue);if(c)return"kvlistValue."+c}}if(n.bytesValue!=null&&n.hasOwnProperty("bytesValue")){if(l.value===1)return"value: multiple values";if(l.value=1,!(n.bytesValue&&typeof n.bytesValue.length=="number"||h.isString(n.bytesValue)))return"bytesValue: buffer expected"}return null},s.fromObject=function(n){if(n instanceof d.opentelemetry.proto.common.v1.AnyValue)return n;var l=new d.opentelemetry.proto.common.v1.AnyValue;if(n.stringValue!=null&&(l.stringValue=String(n.stringValue)),n.boolValue!=null&&(l.boolValue=!!n.boolValue),n.intValue!=null&&(h.Long?(l.intValue=h.Long.fromValue(n.intValue)).unsigned=!1:typeof n.intValue=="string"?l.intValue=parseInt(n.intValue,10):typeof n.intValue=="number"?l.intValue=n.intValue:typeof n.intValue=="object"&&(l.intValue=new h.LongBits(n.intValue.low>>>0,n.intValue.high>>>0).toNumber())),n.doubleValue!=null&&(l.doubleValue=Number(n.doubleValue)),n.arrayValue!=null){if(typeof n.arrayValue!="object")throw TypeError(".opentelemetry.proto.common.v1.AnyValue.arrayValue: object expected");l.arrayValue=d.opentelemetry.proto.common.v1.ArrayValue.fromObject(n.arrayValue)}if(n.kvlistValue!=null){if(typeof n.kvlistValue!="object")throw TypeError(".opentelemetry.proto.common.v1.AnyValue.kvlistValue: object expected");l.kvlistValue=d.opentelemetry.proto.common.v1.KeyValueList.fromObject(n.kvlistValue)}return n.bytesValue!=null&&(typeof n.bytesValue=="string"?h.base64.decode(n.bytesValue,l.bytesValue=h.newBuffer(h.base64.length(n.bytesValue)),0):n.bytesValue.length>=0&&(l.bytesValue=n.bytesValue)),l},s.toObject=function(n,l){l||(l={});var c={};return n.stringValue!=null&&n.hasOwnProperty("stringValue")&&(c.stringValue=n.stringValue,l.oneofs&&(c.value="stringValue")),n.boolValue!=null&&n.hasOwnProperty("boolValue")&&(c.boolValue=n.boolValue,l.oneofs&&(c.value="boolValue")),n.intValue!=null&&n.hasOwnProperty("intValue")&&(typeof n.intValue=="number"?c.intValue=l.longs===String?String(n.intValue):n.intValue:c.intValue=l.longs===String?h.Long.prototype.toString.call(n.intValue):l.longs===Number?new h.LongBits(n.intValue.low>>>0,n.intValue.high>>>0).toNumber():n.intValue,l.oneofs&&(c.value="intValue")),n.doubleValue!=null&&n.hasOwnProperty("doubleValue")&&(c.doubleValue=l.json&&!isFinite(n.doubleValue)?String(n.doubleValue):n.doubleValue,l.oneofs&&(c.value="doubleValue")),n.arrayValue!=null&&n.hasOwnProperty("arrayValue")&&(c.arrayValue=d.opentelemetry.proto.common.v1.ArrayValue.toObject(n.arrayValue,l),l.oneofs&&(c.value="arrayValue")),n.kvlistValue!=null&&n.hasOwnProperty("kvlistValue")&&(c.kvlistValue=d.opentelemetry.proto.common.v1.KeyValueList.toObject(n.kvlistValue,l),l.oneofs&&(c.value="kvlistValue")),n.bytesValue!=null&&n.hasOwnProperty("bytesValue")&&(c.bytesValue=l.bytes===String?h.base64.encode(n.bytesValue,0,n.bytesValue.length):l.bytes===Array?Array.prototype.slice.call(n.bytesValue):n.bytesValue,l.oneofs&&(c.value="bytesValue")),c},s.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},s.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.common.v1.AnyValue"},s}(),o.ArrayValue=function(){function s(a){if(this.values=[],a)for(var i=Object.keys(a),n=0;n>>3){case 1:{c.values&&c.values.length||(c.values=[]),c.values.push(d.opentelemetry.proto.common.v1.AnyValue.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.values!=null&&i.hasOwnProperty("values")){if(!Array.isArray(i.values))return"values: array expected";for(var n=0;n>>3){case 1:{c.values&&c.values.length||(c.values=[]),c.values.push(d.opentelemetry.proto.common.v1.KeyValue.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.values!=null&&i.hasOwnProperty("values")){if(!Array.isArray(i.values))return"values: array expected";for(var n=0;n>>3){case 1:{c.key=i.string();break}case 2:{c.value=d.opentelemetry.proto.common.v1.AnyValue.decode(i,i.uint32());break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.key!=null&&i.hasOwnProperty("key")&&!h.isString(i.key))return"key: string expected";if(i.value!=null&&i.hasOwnProperty("value")){var n=d.opentelemetry.proto.common.v1.AnyValue.verify(i.value);if(n)return"value."+n}return null},s.fromObject=function(i){if(i instanceof d.opentelemetry.proto.common.v1.KeyValue)return i;var n=new d.opentelemetry.proto.common.v1.KeyValue;if(i.key!=null&&(n.key=String(i.key)),i.value!=null){if(typeof i.value!="object")throw TypeError(".opentelemetry.proto.common.v1.KeyValue.value: object expected");n.value=d.opentelemetry.proto.common.v1.AnyValue.fromObject(i.value)}return n},s.toObject=function(i,n){n||(n={});var l={};return n.defaults&&(l.key="",l.value=null),i.key!=null&&i.hasOwnProperty("key")&&(l.key=i.key),i.value!=null&&i.hasOwnProperty("value")&&(l.value=d.opentelemetry.proto.common.v1.AnyValue.toObject(i.value,n)),l},s.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},s.getTypeUrl=function(i){return i===void 0&&(i="type.googleapis.com"),i+"/opentelemetry.proto.common.v1.KeyValue"},s}(),o.InstrumentationScope=function(){function s(a){if(this.attributes=[],a)for(var i=Object.keys(a),n=0;n>>3){case 1:{c.name=i.string();break}case 2:{c.version=i.string();break}case 3:{c.attributes&&c.attributes.length||(c.attributes=[]),c.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(i,i.uint32()));break}case 4:{c.droppedAttributesCount=i.uint32();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.name!=null&&i.hasOwnProperty("name")&&!h.isString(i.name))return"name: string expected";if(i.version!=null&&i.hasOwnProperty("version")&&!h.isString(i.version))return"version: string expected";if(i.attributes!=null&&i.hasOwnProperty("attributes")){if(!Array.isArray(i.attributes))return"attributes: array expected";for(var n=0;n>>0),n},s.toObject=function(i,n){n||(n={});var l={};if((n.arrays||n.defaults)&&(l.attributes=[]),n.defaults&&(l.name="",l.version="",l.droppedAttributesCount=0),i.name!=null&&i.hasOwnProperty("name")&&(l.name=i.name),i.version!=null&&i.hasOwnProperty("version")&&(l.version=i.version),i.attributes&&i.attributes.length){l.attributes=[];for(var c=0;c>>3){case 1:{c.attributes&&c.attributes.length||(c.attributes=[]),c.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(i,i.uint32()));break}case 2:{c.droppedAttributesCount=i.uint32();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.attributes!=null&&i.hasOwnProperty("attributes")){if(!Array.isArray(i.attributes))return"attributes: array expected";for(var n=0;n>>0),n},s.toObject=function(i,n){n||(n={});var l={};if((n.arrays||n.defaults)&&(l.attributes=[]),n.defaults&&(l.droppedAttributesCount=0),i.attributes&&i.attributes.length){l.attributes=[];for(var c=0;c>>3){case 1:{c.resourceSpans&&c.resourceSpans.length||(c.resourceSpans=[]),c.resourceSpans.push(d.opentelemetry.proto.trace.v1.ResourceSpans.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.resourceSpans!=null&&i.hasOwnProperty("resourceSpans")){if(!Array.isArray(i.resourceSpans))return"resourceSpans: array expected";for(var n=0;n>>3){case 1:{c.resource=d.opentelemetry.proto.resource.v1.Resource.decode(i,i.uint32());break}case 2:{c.scopeSpans&&c.scopeSpans.length||(c.scopeSpans=[]),c.scopeSpans.push(d.opentelemetry.proto.trace.v1.ScopeSpans.decode(i,i.uint32()));break}case 3:{c.schemaUrl=i.string();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.resource!=null&&i.hasOwnProperty("resource")){var n=d.opentelemetry.proto.resource.v1.Resource.verify(i.resource);if(n)return"resource."+n}if(i.scopeSpans!=null&&i.hasOwnProperty("scopeSpans")){if(!Array.isArray(i.scopeSpans))return"scopeSpans: array expected";for(var l=0;l>>3){case 1:{c.scope=d.opentelemetry.proto.common.v1.InstrumentationScope.decode(i,i.uint32());break}case 2:{c.spans&&c.spans.length||(c.spans=[]),c.spans.push(d.opentelemetry.proto.trace.v1.Span.decode(i,i.uint32()));break}case 3:{c.schemaUrl=i.string();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.scope!=null&&i.hasOwnProperty("scope")){var n=d.opentelemetry.proto.common.v1.InstrumentationScope.verify(i.scope);if(n)return"scope."+n}if(i.spans!=null&&i.hasOwnProperty("spans")){if(!Array.isArray(i.spans))return"spans: array expected";for(var l=0;l>>3){case 1:{c.traceId=i.bytes();break}case 2:{c.spanId=i.bytes();break}case 3:{c.traceState=i.string();break}case 4:{c.parentSpanId=i.bytes();break}case 5:{c.name=i.string();break}case 6:{c.kind=i.int32();break}case 7:{c.startTimeUnixNano=i.fixed64();break}case 8:{c.endTimeUnixNano=i.fixed64();break}case 9:{c.attributes&&c.attributes.length||(c.attributes=[]),c.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(i,i.uint32()));break}case 10:{c.droppedAttributesCount=i.uint32();break}case 11:{c.events&&c.events.length||(c.events=[]),c.events.push(d.opentelemetry.proto.trace.v1.Span.Event.decode(i,i.uint32()));break}case 12:{c.droppedEventsCount=i.uint32();break}case 13:{c.links&&c.links.length||(c.links=[]),c.links.push(d.opentelemetry.proto.trace.v1.Span.Link.decode(i,i.uint32()));break}case 14:{c.droppedLinksCount=i.uint32();break}case 15:{c.status=d.opentelemetry.proto.trace.v1.Status.decode(i,i.uint32());break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.traceId!=null&&i.hasOwnProperty("traceId")&&!(i.traceId&&typeof i.traceId.length=="number"||h.isString(i.traceId)))return"traceId: buffer expected";if(i.spanId!=null&&i.hasOwnProperty("spanId")&&!(i.spanId&&typeof i.spanId.length=="number"||h.isString(i.spanId)))return"spanId: buffer expected";if(i.traceState!=null&&i.hasOwnProperty("traceState")&&!h.isString(i.traceState))return"traceState: string expected";if(i.parentSpanId!=null&&i.hasOwnProperty("parentSpanId")&&!(i.parentSpanId&&typeof i.parentSpanId.length=="number"||h.isString(i.parentSpanId)))return"parentSpanId: buffer expected";if(i.name!=null&&i.hasOwnProperty("name")&&!h.isString(i.name))return"name: string expected";if(i.kind!=null&&i.hasOwnProperty("kind"))switch(i.kind){default:return"kind: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:break}if(i.startTimeUnixNano!=null&&i.hasOwnProperty("startTimeUnixNano")&&!h.isInteger(i.startTimeUnixNano)&&!(i.startTimeUnixNano&&h.isInteger(i.startTimeUnixNano.low)&&h.isInteger(i.startTimeUnixNano.high)))return"startTimeUnixNano: integer|Long expected";if(i.endTimeUnixNano!=null&&i.hasOwnProperty("endTimeUnixNano")&&!h.isInteger(i.endTimeUnixNano)&&!(i.endTimeUnixNano&&h.isInteger(i.endTimeUnixNano.low)&&h.isInteger(i.endTimeUnixNano.high)))return"endTimeUnixNano: integer|Long expected";if(i.attributes!=null&&i.hasOwnProperty("attributes")){if(!Array.isArray(i.attributes))return"attributes: array expected";for(var n=0;n=0&&(n.traceId=i.traceId)),i.spanId!=null&&(typeof i.spanId=="string"?h.base64.decode(i.spanId,n.spanId=h.newBuffer(h.base64.length(i.spanId)),0):i.spanId.length>=0&&(n.spanId=i.spanId)),i.traceState!=null&&(n.traceState=String(i.traceState)),i.parentSpanId!=null&&(typeof i.parentSpanId=="string"?h.base64.decode(i.parentSpanId,n.parentSpanId=h.newBuffer(h.base64.length(i.parentSpanId)),0):i.parentSpanId.length>=0&&(n.parentSpanId=i.parentSpanId)),i.name!=null&&(n.name=String(i.name)),i.kind){default:if(typeof i.kind=="number"){n.kind=i.kind;break}break;case"SPAN_KIND_UNSPECIFIED":case 0:n.kind=0;break;case"SPAN_KIND_INTERNAL":case 1:n.kind=1;break;case"SPAN_KIND_SERVER":case 2:n.kind=2;break;case"SPAN_KIND_CLIENT":case 3:n.kind=3;break;case"SPAN_KIND_PRODUCER":case 4:n.kind=4;break;case"SPAN_KIND_CONSUMER":case 5:n.kind=5;break}if(i.startTimeUnixNano!=null&&(h.Long?(n.startTimeUnixNano=h.Long.fromValue(i.startTimeUnixNano)).unsigned=!1:typeof i.startTimeUnixNano=="string"?n.startTimeUnixNano=parseInt(i.startTimeUnixNano,10):typeof i.startTimeUnixNano=="number"?n.startTimeUnixNano=i.startTimeUnixNano:typeof i.startTimeUnixNano=="object"&&(n.startTimeUnixNano=new h.LongBits(i.startTimeUnixNano.low>>>0,i.startTimeUnixNano.high>>>0).toNumber())),i.endTimeUnixNano!=null&&(h.Long?(n.endTimeUnixNano=h.Long.fromValue(i.endTimeUnixNano)).unsigned=!1:typeof i.endTimeUnixNano=="string"?n.endTimeUnixNano=parseInt(i.endTimeUnixNano,10):typeof i.endTimeUnixNano=="number"?n.endTimeUnixNano=i.endTimeUnixNano:typeof i.endTimeUnixNano=="object"&&(n.endTimeUnixNano=new h.LongBits(i.endTimeUnixNano.low>>>0,i.endTimeUnixNano.high>>>0).toNumber())),i.attributes){if(!Array.isArray(i.attributes))throw TypeError(".opentelemetry.proto.trace.v1.Span.attributes: array expected");n.attributes=[];for(var l=0;l>>0),i.events){if(!Array.isArray(i.events))throw TypeError(".opentelemetry.proto.trace.v1.Span.events: array expected");n.events=[];for(var l=0;l>>0),i.links){if(!Array.isArray(i.links))throw TypeError(".opentelemetry.proto.trace.v1.Span.links: array expected");n.links=[];for(var l=0;l>>0),i.status!=null){if(typeof i.status!="object")throw TypeError(".opentelemetry.proto.trace.v1.Span.status: object expected");n.status=d.opentelemetry.proto.trace.v1.Status.fromObject(i.status)}return n},s.toObject=function(i,n){n||(n={});var l={};if((n.arrays||n.defaults)&&(l.attributes=[],l.events=[],l.links=[]),n.defaults){if(n.bytes===String?l.traceId="":(l.traceId=[],n.bytes!==Array&&(l.traceId=h.newBuffer(l.traceId))),n.bytes===String?l.spanId="":(l.spanId=[],n.bytes!==Array&&(l.spanId=h.newBuffer(l.spanId))),l.traceState="",n.bytes===String?l.parentSpanId="":(l.parentSpanId=[],n.bytes!==Array&&(l.parentSpanId=h.newBuffer(l.parentSpanId))),l.name="",l.kind=n.enums===String?"SPAN_KIND_UNSPECIFIED":0,h.Long){var c=new h.Long(0,0,!1);l.startTimeUnixNano=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.startTimeUnixNano=n.longs===String?"0":0;if(h.Long){var c=new h.Long(0,0,!1);l.endTimeUnixNano=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.endTimeUnixNano=n.longs===String?"0":0;l.droppedAttributesCount=0,l.droppedEventsCount=0,l.droppedLinksCount=0,l.status=null}if(i.traceId!=null&&i.hasOwnProperty("traceId")&&(l.traceId=n.bytes===String?h.base64.encode(i.traceId,0,i.traceId.length):n.bytes===Array?Array.prototype.slice.call(i.traceId):i.traceId),i.spanId!=null&&i.hasOwnProperty("spanId")&&(l.spanId=n.bytes===String?h.base64.encode(i.spanId,0,i.spanId.length):n.bytes===Array?Array.prototype.slice.call(i.spanId):i.spanId),i.traceState!=null&&i.hasOwnProperty("traceState")&&(l.traceState=i.traceState),i.parentSpanId!=null&&i.hasOwnProperty("parentSpanId")&&(l.parentSpanId=n.bytes===String?h.base64.encode(i.parentSpanId,0,i.parentSpanId.length):n.bytes===Array?Array.prototype.slice.call(i.parentSpanId):i.parentSpanId),i.name!=null&&i.hasOwnProperty("name")&&(l.name=i.name),i.kind!=null&&i.hasOwnProperty("kind")&&(l.kind=n.enums===String?d.opentelemetry.proto.trace.v1.Span.SpanKind[i.kind]===void 0?i.kind:d.opentelemetry.proto.trace.v1.Span.SpanKind[i.kind]:i.kind),i.startTimeUnixNano!=null&&i.hasOwnProperty("startTimeUnixNano")&&(typeof i.startTimeUnixNano=="number"?l.startTimeUnixNano=n.longs===String?String(i.startTimeUnixNano):i.startTimeUnixNano:l.startTimeUnixNano=n.longs===String?h.Long.prototype.toString.call(i.startTimeUnixNano):n.longs===Number?new h.LongBits(i.startTimeUnixNano.low>>>0,i.startTimeUnixNano.high>>>0).toNumber():i.startTimeUnixNano),i.endTimeUnixNano!=null&&i.hasOwnProperty("endTimeUnixNano")&&(typeof i.endTimeUnixNano=="number"?l.endTimeUnixNano=n.longs===String?String(i.endTimeUnixNano):i.endTimeUnixNano:l.endTimeUnixNano=n.longs===String?h.Long.prototype.toString.call(i.endTimeUnixNano):n.longs===Number?new h.LongBits(i.endTimeUnixNano.low>>>0,i.endTimeUnixNano.high>>>0).toNumber():i.endTimeUnixNano),i.attributes&&i.attributes.length){l.attributes=[];for(var u=0;u>>3){case 1:{u.timeUnixNano=n.fixed64();break}case 2:{u.name=n.string();break}case 3:{u.attributes&&u.attributes.length||(u.attributes=[]),u.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(n,n.uint32()));break}case 4:{u.droppedAttributesCount=n.uint32();break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.timeUnixNano!=null&&n.hasOwnProperty("timeUnixNano")&&!h.isInteger(n.timeUnixNano)&&!(n.timeUnixNano&&h.isInteger(n.timeUnixNano.low)&&h.isInteger(n.timeUnixNano.high)))return"timeUnixNano: integer|Long expected";if(n.name!=null&&n.hasOwnProperty("name")&&!h.isString(n.name))return"name: string expected";if(n.attributes!=null&&n.hasOwnProperty("attributes")){if(!Array.isArray(n.attributes))return"attributes: array expected";for(var l=0;l>>0,n.timeUnixNano.high>>>0).toNumber())),n.name!=null&&(l.name=String(n.name)),n.attributes){if(!Array.isArray(n.attributes))throw TypeError(".opentelemetry.proto.trace.v1.Span.Event.attributes: array expected");l.attributes=[];for(var c=0;c>>0),l},a.toObject=function(n,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.attributes=[]),l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.timeUnixNano=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.timeUnixNano=l.longs===String?"0":0;c.name="",c.droppedAttributesCount=0}if(n.timeUnixNano!=null&&n.hasOwnProperty("timeUnixNano")&&(typeof n.timeUnixNano=="number"?c.timeUnixNano=l.longs===String?String(n.timeUnixNano):n.timeUnixNano:c.timeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.timeUnixNano):l.longs===Number?new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber():n.timeUnixNano),n.name!=null&&n.hasOwnProperty("name")&&(c.name=n.name),n.attributes&&n.attributes.length){c.attributes=[];for(var f=0;f>>3){case 1:{u.traceId=n.bytes();break}case 2:{u.spanId=n.bytes();break}case 3:{u.traceState=n.string();break}case 4:{u.attributes&&u.attributes.length||(u.attributes=[]),u.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(n,n.uint32()));break}case 5:{u.droppedAttributesCount=n.uint32();break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.traceId!=null&&n.hasOwnProperty("traceId")&&!(n.traceId&&typeof n.traceId.length=="number"||h.isString(n.traceId)))return"traceId: buffer expected";if(n.spanId!=null&&n.hasOwnProperty("spanId")&&!(n.spanId&&typeof n.spanId.length=="number"||h.isString(n.spanId)))return"spanId: buffer expected";if(n.traceState!=null&&n.hasOwnProperty("traceState")&&!h.isString(n.traceState))return"traceState: string expected";if(n.attributes!=null&&n.hasOwnProperty("attributes")){if(!Array.isArray(n.attributes))return"attributes: array expected";for(var l=0;l=0&&(l.traceId=n.traceId)),n.spanId!=null&&(typeof n.spanId=="string"?h.base64.decode(n.spanId,l.spanId=h.newBuffer(h.base64.length(n.spanId)),0):n.spanId.length>=0&&(l.spanId=n.spanId)),n.traceState!=null&&(l.traceState=String(n.traceState)),n.attributes){if(!Array.isArray(n.attributes))throw TypeError(".opentelemetry.proto.trace.v1.Span.Link.attributes: array expected");l.attributes=[];for(var c=0;c>>0),l},a.toObject=function(n,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.attributes=[]),l.defaults&&(l.bytes===String?c.traceId="":(c.traceId=[],l.bytes!==Array&&(c.traceId=h.newBuffer(c.traceId))),l.bytes===String?c.spanId="":(c.spanId=[],l.bytes!==Array&&(c.spanId=h.newBuffer(c.spanId))),c.traceState="",c.droppedAttributesCount=0),n.traceId!=null&&n.hasOwnProperty("traceId")&&(c.traceId=l.bytes===String?h.base64.encode(n.traceId,0,n.traceId.length):l.bytes===Array?Array.prototype.slice.call(n.traceId):n.traceId),n.spanId!=null&&n.hasOwnProperty("spanId")&&(c.spanId=l.bytes===String?h.base64.encode(n.spanId,0,n.spanId.length):l.bytes===Array?Array.prototype.slice.call(n.spanId):n.spanId),n.traceState!=null&&n.hasOwnProperty("traceState")&&(c.traceState=n.traceState),n.attributes&&n.attributes.length){c.attributes=[];for(var u=0;u>>3){case 2:{c.message=i.string();break}case 3:{c.code=i.int32();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.message!=null&&i.hasOwnProperty("message")&&!h.isString(i.message))return"message: string expected";if(i.code!=null&&i.hasOwnProperty("code"))switch(i.code){default:return"code: enum value expected";case 0:case 1:case 2:break}return null},s.fromObject=function(i){if(i instanceof d.opentelemetry.proto.trace.v1.Status)return i;var n=new d.opentelemetry.proto.trace.v1.Status;switch(i.message!=null&&(n.message=String(i.message)),i.code){default:if(typeof i.code=="number"){n.code=i.code;break}break;case"STATUS_CODE_UNSET":case 0:n.code=0;break;case"STATUS_CODE_OK":case 1:n.code=1;break;case"STATUS_CODE_ERROR":case 2:n.code=2;break}return n},s.toObject=function(i,n){n||(n={});var l={};return n.defaults&&(l.message="",l.code=n.enums===String?"STATUS_CODE_UNSET":0),i.message!=null&&i.hasOwnProperty("message")&&(l.message=i.message),i.code!=null&&i.hasOwnProperty("code")&&(l.code=n.enums===String?d.opentelemetry.proto.trace.v1.Status.StatusCode[i.code]===void 0?i.code:d.opentelemetry.proto.trace.v1.Status.StatusCode[i.code]:i.code),l},s.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},s.getTypeUrl=function(i){return i===void 0&&(i="type.googleapis.com"),i+"/opentelemetry.proto.trace.v1.Status"},s.StatusCode=function(){var a={},i=Object.create(a);return i[a[0]="STATUS_CODE_UNSET"]=0,i[a[1]="STATUS_CODE_OK"]=1,i[a[2]="STATUS_CODE_ERROR"]=2,i}(),s}(),o}(),t}(),e.collector=function(){var t={};return t.trace=function(){var o={};return o.v1=function(){var s={};return s.TraceService=function(){function a(i,n,l){X.rpc.Service.call(this,i,n,l)}return(a.prototype=Object.create(X.rpc.Service.prototype)).constructor=a,a.create=function(n,l,c){return new this(n,l,c)},Object.defineProperty(a.prototype.export=function i(n,l){return this.rpcCall(i,d.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest,d.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse,n,l)},"name",{value:"Export"}),a}(),s.ExportTraceServiceRequest=function(){function a(i){if(this.resourceSpans=[],i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.resourceSpans&&u.resourceSpans.length||(u.resourceSpans=[]),u.resourceSpans.push(d.opentelemetry.proto.trace.v1.ResourceSpans.decode(n,n.uint32()));break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.resourceSpans!=null&&n.hasOwnProperty("resourceSpans")){if(!Array.isArray(n.resourceSpans))return"resourceSpans: array expected";for(var l=0;l>>3){case 1:{u.partialSuccess=d.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.decode(n,n.uint32());break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.partialSuccess!=null&&n.hasOwnProperty("partialSuccess")){var l=d.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.verify(n.partialSuccess);if(l)return"partialSuccess."+l}return null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse)return n;var l=new d.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse;if(n.partialSuccess!=null){if(typeof n.partialSuccess!="object")throw TypeError(".opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.partialSuccess: object expected");l.partialSuccess=d.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.fromObject(n.partialSuccess)}return l},a.toObject=function(n,l){l||(l={});var c={};return l.defaults&&(c.partialSuccess=null),n.partialSuccess!=null&&n.hasOwnProperty("partialSuccess")&&(c.partialSuccess=d.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess.toObject(n.partialSuccess,l)),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse"},a}(),s.ExportTracePartialSuccess=function(){function a(i){if(i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.rejectedSpans=n.int64();break}case 2:{u.errorMessage=n.string();break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){return typeof n!="object"||n===null?"object expected":n.rejectedSpans!=null&&n.hasOwnProperty("rejectedSpans")&&!h.isInteger(n.rejectedSpans)&&!(n.rejectedSpans&&h.isInteger(n.rejectedSpans.low)&&h.isInteger(n.rejectedSpans.high))?"rejectedSpans: integer|Long expected":n.errorMessage!=null&&n.hasOwnProperty("errorMessage")&&!h.isString(n.errorMessage)?"errorMessage: string expected":null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess)return n;var l=new d.opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess;return n.rejectedSpans!=null&&(h.Long?(l.rejectedSpans=h.Long.fromValue(n.rejectedSpans)).unsigned=!1:typeof n.rejectedSpans=="string"?l.rejectedSpans=parseInt(n.rejectedSpans,10):typeof n.rejectedSpans=="number"?l.rejectedSpans=n.rejectedSpans:typeof n.rejectedSpans=="object"&&(l.rejectedSpans=new h.LongBits(n.rejectedSpans.low>>>0,n.rejectedSpans.high>>>0).toNumber())),n.errorMessage!=null&&(l.errorMessage=String(n.errorMessage)),l},a.toObject=function(n,l){l||(l={});var c={};if(l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.rejectedSpans=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.rejectedSpans=l.longs===String?"0":0;c.errorMessage=""}return n.rejectedSpans!=null&&n.hasOwnProperty("rejectedSpans")&&(typeof n.rejectedSpans=="number"?c.rejectedSpans=l.longs===String?String(n.rejectedSpans):n.rejectedSpans:c.rejectedSpans=l.longs===String?h.Long.prototype.toString.call(n.rejectedSpans):l.longs===Number?new h.LongBits(n.rejectedSpans.low>>>0,n.rejectedSpans.high>>>0).toNumber():n.rejectedSpans),n.errorMessage!=null&&n.hasOwnProperty("errorMessage")&&(c.errorMessage=n.errorMessage),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.collector.trace.v1.ExportTracePartialSuccess"},a}(),s}(),o}(),t.metrics=function(){var o={};return o.v1=function(){var s={};return s.MetricsService=function(){function a(i,n,l){X.rpc.Service.call(this,i,n,l)}return(a.prototype=Object.create(X.rpc.Service.prototype)).constructor=a,a.create=function(n,l,c){return new this(n,l,c)},Object.defineProperty(a.prototype.export=function i(n,l){return this.rpcCall(i,d.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,d.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,n,l)},"name",{value:"Export"}),a}(),s.ExportMetricsServiceRequest=function(){function a(i){if(this.resourceMetrics=[],i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.resourceMetrics&&u.resourceMetrics.length||(u.resourceMetrics=[]),u.resourceMetrics.push(d.opentelemetry.proto.metrics.v1.ResourceMetrics.decode(n,n.uint32()));break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.resourceMetrics!=null&&n.hasOwnProperty("resourceMetrics")){if(!Array.isArray(n.resourceMetrics))return"resourceMetrics: array expected";for(var l=0;l>>3){case 1:{u.partialSuccess=d.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.decode(n,n.uint32());break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.partialSuccess!=null&&n.hasOwnProperty("partialSuccess")){var l=d.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.verify(n.partialSuccess);if(l)return"partialSuccess."+l}return null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse)return n;var l=new d.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse;if(n.partialSuccess!=null){if(typeof n.partialSuccess!="object")throw TypeError(".opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.partialSuccess: object expected");l.partialSuccess=d.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.fromObject(n.partialSuccess)}return l},a.toObject=function(n,l){l||(l={});var c={};return l.defaults&&(c.partialSuccess=null),n.partialSuccess!=null&&n.hasOwnProperty("partialSuccess")&&(c.partialSuccess=d.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess.toObject(n.partialSuccess,l)),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse"},a}(),s.ExportMetricsPartialSuccess=function(){function a(i){if(i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.rejectedDataPoints=n.int64();break}case 2:{u.errorMessage=n.string();break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){return typeof n!="object"||n===null?"object expected":n.rejectedDataPoints!=null&&n.hasOwnProperty("rejectedDataPoints")&&!h.isInteger(n.rejectedDataPoints)&&!(n.rejectedDataPoints&&h.isInteger(n.rejectedDataPoints.low)&&h.isInteger(n.rejectedDataPoints.high))?"rejectedDataPoints: integer|Long expected":n.errorMessage!=null&&n.hasOwnProperty("errorMessage")&&!h.isString(n.errorMessage)?"errorMessage: string expected":null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess)return n;var l=new d.opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess;return n.rejectedDataPoints!=null&&(h.Long?(l.rejectedDataPoints=h.Long.fromValue(n.rejectedDataPoints)).unsigned=!1:typeof n.rejectedDataPoints=="string"?l.rejectedDataPoints=parseInt(n.rejectedDataPoints,10):typeof n.rejectedDataPoints=="number"?l.rejectedDataPoints=n.rejectedDataPoints:typeof n.rejectedDataPoints=="object"&&(l.rejectedDataPoints=new h.LongBits(n.rejectedDataPoints.low>>>0,n.rejectedDataPoints.high>>>0).toNumber())),n.errorMessage!=null&&(l.errorMessage=String(n.errorMessage)),l},a.toObject=function(n,l){l||(l={});var c={};if(l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.rejectedDataPoints=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.rejectedDataPoints=l.longs===String?"0":0;c.errorMessage=""}return n.rejectedDataPoints!=null&&n.hasOwnProperty("rejectedDataPoints")&&(typeof n.rejectedDataPoints=="number"?c.rejectedDataPoints=l.longs===String?String(n.rejectedDataPoints):n.rejectedDataPoints:c.rejectedDataPoints=l.longs===String?h.Long.prototype.toString.call(n.rejectedDataPoints):l.longs===Number?new h.LongBits(n.rejectedDataPoints.low>>>0,n.rejectedDataPoints.high>>>0).toNumber():n.rejectedDataPoints),n.errorMessage!=null&&n.hasOwnProperty("errorMessage")&&(c.errorMessage=n.errorMessage),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.collector.metrics.v1.ExportMetricsPartialSuccess"},a}(),s}(),o}(),t.logs=function(){var o={};return o.v1=function(){var s={};return s.LogsService=function(){function a(i,n,l){X.rpc.Service.call(this,i,n,l)}return(a.prototype=Object.create(X.rpc.Service.prototype)).constructor=a,a.create=function(n,l,c){return new this(n,l,c)},Object.defineProperty(a.prototype.export=function i(n,l){return this.rpcCall(i,d.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest,d.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse,n,l)},"name",{value:"Export"}),a}(),s.ExportLogsServiceRequest=function(){function a(i){if(this.resourceLogs=[],i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.resourceLogs&&u.resourceLogs.length||(u.resourceLogs=[]),u.resourceLogs.push(d.opentelemetry.proto.logs.v1.ResourceLogs.decode(n,n.uint32()));break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.resourceLogs!=null&&n.hasOwnProperty("resourceLogs")){if(!Array.isArray(n.resourceLogs))return"resourceLogs: array expected";for(var l=0;l>>3){case 1:{u.partialSuccess=d.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.decode(n,n.uint32());break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){if(typeof n!="object"||n===null)return"object expected";if(n.partialSuccess!=null&&n.hasOwnProperty("partialSuccess")){var l=d.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.verify(n.partialSuccess);if(l)return"partialSuccess."+l}return null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse)return n;var l=new d.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse;if(n.partialSuccess!=null){if(typeof n.partialSuccess!="object")throw TypeError(".opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.partialSuccess: object expected");l.partialSuccess=d.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.fromObject(n.partialSuccess)}return l},a.toObject=function(n,l){l||(l={});var c={};return l.defaults&&(c.partialSuccess=null),n.partialSuccess!=null&&n.hasOwnProperty("partialSuccess")&&(c.partialSuccess=d.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess.toObject(n.partialSuccess,l)),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse"},a}(),s.ExportLogsPartialSuccess=function(){function a(i){if(i)for(var n=Object.keys(i),l=0;l>>3){case 1:{u.rejectedLogRecords=n.int64();break}case 2:{u.errorMessage=n.string();break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){return typeof n!="object"||n===null?"object expected":n.rejectedLogRecords!=null&&n.hasOwnProperty("rejectedLogRecords")&&!h.isInteger(n.rejectedLogRecords)&&!(n.rejectedLogRecords&&h.isInteger(n.rejectedLogRecords.low)&&h.isInteger(n.rejectedLogRecords.high))?"rejectedLogRecords: integer|Long expected":n.errorMessage!=null&&n.hasOwnProperty("errorMessage")&&!h.isString(n.errorMessage)?"errorMessage: string expected":null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess)return n;var l=new d.opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess;return n.rejectedLogRecords!=null&&(h.Long?(l.rejectedLogRecords=h.Long.fromValue(n.rejectedLogRecords)).unsigned=!1:typeof n.rejectedLogRecords=="string"?l.rejectedLogRecords=parseInt(n.rejectedLogRecords,10):typeof n.rejectedLogRecords=="number"?l.rejectedLogRecords=n.rejectedLogRecords:typeof n.rejectedLogRecords=="object"&&(l.rejectedLogRecords=new h.LongBits(n.rejectedLogRecords.low>>>0,n.rejectedLogRecords.high>>>0).toNumber())),n.errorMessage!=null&&(l.errorMessage=String(n.errorMessage)),l},a.toObject=function(n,l){l||(l={});var c={};if(l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.rejectedLogRecords=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.rejectedLogRecords=l.longs===String?"0":0;c.errorMessage=""}return n.rejectedLogRecords!=null&&n.hasOwnProperty("rejectedLogRecords")&&(typeof n.rejectedLogRecords=="number"?c.rejectedLogRecords=l.longs===String?String(n.rejectedLogRecords):n.rejectedLogRecords:c.rejectedLogRecords=l.longs===String?h.Long.prototype.toString.call(n.rejectedLogRecords):l.longs===Number?new h.LongBits(n.rejectedLogRecords.low>>>0,n.rejectedLogRecords.high>>>0).toNumber():n.rejectedLogRecords),n.errorMessage!=null&&n.hasOwnProperty("errorMessage")&&(c.errorMessage=n.errorMessage),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.collector.logs.v1.ExportLogsPartialSuccess"},a}(),s}(),o}(),t}(),e.metrics=function(){var t={};return t.v1=function(){var o={};return o.MetricsData=function(){function s(a){if(this.resourceMetrics=[],a)for(var i=Object.keys(a),n=0;n>>3){case 1:{c.resourceMetrics&&c.resourceMetrics.length||(c.resourceMetrics=[]),c.resourceMetrics.push(d.opentelemetry.proto.metrics.v1.ResourceMetrics.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.resourceMetrics!=null&&i.hasOwnProperty("resourceMetrics")){if(!Array.isArray(i.resourceMetrics))return"resourceMetrics: array expected";for(var n=0;n>>3){case 1:{c.resource=d.opentelemetry.proto.resource.v1.Resource.decode(i,i.uint32());break}case 2:{c.scopeMetrics&&c.scopeMetrics.length||(c.scopeMetrics=[]),c.scopeMetrics.push(d.opentelemetry.proto.metrics.v1.ScopeMetrics.decode(i,i.uint32()));break}case 3:{c.schemaUrl=i.string();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.resource!=null&&i.hasOwnProperty("resource")){var n=d.opentelemetry.proto.resource.v1.Resource.verify(i.resource);if(n)return"resource."+n}if(i.scopeMetrics!=null&&i.hasOwnProperty("scopeMetrics")){if(!Array.isArray(i.scopeMetrics))return"scopeMetrics: array expected";for(var l=0;l>>3){case 1:{c.scope=d.opentelemetry.proto.common.v1.InstrumentationScope.decode(i,i.uint32());break}case 2:{c.metrics&&c.metrics.length||(c.metrics=[]),c.metrics.push(d.opentelemetry.proto.metrics.v1.Metric.decode(i,i.uint32()));break}case 3:{c.schemaUrl=i.string();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.scope!=null&&i.hasOwnProperty("scope")){var n=d.opentelemetry.proto.common.v1.InstrumentationScope.verify(i.scope);if(n)return"scope."+n}if(i.metrics!=null&&i.hasOwnProperty("metrics")){if(!Array.isArray(i.metrics))return"metrics: array expected";for(var l=0;l>>3){case 1:{u.name=n.string();break}case 2:{u.description=n.string();break}case 3:{u.unit=n.string();break}case 5:{u.gauge=d.opentelemetry.proto.metrics.v1.Gauge.decode(n,n.uint32());break}case 7:{u.sum=d.opentelemetry.proto.metrics.v1.Sum.decode(n,n.uint32());break}case 9:{u.histogram=d.opentelemetry.proto.metrics.v1.Histogram.decode(n,n.uint32());break}case 10:{u.exponentialHistogram=d.opentelemetry.proto.metrics.v1.ExponentialHistogram.decode(n,n.uint32());break}case 11:{u.summary=d.opentelemetry.proto.metrics.v1.Summary.decode(n,n.uint32());break}default:n.skipType(f&7);break}}return u},s.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},s.verify=function(n){if(typeof n!="object"||n===null)return"object expected";var l={};if(n.name!=null&&n.hasOwnProperty("name")&&!h.isString(n.name))return"name: string expected";if(n.description!=null&&n.hasOwnProperty("description")&&!h.isString(n.description))return"description: string expected";if(n.unit!=null&&n.hasOwnProperty("unit")&&!h.isString(n.unit))return"unit: string expected";if(n.gauge!=null&&n.hasOwnProperty("gauge")){l.data=1;{var c=d.opentelemetry.proto.metrics.v1.Gauge.verify(n.gauge);if(c)return"gauge."+c}}if(n.sum!=null&&n.hasOwnProperty("sum")){if(l.data===1)return"data: multiple values";l.data=1;{var c=d.opentelemetry.proto.metrics.v1.Sum.verify(n.sum);if(c)return"sum."+c}}if(n.histogram!=null&&n.hasOwnProperty("histogram")){if(l.data===1)return"data: multiple values";l.data=1;{var c=d.opentelemetry.proto.metrics.v1.Histogram.verify(n.histogram);if(c)return"histogram."+c}}if(n.exponentialHistogram!=null&&n.hasOwnProperty("exponentialHistogram")){if(l.data===1)return"data: multiple values";l.data=1;{var c=d.opentelemetry.proto.metrics.v1.ExponentialHistogram.verify(n.exponentialHistogram);if(c)return"exponentialHistogram."+c}}if(n.summary!=null&&n.hasOwnProperty("summary")){if(l.data===1)return"data: multiple values";l.data=1;{var c=d.opentelemetry.proto.metrics.v1.Summary.verify(n.summary);if(c)return"summary."+c}}return null},s.fromObject=function(n){if(n instanceof d.opentelemetry.proto.metrics.v1.Metric)return n;var l=new d.opentelemetry.proto.metrics.v1.Metric;if(n.name!=null&&(l.name=String(n.name)),n.description!=null&&(l.description=String(n.description)),n.unit!=null&&(l.unit=String(n.unit)),n.gauge!=null){if(typeof n.gauge!="object")throw TypeError(".opentelemetry.proto.metrics.v1.Metric.gauge: object expected");l.gauge=d.opentelemetry.proto.metrics.v1.Gauge.fromObject(n.gauge)}if(n.sum!=null){if(typeof n.sum!="object")throw TypeError(".opentelemetry.proto.metrics.v1.Metric.sum: object expected");l.sum=d.opentelemetry.proto.metrics.v1.Sum.fromObject(n.sum)}if(n.histogram!=null){if(typeof n.histogram!="object")throw TypeError(".opentelemetry.proto.metrics.v1.Metric.histogram: object expected");l.histogram=d.opentelemetry.proto.metrics.v1.Histogram.fromObject(n.histogram)}if(n.exponentialHistogram!=null){if(typeof n.exponentialHistogram!="object")throw TypeError(".opentelemetry.proto.metrics.v1.Metric.exponentialHistogram: object expected");l.exponentialHistogram=d.opentelemetry.proto.metrics.v1.ExponentialHistogram.fromObject(n.exponentialHistogram)}if(n.summary!=null){if(typeof n.summary!="object")throw TypeError(".opentelemetry.proto.metrics.v1.Metric.summary: object expected");l.summary=d.opentelemetry.proto.metrics.v1.Summary.fromObject(n.summary)}return l},s.toObject=function(n,l){l||(l={});var c={};return l.defaults&&(c.name="",c.description="",c.unit=""),n.name!=null&&n.hasOwnProperty("name")&&(c.name=n.name),n.description!=null&&n.hasOwnProperty("description")&&(c.description=n.description),n.unit!=null&&n.hasOwnProperty("unit")&&(c.unit=n.unit),n.gauge!=null&&n.hasOwnProperty("gauge")&&(c.gauge=d.opentelemetry.proto.metrics.v1.Gauge.toObject(n.gauge,l),l.oneofs&&(c.data="gauge")),n.sum!=null&&n.hasOwnProperty("sum")&&(c.sum=d.opentelemetry.proto.metrics.v1.Sum.toObject(n.sum,l),l.oneofs&&(c.data="sum")),n.histogram!=null&&n.hasOwnProperty("histogram")&&(c.histogram=d.opentelemetry.proto.metrics.v1.Histogram.toObject(n.histogram,l),l.oneofs&&(c.data="histogram")),n.exponentialHistogram!=null&&n.hasOwnProperty("exponentialHistogram")&&(c.exponentialHistogram=d.opentelemetry.proto.metrics.v1.ExponentialHistogram.toObject(n.exponentialHistogram,l),l.oneofs&&(c.data="exponentialHistogram")),n.summary!=null&&n.hasOwnProperty("summary")&&(c.summary=d.opentelemetry.proto.metrics.v1.Summary.toObject(n.summary,l),l.oneofs&&(c.data="summary")),c},s.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},s.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.metrics.v1.Metric"},s}(),o.Gauge=function(){function s(a){if(this.dataPoints=[],a)for(var i=Object.keys(a),n=0;n>>3){case 1:{c.dataPoints&&c.dataPoints.length||(c.dataPoints=[]),c.dataPoints.push(d.opentelemetry.proto.metrics.v1.NumberDataPoint.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.dataPoints!=null&&i.hasOwnProperty("dataPoints")){if(!Array.isArray(i.dataPoints))return"dataPoints: array expected";for(var n=0;n>>3){case 1:{c.dataPoints&&c.dataPoints.length||(c.dataPoints=[]),c.dataPoints.push(d.opentelemetry.proto.metrics.v1.NumberDataPoint.decode(i,i.uint32()));break}case 2:{c.aggregationTemporality=i.int32();break}case 3:{c.isMonotonic=i.bool();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.dataPoints!=null&&i.hasOwnProperty("dataPoints")){if(!Array.isArray(i.dataPoints))return"dataPoints: array expected";for(var n=0;n>>3){case 1:{c.dataPoints&&c.dataPoints.length||(c.dataPoints=[]),c.dataPoints.push(d.opentelemetry.proto.metrics.v1.HistogramDataPoint.decode(i,i.uint32()));break}case 2:{c.aggregationTemporality=i.int32();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.dataPoints!=null&&i.hasOwnProperty("dataPoints")){if(!Array.isArray(i.dataPoints))return"dataPoints: array expected";for(var n=0;n>>3){case 1:{c.dataPoints&&c.dataPoints.length||(c.dataPoints=[]),c.dataPoints.push(d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.decode(i,i.uint32()));break}case 2:{c.aggregationTemporality=i.int32();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.dataPoints!=null&&i.hasOwnProperty("dataPoints")){if(!Array.isArray(i.dataPoints))return"dataPoints: array expected";for(var n=0;n>>3){case 1:{c.dataPoints&&c.dataPoints.length||(c.dataPoints=[]),c.dataPoints.push(d.opentelemetry.proto.metrics.v1.SummaryDataPoint.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.dataPoints!=null&&i.hasOwnProperty("dataPoints")){if(!Array.isArray(i.dataPoints))return"dataPoints: array expected";for(var n=0;n>>3){case 7:{u.attributes&&u.attributes.length||(u.attributes=[]),u.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(n,n.uint32()));break}case 2:{u.startTimeUnixNano=n.fixed64();break}case 3:{u.timeUnixNano=n.fixed64();break}case 4:{u.asDouble=n.double();break}case 6:{u.asInt=n.sfixed64();break}case 5:{u.exemplars&&u.exemplars.length||(u.exemplars=[]),u.exemplars.push(d.opentelemetry.proto.metrics.v1.Exemplar.decode(n,n.uint32()));break}case 8:{u.flags=n.uint32();break}default:n.skipType(f&7);break}}return u},s.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},s.verify=function(n){if(typeof n!="object"||n===null)return"object expected";var l={};if(n.attributes!=null&&n.hasOwnProperty("attributes")){if(!Array.isArray(n.attributes))return"attributes: array expected";for(var c=0;c>>0,n.startTimeUnixNano.high>>>0).toNumber())),n.timeUnixNano!=null&&(h.Long?(l.timeUnixNano=h.Long.fromValue(n.timeUnixNano)).unsigned=!1:typeof n.timeUnixNano=="string"?l.timeUnixNano=parseInt(n.timeUnixNano,10):typeof n.timeUnixNano=="number"?l.timeUnixNano=n.timeUnixNano:typeof n.timeUnixNano=="object"&&(l.timeUnixNano=new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber())),n.asDouble!=null&&(l.asDouble=Number(n.asDouble)),n.asInt!=null&&(h.Long?(l.asInt=h.Long.fromValue(n.asInt)).unsigned=!1:typeof n.asInt=="string"?l.asInt=parseInt(n.asInt,10):typeof n.asInt=="number"?l.asInt=n.asInt:typeof n.asInt=="object"&&(l.asInt=new h.LongBits(n.asInt.low>>>0,n.asInt.high>>>0).toNumber())),n.exemplars){if(!Array.isArray(n.exemplars))throw TypeError(".opentelemetry.proto.metrics.v1.NumberDataPoint.exemplars: array expected");l.exemplars=[];for(var c=0;c>>0),l},s.toObject=function(n,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.exemplars=[],c.attributes=[]),l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.startTimeUnixNano=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.startTimeUnixNano=l.longs===String?"0":0;if(h.Long){var u=new h.Long(0,0,!1);c.timeUnixNano=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.timeUnixNano=l.longs===String?"0":0;c.flags=0}if(n.startTimeUnixNano!=null&&n.hasOwnProperty("startTimeUnixNano")&&(typeof n.startTimeUnixNano=="number"?c.startTimeUnixNano=l.longs===String?String(n.startTimeUnixNano):n.startTimeUnixNano:c.startTimeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.startTimeUnixNano):l.longs===Number?new h.LongBits(n.startTimeUnixNano.low>>>0,n.startTimeUnixNano.high>>>0).toNumber():n.startTimeUnixNano),n.timeUnixNano!=null&&n.hasOwnProperty("timeUnixNano")&&(typeof n.timeUnixNano=="number"?c.timeUnixNano=l.longs===String?String(n.timeUnixNano):n.timeUnixNano:c.timeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.timeUnixNano):l.longs===Number?new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber():n.timeUnixNano),n.asDouble!=null&&n.hasOwnProperty("asDouble")&&(c.asDouble=l.json&&!isFinite(n.asDouble)?String(n.asDouble):n.asDouble,l.oneofs&&(c.value="asDouble")),n.exemplars&&n.exemplars.length){c.exemplars=[];for(var f=0;f>>0,n.asInt.high>>>0).toNumber():n.asInt,l.oneofs&&(c.value="asInt")),n.attributes&&n.attributes.length){c.attributes=[];for(var f=0;f>>3){case 9:{u.attributes&&u.attributes.length||(u.attributes=[]),u.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(n,n.uint32()));break}case 2:{u.startTimeUnixNano=n.fixed64();break}case 3:{u.timeUnixNano=n.fixed64();break}case 4:{u.count=n.fixed64();break}case 5:{u.sum=n.double();break}case 6:{if(u.bucketCounts&&u.bucketCounts.length||(u.bucketCounts=[]),(f&7)===2)for(var _=n.uint32()+n.pos;n.pos<_;)u.bucketCounts.push(n.fixed64());else u.bucketCounts.push(n.fixed64());break}case 7:{if(u.explicitBounds&&u.explicitBounds.length||(u.explicitBounds=[]),(f&7)===2)for(var _=n.uint32()+n.pos;n.pos<_;)u.explicitBounds.push(n.double());else u.explicitBounds.push(n.double());break}case 8:{u.exemplars&&u.exemplars.length||(u.exemplars=[]),u.exemplars.push(d.opentelemetry.proto.metrics.v1.Exemplar.decode(n,n.uint32()));break}case 10:{u.flags=n.uint32();break}case 11:{u.min=n.double();break}case 12:{u.max=n.double();break}default:n.skipType(f&7);break}}return u},s.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},s.verify=function(n){if(typeof n!="object"||n===null)return"object expected";var l={};if(n.attributes!=null&&n.hasOwnProperty("attributes")){if(!Array.isArray(n.attributes))return"attributes: array expected";for(var c=0;c>>0,n.startTimeUnixNano.high>>>0).toNumber())),n.timeUnixNano!=null&&(h.Long?(l.timeUnixNano=h.Long.fromValue(n.timeUnixNano)).unsigned=!1:typeof n.timeUnixNano=="string"?l.timeUnixNano=parseInt(n.timeUnixNano,10):typeof n.timeUnixNano=="number"?l.timeUnixNano=n.timeUnixNano:typeof n.timeUnixNano=="object"&&(l.timeUnixNano=new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber())),n.count!=null&&(h.Long?(l.count=h.Long.fromValue(n.count)).unsigned=!1:typeof n.count=="string"?l.count=parseInt(n.count,10):typeof n.count=="number"?l.count=n.count:typeof n.count=="object"&&(l.count=new h.LongBits(n.count.low>>>0,n.count.high>>>0).toNumber())),n.sum!=null&&(l.sum=Number(n.sum)),n.bucketCounts){if(!Array.isArray(n.bucketCounts))throw TypeError(".opentelemetry.proto.metrics.v1.HistogramDataPoint.bucketCounts: array expected");l.bucketCounts=[];for(var c=0;c>>0,n.bucketCounts[c].high>>>0).toNumber())}if(n.explicitBounds){if(!Array.isArray(n.explicitBounds))throw TypeError(".opentelemetry.proto.metrics.v1.HistogramDataPoint.explicitBounds: array expected");l.explicitBounds=[];for(var c=0;c>>0),n.min!=null&&(l.min=Number(n.min)),n.max!=null&&(l.max=Number(n.max)),l},s.toObject=function(n,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.bucketCounts=[],c.explicitBounds=[],c.exemplars=[],c.attributes=[]),l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.startTimeUnixNano=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.startTimeUnixNano=l.longs===String?"0":0;if(h.Long){var u=new h.Long(0,0,!1);c.timeUnixNano=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.timeUnixNano=l.longs===String?"0":0;if(h.Long){var u=new h.Long(0,0,!1);c.count=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.count=l.longs===String?"0":0;c.flags=0}if(n.startTimeUnixNano!=null&&n.hasOwnProperty("startTimeUnixNano")&&(typeof n.startTimeUnixNano=="number"?c.startTimeUnixNano=l.longs===String?String(n.startTimeUnixNano):n.startTimeUnixNano:c.startTimeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.startTimeUnixNano):l.longs===Number?new h.LongBits(n.startTimeUnixNano.low>>>0,n.startTimeUnixNano.high>>>0).toNumber():n.startTimeUnixNano),n.timeUnixNano!=null&&n.hasOwnProperty("timeUnixNano")&&(typeof n.timeUnixNano=="number"?c.timeUnixNano=l.longs===String?String(n.timeUnixNano):n.timeUnixNano:c.timeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.timeUnixNano):l.longs===Number?new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber():n.timeUnixNano),n.count!=null&&n.hasOwnProperty("count")&&(typeof n.count=="number"?c.count=l.longs===String?String(n.count):n.count:c.count=l.longs===String?h.Long.prototype.toString.call(n.count):l.longs===Number?new h.LongBits(n.count.low>>>0,n.count.high>>>0).toNumber():n.count),n.sum!=null&&n.hasOwnProperty("sum")&&(c.sum=l.json&&!isFinite(n.sum)?String(n.sum):n.sum,l.oneofs&&(c._sum="sum")),n.bucketCounts&&n.bucketCounts.length){c.bucketCounts=[];for(var f=0;f>>0,n.bucketCounts[f].high>>>0).toNumber():n.bucketCounts[f]}if(n.explicitBounds&&n.explicitBounds.length){c.explicitBounds=[];for(var f=0;f>>3){case 1:{u.attributes&&u.attributes.length||(u.attributes=[]),u.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(n,n.uint32()));break}case 2:{u.startTimeUnixNano=n.fixed64();break}case 3:{u.timeUnixNano=n.fixed64();break}case 4:{u.count=n.fixed64();break}case 5:{u.sum=n.double();break}case 6:{u.scale=n.sint32();break}case 7:{u.zeroCount=n.fixed64();break}case 8:{u.positive=d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.decode(n,n.uint32());break}case 9:{u.negative=d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.decode(n,n.uint32());break}case 10:{u.flags=n.uint32();break}case 11:{u.exemplars&&u.exemplars.length||(u.exemplars=[]),u.exemplars.push(d.opentelemetry.proto.metrics.v1.Exemplar.decode(n,n.uint32()));break}case 12:{u.min=n.double();break}case 13:{u.max=n.double();break}case 14:{u.zeroThreshold=n.double();break}default:n.skipType(f&7);break}}return u},s.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},s.verify=function(n){if(typeof n!="object"||n===null)return"object expected";var l={};if(n.attributes!=null&&n.hasOwnProperty("attributes")){if(!Array.isArray(n.attributes))return"attributes: array expected";for(var c=0;c>>0,n.startTimeUnixNano.high>>>0).toNumber())),n.timeUnixNano!=null&&(h.Long?(l.timeUnixNano=h.Long.fromValue(n.timeUnixNano)).unsigned=!1:typeof n.timeUnixNano=="string"?l.timeUnixNano=parseInt(n.timeUnixNano,10):typeof n.timeUnixNano=="number"?l.timeUnixNano=n.timeUnixNano:typeof n.timeUnixNano=="object"&&(l.timeUnixNano=new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber())),n.count!=null&&(h.Long?(l.count=h.Long.fromValue(n.count)).unsigned=!1:typeof n.count=="string"?l.count=parseInt(n.count,10):typeof n.count=="number"?l.count=n.count:typeof n.count=="object"&&(l.count=new h.LongBits(n.count.low>>>0,n.count.high>>>0).toNumber())),n.sum!=null&&(l.sum=Number(n.sum)),n.scale!=null&&(l.scale=n.scale|0),n.zeroCount!=null&&(h.Long?(l.zeroCount=h.Long.fromValue(n.zeroCount)).unsigned=!1:typeof n.zeroCount=="string"?l.zeroCount=parseInt(n.zeroCount,10):typeof n.zeroCount=="number"?l.zeroCount=n.zeroCount:typeof n.zeroCount=="object"&&(l.zeroCount=new h.LongBits(n.zeroCount.low>>>0,n.zeroCount.high>>>0).toNumber())),n.positive!=null){if(typeof n.positive!="object")throw TypeError(".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.positive: object expected");l.positive=d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.fromObject(n.positive)}if(n.negative!=null){if(typeof n.negative!="object")throw TypeError(".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.negative: object expected");l.negative=d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.fromObject(n.negative)}if(n.flags!=null&&(l.flags=n.flags>>>0),n.exemplars){if(!Array.isArray(n.exemplars))throw TypeError(".opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.exemplars: array expected");l.exemplars=[];for(var c=0;c>>0,n.startTimeUnixNano.high>>>0).toNumber():n.startTimeUnixNano),n.timeUnixNano!=null&&n.hasOwnProperty("timeUnixNano")&&(typeof n.timeUnixNano=="number"?c.timeUnixNano=l.longs===String?String(n.timeUnixNano):n.timeUnixNano:c.timeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.timeUnixNano):l.longs===Number?new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber():n.timeUnixNano),n.count!=null&&n.hasOwnProperty("count")&&(typeof n.count=="number"?c.count=l.longs===String?String(n.count):n.count:c.count=l.longs===String?h.Long.prototype.toString.call(n.count):l.longs===Number?new h.LongBits(n.count.low>>>0,n.count.high>>>0).toNumber():n.count),n.sum!=null&&n.hasOwnProperty("sum")&&(c.sum=l.json&&!isFinite(n.sum)?String(n.sum):n.sum,l.oneofs&&(c._sum="sum")),n.scale!=null&&n.hasOwnProperty("scale")&&(c.scale=n.scale),n.zeroCount!=null&&n.hasOwnProperty("zeroCount")&&(typeof n.zeroCount=="number"?c.zeroCount=l.longs===String?String(n.zeroCount):n.zeroCount:c.zeroCount=l.longs===String?h.Long.prototype.toString.call(n.zeroCount):l.longs===Number?new h.LongBits(n.zeroCount.low>>>0,n.zeroCount.high>>>0).toNumber():n.zeroCount),n.positive!=null&&n.hasOwnProperty("positive")&&(c.positive=d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.toObject(n.positive,l)),n.negative!=null&&n.hasOwnProperty("negative")&&(c.negative=d.opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets.toObject(n.negative,l)),n.flags!=null&&n.hasOwnProperty("flags")&&(c.flags=n.flags),n.exemplars&&n.exemplars.length){c.exemplars=[];for(var f=0;f>>3){case 1:{f.offset=l.sint32();break}case 2:{if(f.bucketCounts&&f.bucketCounts.length||(f.bucketCounts=[]),(_&7)===2)for(var m=l.uint32()+l.pos;l.pos>>0,l.bucketCounts[u].high>>>0).toNumber(!0))}return c},i.toObject=function(l,c){c||(c={});var u={};if((c.arrays||c.defaults)&&(u.bucketCounts=[]),c.defaults&&(u.offset=0),l.offset!=null&&l.hasOwnProperty("offset")&&(u.offset=l.offset),l.bucketCounts&&l.bucketCounts.length){u.bucketCounts=[];for(var f=0;f>>0,l.bucketCounts[f].high>>>0).toNumber(!0):l.bucketCounts[f]}return u},i.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},i.getTypeUrl=function(l){return l===void 0&&(l="type.googleapis.com"),l+"/opentelemetry.proto.metrics.v1.ExponentialHistogramDataPoint.Buckets"},i}(),s}(),o.SummaryDataPoint=function(){function s(a){if(this.attributes=[],this.quantileValues=[],a)for(var i=Object.keys(a),n=0;n>>3){case 7:{c.attributes&&c.attributes.length||(c.attributes=[]),c.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(i,i.uint32()));break}case 2:{c.startTimeUnixNano=i.fixed64();break}case 3:{c.timeUnixNano=i.fixed64();break}case 4:{c.count=i.fixed64();break}case 5:{c.sum=i.double();break}case 6:{c.quantileValues&&c.quantileValues.length||(c.quantileValues=[]),c.quantileValues.push(d.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile.decode(i,i.uint32()));break}case 8:{c.flags=i.uint32();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.attributes!=null&&i.hasOwnProperty("attributes")){if(!Array.isArray(i.attributes))return"attributes: array expected";for(var n=0;n>>0,i.startTimeUnixNano.high>>>0).toNumber())),i.timeUnixNano!=null&&(h.Long?(n.timeUnixNano=h.Long.fromValue(i.timeUnixNano)).unsigned=!1:typeof i.timeUnixNano=="string"?n.timeUnixNano=parseInt(i.timeUnixNano,10):typeof i.timeUnixNano=="number"?n.timeUnixNano=i.timeUnixNano:typeof i.timeUnixNano=="object"&&(n.timeUnixNano=new h.LongBits(i.timeUnixNano.low>>>0,i.timeUnixNano.high>>>0).toNumber())),i.count!=null&&(h.Long?(n.count=h.Long.fromValue(i.count)).unsigned=!1:typeof i.count=="string"?n.count=parseInt(i.count,10):typeof i.count=="number"?n.count=i.count:typeof i.count=="object"&&(n.count=new h.LongBits(i.count.low>>>0,i.count.high>>>0).toNumber())),i.sum!=null&&(n.sum=Number(i.sum)),i.quantileValues){if(!Array.isArray(i.quantileValues))throw TypeError(".opentelemetry.proto.metrics.v1.SummaryDataPoint.quantileValues: array expected");n.quantileValues=[];for(var l=0;l>>0),n},s.toObject=function(i,n){n||(n={});var l={};if((n.arrays||n.defaults)&&(l.quantileValues=[],l.attributes=[]),n.defaults){if(h.Long){var c=new h.Long(0,0,!1);l.startTimeUnixNano=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.startTimeUnixNano=n.longs===String?"0":0;if(h.Long){var c=new h.Long(0,0,!1);l.timeUnixNano=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.timeUnixNano=n.longs===String?"0":0;if(h.Long){var c=new h.Long(0,0,!1);l.count=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.count=n.longs===String?"0":0;l.sum=0,l.flags=0}if(i.startTimeUnixNano!=null&&i.hasOwnProperty("startTimeUnixNano")&&(typeof i.startTimeUnixNano=="number"?l.startTimeUnixNano=n.longs===String?String(i.startTimeUnixNano):i.startTimeUnixNano:l.startTimeUnixNano=n.longs===String?h.Long.prototype.toString.call(i.startTimeUnixNano):n.longs===Number?new h.LongBits(i.startTimeUnixNano.low>>>0,i.startTimeUnixNano.high>>>0).toNumber():i.startTimeUnixNano),i.timeUnixNano!=null&&i.hasOwnProperty("timeUnixNano")&&(typeof i.timeUnixNano=="number"?l.timeUnixNano=n.longs===String?String(i.timeUnixNano):i.timeUnixNano:l.timeUnixNano=n.longs===String?h.Long.prototype.toString.call(i.timeUnixNano):n.longs===Number?new h.LongBits(i.timeUnixNano.low>>>0,i.timeUnixNano.high>>>0).toNumber():i.timeUnixNano),i.count!=null&&i.hasOwnProperty("count")&&(typeof i.count=="number"?l.count=n.longs===String?String(i.count):i.count:l.count=n.longs===String?h.Long.prototype.toString.call(i.count):n.longs===Number?new h.LongBits(i.count.low>>>0,i.count.high>>>0).toNumber():i.count),i.sum!=null&&i.hasOwnProperty("sum")&&(l.sum=n.json&&!isFinite(i.sum)?String(i.sum):i.sum),i.quantileValues&&i.quantileValues.length){l.quantileValues=[];for(var u=0;u>>3){case 1:{u.quantile=n.double();break}case 2:{u.value=n.double();break}default:n.skipType(f&7);break}}return u},a.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},a.verify=function(n){return typeof n!="object"||n===null?"object expected":n.quantile!=null&&n.hasOwnProperty("quantile")&&typeof n.quantile!="number"?"quantile: number expected":n.value!=null&&n.hasOwnProperty("value")&&typeof n.value!="number"?"value: number expected":null},a.fromObject=function(n){if(n instanceof d.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile)return n;var l=new d.opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile;return n.quantile!=null&&(l.quantile=Number(n.quantile)),n.value!=null&&(l.value=Number(n.value)),l},a.toObject=function(n,l){l||(l={});var c={};return l.defaults&&(c.quantile=0,c.value=0),n.quantile!=null&&n.hasOwnProperty("quantile")&&(c.quantile=l.json&&!isFinite(n.quantile)?String(n.quantile):n.quantile),n.value!=null&&n.hasOwnProperty("value")&&(c.value=l.json&&!isFinite(n.value)?String(n.value):n.value),c},a.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},a.getTypeUrl=function(n){return n===void 0&&(n="type.googleapis.com"),n+"/opentelemetry.proto.metrics.v1.SummaryDataPoint.ValueAtQuantile"},a}(),s}(),o.Exemplar=function(){function s(i){if(this.filteredAttributes=[],i)for(var n=Object.keys(i),l=0;l>>3){case 7:{u.filteredAttributes&&u.filteredAttributes.length||(u.filteredAttributes=[]),u.filteredAttributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(n,n.uint32()));break}case 2:{u.timeUnixNano=n.fixed64();break}case 3:{u.asDouble=n.double();break}case 6:{u.asInt=n.sfixed64();break}case 4:{u.spanId=n.bytes();break}case 5:{u.traceId=n.bytes();break}default:n.skipType(f&7);break}}return u},s.decodeDelimited=function(n){return n instanceof g||(n=new g(n)),this.decode(n,n.uint32())},s.verify=function(n){if(typeof n!="object"||n===null)return"object expected";var l={};if(n.filteredAttributes!=null&&n.hasOwnProperty("filteredAttributes")){if(!Array.isArray(n.filteredAttributes))return"filteredAttributes: array expected";for(var c=0;c>>0,n.timeUnixNano.high>>>0).toNumber())),n.asDouble!=null&&(l.asDouble=Number(n.asDouble)),n.asInt!=null&&(h.Long?(l.asInt=h.Long.fromValue(n.asInt)).unsigned=!1:typeof n.asInt=="string"?l.asInt=parseInt(n.asInt,10):typeof n.asInt=="number"?l.asInt=n.asInt:typeof n.asInt=="object"&&(l.asInt=new h.LongBits(n.asInt.low>>>0,n.asInt.high>>>0).toNumber())),n.spanId!=null&&(typeof n.spanId=="string"?h.base64.decode(n.spanId,l.spanId=h.newBuffer(h.base64.length(n.spanId)),0):n.spanId.length>=0&&(l.spanId=n.spanId)),n.traceId!=null&&(typeof n.traceId=="string"?h.base64.decode(n.traceId,l.traceId=h.newBuffer(h.base64.length(n.traceId)),0):n.traceId.length>=0&&(l.traceId=n.traceId)),l},s.toObject=function(n,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.filteredAttributes=[]),l.defaults){if(h.Long){var u=new h.Long(0,0,!1);c.timeUnixNano=l.longs===String?u.toString():l.longs===Number?u.toNumber():u}else c.timeUnixNano=l.longs===String?"0":0;l.bytes===String?c.spanId="":(c.spanId=[],l.bytes!==Array&&(c.spanId=h.newBuffer(c.spanId))),l.bytes===String?c.traceId="":(c.traceId=[],l.bytes!==Array&&(c.traceId=h.newBuffer(c.traceId)))}if(n.timeUnixNano!=null&&n.hasOwnProperty("timeUnixNano")&&(typeof n.timeUnixNano=="number"?c.timeUnixNano=l.longs===String?String(n.timeUnixNano):n.timeUnixNano:c.timeUnixNano=l.longs===String?h.Long.prototype.toString.call(n.timeUnixNano):l.longs===Number?new h.LongBits(n.timeUnixNano.low>>>0,n.timeUnixNano.high>>>0).toNumber():n.timeUnixNano),n.asDouble!=null&&n.hasOwnProperty("asDouble")&&(c.asDouble=l.json&&!isFinite(n.asDouble)?String(n.asDouble):n.asDouble,l.oneofs&&(c.value="asDouble")),n.spanId!=null&&n.hasOwnProperty("spanId")&&(c.spanId=l.bytes===String?h.base64.encode(n.spanId,0,n.spanId.length):l.bytes===Array?Array.prototype.slice.call(n.spanId):n.spanId),n.traceId!=null&&n.hasOwnProperty("traceId")&&(c.traceId=l.bytes===String?h.base64.encode(n.traceId,0,n.traceId.length):l.bytes===Array?Array.prototype.slice.call(n.traceId):n.traceId),n.asInt!=null&&n.hasOwnProperty("asInt")&&(typeof n.asInt=="number"?c.asInt=l.longs===String?String(n.asInt):n.asInt:c.asInt=l.longs===String?h.Long.prototype.toString.call(n.asInt):l.longs===Number?new h.LongBits(n.asInt.low>>>0,n.asInt.high>>>0).toNumber():n.asInt,l.oneofs&&(c.value="asInt")),n.filteredAttributes&&n.filteredAttributes.length){c.filteredAttributes=[];for(var f=0;f>>3){case 1:{c.resourceLogs&&c.resourceLogs.length||(c.resourceLogs=[]),c.resourceLogs.push(d.opentelemetry.proto.logs.v1.ResourceLogs.decode(i,i.uint32()));break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.resourceLogs!=null&&i.hasOwnProperty("resourceLogs")){if(!Array.isArray(i.resourceLogs))return"resourceLogs: array expected";for(var n=0;n>>3){case 1:{c.resource=d.opentelemetry.proto.resource.v1.Resource.decode(i,i.uint32());break}case 2:{c.scopeLogs&&c.scopeLogs.length||(c.scopeLogs=[]),c.scopeLogs.push(d.opentelemetry.proto.logs.v1.ScopeLogs.decode(i,i.uint32()));break}case 3:{c.schemaUrl=i.string();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.resource!=null&&i.hasOwnProperty("resource")){var n=d.opentelemetry.proto.resource.v1.Resource.verify(i.resource);if(n)return"resource."+n}if(i.scopeLogs!=null&&i.hasOwnProperty("scopeLogs")){if(!Array.isArray(i.scopeLogs))return"scopeLogs: array expected";for(var l=0;l>>3){case 1:{c.scope=d.opentelemetry.proto.common.v1.InstrumentationScope.decode(i,i.uint32());break}case 2:{c.logRecords&&c.logRecords.length||(c.logRecords=[]),c.logRecords.push(d.opentelemetry.proto.logs.v1.LogRecord.decode(i,i.uint32()));break}case 3:{c.schemaUrl=i.string();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.scope!=null&&i.hasOwnProperty("scope")){var n=d.opentelemetry.proto.common.v1.InstrumentationScope.verify(i.scope);if(n)return"scope."+n}if(i.logRecords!=null&&i.hasOwnProperty("logRecords")){if(!Array.isArray(i.logRecords))return"logRecords: array expected";for(var l=0;l>>3){case 1:{c.timeUnixNano=i.fixed64();break}case 11:{c.observedTimeUnixNano=i.fixed64();break}case 2:{c.severityNumber=i.int32();break}case 3:{c.severityText=i.string();break}case 5:{c.body=d.opentelemetry.proto.common.v1.AnyValue.decode(i,i.uint32());break}case 6:{c.attributes&&c.attributes.length||(c.attributes=[]),c.attributes.push(d.opentelemetry.proto.common.v1.KeyValue.decode(i,i.uint32()));break}case 7:{c.droppedAttributesCount=i.uint32();break}case 8:{c.flags=i.fixed32();break}case 9:{c.traceId=i.bytes();break}case 10:{c.spanId=i.bytes();break}default:i.skipType(u&7);break}}return c},s.decodeDelimited=function(i){return i instanceof g||(i=new g(i)),this.decode(i,i.uint32())},s.verify=function(i){if(typeof i!="object"||i===null)return"object expected";if(i.timeUnixNano!=null&&i.hasOwnProperty("timeUnixNano")&&!h.isInteger(i.timeUnixNano)&&!(i.timeUnixNano&&h.isInteger(i.timeUnixNano.low)&&h.isInteger(i.timeUnixNano.high)))return"timeUnixNano: integer|Long expected";if(i.observedTimeUnixNano!=null&&i.hasOwnProperty("observedTimeUnixNano")&&!h.isInteger(i.observedTimeUnixNano)&&!(i.observedTimeUnixNano&&h.isInteger(i.observedTimeUnixNano.low)&&h.isInteger(i.observedTimeUnixNano.high)))return"observedTimeUnixNano: integer|Long expected";if(i.severityNumber!=null&&i.hasOwnProperty("severityNumber"))switch(i.severityNumber){default:return"severityNumber: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:break}if(i.severityText!=null&&i.hasOwnProperty("severityText")&&!h.isString(i.severityText))return"severityText: string expected";if(i.body!=null&&i.hasOwnProperty("body")){var n=d.opentelemetry.proto.common.v1.AnyValue.verify(i.body);if(n)return"body."+n}if(i.attributes!=null&&i.hasOwnProperty("attributes")){if(!Array.isArray(i.attributes))return"attributes: array expected";for(var l=0;l>>0,i.timeUnixNano.high>>>0).toNumber())),i.observedTimeUnixNano!=null&&(h.Long?(n.observedTimeUnixNano=h.Long.fromValue(i.observedTimeUnixNano)).unsigned=!1:typeof i.observedTimeUnixNano=="string"?n.observedTimeUnixNano=parseInt(i.observedTimeUnixNano,10):typeof i.observedTimeUnixNano=="number"?n.observedTimeUnixNano=i.observedTimeUnixNano:typeof i.observedTimeUnixNano=="object"&&(n.observedTimeUnixNano=new h.LongBits(i.observedTimeUnixNano.low>>>0,i.observedTimeUnixNano.high>>>0).toNumber())),i.severityNumber){default:if(typeof i.severityNumber=="number"){n.severityNumber=i.severityNumber;break}break;case"SEVERITY_NUMBER_UNSPECIFIED":case 0:n.severityNumber=0;break;case"SEVERITY_NUMBER_TRACE":case 1:n.severityNumber=1;break;case"SEVERITY_NUMBER_TRACE2":case 2:n.severityNumber=2;break;case"SEVERITY_NUMBER_TRACE3":case 3:n.severityNumber=3;break;case"SEVERITY_NUMBER_TRACE4":case 4:n.severityNumber=4;break;case"SEVERITY_NUMBER_DEBUG":case 5:n.severityNumber=5;break;case"SEVERITY_NUMBER_DEBUG2":case 6:n.severityNumber=6;break;case"SEVERITY_NUMBER_DEBUG3":case 7:n.severityNumber=7;break;case"SEVERITY_NUMBER_DEBUG4":case 8:n.severityNumber=8;break;case"SEVERITY_NUMBER_INFO":case 9:n.severityNumber=9;break;case"SEVERITY_NUMBER_INFO2":case 10:n.severityNumber=10;break;case"SEVERITY_NUMBER_INFO3":case 11:n.severityNumber=11;break;case"SEVERITY_NUMBER_INFO4":case 12:n.severityNumber=12;break;case"SEVERITY_NUMBER_WARN":case 13:n.severityNumber=13;break;case"SEVERITY_NUMBER_WARN2":case 14:n.severityNumber=14;break;case"SEVERITY_NUMBER_WARN3":case 15:n.severityNumber=15;break;case"SEVERITY_NUMBER_WARN4":case 16:n.severityNumber=16;break;case"SEVERITY_NUMBER_ERROR":case 17:n.severityNumber=17;break;case"SEVERITY_NUMBER_ERROR2":case 18:n.severityNumber=18;break;case"SEVERITY_NUMBER_ERROR3":case 19:n.severityNumber=19;break;case"SEVERITY_NUMBER_ERROR4":case 20:n.severityNumber=20;break;case"SEVERITY_NUMBER_FATAL":case 21:n.severityNumber=21;break;case"SEVERITY_NUMBER_FATAL2":case 22:n.severityNumber=22;break;case"SEVERITY_NUMBER_FATAL3":case 23:n.severityNumber=23;break;case"SEVERITY_NUMBER_FATAL4":case 24:n.severityNumber=24;break}if(i.severityText!=null&&(n.severityText=String(i.severityText)),i.body!=null){if(typeof i.body!="object")throw TypeError(".opentelemetry.proto.logs.v1.LogRecord.body: object expected");n.body=d.opentelemetry.proto.common.v1.AnyValue.fromObject(i.body)}if(i.attributes){if(!Array.isArray(i.attributes))throw TypeError(".opentelemetry.proto.logs.v1.LogRecord.attributes: array expected");n.attributes=[];for(var l=0;l>>0),i.flags!=null&&(n.flags=i.flags>>>0),i.traceId!=null&&(typeof i.traceId=="string"?h.base64.decode(i.traceId,n.traceId=h.newBuffer(h.base64.length(i.traceId)),0):i.traceId.length>=0&&(n.traceId=i.traceId)),i.spanId!=null&&(typeof i.spanId=="string"?h.base64.decode(i.spanId,n.spanId=h.newBuffer(h.base64.length(i.spanId)),0):i.spanId.length>=0&&(n.spanId=i.spanId)),n},s.toObject=function(i,n){n||(n={});var l={};if((n.arrays||n.defaults)&&(l.attributes=[]),n.defaults){if(h.Long){var c=new h.Long(0,0,!1);l.timeUnixNano=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.timeUnixNano=n.longs===String?"0":0;if(l.severityNumber=n.enums===String?"SEVERITY_NUMBER_UNSPECIFIED":0,l.severityText="",l.body=null,l.droppedAttributesCount=0,l.flags=0,n.bytes===String?l.traceId="":(l.traceId=[],n.bytes!==Array&&(l.traceId=h.newBuffer(l.traceId))),n.bytes===String?l.spanId="":(l.spanId=[],n.bytes!==Array&&(l.spanId=h.newBuffer(l.spanId))),h.Long){var c=new h.Long(0,0,!1);l.observedTimeUnixNano=n.longs===String?c.toString():n.longs===Number?c.toNumber():c}else l.observedTimeUnixNano=n.longs===String?"0":0}if(i.timeUnixNano!=null&&i.hasOwnProperty("timeUnixNano")&&(typeof i.timeUnixNano=="number"?l.timeUnixNano=n.longs===String?String(i.timeUnixNano):i.timeUnixNano:l.timeUnixNano=n.longs===String?h.Long.prototype.toString.call(i.timeUnixNano):n.longs===Number?new h.LongBits(i.timeUnixNano.low>>>0,i.timeUnixNano.high>>>0).toNumber():i.timeUnixNano),i.severityNumber!=null&&i.hasOwnProperty("severityNumber")&&(l.severityNumber=n.enums===String?d.opentelemetry.proto.logs.v1.SeverityNumber[i.severityNumber]===void 0?i.severityNumber:d.opentelemetry.proto.logs.v1.SeverityNumber[i.severityNumber]:i.severityNumber),i.severityText!=null&&i.hasOwnProperty("severityText")&&(l.severityText=i.severityText),i.body!=null&&i.hasOwnProperty("body")&&(l.body=d.opentelemetry.proto.common.v1.AnyValue.toObject(i.body,n)),i.attributes&&i.attributes.length){l.attributes=[];for(var u=0;u>>0,i.observedTimeUnixNano.high>>>0).toNumber():i.observedTimeUnixNano),l},s.prototype.toJSON=function(){return this.constructor.toObject(this,X.util.toJSONOptions)},s.getTypeUrl=function(i){return i===void 0&&(i="type.googleapis.com"),i+"/opentelemetry.proto.logs.v1.LogRecord"},s}(),o}(),t}(),e}(),r}();wG.exports=d});var ro,zae,$ae,Xae,Wae,Jae,Qae,Ch,UG,Ph,kG=p(()=>{ro=Nn(DG());Th();Sh();gh();zae=ro.opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse,$ae=ro.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest,Xae=ro.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse,Wae=ro.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest,Jae=ro.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse,Qae=ro.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest,Ch={serializeRequest:r=>{let e=Js(r);return $ae.encode(e).finish()},deserializeResponse:r=>zae.decode(r)},UG={serializeRequest:r=>{let e=Ws([r]);return Wae.encode(e).finish()},deserializeResponse:r=>Xae.decode(r)},Ph={serializeRequest:r=>{let e=Xn(r);return Qae.encode(e).finish()},deserializeResponse:r=>Jae.decode(r)}});var Ih,BG,Lh,VG=p(()=>{Th();Sh();gh();Ih={serializeRequest:r=>{let e=Xn(r,{useHex:!0,useLongBits:!1});return new TextEncoder().encode(JSON.stringify(e))},deserializeResponse:r=>{let e=new TextDecoder;return JSON.parse(e.decode(r))}},BG={serializeRequest:r=>{let e=Ws([r],{useLongBits:!1});return new TextEncoder().encode(JSON.stringify(e))},deserializeResponse:r=>{let e=new TextDecoder;return JSON.parse(e.decode(r))}},Lh={serializeRequest:r=>{let e=Js(r,{useHex:!0,useLongBits:!1});return new TextEncoder().encode(JSON.stringify(e))},deserializeResponse:r=>{let e=new TextDecoder;return JSON.parse(e.decode(r))}}});var fv={};Ae(fv,{ESpanKind:()=>hh,JsonLogsSerializer:()=>Lh,JsonMetricsSerializer:()=>BG,JsonTraceSerializer:()=>Ih,ProtobufLogsSerializer:()=>Ch,ProtobufMetricsSerializer:()=>UG,ProtobufTraceSerializer:()=>Ph,createExportLogsServiceRequest:()=>Js,createExportMetricsServiceRequest:()=>Ws,createExportTraceServiceRequest:()=>Xn,encodeAsLongBits:()=>dh,encodeAsString:()=>$g,getOtlpEncoder:()=>$n,hrTimeToNanos:()=>ph,toLongBits:()=>zg});var Qn=p(()=>{Sc();UF();Th();Sh();gh();kG();VG()});var FG,GG=p(()=>{FG="0.56.0"});function HG(r){var e=[429,502,503,504];return e.includes(r)}function qG(r){if(r!=null){var e=Number.parseInt(r,10);if(Number.isInteger(e))return e>0?e*1e3:-1;var t=new Date(r).getTime()-Date.now();return t>=0?t:0}}var jG=p(()=>{});var zG={};Ae(zG,{compressAndSend:()=>KG,createHttpAgent:()=>rle,sendWithHttp:()=>ele});import*as bh from"http";import*as xh from"https";import*as YG from"zlib";import{Readable as Zae}from"stream";function ele(r,e,t,o,s){var a=new URL(r.url),i=Number(process.versions.node.split(".")[0]),n={hostname:a.hostname,port:a.port,path:a.pathname,method:"POST",headers:pv({},r.headers()),agent:e},l=a.protocol==="http:"?bh.request:xh.request,c=l(n,function(f){var _=[];f.on("data",function(m){return _.push(m)}),f.on("end",function(){if(f.statusCode&&f.statusCode<299)o({status:"success",data:Buffer.concat(_)});else if(f.statusCode&&HG(f.statusCode))o({status:"retryable",retryInMillis:qG(f.headers["retry-after"])});else{var m=new Zi(f.statusMessage,f.statusCode,Buffer.concat(_).toString());o({status:"failure",error:m})}})});c.setTimeout(s,function(){c.destroy(),o({status:"failure",error:new Error("Request Timeout")})}),c.on("error",function(f){o({status:"failure",error:f})});var u=i>=14?"close":"abort";c.on(u,function(){o({status:"failure",error:new Error("Request timed out")})}),KG(c,r.compression,t,function(f){o({status:"failure",error:f})})}function KG(r,e,t,o){var s=tle(t);e==="gzip"&&(r.setHeader("Content-Encoding","gzip"),s=s.on("error",o).pipe(YG.createGzip()).on("error",o)),s.pipe(r).on("error",o)}function tle(r){var e=new Zae;return e.push(r),e.push(null),e}function rle(r,e){var t=new URL(r),o=t.protocol==="http:"?bh.Agent:xh.Agent;return new o(e)}var pv,$G=p(()=>{jG();ih();pv=function(){return pv=Object.assign||function(r){for(var e,t=1,o=arguments.length;t{nle=function(r,e,t,o){function s(a){return a instanceof t?a:new t(function(i){i(a)})}return new(t||(t=Promise))(function(a,i){function n(u){try{c(o.next(u))}catch(f){i(f)}}function l(u){try{c(o.throw(u))}catch(f){i(f)}}function c(u){u.done?a(u.value):s(u.value).then(n,l)}c((o=o.apply(r,e||[])).next())})},ile=function(r,e){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,i;return i={next:n(0),throw:n(1),return:n(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function n(c){return function(u){return l([c,u])}}function l(c){if(o)throw new TypeError("Generator is already executing.");for(;t;)try{if(o=1,s&&(a=c[0]&2?s.return:c[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,c[1])).done)return a;switch(s=0,a&&(c=[c[0]&2,a.value]),c[0]){case 0:case 1:a=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!a||c[1]>a[0]&&c[1]{sle=function(r,e,t,o){function s(a){return a instanceof t?a:new t(function(i){i(a)})}return new(t||(t=Promise))(function(a,i){function n(u){try{c(o.next(u))}catch(f){i(f)}}function l(u){try{c(o.throw(u))}catch(f){i(f)}}function c(u){u.done?a(u.value):s(u.value).then(n,l)}c((o=o.apply(r,e||[])).next())})},ale=function(r,e){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,i;return i={next:n(0),throw:n(1),return:n(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function n(c){return function(u){return l([c,u])}}function l(c){if(o)throw new TypeError("Generator is already executing.");for(;t;)try{if(o=1,s&&(a=c[0]&2?s.return:c[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,c[1])).done)return a;switch(s=0,a&&(c=[c[0]&2,a.value]),c[0]){case 0:case 1:a=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!a||c[1]>a[0]&&c[1]0?(i--,l=Math.max(Math.min(n,ule)+ple(),0),n=n*fle,c=(o=a.retryInMillis)!==null&&o!==void 0?o:l,u=s-Date.now(),c>u?[2,a]:[4,this.retry(e,u,c)]):[3,4];case 3:return a=f.sent(),[3,2];case 4:return[2,a]}})})},r.prototype.shutdown=function(){return this._transport.shutdown()},r}()});function Hr(r,e){return fh({transport:QG({transport:XG(r)}),serializer:e,promiseHandler:ch(r)},{timeout:r.timeoutMillis})}var e3=p(()=>{Yg();WG();Gg();ZG()});function t3(r){var e,t=(e=process.env[r])===null||e===void 0?void 0:e.trim();if(t!=null&&t!==""){var o=Number(t);if(!Number.isNaN(o)&&Number.isFinite(o)&&o>0)return o;S.warn("Configuration: "+r+" is invalid, expected number greater than 0 (actual: "+t+")")}}function hle(r){var e=t3("OTEL_EXPORTER_OTLP_"+r+"_TIMEOUT"),t=t3("OTEL_EXPORTER_OTLP_TIMEOUT");return e??t}function r3(r){var e,t=(e=process.env[r])===null||e===void 0?void 0:e.trim();if(t!==""){if(t==null||t==="none"||t==="gzip")return t;S.warn("Configuration: "+r+" is invalid, expected 'none' or 'gzip' (actual: '"+t+"')")}}function _le(r){var e=r3("OTEL_EXPORTER_OTLP_"+r+"_COMPRESSION"),t=r3("OTEL_EXPORTER_OTLP_COMPRESSION");return e??t}function Mh(r){return{timeoutMillis:hle(r),compression:_le(r)}}var dv=p(()=>{P()});function n3(r){return function(){var e,t={};return Object.entries((e=r==null?void 0:r())!==null&&e!==void 0?e:{}).forEach(function(o){var s=Ele(o,2),a=s[0],i=s[1];typeof i<"u"?t[a]=String(i):S.warn('Header "'+a+'" has invalid value ('+i+") and will be ignored")}),t}}var Ele,i3=p(()=>{P();Ele=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var o=t.call(r),s,a=[],i;try{for(;(e===void 0||e-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(n){i={error:n}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(i)throw i.error}}return a}});function mle(r,e,t){var o=no({},t()),s={};return function(){return e!=null&&Object.assign(s,e()),r!=null&&Object.assign(s,r()),Object.assign(s,o)}}function Tle(r){if(r!=null)try{return new URL(r),r}catch{throw new Error("Configuration: Could not parse user-provided export URL: '"+r+"'")}}function o3(r,e,t){var o,s,a,i;return no(no({},sh(r,e,t)),{headers:mle(n3(r.headers),e.headers,t.headers),url:(s=(o=Tle(r.url))!==null&&o!==void 0?o:e.url)!==null&&s!==void 0?s:t.url,agentOptions:(i=(a=r.agentOptions)!==null&&a!==void 0?a:e.agentOptions)!==null&&i!==void 0?i:t.agentOptions})}function s3(r,e){return no(no({},ah()),{headers:function(){return r},url:"http://localhost:4318/"+e,agentOptions:{keepAlive:!0}})}var no,a3=p(()=>{_c();i3();no=function(){return no=Object.assign||function(r){for(var e,t=1,o=arguments.length;t{jg();P();dv();_c();wh=function(){return wh=Object.assign||function(r){for(var e,t=1,o=arguments.length;t{a3();c3();P();_c()});var f3={};Ae(f3,{convertLegacyHttpOptions:()=>qr,createOtlpHttpExportDelegate:()=>Hr,getSharedConfigurationFromEnvironment:()=>Mh});var Zs=p(()=>{e3();dv();u3()});var ea,p3=p(()=>{_n();Qn();GG();Zs();ea=class extends Br{constructor(e={}){super(Hr(qr(e,"LOGS","v1/logs",{"User-Agent":`OTel-OTLP-Exporter-JavaScript/${FG}`,"Content-Type":"application/json"}),Lh))}}});var d3=p(()=>{p3()});var h3=p(()=>{d3()});var _3={};Ae(_3,{OTLPLogExporter:()=>ea});var E3=p(()=>{h3()});var ue=T(er=>{"use strict";Object.defineProperty(er,"__esModule",{value:!0});er.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH=er.DEFAULT_MAX_SEND_MESSAGE_LENGTH=er.Propagate=er.LogVerbosity=er.Status=void 0;var m3;(function(r){r[r.OK=0]="OK",r[r.CANCELLED=1]="CANCELLED",r[r.UNKNOWN=2]="UNKNOWN",r[r.INVALID_ARGUMENT=3]="INVALID_ARGUMENT",r[r.DEADLINE_EXCEEDED=4]="DEADLINE_EXCEEDED",r[r.NOT_FOUND=5]="NOT_FOUND",r[r.ALREADY_EXISTS=6]="ALREADY_EXISTS",r[r.PERMISSION_DENIED=7]="PERMISSION_DENIED",r[r.RESOURCE_EXHAUSTED=8]="RESOURCE_EXHAUSTED",r[r.FAILED_PRECONDITION=9]="FAILED_PRECONDITION",r[r.ABORTED=10]="ABORTED",r[r.OUT_OF_RANGE=11]="OUT_OF_RANGE",r[r.UNIMPLEMENTED=12]="UNIMPLEMENTED",r[r.INTERNAL=13]="INTERNAL",r[r.UNAVAILABLE=14]="UNAVAILABLE",r[r.DATA_LOSS=15]="DATA_LOSS",r[r.UNAUTHENTICATED=16]="UNAUTHENTICATED"})(m3||(er.Status=m3={}));var T3;(function(r){r[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.ERROR=2]="ERROR",r[r.NONE=3]="NONE"})(T3||(er.LogVerbosity=T3={}));var S3;(function(r){r[r.DEADLINE=1]="DEADLINE",r[r.CENSUS_STATS_CONTEXT=2]="CENSUS_STATS_CONTEXT",r[r.CENSUS_TRACING_CONTEXT=4]="CENSUS_TRACING_CONTEXT",r[r.CANCELLATION=8]="CANCELLATION",r[r.DEFAULTS=65535]="DEFAULTS"})(S3||(er.Propagate=S3={}));er.DEFAULT_MAX_SEND_MESSAGE_LENGTH=-1;er.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH=4*1024*1024});var hv=T((dVe,Rle)=>{Rle.exports={name:"@grpc/grpc-js",version:"1.13.4",description:"gRPC Library for Node - pure JS implementation",homepage:"https://grpc.io/",repository:"https://github.com/grpc/grpc-node/tree/master/packages/grpc-js",main:"build/src/index.js",engines:{node:">=12.10.0"},keywords:[],author:{name:"Google Inc."},types:"build/src/index.d.ts",license:"Apache-2.0",devDependencies:{"@grpc/proto-loader":"file:../proto-loader","@types/gulp":"^4.0.17","@types/gulp-mocha":"0.0.37","@types/lodash":"^4.14.202","@types/mocha":"^10.0.6","@types/ncp":"^2.0.8","@types/node":">=20.11.20","@types/pify":"^5.0.4","@types/semver":"^7.5.8","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","@typescript-eslint/typescript-estree":"^7.1.0","clang-format":"^1.8.0",eslint:"^8.42.0","eslint-config-prettier":"^8.8.0","eslint-plugin-node":"^11.1.0","eslint-plugin-prettier":"^4.2.1",execa:"^2.0.3",gulp:"^4.0.2","gulp-mocha":"^6.0.0",lodash:"^4.17.21",madge:"^5.0.1","mocha-jenkins-reporter":"^0.4.1",ncp:"^2.0.0",pify:"^4.0.1",prettier:"^2.8.8",rimraf:"^3.0.2",semver:"^7.6.0","ts-node":"^10.9.2",typescript:"^5.3.3"},contributors:[{name:"Google Inc."}],scripts:{build:"npm run compile",clean:"rimraf ./build",compile:"tsc -p .",format:'clang-format -i -style="{Language: JavaScript, BasedOnStyle: Google, ColumnLimit: 80}" src/*.ts test/*.ts',lint:"eslint src/*.ts test/*.ts",prepare:"npm run generate-types && npm run compile",test:"gulp test",check:"npm run lint",fix:"eslint --fix src/*.ts test/*.ts",pretest:"npm run generate-types && npm run generate-test-types && npm run compile",posttest:"npm run check && madge -c ./build/src","generate-types":"proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --includeComments --includeDirs proto/ --include-dirs test/fixtures/ -O src/generated/ --grpcLib ../index channelz.proto","generate-test-types":"proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --includeComments --include-dirs test/fixtures/ -O test/generated/ --grpcLib ../../src/index test_service.proto"},dependencies:{"@grpc/proto-loader":"^0.7.13","@js-sdsl/ordered-map":"^4.4.2"},files:["src/**/*.ts","build/src/**/*.{js,d.ts,js.map}","proto/*.proto","LICENSE","deps/envoy-api/envoy/api/v2/**/*.proto","deps/envoy-api/envoy/config/**/*.proto","deps/envoy-api/envoy/service/**/*.proto","deps/envoy-api/envoy/type/**/*.proto","deps/udpa/udpa/**/*.proto","deps/googleapis/google/api/*.proto","deps/googleapis/google/rpc/*.proto","deps/protoc-gen-validate/validate/**/*.proto"]}});var Pe=T(Bt=>{"use strict";var _v,Ev,mv,Tv;Object.defineProperty(Bt,"__esModule",{value:!0});Bt.log=Bt.setLoggerVerbosity=Bt.setLogger=Bt.getLogger=void 0;Bt.trace=Ule;Bt.isTracerEnabled=v3;var Zn=ue(),Nle=V("process"),Cle=hv().version,Ple={error:(r,...e)=>{console.error("E "+r,...e)},info:(r,...e)=>{console.error("I "+r,...e)},debug:(r,...e)=>{console.error("D "+r,...e)}},io=Ple,ta=Zn.LogVerbosity.ERROR,Ile=(Ev=(_v=process.env.GRPC_NODE_VERBOSITY)!==null&&_v!==void 0?_v:process.env.GRPC_VERBOSITY)!==null&&Ev!==void 0?Ev:"";switch(Ile.toUpperCase()){case"DEBUG":ta=Zn.LogVerbosity.DEBUG;break;case"INFO":ta=Zn.LogVerbosity.INFO;break;case"ERROR":ta=Zn.LogVerbosity.ERROR;break;case"NONE":ta=Zn.LogVerbosity.NONE;break;default:}var Lle=()=>io;Bt.getLogger=Lle;var ble=r=>{io=r};Bt.setLogger=ble;var xle=r=>{ta=r};Bt.setLoggerVerbosity=xle;var Mle=(r,...e)=>{let t;if(r>=ta){switch(r){case Zn.LogVerbosity.DEBUG:t=io.debug;break;case Zn.LogVerbosity.INFO:t=io.info;break;case Zn.LogVerbosity.ERROR:t=io.error;break}t||(t=io.error),t&&t.bind(io)(...e)}};Bt.log=Mle;var wle=(Tv=(mv=process.env.GRPC_NODE_TRACE)!==null&&mv!==void 0?mv:process.env.GRPC_TRACE)!==null&&Tv!==void 0?Tv:"",Sv=new Set,g3=new Set;for(let r of wle.split(","))r.startsWith("-")?g3.add(r.substring(1)):Sv.add(r);var Dle=Sv.has("all");function Ule(r,e,t){v3(e)&&(0,Bt.log)(r,new Date().toISOString()+" | v"+Cle+" "+Nle.pid+" | "+e+" | "+t)}function v3(r){return!g3.has(r)&&(Dle||Sv.has(r))}});var Uh=T(Dh=>{"use strict";Object.defineProperty(Dh,"__esModule",{value:!0});Dh.getErrorMessage=kle;Dh.getErrorCode=Ble;function kle(r){return r instanceof Error?r.message:String(r)}function Ble(r){return typeof r=="object"&&r!==null&&"code"in r&&typeof r.code=="number"?r.code:null}});var ht=T(Bh=>{"use strict";Object.defineProperty(Bh,"__esModule",{value:!0});Bh.Metadata=void 0;var Vle=Pe(),Fle=ue(),Gle=Uh(),Hle=/^[0-9a-z_.-]+$/,qle=/^[ -~]*$/;function jle(r){return Hle.test(r)}function Yle(r){return qle.test(r)}function O3(r){return r.endsWith("-bin")}function Kle(r){return!r.startsWith("grpc-")}function kh(r){return r.toLowerCase()}function y3(r,e){if(!jle(r))throw new Error('Metadata key "'+r+'" contains illegal characters');if(e!=null)if(O3(r)){if(!Buffer.isBuffer(e))throw new Error("keys that end with '-bin' must have Buffer values")}else{if(Buffer.isBuffer(e))throw new Error("keys that don't end with '-bin' must have String values");if(!Yle(e))throw new Error('Metadata string value "'+e+'" contains illegal characters')}}var gv=class r{constructor(e={}){this.internalRepr=new Map,this.options=e}set(e,t){e=kh(e),y3(e,t),this.internalRepr.set(e,[t])}add(e,t){e=kh(e),y3(e,t);let o=this.internalRepr.get(e);o===void 0?this.internalRepr.set(e,[t]):o.push(t)}remove(e){e=kh(e),this.internalRepr.delete(e)}get(e){return e=kh(e),this.internalRepr.get(e)||[]}getMap(){let e={};for(let[t,o]of this.internalRepr)if(o.length>0){let s=o[0];e[t]=Buffer.isBuffer(s)?Buffer.from(s):s}return e}clone(){let e=new r(this.options),t=e.internalRepr;for(let[o,s]of this.internalRepr){let a=s.map(i=>Buffer.isBuffer(i)?Buffer.from(i):i);t.set(o,a)}return e}merge(e){for(let[t,o]of e.internalRepr){let s=(this.internalRepr.get(t)||[]).concat(o);this.internalRepr.set(t,s)}}setOptions(e){this.options=e}getOptions(){return this.options}toHttp2Headers(){let e={};for(let[t,o]of this.internalRepr)e[t]=o.map(zle);return e}toJSON(){let e={};for(let[t,o]of this.internalRepr)e[t]=o;return e}static fromHttp2Headers(e){let t=new r;for(let o of Object.keys(e)){if(o.charAt(0)===":")continue;let s=e[o];try{O3(o)?Array.isArray(s)?s.forEach(a=>{t.add(o,Buffer.from(a,"base64"))}):s!==void 0&&(Kle(o)?s.split(",").forEach(a=>{t.add(o,Buffer.from(a.trim(),"base64"))}):t.add(o,Buffer.from(s,"base64"))):Array.isArray(s)?s.forEach(a=>{t.add(o,a)}):s!==void 0&&t.add(o,s)}catch(a){let i=`Failed to add metadata entry ${o}: ${s}. ${(0,Gle.getErrorMessage)(a)}. For more information see https://github.com/grpc/grpc-node/issues/1173`;(0,Vle.log)(Fle.LogVerbosity.ERROR,i)}}return t}};Bh.Metadata=gv;var zle=r=>Buffer.isBuffer(r)?r.toString("base64"):r});var Fh=T(Vh=>{"use strict";Object.defineProperty(Vh,"__esModule",{value:!0});Vh.CallCredentials=void 0;var Av=ht();function $le(r){return"getRequestHeaders"in r&&typeof r.getRequestHeaders=="function"}var ra=class r{static createFromMetadataGenerator(e){return new yv(e)}static createFromGoogleCredential(e){return r.createFromMetadataGenerator((t,o)=>{let s;$le(e)?s=e.getRequestHeaders(t.service_url):s=new Promise((a,i)=>{e.getRequestMetadata(t.service_url,(n,l)=>{if(n){i(n);return}if(!l){i(new Error("Headers not set by metadata plugin"));return}a(l)})}),s.then(a=>{let i=new Av.Metadata;for(let n of Object.keys(a))i.add(n,a[n]);o(null,i)},a=>{o(a)})})}static createEmpty(){return new Ov}};Vh.CallCredentials=ra;var vv=class r extends ra{constructor(e){super(),this.creds=e}async generateMetadata(e){let t=new Av.Metadata,o=await Promise.all(this.creds.map(s=>s.generateMetadata(e)));for(let s of o)t.merge(s);return t}compose(e){return new r(this.creds.concat([e]))}_equals(e){return this===e?!0:e instanceof r?this.creds.every((t,o)=>t._equals(e.creds[o])):!1}},yv=class r extends ra{constructor(e){super(),this.metadataGenerator=e}generateMetadata(e){return new Promise((t,o)=>{this.metadataGenerator(e,(s,a)=>{a!==void 0?t(a):o(s)})})}compose(e){return new vv([this,e])}_equals(e){return this===e?!0:e instanceof r?this.metadataGenerator===e.metadataGenerator:!1}},Ov=class r extends ra{generateMetadata(e){return Promise.resolve(new Av.Metadata)}compose(e){return e}_equals(e){return e instanceof r}}});var Nv=T(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});Oc.CIPHER_SUITES=void 0;Oc.getDefaultRootsData=Wle;var Xle=V("fs");Oc.CIPHER_SUITES=process.env.GRPC_SSL_CIPHER_SUITES;var A3=process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH,Rv=null;function Wle(){return A3?(Rv===null&&(Rv=Xle.readFileSync(A3)),Rv):null}});var Pt=T(na=>{"use strict";Object.defineProperty(na,"__esModule",{value:!0});na.parseUri=Qle;na.splitHostPort=Zle;na.combineHostPort=ece;na.uriToString=tce;var Jle=/^(?:([A-Za-z0-9+.-]+):)?(?:\/\/([^/]*)\/)?(.+)$/;function Qle(r){let e=Jle.exec(r);return e===null?null:{scheme:e[1],authority:e[2],path:e[3]}}var R3=/^\d+$/;function Zle(r){if(r.startsWith("[")){let e=r.indexOf("]");if(e===-1)return null;let t=r.substring(1,e);if(t.indexOf(":")===-1)return null;if(r.length>e+1)if(r[e+1]===":"){let o=r.substring(e+2);return R3.test(o)?{host:t,port:+o}:null}else return null;else return{host:t}}else{let e=r.split(":");return e.length===2?R3.test(e[1])?{host:e[0],port:+e[1]}:null:{host:r}}}function ece(r){return r.port===void 0?r.host:r.host.includes(":")?`[${r.host}]:${r.port}`:`${r.host}:${r.port}`}function tce(r){let e="";return r.scheme!==void 0&&(e+=r.scheme+":"),r.authority!==void 0&&(e+="//"+r.authority+"/"),e+=r.path,e}});var jr=T(oo=>{"use strict";Object.defineProperty(oo,"__esModule",{value:!0});oo.registerResolver=rce;oo.registerDefaultScheme=nce;oo.createResolver=ice;oo.getDefaultAuthority=oce;oo.mapUriDefaultScheme=sce;var Pv=Pt(),ia={},Cv=null;function rce(r,e){ia[r]=e}function nce(r){Cv=r}function ice(r,e,t){if(r.scheme!==void 0&&r.scheme in ia)return new ia[r.scheme](r,e,t);throw new Error(`No resolver could be created for target ${(0,Pv.uriToString)(r)}`)}function oce(r){if(r.scheme!==void 0&&r.scheme in ia)return ia[r.scheme].getDefaultAuthority(r);throw new Error(`Invalid target ${(0,Pv.uriToString)(r)}`)}function sce(r){return r.scheme===void 0||!(r.scheme in ia)?Cv!==null?{scheme:Cv,authority:void 0,path:(0,Pv.uriToString)(r)}:null:r}});var Nc=T(Rc=>{"use strict";Object.defineProperty(Rc,"__esModule",{value:!0});Rc.ChannelCredentials=void 0;Rc.createCertificateProviderChannelCredentials=uce;var Ac=V("tls"),qh=Fh(),Lv=Nv(),N3=Pt(),ace=jr(),lce=Pe(),cce=ue();function Iv(r,e){if(r&&!(r instanceof Buffer))throw new TypeError(`${e}, if provided, must be a Buffer.`)}var so=class{compose(e){return new Mv(this,e)}static createSsl(e,t,o,s){var a;if(Iv(e,"Root certificate"),Iv(t,"Private key"),Iv(o,"Certificate chain"),t&&!o)throw new Error("Private key must be given with accompanying certificate chain");if(!t&&o)throw new Error("Certificate chain must be given with accompanying private key");let i=(0,Ac.createSecureContext)({ca:(a=e??(0,Lv.getDefaultRootsData)())!==null&&a!==void 0?a:void 0,key:t??void 0,cert:o??void 0,ciphers:Lv.CIPHER_SUITES});return new Gh(i,s??{})}static createFromSecureContext(e,t){return new Gh(e,t??{})}static createInsecure(){return new bv}};Rc.ChannelCredentials=so;var bv=class r extends so{constructor(){super()}compose(e){throw new Error("Cannot compose insecure credentials")}_isSecure(){return!1}_equals(e){return e instanceof r}_createSecureConnector(e,t,o){return{connect(s){return Promise.resolve({socket:s,secure:!1})},waitForReady:()=>Promise.resolve(),getCallCredentials:()=>o??qh.CallCredentials.createEmpty(),destroy(){}}}};function C3(r,e,t,o){var s,a;let i={secureContext:r},n=t;if("grpc.http_connect_target"in o){let f=(0,N3.parseUri)(o["grpc.http_connect_target"]);f&&(n=f)}let l=(0,ace.getDefaultAuthority)(n),c=(0,N3.splitHostPort)(l),u=(s=c==null?void 0:c.host)!==null&&s!==void 0?s:l;if(i.host=u,e.checkServerIdentity&&(i.checkServerIdentity=e.checkServerIdentity),e.rejectUnauthorized!==void 0&&(i.rejectUnauthorized=e.rejectUnauthorized),i.ALPNProtocols=["h2"],o["grpc.ssl_target_name_override"]){let f=o["grpc.ssl_target_name_override"],_=(a=i.checkServerIdentity)!==null&&a!==void 0?a:Ac.checkServerIdentity;i.checkServerIdentity=(m,O)=>_(f,O),i.servername=f}else i.servername=u;return o["grpc-node.tls_enable_trace"]&&(i.enableTrace=!0),i}var xv=class{constructor(e,t){this.connectionOptions=e,this.callCredentials=t}connect(e){let t=Object.assign({socket:e},this.connectionOptions);return new Promise((o,s)=>{let a=(0,Ac.connect)(t,()=>{var i;if((!((i=this.connectionOptions.rejectUnauthorized)!==null&&i!==void 0)||i)&&!a.authorized){s(a.authorizationError);return}o({socket:a,secure:!0})});a.on("error",i=>{s(i)})})}waitForReady(){return Promise.resolve()}getCallCredentials(){return this.callCredentials}destroy(){}},Gh=class r extends so{constructor(e,t){super(),this.secureContext=e,this.verifyOptions=t}_isSecure(){return!0}_equals(e){return this===e?!0:e instanceof r?this.secureContext===e.secureContext&&this.verifyOptions.checkServerIdentity===e.verifyOptions.checkServerIdentity:!1}_createSecureConnector(e,t,o){let s=C3(this.secureContext,this.verifyOptions,e,t);return new xv(s,o??qh.CallCredentials.createEmpty())}},Hh=class r extends so{constructor(e,t,o){super(),this.caCertificateProvider=e,this.identityCertificateProvider=t,this.verifyOptions=o,this.refcount=0,this.latestCaUpdate=void 0,this.latestIdentityUpdate=void 0,this.caCertificateUpdateListener=this.handleCaCertificateUpdate.bind(this),this.identityCertificateUpdateListener=this.handleIdentityCertitificateUpdate.bind(this),this.secureContextWatchers=[]}_isSecure(){return!0}_equals(e){var t,o;return this===e?!0:e instanceof r?this.caCertificateProvider===e.caCertificateProvider&&this.identityCertificateProvider===e.identityCertificateProvider&&((t=this.verifyOptions)===null||t===void 0?void 0:t.checkServerIdentity)===((o=e.verifyOptions)===null||o===void 0?void 0:o.checkServerIdentity):!1}ref(){var e;this.refcount===0&&(this.caCertificateProvider.addCaCertificateListener(this.caCertificateUpdateListener),(e=this.identityCertificateProvider)===null||e===void 0||e.addIdentityCertificateListener(this.identityCertificateUpdateListener)),this.refcount+=1}unref(){var e;this.refcount-=1,this.refcount===0&&(this.caCertificateProvider.removeCaCertificateListener(this.caCertificateUpdateListener),(e=this.identityCertificateProvider)===null||e===void 0||e.removeIdentityCertificateListener(this.identityCertificateUpdateListener))}_createSecureConnector(e,t,o){return this.ref(),new r.SecureConnectorImpl(this,e,t,o??qh.CallCredentials.createEmpty())}maybeUpdateWatchers(){if(this.hasReceivedUpdates()){for(let e of this.secureContextWatchers)e(this.getLatestSecureContext());this.secureContextWatchers=[]}}handleCaCertificateUpdate(e){this.latestCaUpdate=e,this.maybeUpdateWatchers()}handleIdentityCertitificateUpdate(e){this.latestIdentityUpdate=e,this.maybeUpdateWatchers()}hasReceivedUpdates(){return!(this.latestCaUpdate===void 0||this.identityCertificateProvider&&this.latestIdentityUpdate===void 0)}getSecureContext(){return this.hasReceivedUpdates()?Promise.resolve(this.getLatestSecureContext()):new Promise(e=>{this.secureContextWatchers.push(e)})}getLatestSecureContext(){var e,t;if(!this.latestCaUpdate||this.identityCertificateProvider!==null&&!this.latestIdentityUpdate)return null;try{return(0,Ac.createSecureContext)({ca:this.latestCaUpdate.caCertificate,key:(e=this.latestIdentityUpdate)===null||e===void 0?void 0:e.privateKey,cert:(t=this.latestIdentityUpdate)===null||t===void 0?void 0:t.certificate,ciphers:Lv.CIPHER_SUITES})}catch(o){return(0,lce.log)(cce.LogVerbosity.ERROR,"Failed to createSecureContext with error "+o.message),null}}};Hh.SecureConnectorImpl=class{constructor(r,e,t,o){this.parent=r,this.channelTarget=e,this.options=t,this.callCredentials=o}connect(r){return new Promise((e,t)=>{let o=this.parent.getLatestSecureContext();if(!o){t(new Error("Failed to load credentials"));return}r.closed&&t(new Error("Socket closed while loading credentials"));let s=C3(o,this.parent.verifyOptions,this.channelTarget,this.options),a=Object.assign({socket:r},s),i=()=>{t(new Error("Socket closed"))},n=c=>{t(c)},l=(0,Ac.connect)(a,()=>{var c;if(l.removeListener("close",i),l.removeListener("error",n),(!((c=this.parent.verifyOptions.rejectUnauthorized)!==null&&c!==void 0)||c)&&!l.authorized){t(l.authorizationError);return}e({socket:l,secure:!0})});l.once("close",i),l.once("error",n)})}async waitForReady(){await this.parent.getSecureContext()}getCallCredentials(){return this.callCredentials}destroy(){this.parent.unref()}};function uce(r,e,t){return new Hh(r,e,t??{})}var Mv=class r extends so{constructor(e,t){if(super(),this.channelCredentials=e,this.callCredentials=t,!e._isSecure())throw new Error("Cannot compose insecure credentials")}compose(e){let t=this.callCredentials.compose(e);return new r(this.channelCredentials,t)}_isSecure(){return!0}_equals(e){return this===e?!0:e instanceof r?this.channelCredentials._equals(e.channelCredentials)&&this.callCredentials._equals(e.callCredentials):!1}_createSecureConnector(e,t,o){let s=this.callCredentials.compose(o??qh.CallCredentials.createEmpty());return this.channelCredentials._createSecureConnector(e,t,s)}}});var ao=T(Yr=>{"use strict";Object.defineProperty(Yr,"__esModule",{value:!0});Yr.createChildChannelControlHelper=dce;Yr.registerLoadBalancerType=hce;Yr.registerDefaultLoadBalancerType=_ce;Yr.createLoadBalancer=Ece;Yr.isLoadBalancerNameRegistered=mce;Yr.parseLoadBalancingConfig=P3;Yr.getDefaultConfig=Tce;Yr.selectLbConfigFromList=Sce;var fce=Pe(),pce=ue();function dce(r,e){var t,o,s,a,i,n,l,c,u,f;return{createSubchannel:(o=(t=e.createSubchannel)===null||t===void 0?void 0:t.bind(e))!==null&&o!==void 0?o:r.createSubchannel.bind(r),updateState:(a=(s=e.updateState)===null||s===void 0?void 0:s.bind(e))!==null&&a!==void 0?a:r.updateState.bind(r),requestReresolution:(n=(i=e.requestReresolution)===null||i===void 0?void 0:i.bind(e))!==null&&n!==void 0?n:r.requestReresolution.bind(r),addChannelzChild:(c=(l=e.addChannelzChild)===null||l===void 0?void 0:l.bind(e))!==null&&c!==void 0?c:r.addChannelzChild.bind(r),removeChannelzChild:(f=(u=e.removeChannelzChild)===null||u===void 0?void 0:u.bind(e))!==null&&f!==void 0?f:r.removeChannelzChild.bind(r)}}var ei={},Cc=null;function hce(r,e,t){ei[r]={LoadBalancer:e,LoadBalancingConfig:t}}function _ce(r){Cc=r}function Ece(r,e){let t=r.getLoadBalancerName();return t in ei?new ei[t].LoadBalancer(e):null}function mce(r){return r in ei}function P3(r){let e=Object.keys(r);if(e.length!==1)throw new Error("Provided load balancing config has multiple conflicting entries");let t=e[0];if(t in ei)try{return ei[t].LoadBalancingConfig.createFromJson(r[t])}catch(o){throw new Error(`${t}: ${o.message}`)}else throw new Error(`Unrecognized load balancing config name ${t}`)}function Tce(){if(!Cc)throw new Error("No default load balancer type registered");return new ei[Cc].LoadBalancingConfig}function Sce(r,e=!1){for(let t of r)try{return P3(t)}catch(o){(0,fce.log)(pce.LogVerbosity.DEBUG,"Config parsing failed with error",o.message);continue}return e&&Cc?new ei[Cc].LoadBalancingConfig:null}});var wv=T(Pc=>{"use strict";Object.defineProperty(Pc,"__esModule",{value:!0});Pc.validateRetryThrottling=I3;Pc.validateServiceConfig=L3;Pc.extractAndSelectServiceConfig=Ice;var gce=V("os"),jh=ue(),Yh=/^\d+(\.\d{1,9})?s$/,vce="node";function yce(r){if("service"in r&&r.service!==""){if(typeof r.service!="string")throw new Error(`Invalid method config name: invalid service: expected type string, got ${typeof r.service}`);if("method"in r&&r.method!==""){if(typeof r.method!="string")throw new Error(`Invalid method config name: invalid method: expected type string, got ${typeof r.service}`);return{service:r.service,method:r.method}}else return{service:r.service}}else{if("method"in r&&r.method!==void 0)throw new Error("Invalid method config name: method set with empty or unset service");return{}}}function Oce(r){if(!("maxAttempts"in r)||!Number.isInteger(r.maxAttempts)||r.maxAttempts<2)throw new Error("Invalid method config retry policy: maxAttempts must be an integer at least 2");if(!("initialBackoff"in r)||typeof r.initialBackoff!="string"||!Yh.test(r.initialBackoff))throw new Error("Invalid method config retry policy: initialBackoff must be a string consisting of a positive integer or decimal followed by s");if(!("maxBackoff"in r)||typeof r.maxBackoff!="string"||!Yh.test(r.maxBackoff))throw new Error("Invalid method config retry policy: maxBackoff must be a string consisting of a positive integer or decimal followed by s");if(!("backoffMultiplier"in r)||typeof r.backoffMultiplier!="number"||r.backoffMultiplier<=0)throw new Error("Invalid method config retry policy: backoffMultiplier must be a number greater than 0");if(!("retryableStatusCodes"in r&&Array.isArray(r.retryableStatusCodes)))throw new Error("Invalid method config retry policy: retryableStatusCodes is required");if(r.retryableStatusCodes.length===0)throw new Error("Invalid method config retry policy: retryableStatusCodes must be non-empty");for(let e of r.retryableStatusCodes)if(typeof e=="number"){if(!Object.values(jh.Status).includes(e))throw new Error("Invalid method config retry policy: retryableStatusCodes value not in status code range")}else if(typeof e=="string"){if(!Object.values(jh.Status).includes(e.toUpperCase()))throw new Error("Invalid method config retry policy: retryableStatusCodes value not a status code name")}else throw new Error("Invalid method config retry policy: retryableStatusCodes value must be a string or number");return{maxAttempts:r.maxAttempts,initialBackoff:r.initialBackoff,maxBackoff:r.maxBackoff,backoffMultiplier:r.backoffMultiplier,retryableStatusCodes:r.retryableStatusCodes}}function Ace(r){if(!("maxAttempts"in r)||!Number.isInteger(r.maxAttempts)||r.maxAttempts<2)throw new Error("Invalid method config hedging policy: maxAttempts must be an integer at least 2");if("hedgingDelay"in r&&(typeof r.hedgingDelay!="string"||!Yh.test(r.hedgingDelay)))throw new Error("Invalid method config hedging policy: hedgingDelay must be a string consisting of a positive integer followed by s");if("nonFatalStatusCodes"in r&&Array.isArray(r.nonFatalStatusCodes))for(let t of r.nonFatalStatusCodes)if(typeof t=="number"){if(!Object.values(jh.Status).includes(t))throw new Error("Invalid method config hedging policy: nonFatalStatusCodes value not in status code range")}else if(typeof t=="string"){if(!Object.values(jh.Status).includes(t.toUpperCase()))throw new Error("Invalid method config hedging policy: nonFatalStatusCodes value not a status code name")}else throw new Error("Invalid method config hedging policy: nonFatalStatusCodes value must be a string or number");let e={maxAttempts:r.maxAttempts};return r.hedgingDelay&&(e.hedgingDelay=r.hedgingDelay),r.nonFatalStatusCodes&&(e.nonFatalStatusCodes=r.nonFatalStatusCodes),e}function Rce(r){var e;let t={name:[]};if(!("name"in r)||!Array.isArray(r.name))throw new Error("Invalid method config: invalid name array");for(let o of r.name)t.name.push(yce(o));if("waitForReady"in r){if(typeof r.waitForReady!="boolean")throw new Error("Invalid method config: invalid waitForReady");t.waitForReady=r.waitForReady}if("timeout"in r)if(typeof r.timeout=="object"){if(!("seconds"in r.timeout)||typeof r.timeout.seconds!="number")throw new Error("Invalid method config: invalid timeout.seconds");if(!("nanos"in r.timeout)||typeof r.timeout.nanos!="number")throw new Error("Invalid method config: invalid timeout.nanos");t.timeout=r.timeout}else if(typeof r.timeout=="string"&&Yh.test(r.timeout)){let o=r.timeout.substring(0,r.timeout.length-1).split(".");t.timeout={seconds:o[0]|0,nanos:((e=o[1])!==null&&e!==void 0?e:0)|0}}else throw new Error("Invalid method config: invalid timeout");if("maxRequestBytes"in r){if(typeof r.maxRequestBytes!="number")throw new Error("Invalid method config: invalid maxRequestBytes");t.maxRequestBytes=r.maxRequestBytes}if("maxResponseBytes"in r){if(typeof r.maxResponseBytes!="number")throw new Error("Invalid method config: invalid maxRequestBytes");t.maxResponseBytes=r.maxResponseBytes}if("retryPolicy"in r){if("hedgingPolicy"in r)throw new Error("Invalid method config: retryPolicy and hedgingPolicy cannot both be specified");t.retryPolicy=Oce(r.retryPolicy)}else"hedgingPolicy"in r&&(t.hedgingPolicy=Ace(r.hedgingPolicy));return t}function I3(r){if(!("maxTokens"in r)||typeof r.maxTokens!="number"||r.maxTokens<=0||r.maxTokens>1e3)throw new Error("Invalid retryThrottling: maxTokens must be a number in (0, 1000]");if(!("tokenRatio"in r)||typeof r.tokenRatio!="number"||r.tokenRatio<=0)throw new Error("Invalid retryThrottling: tokenRatio must be a number greater than 0");return{maxTokens:+r.maxTokens.toFixed(3),tokenRatio:+r.tokenRatio.toFixed(3)}}function Nce(r){if(!(typeof r=="object"&&r!==null))throw new Error(`Invalid loadBalancingConfig: unexpected type ${typeof r}`);let e=Object.keys(r);if(e.length>1)throw new Error(`Invalid loadBalancingConfig: unexpected multiple keys ${e}`);if(e.length===0)throw new Error("Invalid loadBalancingConfig: load balancing policy name required");return{[e[0]]:r[e[0]]}}function L3(r){let e={loadBalancingConfig:[],methodConfig:[]};if("loadBalancingPolicy"in r)if(typeof r.loadBalancingPolicy=="string")e.loadBalancingPolicy=r.loadBalancingPolicy;else throw new Error("Invalid service config: invalid loadBalancingPolicy");if("loadBalancingConfig"in r)if(Array.isArray(r.loadBalancingConfig))for(let o of r.loadBalancingConfig)e.loadBalancingConfig.push(Nce(o));else throw new Error("Invalid service config: invalid loadBalancingConfig");if("methodConfig"in r&&Array.isArray(r.methodConfig))for(let o of r.methodConfig)e.methodConfig.push(Rce(o));"retryThrottling"in r&&(e.retryThrottling=I3(r.retryThrottling));let t=[];for(let o of e.methodConfig)for(let s of o.name){for(let a of t)if(s.service===a.service&&s.method===a.method)throw new Error(`Invalid service config: duplicate name ${s.service}/${s.method}`);t.push(s)}return e}function Cce(r){if(!("serviceConfig"in r))throw new Error("Invalid service config choice: missing service config");let e={serviceConfig:L3(r.serviceConfig)};if("clientLanguage"in r)if(Array.isArray(r.clientLanguage)){e.clientLanguage=[];for(let o of r.clientLanguage)if(typeof o=="string")e.clientLanguage.push(o);else throw new Error("Invalid service config choice: invalid clientLanguage")}else throw new Error("Invalid service config choice: invalid clientLanguage");if("clientHostname"in r)if(Array.isArray(r.clientHostname)){e.clientHostname=[];for(let o of r.clientHostname)if(typeof o=="string")e.clientHostname.push(o);else throw new Error("Invalid service config choice: invalid clientHostname")}else throw new Error("Invalid service config choice: invalid clientHostname");if("percentage"in r)if(typeof r.percentage=="number"&&0<=r.percentage&&r.percentage<=100)e.percentage=r.percentage;else throw new Error("Invalid service config choice: invalid percentage");let t=["clientLanguage","percentage","clientHostname","serviceConfig"];for(let o in r)if(!t.includes(o))throw new Error(`Invalid service config choice: unexpected field ${o}`);return e}function Pce(r,e){if(!Array.isArray(r))throw new Error("Invalid service config list");for(let t of r){let o=Cce(t);if(!(typeof o.percentage=="number"&&e>o.percentage)){if(Array.isArray(o.clientHostname)){let s=!1;for(let a of o.clientHostname)a===gce.hostname()&&(s=!0);if(!s)continue}if(Array.isArray(o.clientLanguage)){let s=!1;for(let a of o.clientLanguage)a===vce&&(s=!0);if(!s)continue}return o.serviceConfig}}throw new Error("No matching service config found")}function Ice(r,e){for(let t of r)if(t.length>0&&t[0].startsWith("grpc_config=")){let o=t.join("").substring(12),s=JSON.parse(o);return Pce(s,e)}return null}});var tr=T(Kh=>{"use strict";Object.defineProperty(Kh,"__esModule",{value:!0});Kh.ConnectivityState=void 0;var b3;(function(r){r[r.IDLE=0]="IDLE",r[r.CONNECTING=1]="CONNECTING",r[r.READY=2]="READY",r[r.TRANSIENT_FAILURE=3]="TRANSIENT_FAILURE",r[r.SHUTDOWN=4]="SHUTDOWN"})(b3||(Kh.ConnectivityState=b3={}))});var ri=T(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.QueuePicker=ti.UnavailablePicker=ti.PickResultType=void 0;var Lce=ht(),bce=ue(),zh;(function(r){r[r.COMPLETE=0]="COMPLETE",r[r.QUEUE=1]="QUEUE",r[r.TRANSIENT_FAILURE=2]="TRANSIENT_FAILURE",r[r.DROP=3]="DROP"})(zh||(ti.PickResultType=zh={}));var Dv=class{constructor(e){this.status=Object.assign({code:bce.Status.UNAVAILABLE,details:"No connection established",metadata:new Lce.Metadata},e)}pick(e){return{pickResultType:zh.TRANSIENT_FAILURE,subchannel:null,status:this.status,onCallStarted:null,onCallEnded:null}}};ti.UnavailablePicker=Dv;var Uv=class{constructor(e,t){this.loadBalancer=e,this.childPicker=t,this.calledExitIdle=!1}pick(e){return this.calledExitIdle||(process.nextTick(()=>{this.loadBalancer.exitIdle()}),this.calledExitIdle=!0),this.childPicker?this.childPicker.pick(e):{pickResultType:zh.QUEUE,subchannel:null,status:null,onCallStarted:null,onCallEnded:null}}};ti.QueuePicker=Uv});var Ic=T(Xh=>{"use strict";Object.defineProperty(Xh,"__esModule",{value:!0});Xh.BackoffTimeout=void 0;var xce=ue(),Mce=Pe(),wce="backoff",Dce=1e3,Uce=1.6,kce=12e4,Bce=.2;function Vce(r,e){return Math.random()*(e-r)+r}var $h=class r{constructor(e,t){this.callback=e,this.initialDelay=Dce,this.multiplier=Uce,this.maxDelay=kce,this.jitter=Bce,this.running=!1,this.hasRef=!0,this.startTime=new Date,this.endTime=new Date,this.id=r.getNextId(),t&&(t.initialDelay&&(this.initialDelay=t.initialDelay),t.multiplier&&(this.multiplier=t.multiplier),t.jitter&&(this.jitter=t.jitter),t.maxDelay&&(this.maxDelay=t.maxDelay)),this.trace("constructed initialDelay="+this.initialDelay+" multiplier="+this.multiplier+" jitter="+this.jitter+" maxDelay="+this.maxDelay),this.nextDelay=this.initialDelay,this.timerId=setTimeout(()=>{},0),clearTimeout(this.timerId)}static getNextId(){return this.nextId++}trace(e){Mce.trace(xce.LogVerbosity.DEBUG,wce,"{"+this.id+"} "+e)}runTimer(e){var t,o;this.trace("runTimer(delay="+e+")"),this.endTime=this.startTime,this.endTime.setMilliseconds(this.endTime.getMilliseconds()+e),clearTimeout(this.timerId),this.timerId=setTimeout(()=>{this.trace("timer fired"),this.running=!1,this.callback()},e),this.hasRef||(o=(t=this.timerId).unref)===null||o===void 0||o.call(t)}runOnce(){this.trace("runOnce()"),this.running=!0,this.startTime=new Date,this.runTimer(this.nextDelay);let e=Math.min(this.nextDelay*this.multiplier,this.maxDelay),t=e*this.jitter;this.nextDelay=e+Vce(-t,t)}stop(){this.trace("stop()"),clearTimeout(this.timerId),this.running=!1}reset(){if(this.trace("reset() running="+this.running),this.nextDelay=this.initialDelay,this.running){let e=new Date,t=this.startTime;t.setMilliseconds(t.getMilliseconds()+this.nextDelay),clearTimeout(this.timerId),e{"use strict";Object.defineProperty(Wh,"__esModule",{value:!0});Wh.ChildLoadBalancerHandler=void 0;var Fce=ao(),Gce=tr(),Hce="child_load_balancer_helper",kv=class{constructor(e){this.channelControlHelper=e,this.currentChild=null,this.pendingChild=null,this.latestConfig=null,this.ChildPolicyHelper=class{constructor(t){this.parent=t,this.child=null}createSubchannel(t,o){return this.parent.channelControlHelper.createSubchannel(t,o)}updateState(t,o,s){var a;if(this.calledByPendingChild()){if(t===Gce.ConnectivityState.CONNECTING)return;(a=this.parent.currentChild)===null||a===void 0||a.destroy(),this.parent.currentChild=this.parent.pendingChild,this.parent.pendingChild=null}else if(!this.calledByCurrentChild())return;this.parent.channelControlHelper.updateState(t,o,s)}requestReresolution(){var t;let o=(t=this.parent.pendingChild)!==null&&t!==void 0?t:this.parent.currentChild;this.child===o&&this.parent.channelControlHelper.requestReresolution()}setChild(t){this.child=t}addChannelzChild(t){this.parent.channelControlHelper.addChannelzChild(t)}removeChannelzChild(t){this.parent.channelControlHelper.removeChannelzChild(t)}calledByPendingChild(){return this.child===this.parent.pendingChild}calledByCurrentChild(){return this.child===this.parent.currentChild}}}configUpdateRequiresNewPolicyInstance(e,t){return e.getLoadBalancerName()!==t.getLoadBalancerName()}updateAddressList(e,t,o){let s;if(this.currentChild===null||this.latestConfig===null||this.configUpdateRequiresNewPolicyInstance(this.latestConfig,t)){let a=new this.ChildPolicyHelper(this),i=(0,Fce.createLoadBalancer)(t,a);a.setChild(i),this.currentChild===null?(this.currentChild=i,s=this.currentChild):(this.pendingChild&&this.pendingChild.destroy(),this.pendingChild=i,s=this.pendingChild)}else this.pendingChild===null?s=this.currentChild:s=this.pendingChild;this.latestConfig=t,s.updateAddressList(e,t,o)}exitIdle(){this.currentChild&&(this.currentChild.exitIdle(),this.pendingChild&&this.pendingChild.exitIdle())}resetBackoff(){this.currentChild&&(this.currentChild.resetBackoff(),this.pendingChild&&this.pendingChild.resetBackoff())}destroy(){this.currentChild&&(this.currentChild.destroy(),this.currentChild=null),this.pendingChild&&(this.pendingChild.destroy(),this.pendingChild=null)}getTypeName(){return Hce}};Wh.ChildLoadBalancerHandler=kv});var M3=T(Qh=>{"use strict";Object.defineProperty(Qh,"__esModule",{value:!0});Qh.ResolvingLoadBalancer=void 0;var qce=ao(),jce=wv(),It=tr(),Yce=jr(),Lc=ri(),Kce=Ic(),Bv=ue(),zce=ht(),$ce=Pe(),Xce=ue(),Wce=Pt(),Jce=Jh(),Qce="resolving_load_balancer";function x3(r){$ce.trace(Xce.LogVerbosity.DEBUG,Qce,r)}var Zce=["SERVICE_AND_METHOD","SERVICE","EMPTY"];function eue(r,e,t,o){for(let s of t.name)switch(o){case"EMPTY":if(!s.service&&!s.method)return!0;break;case"SERVICE":if(s.service===r&&!s.method)return!0;break;case"SERVICE_AND_METHOD":if(s.service===r&&s.method===e)return!0}return!1}function tue(r,e,t,o){for(let s of t)if(eue(r,e,s,o))return s;return null}function rue(r){return{invoke(e,t){var o,s;let a=e.split("/").filter(l=>l.length>0),i=(o=a[0])!==null&&o!==void 0?o:"",n=(s=a[1])!==null&&s!==void 0?s:"";if(r&&r.methodConfig)for(let l of Zce){let c=tue(i,n,r.methodConfig,l);if(c)return{methodConfig:c,pickInformation:{},status:Bv.Status.OK,dynamicFilterFactories:[]}}return{methodConfig:{name:[]},pickInformation:{},status:Bv.Status.OK,dynamicFilterFactories:[]}},unref(){}}}var Vv=class{constructor(e,t,o,s,a){this.target=e,this.channelControlHelper=t,this.channelOptions=o,this.onSuccessfulResolution=s,this.onFailedResolution=a,this.latestChildState=It.ConnectivityState.IDLE,this.latestChildPicker=new Lc.QueuePicker(this),this.latestChildErrorMessage=null,this.currentState=It.ConnectivityState.IDLE,this.previousServiceConfig=null,this.continueResolving=!1,o["grpc.service_config"]?this.defaultServiceConfig=(0,jce.validateServiceConfig)(JSON.parse(o["grpc.service_config"])):this.defaultServiceConfig={loadBalancingConfig:[],methodConfig:[]},this.updateState(It.ConnectivityState.IDLE,new Lc.QueuePicker(this),null),this.childLoadBalancer=new Jce.ChildLoadBalancerHandler({createSubchannel:t.createSubchannel.bind(t),requestReresolution:()=>{this.backoffTimeout.isRunning()?(x3("requestReresolution delayed by backoff timer until "+this.backoffTimeout.getEndTime().toISOString()),this.continueResolving=!0):this.updateResolution()},updateState:(n,l,c)=>{this.latestChildState=n,this.latestChildPicker=l,this.latestChildErrorMessage=c,this.updateState(n,l,c)},addChannelzChild:t.addChannelzChild.bind(t),removeChannelzChild:t.removeChannelzChild.bind(t)}),this.innerResolver=(0,Yce.createResolver)(e,{onSuccessfulResolution:(n,l,c,u,f)=>{var _;this.backoffTimeout.stop(),this.backoffTimeout.reset();let m=null;l===null?c===null?(this.previousServiceConfig=null,m=this.defaultServiceConfig):this.previousServiceConfig===null?this.handleResolutionFailure(c):m=this.previousServiceConfig:(m=l,this.previousServiceConfig=l);let O=(_=m==null?void 0:m.loadBalancingConfig)!==null&&_!==void 0?_:[],y=(0,qce.selectLbConfigFromList)(O,!0);if(y===null){this.handleResolutionFailure({code:Bv.Status.UNAVAILABLE,details:"All load balancer options in service config are not compatible",metadata:new zce.Metadata}),u==null||u.unref();return}this.childLoadBalancer.updateAddressList(n,y,Object.assign(Object.assign({},this.channelOptions),f));let A=m??this.defaultServiceConfig;this.onSuccessfulResolution(A,u??rue(A))},onError:n=>{this.handleResolutionFailure(n)}},o);let i={initialDelay:o["grpc.initial_reconnect_backoff_ms"],maxDelay:o["grpc.max_reconnect_backoff_ms"]};this.backoffTimeout=new Kce.BackoffTimeout(()=>{this.continueResolving?(this.updateResolution(),this.continueResolving=!1):this.updateState(this.latestChildState,this.latestChildPicker,this.latestChildErrorMessage)},i),this.backoffTimeout.unref()}updateResolution(){this.innerResolver.updateResolution(),this.currentState===It.ConnectivityState.IDLE&&this.updateState(It.ConnectivityState.CONNECTING,this.latestChildPicker,this.latestChildErrorMessage),this.backoffTimeout.runOnce()}updateState(e,t,o){x3((0,Wce.uriToString)(this.target)+" "+It.ConnectivityState[this.currentState]+" -> "+It.ConnectivityState[e]),e===It.ConnectivityState.IDLE&&(t=new Lc.QueuePicker(this,t)),this.currentState=e,this.channelControlHelper.updateState(e,t,o)}handleResolutionFailure(e){this.latestChildState===It.ConnectivityState.IDLE&&(this.updateState(It.ConnectivityState.TRANSIENT_FAILURE,new Lc.UnavailablePicker(e),e.details),this.onFailedResolution(e))}exitIdle(){(this.currentState===It.ConnectivityState.IDLE||this.currentState===It.ConnectivityState.TRANSIENT_FAILURE)&&(this.backoffTimeout.isRunning()?this.continueResolving=!0:this.updateResolution()),this.childLoadBalancer.exitIdle()}updateAddressList(e,t){throw new Error("updateAddressList not supported on ResolvingLoadBalancer")}resetBackoff(){this.backoffTimeout.reset(),this.childLoadBalancer.resetBackoff()}destroy(){this.childLoadBalancer.destroy(),this.innerResolver.destroy(),this.backoffTimeout.reset(),this.backoffTimeout.stop(),this.latestChildState=It.ConnectivityState.IDLE,this.latestChildPicker=new Lc.QueuePicker(this),this.currentState=It.ConnectivityState.IDLE,this.previousServiceConfig=null,this.continueResolving=!1}getTypeName(){return"resolving_load_balancer"}};Qh.ResolvingLoadBalancer=Vv});var w3=T(bc=>{"use strict";Object.defineProperty(bc,"__esModule",{value:!0});bc.recognizedOptions=void 0;bc.channelOptionsEqual=nue;bc.recognizedOptions={"grpc.ssl_target_name_override":!0,"grpc.primary_user_agent":!0,"grpc.secondary_user_agent":!0,"grpc.default_authority":!0,"grpc.keepalive_time_ms":!0,"grpc.keepalive_timeout_ms":!0,"grpc.keepalive_permit_without_calls":!0,"grpc.service_config":!0,"grpc.max_concurrent_streams":!0,"grpc.initial_reconnect_backoff_ms":!0,"grpc.max_reconnect_backoff_ms":!0,"grpc.use_local_subchannel_pool":!0,"grpc.max_send_message_length":!0,"grpc.max_receive_message_length":!0,"grpc.enable_http_proxy":!0,"grpc.enable_channelz":!0,"grpc.dns_min_time_between_resolutions_ms":!0,"grpc.enable_retries":!0,"grpc.per_rpc_retry_buffer_size":!0,"grpc.retry_buffer_size":!0,"grpc.max_connection_age_ms":!0,"grpc.max_connection_age_grace_ms":!0,"grpc-node.max_session_memory":!0,"grpc.service_config_disable_resolution":!0,"grpc.client_idle_timeout_ms":!0,"grpc-node.tls_enable_trace":!0,"grpc.lb.ring_hash.ring_size_cap":!0,"grpc-node.retry_max_attempts_limit":!0,"grpc-node.flow_control_window":!0};function nue(r,e){let t=Object.keys(r).sort(),o=Object.keys(e).sort();if(t.length!==o.length)return!1;for(let s=0;s{"use strict";Object.defineProperty(Sr,"__esModule",{value:!0});Sr.EndpointMap=void 0;Sr.isTcpSubchannelAddress=Mc;Sr.subchannelAddressEqual=Zh;Sr.subchannelAddressToString=U3;Sr.stringToSubchannelAddress=oue;Sr.endpointEqual=sue;Sr.endpointToString=aue;Sr.endpointHasAddress=k3;var D3=V("net");function Mc(r){return"port"in r}function Zh(r,e){return!r&&!e?!0:!r||!e?!1:Mc(r)?Mc(e)&&r.host===e.host&&r.port===e.port:!Mc(e)&&r.path===e.path}function U3(r){return Mc(r)?(0,D3.isIPv6)(r.host)?"["+r.host+"]:"+r.port:r.host+":"+r.port:r.path}var iue=443;function oue(r,e){return(0,D3.isIP)(r)?{host:r,port:e??iue}:{path:r}}function sue(r,e){if(r.addresses.length!==e.addresses.length)return!1;for(let t=0;t_ue});function oa(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Gv(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function lue(r,e){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,i;return i={next:n(0),throw:n(1),return:n(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function n(c){return function(u){return l([c,u])}}function l(c){if(o)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(t=0)),t;)try{if(o=1,s&&(a=c[0]&2?s.return:c[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,c[1])).done)return a;switch(s=0,a&&(c=[c[0]&2,a.value]),c[0]){case 0:case 1:a=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!a||c[1]>a[0]&&c[1]{Gv=function(r,e){return Gv=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,o){t.__proto__=o}||function(t,o){for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(t[s]=o[s])},Gv(r,e)};B3=function(){function r(e,t,o){o===void 0&&(o=1),this.t=void 0,this.i=void 0,this.h=void 0,this.u=e,this.o=t,this.l=o}return r.prototype.v=function(){var e=this,t=e.h.h===e;if(t&&e.l===1)e=e.i;else if(e.t)for(e=e.t;e.i;)e=e.i;else{if(t)return e.h;for(var o=e.h;o.t===e;)e=o,o=e.h;e=o}return e},r.prototype.p=function(){var e=this;if(e.i){for(e=e.i;e.t;)e=e.t;return e}else{for(var t=e.h;t.i===e;)e=t,t=e.h;return e.i!==t?t:e}},r.prototype.T=function(){var e=this.h,t=this.i,o=t.t;return e.h===this?e.h=t:e.t===this?e.t=t:e.i=t,t.h=e,t.t=this,this.h=t,this.i=o,o&&(o.h=this),t},r.prototype.I=function(){var e=this.h,t=this.t,o=t.i;return e.h===this?e.h=t:e.t===this?e.t=t:e.i=t,t.h=e,t.i=this,this.h=t,this.t=o,o&&(o.h=this),t},r}(),cue=function(r){oa(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.O=1,t}return e.prototype.T=function(){var t=r.prototype.T.call(this);return this.M(),t.M(),t},e.prototype.I=function(){var t=r.prototype.I.call(this);return this.M(),t.M(),t},e.prototype.M=function(){this.O=1,this.t&&(this.O+=this.t.O),this.i&&(this.O+=this.i.O)},e}(B3),uue=function(){function r(e){e===void 0&&(e=0),this.iteratorType=e}return r.prototype.equals=function(e){return this.C===e.C},r}(),fue=function(){function r(){this._=0}return Object.defineProperty(r.prototype,"length",{get:function(){return this._},enumerable:!1,configurable:!0}),r.prototype.size=function(){return this._},r.prototype.empty=function(){return this._===0},r}(),pue=function(r){oa(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e}(fue);due=function(r){oa(e,r);function e(t,o){t===void 0&&(t=function(a,i){return ai?1:0}),o===void 0&&(o=!1);var s=r.call(this)||this;return s.N=void 0,s.g=t,s.enableIndex=o,s.S=o?cue:B3,s.A=new s.S,s}return e.prototype.m=function(t,o){for(var s=this.A;t;){var a=this.g(t.u,o);if(a<0)t=t.i;else if(a>0)s=t,t=t.t;else return t}return s},e.prototype.B=function(t,o){for(var s=this.A;t;){var a=this.g(t.u,o);a<=0?t=t.i:(s=t,t=t.t)}return s},e.prototype.j=function(t,o){for(var s=this.A;t;){var a=this.g(t.u,o);if(a<0)s=t,t=t.i;else if(a>0)t=t.t;else return t}return s},e.prototype.k=function(t,o){for(var s=this.A;t;){var a=this.g(t.u,o);a<0?(s=t,t=t.i):t=t.t}return s},e.prototype.R=function(t){for(;;){var o=t.h;if(o===this.A)return;if(t.l===1){t.l=0;return}if(t===o.t){var s=o.i;if(s.l===1)s.l=0,o.l=1,o===this.N?this.N=o.T():o.T();else if(s.i&&s.i.l===1){s.l=o.l,o.l=0,s.i.l=0,o===this.N?this.N=o.T():o.T();return}else s.t&&s.t.l===1?(s.l=1,s.t.l=0,s.I()):(s.l=1,t=o)}else{var s=o.t;if(s.l===1)s.l=0,o.l=1,o===this.N?this.N=o.I():o.I();else if(s.t&&s.t.l===1){s.l=o.l,o.l=0,s.t.l=0,o===this.N?this.N=o.I():o.I();return}else s.i&&s.i.l===1?(s.l=1,s.i.l=0,s.T()):(s.l=1,t=o)}}},e.prototype.G=function(t){if(this._===1){this.clear();return}for(var o=t;o.t||o.i;){if(o.i)for(o=o.i;o.t;)o=o.t;else o=o.t;var s=t.u;t.u=o.u,o.u=s;var a=t.o;t.o=o.o,o.o=a,t=o}this.A.t===o?this.A.t=o.h:this.A.i===o&&(this.A.i=o.h),this.R(o);var i=o.h;if(o===i.t?i.t=void 0:i.i=void 0,this._-=1,this.N.l=0,this.enableIndex)for(;i!==this.A;)i.O-=1,i=i.h},e.prototype.P=function(t){for(var o=typeof t=="number"?t:void 0,s=typeof t=="function"?t:void 0,a=typeof t>"u"?[]:void 0,i=0,n=this.N,l=[];l.length||n;)if(n)l.push(n),n=n.t;else{if(n=l.pop(),i===o)return n;a&&a.push(n),s&&s(n,i,this),i+=1,n=n.i}return a},e.prototype.q=function(t){for(;;){var o=t.h;if(o.l===0)return;var s=o.h;if(o===s.t){var a=s.i;if(a&&a.l===1){if(a.l=o.l=0,s===this.N)return;s.l=1,t=s;continue}else if(t===o.i){if(t.l=0,t.t&&(t.t.h=o),t.i&&(t.i.h=s),o.i=t.t,s.t=t.i,t.t=o,t.i=s,s===this.N)this.N=t,this.A.h=t;else{var i=s.h;i.t===s?i.t=t:i.i=t}t.h=s.h,o.h=t,s.h=t,s.l=1}else{o.l=0,s===this.N?this.N=s.I():s.I(),s.l=1;return}}else{var a=s.t;if(a&&a.l===1){if(a.l=o.l=0,s===this.N)return;s.l=1,t=s;continue}else if(t===o.t){if(t.l=0,t.t&&(t.t.h=s),t.i&&(t.i.h=o),s.i=t.t,o.t=t.i,t.t=s,t.i=o,s===this.N)this.N=t,this.A.h=t;else{var i=s.h;i.t===s?i.t=t:i.i=t}t.h=s.h,o.h=t,s.h=t,s.l=1}else{o.l=0,s===this.N?this.N=s.T():s.T(),s.l=1;return}}this.enableIndex&&(o.M(),s.M(),t.M());return}},e.prototype.D=function(t,o,s){if(this.N===void 0)return this._+=1,this.N=new this.S(t,o,0),this.N.h=this.A,this.A.h=this.A.t=this.A.i=this.N,this._;var a,i=this.A.t,n=this.g(i.u,t);if(n===0)return i.o=o,this._;if(n>0)i.t=new this.S(t,o),i.t.h=i,a=i.t,this.A.t=a;else{var l=this.A.i,c=this.g(l.u,t);if(c===0)return l.o=o,this._;if(c<0)l.i=new this.S(t,o),l.i.h=l,a=l.i,this.A.i=a;else{if(s!==void 0){var u=s.C;if(u!==this.A){var f=this.g(u.u,t);if(f===0)return u.o=o,this._;if(f>0){var _=u.v(),m=this.g(_.u,t);if(m===0)return _.o=o,this._;m<0&&(a=new this.S(t,o),_.i===void 0?(_.i=a,a.h=_):(u.t=a,a.h=u))}}}if(a===void 0)for(a=this.N;;){var O=this.g(a.u,t);if(O>0){if(a.t===void 0){a.t=new this.S(t,o),a.t.h=a,a=a.t;break}a=a.t}else if(O<0){if(a.i===void 0){a.i=new this.S(t,o),a.i.h=a,a=a.i;break}a=a.i}else return a.o=o,this._}}}if(this.enableIndex)for(var y=a.h;y!==this.A;)y.O+=1,y=y.h;return this.q(a),this._+=1,this._},e.prototype.F=function(t,o){for(;t;){var s=this.g(t.u,o);if(s<0)t=t.i;else if(s>0)t=t.t;else return t}return t||this.A},e.prototype.clear=function(){this._=0,this.N=void 0,this.A.h=void 0,this.A.t=this.A.i=void 0},e.prototype.updateKeyByIterator=function(t,o){var s=t.C;if(s===this.A&&lo(),this._===1)return s.u=o,!0;var a=s.p().u;if(s===this.A.t)return this.g(a,o)>0?(s.u=o,!0):!1;var i=s.v().u;return s===this.A.i?this.g(i,o)<0?(s.u=o,!0):!1:this.g(i,o)>=0||this.g(a,o)<=0?!1:(s.u=o,!0)},e.prototype.eraseElementByPos=function(t){if(t<0||t>this._-1)throw new RangeError;var o=this.P(t);return this.G(o),this._},e.prototype.eraseElementByKey=function(t){if(this._===0)return!1;var o=this.F(this.N,t);return o===this.A?!1:(this.G(o),!0)},e.prototype.eraseElementByIterator=function(t){var o=t.C;o===this.A&&lo();var s=o.i===void 0,a=t.iteratorType===0;return a?s&&t.next():(!s||o.t===void 0)&&t.next(),this.G(o),t},e.prototype.getHeight=function(){if(this._===0)return 0;function t(o){return o?Math.max(t(o.t),t(o.i))+1:0}return t(this.N)},e}(pue),hue=function(r){oa(e,r);function e(t,o,s){var a=r.call(this,s)||this;return a.C=t,a.A=o,a.iteratorType===0?(a.pre=function(){return this.C===this.A.t&&lo(),this.C=this.C.v(),this},a.next=function(){return this.C===this.A&&lo(),this.C=this.C.p(),this}):(a.pre=function(){return this.C===this.A.i&&lo(),this.C=this.C.p(),this},a.next=function(){return this.C===this.A&&lo(),this.C=this.C.v(),this}),a}return Object.defineProperty(e.prototype,"index",{get:function(){var t=this.C,o=this.A.h;if(t===this.A)return o?o.O-1:0;var s=0;for(t.t&&(s+=t.t.O);t!==o;){var a=t.h;t===a.i&&(s+=1,a.t&&(s+=a.t.O)),t=a}return s},enumerable:!1,configurable:!0}),e.prototype.isAccessible=function(){return this.C!==this.A},e}(uue),En=function(r){oa(e,r);function e(t,o,s,a){var i=r.call(this,t,o,a)||this;return i.container=s,i}return Object.defineProperty(e.prototype,"pointer",{get:function(){this.C===this.A&&lo();var t=this;return new Proxy([],{get:function(o,s){return s==="0"?t.C.u:s==="1"?t.C.o:(o[0]=t.C.u,o[1]=t.C.o,o[s])},set:function(o,s,a){if(s!=="1")throw new TypeError("prop must be 1");return t.C.o=a,!0}})},enumerable:!1,configurable:!0}),e.prototype.copy=function(){return new e(this.C,this.A,this.container,this.iteratorType)},e}(hue),_ue=function(r){oa(e,r);function e(t,o,s){t===void 0&&(t=[]);var a=r.call(this,o,s)||this,i=a;return t.forEach(function(n){i.setElement(n[0],n[1])}),a}return e.prototype.begin=function(){return new En(this.A.t||this.A,this.A,this)},e.prototype.end=function(){return new En(this.A,this.A,this)},e.prototype.rBegin=function(){return new En(this.A.i||this.A,this.A,this,1)},e.prototype.rEnd=function(){return new En(this.A,this.A,this,1)},e.prototype.front=function(){if(this._!==0){var t=this.A.t;return[t.u,t.o]}},e.prototype.back=function(){if(this._!==0){var t=this.A.i;return[t.u,t.o]}},e.prototype.lowerBound=function(t){var o=this.m(this.N,t);return new En(o,this.A,this)},e.prototype.upperBound=function(t){var o=this.B(this.N,t);return new En(o,this.A,this)},e.prototype.reverseLowerBound=function(t){var o=this.j(this.N,t);return new En(o,this.A,this)},e.prototype.reverseUpperBound=function(t){var o=this.k(this.N,t);return new En(o,this.A,this)},e.prototype.forEach=function(t){this.P(function(o,s,a){t([o.u,o.o],s,a)})},e.prototype.setElement=function(t,o,s){return this.D(t,o,s)},e.prototype.getElementByPos=function(t){if(t<0||t>this._-1)throw new RangeError;var o=this.P(t);return[o.u,o.o]},e.prototype.find=function(t){var o=this.F(this.N,t);return new En(o,this.A,this)},e.prototype.getElementByKey=function(t){var o=this.F(this.N,t);return o.o},e.prototype.union=function(t){var o=this;return t.forEach(function(s){o.setElement(s[0],s[1])}),this._},e.prototype[Symbol.iterator]=function(){var t,o,s,a;return lue(this,function(i){switch(i.label){case 0:t=this._,o=this.P(),s=0,i.label=1;case 1:return s{"use strict";Object.defineProperty(e_,"__esModule",{value:!0});e_.registerAdminService=Eue;e_.addAdminServicesToServer=mue;var G3=[];function Eue(r,e){G3.push({getServiceDefinition:r,getHandlers:e})}function mue(r){for(let{getServiceDefinition:e,getHandlers:t}of G3)r.addService(e(),t())}});var H3=T(gr=>{"use strict";Object.defineProperty(gr,"__esModule",{value:!0});gr.ClientDuplexStreamImpl=gr.ClientWritableStreamImpl=gr.ClientReadableStreamImpl=gr.ClientUnaryCallImpl=void 0;gr.callErrorFromStatus=Sue;var Tue=V("events"),Kv=V("stream"),wc=ue();function Sue(r,e){let t=`${r.code} ${wc.Status[r.code]}: ${r.details}`,s=`${new Error(t).stack} +for call at +${e}`;return Object.assign(new Error(t),r,{stack:s})}var Hv=class extends Tue.EventEmitter{constructor(){super()}cancel(){var e;(e=this.call)===null||e===void 0||e.cancelWithStatus(wc.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}};gr.ClientUnaryCallImpl=Hv;var qv=class extends Kv.Readable{constructor(e){super({objectMode:!0}),this.deserialize=e}cancel(){var e;(e=this.call)===null||e===void 0||e.cancelWithStatus(wc.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}_read(e){var t;(t=this.call)===null||t===void 0||t.startRead()}};gr.ClientReadableStreamImpl=qv;var jv=class extends Kv.Writable{constructor(e){super({objectMode:!0}),this.serialize=e}cancel(){var e;(e=this.call)===null||e===void 0||e.cancelWithStatus(wc.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}_write(e,t,o){var s;let a={callback:o},i=Number(t);Number.isNaN(i)||(a.flags=i),(s=this.call)===null||s===void 0||s.sendMessageWithContext(a,e)}_final(e){var t;(t=this.call)===null||t===void 0||t.halfClose(),e()}};gr.ClientWritableStreamImpl=jv;var Yv=class extends Kv.Duplex{constructor(e,t){super({objectMode:!0}),this.serialize=e,this.deserialize=t}cancel(){var e;(e=this.call)===null||e===void 0||e.cancelWithStatus(wc.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}_read(e){var t;(t=this.call)===null||t===void 0||t.startRead()}_write(e,t,o){var s;let a={callback:o},i=Number(t);Number.isNaN(i)||(a.flags=i),(s=this.call)===null||s===void 0||s.sendMessageWithContext(a,e)}_final(e){var t;(t=this.call)===null||t===void 0||t.halfClose(),e()}};gr.ClientDuplexStreamImpl=Yv});var q3=T(Dc=>{"use strict";Object.defineProperty(Dc,"__esModule",{value:!0});Dc.InterceptingListenerImpl=void 0;Dc.isInterceptingListener=gue;function gue(r){return r.onReceiveMetadata!==void 0&&r.onReceiveMetadata.length===1}var zv=class{constructor(e,t){this.listener=e,this.nextListener=t,this.processingMetadata=!1,this.hasPendingMessage=!1,this.processingMessage=!1,this.pendingStatus=null}processPendingMessage(){this.hasPendingMessage&&(this.nextListener.onReceiveMessage(this.pendingMessage),this.pendingMessage=null,this.hasPendingMessage=!1)}processPendingStatus(){this.pendingStatus&&this.nextListener.onReceiveStatus(this.pendingStatus)}onReceiveMetadata(e){this.processingMetadata=!0,this.listener.onReceiveMetadata(e,t=>{this.processingMetadata=!1,this.nextListener.onReceiveMetadata(t),this.processPendingMessage(),this.processPendingStatus()})}onReceiveMessage(e){this.processingMessage=!0,this.listener.onReceiveMessage(e,t=>{this.processingMessage=!1,this.processingMetadata?(this.pendingMessage=t,this.hasPendingMessage=!0):(this.nextListener.onReceiveMessage(t),this.processPendingStatus())})}onReceiveStatus(e){this.listener.onReceiveStatus(e,t=>{this.processingMetadata||this.processingMessage?this.pendingStatus=t:this.nextListener.onReceiveStatus(t)})}};Dc.InterceptingListenerImpl=zv});var ey=T(vr=>{"use strict";Object.defineProperty(vr,"__esModule",{value:!0});vr.InterceptingCall=vr.RequesterBuilder=vr.ListenerBuilder=vr.InterceptorConfigurationError=void 0;vr.getInterceptingCall=Aue;var vue=ht(),j3=q3(),Y3=ue(),K3=Uh(),kc=class r extends Error{constructor(e){super(e),this.name="InterceptorConfigurationError",Error.captureStackTrace(this,r)}};vr.InterceptorConfigurationError=kc;var Xv=class{constructor(){this.metadata=void 0,this.message=void 0,this.status=void 0}withOnReceiveMetadata(e){return this.metadata=e,this}withOnReceiveMessage(e){return this.message=e,this}withOnReceiveStatus(e){return this.status=e,this}build(){return{onReceiveMetadata:this.metadata,onReceiveMessage:this.message,onReceiveStatus:this.status}}};vr.ListenerBuilder=Xv;var Wv=class{constructor(){this.start=void 0,this.message=void 0,this.halfClose=void 0,this.cancel=void 0}withStart(e){return this.start=e,this}withSendMessage(e){return this.message=e,this}withHalfClose(e){return this.halfClose=e,this}withCancel(e){return this.cancel=e,this}build(){return{start:this.start,sendMessage:this.message,halfClose:this.halfClose,cancel:this.cancel}}};vr.RequesterBuilder=Wv;var $v={onReceiveMetadata:(r,e)=>{e(r)},onReceiveMessage:(r,e)=>{e(r)},onReceiveStatus:(r,e)=>{e(r)}},Uc={start:(r,e,t)=>{t(r,e)},sendMessage:(r,e)=>{e(r)},halfClose:r=>{r()},cancel:r=>{r()}},Jv=class{constructor(e,t){var o,s,a,i;this.nextCall=e,this.processingMetadata=!1,this.pendingMessageContext=null,this.processingMessage=!1,this.pendingHalfClose=!1,t?this.requester={start:(o=t.start)!==null&&o!==void 0?o:Uc.start,sendMessage:(s=t.sendMessage)!==null&&s!==void 0?s:Uc.sendMessage,halfClose:(a=t.halfClose)!==null&&a!==void 0?a:Uc.halfClose,cancel:(i=t.cancel)!==null&&i!==void 0?i:Uc.cancel}:this.requester=Uc}cancelWithStatus(e,t){this.requester.cancel(()=>{this.nextCall.cancelWithStatus(e,t)})}getPeer(){return this.nextCall.getPeer()}processPendingMessage(){this.pendingMessageContext&&(this.nextCall.sendMessageWithContext(this.pendingMessageContext,this.pendingMessage),this.pendingMessageContext=null,this.pendingMessage=null)}processPendingHalfClose(){this.pendingHalfClose&&this.nextCall.halfClose()}start(e,t){var o,s,a,i,n,l;let c={onReceiveMetadata:(s=(o=t==null?void 0:t.onReceiveMetadata)===null||o===void 0?void 0:o.bind(t))!==null&&s!==void 0?s:u=>{},onReceiveMessage:(i=(a=t==null?void 0:t.onReceiveMessage)===null||a===void 0?void 0:a.bind(t))!==null&&i!==void 0?i:u=>{},onReceiveStatus:(l=(n=t==null?void 0:t.onReceiveStatus)===null||n===void 0?void 0:n.bind(t))!==null&&l!==void 0?l:u=>{}};this.processingMetadata=!0,this.requester.start(e,c,(u,f)=>{var _,m,O;this.processingMetadata=!1;let y;if((0,j3.isInterceptingListener)(f))y=f;else{let A={onReceiveMetadata:(_=f.onReceiveMetadata)!==null&&_!==void 0?_:$v.onReceiveMetadata,onReceiveMessage:(m=f.onReceiveMessage)!==null&&m!==void 0?m:$v.onReceiveMessage,onReceiveStatus:(O=f.onReceiveStatus)!==null&&O!==void 0?O:$v.onReceiveStatus};y=new j3.InterceptingListenerImpl(A,c)}this.nextCall.start(u,y),this.processPendingMessage(),this.processPendingHalfClose()})}sendMessageWithContext(e,t){this.processingMessage=!0,this.requester.sendMessage(t,o=>{this.processingMessage=!1,this.processingMetadata?(this.pendingMessageContext=e,this.pendingMessage=t):(this.nextCall.sendMessageWithContext(e,o),this.processPendingHalfClose())})}sendMessage(e){this.sendMessageWithContext({},e)}startRead(){this.nextCall.startRead()}halfClose(){this.requester.halfClose(()=>{this.processingMetadata||this.processingMessage?this.pendingHalfClose=!0:this.nextCall.halfClose()})}};vr.InterceptingCall=Jv;function yue(r,e,t){var o,s;let a=(o=t.deadline)!==null&&o!==void 0?o:1/0,i=t.host,n=(s=t.parent)!==null&&s!==void 0?s:null,l=t.propagate_flags,c=t.credentials,u=r.createCall(e,a,i,n,l);return c&&u.setCredentials(c),u}var r_=class{constructor(e,t){this.call=e,this.methodDefinition=t}cancelWithStatus(e,t){this.call.cancelWithStatus(e,t)}getPeer(){return this.call.getPeer()}sendMessageWithContext(e,t){let o;try{o=this.methodDefinition.requestSerialize(t)}catch(s){this.call.cancelWithStatus(Y3.Status.INTERNAL,`Request message serialization failure: ${(0,K3.getErrorMessage)(s)}`);return}this.call.sendMessageWithContext(e,o)}sendMessage(e){this.sendMessageWithContext({},e)}start(e,t){let o=null;this.call.start(e,{onReceiveMetadata:s=>{var a;(a=t==null?void 0:t.onReceiveMetadata)===null||a===void 0||a.call(t,s)},onReceiveMessage:s=>{var a;let i;try{i=this.methodDefinition.responseDeserialize(s)}catch(n){o={code:Y3.Status.INTERNAL,details:`Response message parsing error: ${(0,K3.getErrorMessage)(n)}`,metadata:new vue.Metadata},this.call.cancelWithStatus(o.code,o.details);return}(a=t==null?void 0:t.onReceiveMessage)===null||a===void 0||a.call(t,i)},onReceiveStatus:s=>{var a,i;o?(a=t==null?void 0:t.onReceiveStatus)===null||a===void 0||a.call(t,o):(i=t==null?void 0:t.onReceiveStatus)===null||i===void 0||i.call(t,s)}})}startRead(){this.call.startRead()}halfClose(){this.call.halfClose()}},Qv=class extends r_{constructor(e,t){super(e,t)}start(e,t){var o,s;let a=!1,i={onReceiveMetadata:(s=(o=t==null?void 0:t.onReceiveMetadata)===null||o===void 0?void 0:o.bind(t))!==null&&s!==void 0?s:n=>{},onReceiveMessage:n=>{var l;a=!0,(l=t==null?void 0:t.onReceiveMessage)===null||l===void 0||l.call(t,n)},onReceiveStatus:n=>{var l,c;a||(l=t==null?void 0:t.onReceiveMessage)===null||l===void 0||l.call(t,null),(c=t==null?void 0:t.onReceiveStatus)===null||c===void 0||c.call(t,n)}};super.start(e,i),this.call.startRead()}},Zv=class extends r_{};function Oue(r,e,t){let o=yue(r,t.path,e);return t.responseStream?new Zv(o,t):new Qv(o,t)}function Aue(r,e,t,o){if(r.clientInterceptors.length>0&&r.clientInterceptorProviders.length>0)throw new kc("Both interceptors and interceptor_providers were passed as options to the client constructor. Only one of these is allowed.");if(r.callInterceptors.length>0&&r.callInterceptorProviders.length>0)throw new kc("Both interceptors and interceptor_providers were passed as call options. Only one of these is allowed.");let s=[];r.callInterceptors.length>0||r.callInterceptorProviders.length>0?s=[].concat(r.callInterceptors,r.callInterceptorProviders.map(n=>n(e))).filter(n=>n):s=[].concat(r.clientInterceptors,r.clientInterceptorProviders.map(n=>n(e))).filter(n=>n);let a=Object.assign({},t,{method_definition:e});return s.reduceRight((n,l)=>c=>l(c,n),n=>Oue(o,n,e))(a)}});var ny=T(i_=>{"use strict";Object.defineProperty(i_,"__esModule",{value:!0});i_.Client=void 0;var Kr=H3(),Rue=iy(),Nue=tr(),ni=ue(),sa=ht(),n_=ey(),yr=Symbol(),aa=Symbol(),la=Symbol(),mn=Symbol();function ty(r){return typeof r=="function"}function ca(r){var e;return((e=r.stack)===null||e===void 0?void 0:e.split(` +`).slice(1).join(` +`))||"no stack trace available"}var ry=class{constructor(e,t,o={}){var s,a;if(o=Object.assign({},o),this[aa]=(s=o.interceptors)!==null&&s!==void 0?s:[],delete o.interceptors,this[la]=(a=o.interceptor_providers)!==null&&a!==void 0?a:[],delete o.interceptor_providers,this[aa].length>0&&this[la].length>0)throw new Error("Both interceptors and interceptor_providers were passed as options to the client constructor. Only one of these is allowed.");if(this[mn]=o.callInvocationTransformer,delete o.callInvocationTransformer,o.channelOverride)this[yr]=o.channelOverride;else if(o.channelFactoryOverride){let i=o.channelFactoryOverride;delete o.channelFactoryOverride,this[yr]=i(e,t,o)}else this[yr]=new Rue.ChannelImplementation(e,t,o)}close(){this[yr].close()}getChannel(){return this[yr]}waitForReady(e,t){let o=s=>{if(s){t(new Error("Failed to connect before the deadline"));return}let a;try{a=this[yr].getConnectivityState(!0)}catch{t(new Error("The channel has been closed"));return}if(a===Nue.ConnectivityState.READY)t();else try{this[yr].watchConnectivityState(a,e,o)}catch{t(new Error("The channel has been closed"))}};setImmediate(o)}checkOptionalUnaryResponseArguments(e,t,o){if(ty(e))return{metadata:new sa.Metadata,options:{},callback:e};if(ty(t))return e instanceof sa.Metadata?{metadata:e,options:{},callback:t}:{metadata:new sa.Metadata,options:e,callback:t};if(!(e instanceof sa.Metadata&&t instanceof Object&&ty(o)))throw new Error("Incorrect arguments passed");return{metadata:e,options:t,callback:o}}makeUnaryRequest(e,t,o,s,a,i,n){var l,c;let u=this.checkOptionalUnaryResponseArguments(a,i,n),f={path:e,requestStream:!1,responseStream:!1,requestSerialize:t,responseDeserialize:o},_={argument:s,metadata:u.metadata,call:new Kr.ClientUnaryCallImpl,channel:this[yr],methodDefinition:f,callOptions:u.options,callback:u.callback};this[mn]&&(_=this[mn](_));let m=_.call,O={clientInterceptors:this[aa],clientInterceptorProviders:this[la],callInterceptors:(l=_.callOptions.interceptors)!==null&&l!==void 0?l:[],callInterceptorProviders:(c=_.callOptions.interceptor_providers)!==null&&c!==void 0?c:[]},y=(0,n_.getInterceptingCall)(O,_.methodDefinition,_.callOptions,_.channel);m.call=y;let A=null,I=!1,M=new Error;return y.start(_.metadata,{onReceiveMetadata:F=>{m.emit("metadata",F)},onReceiveMessage(F){A!==null&&y.cancelWithStatus(ni.Status.UNIMPLEMENTED,"Too many responses received"),A=F},onReceiveStatus(F){if(!I){if(I=!0,F.code===ni.Status.OK)if(A===null){let N=ca(M);_.callback((0,Kr.callErrorFromStatus)({code:ni.Status.UNIMPLEMENTED,details:"No message received",metadata:F.metadata},N))}else _.callback(null,A);else{let N=ca(M);_.callback((0,Kr.callErrorFromStatus)(F,N))}M=null,m.emit("status",F)}}}),y.sendMessage(s),y.halfClose(),m}makeClientStreamRequest(e,t,o,s,a,i){var n,l;let c=this.checkOptionalUnaryResponseArguments(s,a,i),u={path:e,requestStream:!0,responseStream:!1,requestSerialize:t,responseDeserialize:o},f={metadata:c.metadata,call:new Kr.ClientWritableStreamImpl(t),channel:this[yr],methodDefinition:u,callOptions:c.options,callback:c.callback};this[mn]&&(f=this[mn](f));let _=f.call,m={clientInterceptors:this[aa],clientInterceptorProviders:this[la],callInterceptors:(n=f.callOptions.interceptors)!==null&&n!==void 0?n:[],callInterceptorProviders:(l=f.callOptions.interceptor_providers)!==null&&l!==void 0?l:[]},O=(0,n_.getInterceptingCall)(m,f.methodDefinition,f.callOptions,f.channel);_.call=O;let y=null,A=!1,I=new Error;return O.start(f.metadata,{onReceiveMetadata:M=>{_.emit("metadata",M)},onReceiveMessage(M){y!==null&&O.cancelWithStatus(ni.Status.UNIMPLEMENTED,"Too many responses received"),y=M,O.startRead()},onReceiveStatus(M){if(!A){if(A=!0,M.code===ni.Status.OK)if(y===null){let F=ca(I);f.callback((0,Kr.callErrorFromStatus)({code:ni.Status.UNIMPLEMENTED,details:"No message received",metadata:M.metadata},F))}else f.callback(null,y);else{let F=ca(I);f.callback((0,Kr.callErrorFromStatus)(M,F))}I=null,_.emit("status",M)}}}),_}checkMetadataAndOptions(e,t){let o,s;return e instanceof sa.Metadata?(o=e,t?s=t:s={}):(e?s=e:s={},o=new sa.Metadata),{metadata:o,options:s}}makeServerStreamRequest(e,t,o,s,a,i){var n,l;let c=this.checkMetadataAndOptions(a,i),u={path:e,requestStream:!1,responseStream:!0,requestSerialize:t,responseDeserialize:o},f={argument:s,metadata:c.metadata,call:new Kr.ClientReadableStreamImpl(o),channel:this[yr],methodDefinition:u,callOptions:c.options};this[mn]&&(f=this[mn](f));let _=f.call,m={clientInterceptors:this[aa],clientInterceptorProviders:this[la],callInterceptors:(n=f.callOptions.interceptors)!==null&&n!==void 0?n:[],callInterceptorProviders:(l=f.callOptions.interceptor_providers)!==null&&l!==void 0?l:[]},O=(0,n_.getInterceptingCall)(m,f.methodDefinition,f.callOptions,f.channel);_.call=O;let y=!1,A=new Error;return O.start(f.metadata,{onReceiveMetadata(I){_.emit("metadata",I)},onReceiveMessage(I){_.push(I)},onReceiveStatus(I){if(!y){if(y=!0,_.push(null),I.code!==ni.Status.OK){let M=ca(A);_.emit("error",(0,Kr.callErrorFromStatus)(I,M))}A=null,_.emit("status",I)}}}),O.sendMessage(s),O.halfClose(),_}makeBidiStreamRequest(e,t,o,s,a){var i,n;let l=this.checkMetadataAndOptions(s,a),c={path:e,requestStream:!0,responseStream:!0,requestSerialize:t,responseDeserialize:o},u={metadata:l.metadata,call:new Kr.ClientDuplexStreamImpl(t,o),channel:this[yr],methodDefinition:c,callOptions:l.options};this[mn]&&(u=this[mn](u));let f=u.call,_={clientInterceptors:this[aa],clientInterceptorProviders:this[la],callInterceptors:(i=u.callOptions.interceptors)!==null&&i!==void 0?i:[],callInterceptorProviders:(n=u.callOptions.interceptor_providers)!==null&&n!==void 0?n:[]},m=(0,n_.getInterceptingCall)(_,u.methodDefinition,u.callOptions,u.channel);f.call=m;let O=!1,y=new Error;return m.start(u.metadata,{onReceiveMetadata(A){f.emit("metadata",A)},onReceiveMessage(A){f.push(A)},onReceiveStatus(A){if(!O){if(O=!0,f.push(null),A.code!==ni.Status.OK){let I=ca(y);f.emit("error",(0,Kr.callErrorFromStatus)(A,I))}y=null,f.emit("status",A)}}}),f}};i_.Client=ry});var sy=T(o_=>{"use strict";Object.defineProperty(o_,"__esModule",{value:!0});o_.makeClientConstructor=z3;o_.loadPackageDefinition=Lue;var Bc=ny(),Cue={unary:Bc.Client.prototype.makeUnaryRequest,server_stream:Bc.Client.prototype.makeServerStreamRequest,client_stream:Bc.Client.prototype.makeClientStreamRequest,bidi:Bc.Client.prototype.makeBidiStreamRequest};function oy(r){return["__proto__","prototype","constructor"].includes(r)}function z3(r,e,t){t||(t={});class o extends Bc.Client{}return Object.keys(r).forEach(s=>{if(oy(s))return;let a=r[s],i;if(typeof s=="string"&&s.charAt(0)==="$")throw new Error("Method names cannot start with $");a.requestStream?a.responseStream?i="bidi":i="client_stream":a.responseStream?i="server_stream":i="unary";let n=a.requestSerialize,l=a.responseDeserialize,c=Pue(Cue[i],a.path,n,l);o.prototype[s]=c,Object.assign(o.prototype[s],a),a.originalName&&!oy(a.originalName)&&(o.prototype[a.originalName]=o.prototype[s])}),o.service=r,o.serviceName=e,o}function Pue(r,e,t,o){return function(...s){return r.call(this,e,t,o,...s)}}function Iue(r){return"format"in r}function Lue(r){let e={};for(let t in r)if(Object.prototype.hasOwnProperty.call(r,t)){let o=r[t],s=t.split(".");if(s.some(n=>oy(n)))continue;let a=s[s.length-1],i=e;for(let n of s.slice(0,-1))i[n]||(i[n]={}),i=i[n];Iue(o)?i[a]=o:i[a]=z3(o,a,{})}return e}});var TH=T((VVe,mH)=>{var bue=1/0,xue="[object Symbol]",Mue=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,wue=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a_="\\ud800-\\udfff",tH="\\u0300-\\u036f\\ufe20-\\ufe23",rH="\\u20d0-\\u20f0",nH="\\u2700-\\u27bf",iH="a-z\\xdf-\\xf6\\xf8-\\xff",Due="\\xac\\xb1\\xd7\\xf7",Uue="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",kue="\\u2000-\\u206f",Bue=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",oH="A-Z\\xc0-\\xd6\\xd8-\\xde",sH="\\ufe0e\\ufe0f",aH=Due+Uue+kue+Bue,ly="['\u2019]",Vue="["+a_+"]",$3="["+aH+"]",s_="["+tH+rH+"]",lH="\\d+",Fue="["+nH+"]",cH="["+iH+"]",uH="[^"+a_+aH+lH+nH+iH+oH+"]",ay="\\ud83c[\\udffb-\\udfff]",Gue="(?:"+s_+"|"+ay+")",fH="[^"+a_+"]",cy="(?:\\ud83c[\\udde6-\\uddff]){2}",uy="[\\ud800-\\udbff][\\udc00-\\udfff]",ua="["+oH+"]",pH="\\u200d",X3="(?:"+cH+"|"+uH+")",Hue="(?:"+ua+"|"+uH+")",W3="(?:"+ly+"(?:d|ll|m|re|s|t|ve))?",J3="(?:"+ly+"(?:D|LL|M|RE|S|T|VE))?",dH=Gue+"?",hH="["+sH+"]?",que="(?:"+pH+"(?:"+[fH,cy,uy].join("|")+")"+hH+dH+")*",_H=hH+dH+que,jue="(?:"+[Fue,cy,uy].join("|")+")"+_H,Yue="(?:"+[fH+s_+"?",s_,cy,uy,Vue].join("|")+")",Kue=RegExp(ly,"g"),zue=RegExp(s_,"g"),$ue=RegExp(ay+"(?="+ay+")|"+Yue+_H,"g"),Xue=RegExp([ua+"?"+cH+"+"+W3+"(?="+[$3,ua,"$"].join("|")+")",Hue+"+"+J3+"(?="+[$3,ua+X3,"$"].join("|")+")",ua+"?"+X3+"+"+W3,ua+"+"+J3,lH,jue].join("|"),"g"),Wue=RegExp("["+pH+a_+tH+rH+sH+"]"),Jue=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Que={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"ss"},Zue=typeof global=="object"&&global&&global.Object===Object&&global,efe=typeof self=="object"&&self&&self.Object===Object&&self,tfe=Zue||efe||Function("return this")();function rfe(r,e,t,o){var s=-1,a=r?r.length:0;for(o&&a&&(t=r[++s]);++ss?0:s+e),t=t>s?s:t,t<0&&(t+=s),s=e>t?0:t-e>>>0,e>>>=0;for(var a=Array(s);++o=o?r:dfe(r,e,t)}function Efe(r){return function(e){e=l_(e);var t=EH(e)?lfe(e):void 0,o=t?t[0]:e.charAt(0),s=t?_fe(t,1).join(""):e.slice(1);return o[r]()+s}}function mfe(r){return function(e){return rfe(Afe(yfe(e).replace(Kue,"")),r,"")}}function Tfe(r){return!!r&&typeof r=="object"}function Sfe(r){return typeof r=="symbol"||Tfe(r)&&pfe.call(r)==xue}function l_(r){return r==null?"":hfe(r)}var gfe=mfe(function(r,e,t){return e=e.toLowerCase(),r+(t?vfe(e):e)});function vfe(r){return Ofe(l_(r).toLowerCase())}function yfe(r){return r=l_(r),r&&r.replace(wue,sfe).replace(zue,"")}var Ofe=Efe("toUpperCase");function Afe(r,e,t){return r=l_(r),e=t?void 0:e,e===void 0?afe(r)?ufe(r):ife(r):r.match(e)||[]}mH.exports=gfe});var gH=T((FVe,SH)=>{"use strict";SH.exports=fy;function fy(r,e){typeof r=="string"&&(e=r,r=void 0);var t=[];function o(a){if(typeof a!="string"){var i=s();if(fy.verbose&&console.log("codegen: "+i),i="return "+i,a){for(var n=Object.keys(a),l=new Array(n.length+1),c=new Array(n.length),u=0;u{"use strict";vH.exports=Vc;var Rfe=Xg(),Nfe=Wg(),py=Nfe("fs");function Vc(r,e,t){return typeof e=="function"?(t=e,e={}):e||(e={}),t?!e.xhr&&py&&py.readFile?py.readFile(r,function(s,a){return s&&typeof XMLHttpRequest<"u"?Vc.xhr(r,e,t):s?t(s):t(null,e.binary?a:a.toString("utf8"))}):Vc.xhr(r,e,t):Rfe(Vc,this,r,e)}Vc.xhr=function(e,t,o){var s=new XMLHttpRequest;s.onreadystatechange=function(){if(s.readyState===4){if(s.status!==0&&s.status!==200)return o(Error("status "+s.status));if(t.binary){var i=s.response;if(!i){i=[];for(var n=0;n{"use strict";var hy=AH,OH=hy.isAbsolute=function(e){return/^(?:\/|\w+:)/.test(e)},dy=hy.normalize=function(e){e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/");var t=e.split("/"),o=OH(e),s="";o&&(s=t.shift()+"/");for(var a=0;a0&&t[a-1]!==".."?t.splice(--a,2):o?t.splice(a,1):++a:t[a]==="."?t.splice(a,1):++a;return s+t.join("/")};hy.resolve=function(e,t,o){return o||(t=dy(t)),OH(t)?t:(o||(e=dy(e)),(e=e.replace(/(?:\/|^)[^/]+$/,"")).length?dy(e+"/"+t):t)}});var pa=T((qVe,PH)=>{"use strict";PH.exports=pe;var c_=oi();((pe.prototype=Object.create(c_.prototype)).constructor=pe).className="Namespace";var _y=ii(),u_=rt(),Cfe=fo(),co,fa,uo;pe.fromJSON=function(e,t){return new pe(e,t.options).addJSON(t.nested)};function NH(r,e){if(r&&r.length){for(var t={},o=0;ot)return!0}return!1};pe.isReservedName=function(e,t){if(e){for(var o=0;o0;){var s=e.shift();if(o.nested&&o.nested[s]){if(o=o.nested[s],!(o instanceof pe))throw Error("path conflicts with non-namespace objects")}else o.add(o=new pe(s))}return t&&o.addJSON(t),o};pe.prototype.resolveAll=function(){if(!this._needsRecursiveResolve)return this;this._resolveFeaturesRecursive(this._edition);var e=this.nestedArray,t=0;for(this.resolve();t{t._resolveFeaturesRecursive(e)}),this):this};pe.prototype.lookup=function(e,t,o){if(typeof t=="boolean"?(o=t,t=void 0):t&&!Array.isArray(t)&&(t=[t]),u_.isString(e)&&e.length){if(e===".")return this.root;e=e.split(".")}else if(!e.length)return this;var s=e.join(".");if(e[0]==="")return this.root.lookup(e.slice(1),t);var a=this.root._fullyQualifiedObjects&&this.root._fullyQualifiedObjects["."+s];if(a&&(!t||t.indexOf(a.constructor)>-1)||(a=this._lookupImpl(e,s),a&&(!t||t.indexOf(a.constructor)>-1)))return a;if(o)return null;for(var i=this;i.parent;){if(a=i.parent._lookupImpl(e,s),a&&(!t||t.indexOf(a.constructor)>-1))return a;i=i.parent}return null};pe.prototype._lookupImpl=function(e,t){if(Object.prototype.hasOwnProperty.call(this._lookupCache,t))return this._lookupCache[t];var o=this.get(e[0]),s=null;if(o)e.length===1?s=o:o instanceof pe&&(e=e.slice(1),s=o._lookupImpl(e,e.join(".")));else for(var a=0;a{"use strict";IH.exports=Tn;var Ey=ii();((Tn.prototype=Object.create(Ey.prototype)).constructor=Tn).className="MapField";var Pfe=po(),Fc=rt();function Tn(r,e,t,o,s,a){if(Ey.call(this,r,e,o,void 0,void 0,s,a),!Fc.isString(t))throw TypeError("keyType must be a string");this.keyType=t,this.resolvedKeyType=null,this.map=!0}Tn.fromJSON=function(e,t){return new Tn(e,t.id,t.keyType,t.type,t.options,t.comment)};Tn.prototype.toJSON=function(e){var t=e?!!e.keepComments:!1;return Fc.toObject(["keyType",this.keyType,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:void 0])};Tn.prototype.resolve=function(){if(this.resolved)return this;if(Pfe.mapKey[this.keyType]===void 0)throw Error("invalid key type: "+this.keyType);return Ey.prototype.resolve.call(this)};Tn.d=function(e,t,o){return typeof o=="function"?o=Fc.decorateType(o).name:o&&typeof o=="object"&&(o=Fc.decorateEnum(o).name),function(a,i){Fc.decorateType(a.constructor).add(new Tn(i,e,t,o))}}});var p_=T((YVe,LH)=>{"use strict";LH.exports=ho;var my=oi();((ho.prototype=Object.create(my.prototype)).constructor=ho).className="Method";var da=rt();function ho(r,e,t,o,s,a,i,n,l){if(da.isObject(s)?(i=s,s=a=void 0):da.isObject(a)&&(i=a,a=void 0),!(e===void 0||da.isString(e)))throw TypeError("type must be a string");if(!da.isString(t))throw TypeError("requestType must be a string");if(!da.isString(o))throw TypeError("responseType must be a string");my.call(this,r,i),this.type=e||"rpc",this.requestType=t,this.requestStream=s?!0:void 0,this.responseType=o,this.responseStream=a?!0:void 0,this.resolvedRequestType=null,this.resolvedResponseType=null,this.comment=n,this.parsedOptions=l}ho.fromJSON=function(e,t){return new ho(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options,t.comment,t.parsedOptions)};ho.prototype.toJSON=function(e){var t=e?!!e.keepComments:!1;return da.toObject(["type",this.type!=="rpc"&&this.type||void 0,"requestType",this.requestType,"requestStream",this.requestStream,"responseType",this.responseType,"responseStream",this.responseStream,"options",this.options,"comment",t?this.comment:void 0,"parsedOptions",this.parsedOptions])};ho.prototype.resolve=function(){return this.resolved?this:(this.resolvedRequestType=this.parent.lookupType(this.requestType),this.resolvedResponseType=this.parent.lookupType(this.responseType),my.prototype.resolve.call(this))}});var d_=T((KVe,xH)=>{"use strict";xH.exports=Vt;var Sn=pa();((Vt.prototype=Object.create(Sn.prototype)).constructor=Vt).className="Service";var Ty=p_(),Gc=rt(),Ife=lv();function Vt(r,e){Sn.call(this,r,e),this.methods={},this._methodsArray=null}Vt.fromJSON=function(e,t){var o=new Vt(e,t.options);if(t.methods)for(var s=Object.keys(t.methods),a=0;a{t._resolveFeaturesRecursive(e)}),this):this};Vt.prototype.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);return e instanceof Ty?(this.methods[e.name]=e,e.parent=this,bH(this)):Sn.prototype.add.call(this,e)};Vt.prototype.remove=function(e){if(e instanceof Ty){if(this.methods[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.methods[e.name],e.parent=null,bH(this)}return Sn.prototype.remove.call(this,e)};Vt.prototype.create=function(e,t,o){for(var s=new Ife.Service(e,t,o),a=0,i;a{"use strict";MH.exports=zr;var Lfe=Fr();function zr(r){if(r)for(var e=Object.keys(r),t=0;t{"use strict";DH.exports=Mfe;var bfe=Or(),gn=po(),wH=rt();function xfe(r){return"missing required '"+r.name+"'"}function Mfe(r){for(var e=wH.codegen(["r","l","e"],r.name+"$decode")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new this.ctor"+(r.fieldsArray.filter(function(n){return n.map}).length?",k,value":""))("while(r.pos>>3){"),t=0;t>>3){")("case 1: k=r.%s(); break",o.keyType)("case 2:"),gn.basic[s]===void 0?e("value=types[%i].decode(r,r.uint32())",t):e("value=r.%s()",s),e("break")("default:")("r.skipType(tag2&7)")("break")("}")("}"),gn.long[o.keyType]!==void 0?e('%s[typeof k==="object"?util.longToHash(k):k]=value',a):e("%s[k]=value",a)):o.repeated?(e("if(!(%s&&%s.length))",a,a)("%s=[]",a),gn.packed[s]!==void 0&&e("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos{"use strict";UH.exports=Ufe;var wfe=Or(),gy=rt();function nr(r,e){return r.name+": "+e+(r.repeated&&e!=="array"?"[]":r.map&&e!=="object"?"{k:"+r.keyType+"}":"")+" expected"}function vy(r,e,t,o){if(e.resolvedType)if(e.resolvedType instanceof wfe){r("switch(%s){",o)("default:")("return%j",nr(e,"enum value"));for(var s=Object.keys(e.resolvedType.values),a=0;a{"use strict";var kH=BH,Hc=Or(),$r=rt();function Oy(r,e,t,o){var s=!1;if(e.resolvedType)if(e.resolvedType instanceof Hc){r("switch(d%s){",o);for(var a=e.resolvedType.values,i=Object.keys(a),n=0;n>>0",o,o);break;case"int32":case"sint32":case"sfixed32":r("m%s=d%s|0",o,o);break;case"uint64":l=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":r("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",o,o,l)('else if(typeof d%s==="string")',o)("m%s=parseInt(d%s,10)",o,o)('else if(typeof d%s==="number")',o)("m%s=d%s",o,o)('else if(typeof d%s==="object")',o)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",o,o,o,l?"true":"");break;case"bytes":r('if(typeof d%s==="string")',o)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",o,o,o)("else if(d%s.length >= 0)",o)("m%s=d%s",o,o);break;case"string":r("m%s=String(d%s)",o,o);break;case"bool":r("m%s=Boolean(d%s)",o,o);break}}return r}kH.fromObject=function(e){var t=e.fieldsArray,o=$r.codegen(["d"],e.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!t.length)return o("return new this.ctor");o("var m=new this.ctor");for(var s=0;s>>0,m%s.high>>>0).toNumber(%s):m%s",o,o,o,o,s?"true":"",o);break;case"bytes":r("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",o,o,o,o,o);break;default:r("d%s=m%s",o,o);break}}return r}kH.toObject=function(e){var t=e.fieldsArray.slice().sort($r.compareFieldsById);if(!t.length)return $r.codegen()("return {}");for(var o=$r.codegen(["m","o"],e.name+"$toObject")("if(!o)")("o={}")("var d={}"),s=[],a=[],i=[],n=0;n{"use strict";var kfe=VH,Bfe=h_();kfe[".google.protobuf.Any"]={fromObject:function(r){if(r&&r["@type"]){var e=r["@type"].substring(r["@type"].lastIndexOf("/")+1),t=this.lookup(e);if(t){var o=r["@type"].charAt(0)==="."?r["@type"].slice(1):r["@type"];return o.indexOf("/")===-1&&(o="/"+o),this.create({type_url:o,value:t.encode(t.fromObject(r)).finish()})}}return this.fromObject(r)},toObject:function(r,e){var t="type.googleapis.com/",o="",s="";if(e&&e.json&&r.type_url&&r.value){s=r.type_url.substring(r.type_url.lastIndexOf("/")+1),o=r.type_url.substring(0,r.type_url.lastIndexOf("/")+1);var a=this.lookup(s);a&&(r=a.decode(r.value))}if(!(r instanceof this.ctor)&&r instanceof Bfe){var i=r.$type.toObject(r,e),n=r.$type.fullName[0]==="."?r.$type.fullName.slice(1):r.$type.fullName;return o===""&&(o=t),s=o+n,i["@type"]=s,i}return this.toObject(r,e)}}});var m_=T((QVe,GH)=>{"use strict";GH.exports=Re;var ir=pa();((Re.prototype=Object.create(ir.prototype)).constructor=Re).className="Type";var Vfe=Or(),Iy=fo(),__=ii(),Ffe=f_(),Gfe=d_(),Cy=h_(),Py=Nh(),Hfe=Ah(),_t=rt(),qfe=Ly(),jfe=Sy(),Yfe=yy(),FH=Ry(),Kfe=Ny();function Re(r,e){ir.call(this,r,e),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this._fieldsById=null,this._fieldsArray=null,this._oneofsArray=null,this._ctor=null}Object.defineProperties(Re.prototype,{fieldsById:{get:function(){if(this._fieldsById)return this._fieldsById;this._fieldsById={};for(var r=Object.keys(this.fields),e=0;e{t._resolveFeatures(e)}),this.fieldsArray.forEach(t=>{t._resolveFeatures(e)}),this):this};Re.prototype.get=function(e){return this.fields[e]||this.oneofs&&this.oneofs[e]||this.nested&&this.nested[e]||null};Re.prototype.add=function(e){if(this.get(e.name))throw Error("duplicate name '"+e.name+"' in "+this);if(e instanceof __&&e.extend===void 0){if(this._fieldsById?this._fieldsById[e.id]:this.fieldsById[e.id])throw Error("duplicate id "+e.id+" in "+this);if(this.isReservedId(e.id))throw Error("id "+e.id+" is reserved in "+this);if(this.isReservedName(e.name))throw Error("name '"+e.name+"' is reserved in "+this);return e.parent&&e.parent.remove(e),this.fields[e.name]=e,e.message=this,e.onAdd(this),E_(this)}return e instanceof Iy?(this.oneofs||(this.oneofs={}),this.oneofs[e.name]=e,e.onAdd(this),E_(this)):ir.prototype.add.call(this,e)};Re.prototype.remove=function(e){if(e instanceof __&&e.extend===void 0){if(!this.fields||this.fields[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.fields[e.name],e.parent=null,e.onRemove(this),E_(this)}if(e instanceof Iy){if(!this.oneofs||this.oneofs[e.name]!==e)throw Error(e+" is not a member of "+this);return delete this.oneofs[e.name],e.parent=null,e.onRemove(this),E_(this)}return ir.prototype.remove.call(this,e)};Re.prototype.isReservedId=function(e){return ir.isReservedId(this.reserved,e)};Re.prototype.isReservedName=function(e){return ir.isReservedName(this.reserved,e)};Re.prototype.create=function(e){return new this.ctor(e)};Re.prototype.setup=function(){for(var e=this.fullName,t=[],o=0;o{"use strict";jH.exports=Ft;var g_=pa();((Ft.prototype=Object.create(g_.prototype)).constructor=Ft).className="Root";var T_=ii(),by=Or(),zfe=fo(),si=rt(),xy,My,qc;function Ft(r){g_.call(this,"",r),this.deferred=[],this.files=[],this._edition="proto2",this._fullyQualifiedObjects={}}Ft.fromJSON=function(e,t){return t||(t=new Ft),e.options&&t.setOptions(e.options),t.addJSON(e.nested).resolveAll()};Ft.prototype.resolvePath=si.path.resolve;Ft.prototype.fetch=si.fetch;function qH(){}Ft.prototype.load=function r(e,t,o){typeof t=="function"&&(o=t,t=void 0);var s=this;if(!o)return si.asPromise(r,s,e,t);var a=o===qH;function i(m,O){if(o){if(a)throw m;O&&O.resolveAll();var y=o;o=null,y(m,O)}}function n(m){var O=m.lastIndexOf("google/protobuf/");if(O>-1){var y=m.substring(O);if(y in qc)return y}return null}function l(m,O){try{if(si.isString(O)&&O.charAt(0)==="{"&&(O=JSON.parse(O)),!si.isString(O))s.setOptions(O.options).addJSON(O.nested);else{My.filename=m;var y=My(O,s,t),A,I=0;if(y.imports)for(;I-1)){if(s.files.push(m),m in qc){a?l(m,qc[m]):(++u,setTimeout(function(){--u,l(m,qc[m])}));return}if(a){var y;try{y=si.fs.readFileSync(m).toString("utf8")}catch(A){O||i(A);return}l(m,y)}else++u,s.fetch(m,function(A,I){if(--u,!!o){if(A){O?u||i(null,s):i(A);return}l(m,I)}})}}var u=0;si.isString(e)&&(e=[e]);for(var f=0,_;f-1&&this.deferred.splice(t,1)}}else if(e instanceof by)S_.test(e.name)&&delete e.parent[e.name];else if(e instanceof g_){for(var o=0;o{"use strict";var He=KH.exports=Fr(),YH=cv(),wy,Dy;He.codegen=gH();He.fetch=yH();He.path=RH();He.fs=He.inquire("fs");He.toArray=function(e){if(e){for(var t=Object.keys(e),o=new Array(t.length),s=0;s0)i[c]=a(i[c]||{},n,l);else{var u=i[c];if(u&&s)return i;u&&(l=[].concat(u).concat(l)),i[c]=l}return i}if(typeof e!="object")throw TypeError("dst must be an object");if(!t)throw TypeError("path must be specified");return t=t.split("."),a(e,t,o)};Object.defineProperty(He,"decorateRoot",{get:function(){return YH.decorated||(YH.decorated=new(v_()))}})});var po=T(zH=>{"use strict";var jc=zH,Qfe=rt(),Zfe=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes"];function Yc(r,e){var t=0,o={};for(e|=0;t{"use strict";XH.exports=nt;var zc=oi();((nt.prototype=Object.create(zc.prototype)).constructor=nt).className="Field";var $H=Or(),Uy=po(),ze=rt(),Kc,epe=/^required|optional|repeated$/;nt.fromJSON=function(e,t){var o=new nt(e,t.id,t.type,t.rule,t.extend,t.options,t.comment);return t.edition&&(o._edition=t.edition),o._defaultEdition="proto3",o};function nt(r,e,t,o,s,a,i){if(ze.isObject(o)?(i=s,a=o,o=s=void 0):ze.isObject(s)&&(i=a,a=s,s=void 0),zc.call(this,r,a),!ze.isInteger(e)||e<0)throw TypeError("id must be a non-negative integer");if(!ze.isString(t))throw TypeError("type must be a string");if(o!==void 0&&!epe.test(o=o.toString().toLowerCase()))throw TypeError("rule must be a string rule");if(s!==void 0&&!ze.isString(s))throw TypeError("extend must be a string");o==="proto3_optional"&&(o="optional"),this.rule=o&&o!=="optional"?o:void 0,this.type=t,this.id=e,this.extend=s||void 0,this.repeated=o==="repeated",this.map=!1,this.message=null,this.partOf=null,this.typeDefault=null,this.defaultValue=null,this.long=ze.Long?Uy.long[t]!==void 0:!1,this.bytes=t==="bytes",this.resolvedType=null,this.extensionField=null,this.declaringField=null,this.comment=i}Object.defineProperty(nt.prototype,"required",{get:function(){return this._features.field_presence==="LEGACY_REQUIRED"}});Object.defineProperty(nt.prototype,"optional",{get:function(){return!this.required}});Object.defineProperty(nt.prototype,"delimited",{get:function(){return this.resolvedType instanceof Kc&&this._features.message_encoding==="DELIMITED"}});Object.defineProperty(nt.prototype,"packed",{get:function(){return this._features.repeated_field_encoding==="PACKED"}});Object.defineProperty(nt.prototype,"hasPresence",{get:function(){return this.repeated||this.map?!1:this.partOf||this.declaringField||this.extensionField||this._features.field_presence!=="IMPLICIT"}});nt.prototype.setOption=function(e,t,o){return zc.prototype.setOption.call(this,e,t,o)};nt.prototype.toJSON=function(e){var t=e?!!e.keepComments:!1;return ze.toObject(["edition",this._editionToJSON(),"rule",this.rule!=="optional"&&this.rule||void 0,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:void 0])};nt.prototype.resolve=function(){if(this.resolved)return this;if((this.typeDefault=Uy.defaults[this.type])===void 0?(this.resolvedType=(this.declaringField?this.declaringField.parent:this.parent).lookupTypeOrEnum(this.type),this.resolvedType instanceof Kc?this.typeDefault=null:this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]):this.options&&this.options.proto3_optional&&(this.typeDefault=null),this.options&&this.options.default!=null&&(this.typeDefault=this.options.default,this.resolvedType instanceof $H&&typeof this.typeDefault=="string"&&(this.typeDefault=this.resolvedType.values[this.typeDefault])),this.options&&(this.options.packed!==void 0&&this.resolvedType&&!(this.resolvedType instanceof $H)&&delete this.options.packed,Object.keys(this.options).length||(this.options=void 0)),this.long)this.typeDefault=ze.Long.fromNumber(this.typeDefault,this.type.charAt(0)==="u"),Object.freeze&&Object.freeze(this.typeDefault);else if(this.bytes&&typeof this.typeDefault=="string"){var e;ze.base64.test(this.typeDefault)?ze.base64.decode(this.typeDefault,e=ze.newBuffer(ze.base64.length(this.typeDefault)),0):ze.utf8.write(this.typeDefault,e=ze.newBuffer(ze.utf8.length(this.typeDefault)),0),this.typeDefault=e}return this.map?this.defaultValue=ze.emptyObject:this.repeated?this.defaultValue=ze.emptyArray:this.defaultValue=this.typeDefault,this.parent instanceof Kc&&(this.parent.ctor.prototype[this.name]=this.defaultValue),zc.prototype.resolve.call(this)};nt.prototype._inferLegacyProtoFeatures=function(e){if(e!=="proto2"&&e!=="proto3")return{};var t={};if(this.rule==="required"&&(t.field_presence="LEGACY_REQUIRED"),this.parent&&Uy.defaults[this.type]===void 0){var o=this.parent.get(this.type.split(".").pop());o&&o instanceof Kc&&o.group&&(t.message_encoding="DELIMITED")}return this.getOption("packed")===!0?t.repeated_field_encoding="PACKED":this.getOption("packed")===!1&&(t.repeated_field_encoding="EXPANDED"),t};nt.prototype._resolveFeatures=function(e){return zc.prototype._resolveFeatures.call(this,this._edition||e)};nt.d=function(e,t,o,s){return typeof t=="function"?t=ze.decorateType(t).name:t&&typeof t=="object"&&(t=ze.decorateEnum(t).name),function(i,n){ze.decorateType(i.constructor).add(new nt(n,e,t,o,{default:s}))}};nt._configure=function(e){Kc=e}});var fo=T((n2e,QH)=>{"use strict";QH.exports=Gt;var O_=oi();((Gt.prototype=Object.create(O_.prototype)).constructor=Gt).className="OneOf";var WH=ii(),y_=rt();function Gt(r,e,t,o){if(Array.isArray(e)||(t=e,e=void 0),O_.call(this,r,t),!(e===void 0||Array.isArray(e)))throw TypeError("fieldNames must be an Array");this.oneof=e||[],this.fieldsArray=[],this.comment=o}Gt.fromJSON=function(e,t){return new Gt(e,t.oneof,t.options,t.comment)};Gt.prototype.toJSON=function(e){var t=e?!!e.keepComments:!1;return y_.toObject(["options",this.options,"oneof",this.oneof,"comment",t?this.comment:void 0])};function JH(r){if(r.parent)for(var e=0;e-1&&this.oneof.splice(t,1),e.partOf=null,this};Gt.prototype.onAdd=function(e){O_.prototype.onAdd.call(this,e);for(var t=this,o=0;o{"use strict";ZH.exports=ct;ct.className="ReflectionObject";var tpe=fo(),$c=rt(),A_,rpe={enum_type:"OPEN",field_presence:"EXPLICIT",json_format:"ALLOW",message_encoding:"LENGTH_PREFIXED",repeated_field_encoding:"PACKED",utf8_validation:"VERIFY"},npe={enum_type:"CLOSED",field_presence:"EXPLICIT",json_format:"LEGACY_BEST_EFFORT",message_encoding:"LENGTH_PREFIXED",repeated_field_encoding:"EXPANDED",utf8_validation:"NONE"},ipe={enum_type:"OPEN",field_presence:"IMPLICIT",json_format:"ALLOW",message_encoding:"LENGTH_PREFIXED",repeated_field_encoding:"PACKED",utf8_validation:"VERIFY"};function ct(r,e){if(!$c.isString(r))throw TypeError("name must be a string");if(e&&!$c.isObject(e))throw TypeError("options must be an object");this.options=e,this.parsedOptions=null,this.name=r,this._edition=null,this._defaultEdition="proto2",this._features={},this._featuresResolved=!1,this.parent=null,this.resolved=!1,this.comment=null,this.filename=null}Object.defineProperties(ct.prototype,{root:{get:function(){for(var r=this;r.parent!==null;)r=r.parent;return r}},fullName:{get:function(){for(var r=[this.name],e=this.parent;e;)r.unshift(e.name),e=e.parent;return r.join(".")}}});ct.prototype.toJSON=function(){throw Error()};ct.prototype.onAdd=function(e){this.parent&&this.parent!==e&&this.parent.remove(this),this.parent=e,this.resolved=!1;var t=e.root;t instanceof A_&&t._handleAdd(this)};ct.prototype.onRemove=function(e){var t=e.root;t instanceof A_&&t._handleRemove(this),this.parent=null,this.resolved=!1};ct.prototype.resolve=function(){return this.resolved?this:(this.root instanceof A_&&(this.resolved=!0),this)};ct.prototype._resolveFeaturesRecursive=function(e){return this._resolveFeatures(this._edition||e)};ct.prototype._resolveFeatures=function(e){if(!this._featuresResolved){var t={};if(!e)throw new Error("Unknown edition for "+this.fullName);var o=Object.assign(this.options?Object.assign({},this.options.features):{},this._inferLegacyProtoFeatures(e));if(this._edition){if(e==="proto2")t=Object.assign({},npe);else if(e==="proto3")t=Object.assign({},ipe);else if(e==="2023")t=Object.assign({},rpe);else throw new Error("Unknown edition: "+e);this._features=Object.assign(t,o||{}),this._featuresResolved=!0;return}if(this.partOf instanceof tpe){var s=Object.assign({},this.partOf._features);this._features=Object.assign(s,o||{})}else if(!this.declaringField)if(this.parent){var a=Object.assign({},this.parent._features);this._features=Object.assign(a,o||{})}else throw new Error("Unable to find a parent for "+this.fullName);this.extensionField&&(this.extensionField._features=this._features),this._featuresResolved=!0}};ct.prototype._inferLegacyProtoFeatures=function(){return{}};ct.prototype.getOption=function(e){if(this.options)return this.options[e]};ct.prototype.setOption=function(e,t,o){return this.options||(this.options={}),/^features\./.test(e)?$c.setProperty(this.options,e,t,o):(!o||this.options[e]===void 0)&&(this.getOption(e)!==t&&(this.resolved=!1),this.options[e]=t),this};ct.prototype.setParsedOption=function(e,t,o){this.parsedOptions||(this.parsedOptions=[]);var s=this.parsedOptions;if(o){var a=s.find(function(l){return Object.prototype.hasOwnProperty.call(l,e)});if(a){var i=a[e];$c.setProperty(i,o,t)}else a={},a[e]=$c.setProperty({},o,t),s.push(a)}else{var n={};n[e]=t,s.push(n)}return this};ct.prototype.setOptions=function(e,t){if(e)for(var o=Object.keys(e),s=0;s{"use strict";tq.exports=Ar;var ky=oi();((Ar.prototype=Object.create(ky.prototype)).constructor=Ar).className="Enum";var eq=pa(),R_=rt();function Ar(r,e,t,o,s,a){if(ky.call(this,r,t),e&&typeof e!="object")throw TypeError("values must be an object");if(this.valuesById={},this.values=Object.create(this.valuesById),this.comment=o,this.comments=s||{},this.valuesOptions=a,this._valuesFeatures={},this.reserved=void 0,e)for(var i=Object.keys(e),n=0;n{var o=Object.assign({},this._features);this._valuesFeatures[t]=Object.assign(o,this.valuesOptions&&this.valuesOptions[t]&&this.valuesOptions[t].features)}),this};Ar.fromJSON=function(e,t){var o=new Ar(e,t.values,t.options,t.comment,t.comments);return o.reserved=t.reserved,t.edition&&(o._edition=t.edition),o._defaultEdition="proto3",o};Ar.prototype.toJSON=function(e){var t=e?!!e.keepComments:!1;return R_.toObject(["edition",this._editionToJSON(),"options",this.options,"valuesOptions",this.valuesOptions,"values",this.values,"reserved",this.reserved&&this.reserved.length?this.reserved:void 0,"comment",t?this.comment:void 0,"comments",t?this.comments:void 0])};Ar.prototype.add=function(e,t,o,s){if(!R_.isString(e))throw TypeError("name must be a string");if(!R_.isInteger(t))throw TypeError("id must be an integer");if(this.values[e]!==void 0)throw Error("duplicate name '"+e+"' in "+this);if(this.isReservedId(t))throw Error("id "+t+" is reserved in "+this);if(this.isReservedName(e))throw Error("name '"+e+"' is reserved in "+this);if(this.valuesById[t]!==void 0){if(!(this.options&&this.options.allow_alias))throw Error("duplicate id "+t+" in "+this);this.values[e]=t}else this.valuesById[this.values[e]=t]=e;return s&&(this.valuesOptions===void 0&&(this.valuesOptions={}),this.valuesOptions[e]=s||null),this.comments[e]=o||null,this};Ar.prototype.remove=function(e){if(!R_.isString(e))throw TypeError("name must be a string");var t=this.values[e];if(t==null)throw Error("name '"+e+"' does not exist in "+this);return delete this.valuesById[t],delete this.values[e],delete this.comments[e],this.valuesOptions&&delete this.valuesOptions[e],this};Ar.prototype.isReservedId=function(e){return eq.isReservedId(this.reserved,e)};Ar.prototype.isReservedName=function(e){return eq.isReservedName(this.reserved,e)}});var Ly=T((s2e,nq)=>{"use strict";nq.exports=spe;var ope=Or(),By=po(),Vy=rt();function rq(r,e,t,o){return e.delimited?r("types[%i].encode(%s,w.uint32(%i)).uint32(%i)",t,o,(e.id<<3|3)>>>0,(e.id<<3|4)>>>0):r("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",t,o,(e.id<<3|2)>>>0)}function spe(r){for(var e=Vy.codegen(["m","w"],r.name+"$encode")("if(!w)")("w=Writer.create()"),t,o,s=r.fieldsArray.slice().sort(Vy.compareFieldsById),t=0;t>>0,8|By.mapKey[a.keyType],a.keyType),l===void 0?e("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",i,o):e(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|l,n,o),e("}")("}")):a.repeated?(e("if(%s!=null&&%s.length){",o,o),a.packed&&By.packed[n]!==void 0?e("w.uint32(%i).fork()",(a.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",o)("w.%s(%s[i])",n,o)("w.ldelim()"):(e("for(var i=0;i<%s.length;++i)",o),l===void 0?rq(e,a,i,o+"[i]"):e("w.uint32(%i).%s(%s[i])",(a.id<<3|l)>>>0,n,o)),e("}")):(a.optional&&e("if(%s!=null&&Object.hasOwnProperty.call(m,%j))",o,a.name),l===void 0?rq(e,a,i,o):e("w.uint32(%i).%s(%s)",(a.id<<3|l)>>>0,n,o))}return e("return w")}});var oq=T((a2e,iq)=>{"use strict";var de=iq.exports=uv();de.build="light";function ape(r,e,t){return typeof e=="function"?(t=e,e=new de.Root):e||(e=new de.Root),e.load(r,t)}de.load=ape;function lpe(r,e){return e||(e=new de.Root),e.loadSync(r)}de.loadSync=lpe;de.encoder=Ly();de.decoder=Sy();de.verifier=yy();de.converter=Ry();de.ReflectionObject=oi();de.Namespace=pa();de.Root=v_();de.Enum=Or();de.Type=m_();de.Field=ii();de.OneOf=fo();de.MapField=f_();de.Service=d_();de.Method=p_();de.Message=h_();de.wrappers=Ny();de.types=po();de.util=rt();de.ReflectionObject._configure(de.Root);de.Namespace._configure(de.Type,de.Service,de.Enum);de.Root._configure(de.Type);de.Field._configure(de.Type)});var Gy=T((l2e,lq)=>{"use strict";lq.exports=aq;var Fy=/[\s{}=;:[\],'"()<>]/g,cpe=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,upe=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,fpe=/^ *[*/]+ */,ppe=/^\s*\*?\/*/,dpe=/\n/g,hpe=/\s/,_pe=/\\(.?)/g,Epe={0:"\0",r:"\r",n:` +`,t:" "};function sq(r){return r.replace(_pe,function(e,t){switch(t){case"\\":case"":return t;default:return Epe[t]||""}})}aq.unescape=sq;function aq(r,e){r=r.toString();var t=0,o=r.length,s=1,a=0,i={},n=[],l=null;function c(N){return Error("illegal "+N+" (line "+s+")")}function u(){var N=l==="'"?upe:cpe;N.lastIndex=t-1;var K=N.exec(r);if(!K)throw c("string");return t=N.lastIndex,A(l),l=null,sq(K[1])}function f(N){return r.charAt(N)}function _(N,K,B){var G={type:r.charAt(N++),lineEmpty:!1,leading:B},te;e?te=2:te=3;var $=N-te,le;do if(--$<0||(le=r.charAt($))===` +`){G.lineEmpty=!0;break}while(le===" "||le===" ");for(var v=r.substring(N,K).split(dpe),W=0;W0)return n.shift();if(l)return u();var N,K,B,G,te,$=t===0;do{if(t===o)return null;for(N=!1;hpe.test(B=f(t));)if(B===` +`&&($=!0,++s),++t===o)return null;if(f(t)==="/"){if(++t===o)throw c("comment");if(f(t)==="/")if(e){if(G=t,te=!1,m(t-1)){te=!0;do if(t=O(t),t===o||(t++,!$))break;while(m(t))}else t=Math.min(o,O(t)+1);te&&(_(G,t,$),$=!0),s++,N=!0}else{for(te=f(G=t+1)==="/";f(++t)!==` +`;)if(t===o)return null;++t,te&&(_(G,t-1,$),$=!0),++s,N=!0}else if((B=f(t))==="*"){G=t+1,te=e||f(G)==="*";do{if(B===` +`&&++s,++t===o)throw c("comment");K=B,B=f(t)}while(K!=="*"||B!=="/");++t,te&&(_(G,t-2,$),$=!0),N=!0}else return"/"}}while(N);var le=t;Fy.lastIndex=0;var v=Fy.test(f(le++));if(!v)for(;le{"use strict";dq.exports=vn;vn.filename=null;vn.defaults={keepCase:!1};var mpe=Gy(),cq=v_(),uq=m_(),fq=ii(),Tpe=f_(),pq=fo(),Spe=Or(),gpe=d_(),vpe=p_(),ype=oi(),Ope=po(),Hy=rt(),Ape=/^[1-9][0-9]*$/,Rpe=/^-?[1-9][0-9]*$/,Npe=/^0[x][0-9a-fA-F]+$/,Cpe=/^-?0[x][0-9a-fA-F]+$/,Ppe=/^0[0-7]+$/,Ipe=/^-?0[0-7]+$/,Lpe=/^(?![eE])[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,Xr=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Wr=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/;function vn(r,e,t){e instanceof cq||(t=e,e=new cq),t||(t=vn.defaults);var o=t.preferTrailingComment||!1,s=mpe(r,t.alternateCommentMode||!1),a=s.next,i=s.push,n=s.peek,l=s.skip,c=s.cmnt,u=!0,f,_,m,O="proto2",y=e,A=[],I={},M=t.keepCase?function(b){return b}:Hy.camelCase;function F(){A.forEach(b=>{b._edition=O,Object.keys(I).forEach(L=>{b.getOption(L)===void 0&&b.setOption(L,I[L],!0)})})}function N(b,L,x){var j=vn.filename;return x||(vn.filename=null),Error("illegal "+(L||"token")+" '"+b+"' ("+(j?j+", ":"")+"line "+s.line+")")}function K(){var b=[],L;do{if((L=a())!=='"'&&L!=="'")throw N(L);b.push(a()),l(L),L=n()}while(L==='"'||L==="'");return b.join("")}function B(b){var L=a();switch(L){case"'":case'"':return i(L),K();case"true":case"TRUE":return!0;case"false":case"FALSE":return!1}try{return te(L,!0)}catch{if(b&&Wr.test(L))return L;throw N(L,"value")}}function G(b,L){var x,j;do if(L&&((x=n())==='"'||x==="'")){var q=K();if(b.push(q),O>=2023)throw N(q,"id")}else try{b.push([j=$(a()),l("to",!0)?$(a()):j])}catch(be){if(L&&Wr.test(x)&&O>=2023)b.push(x);else throw be}while(l(",",!0));var ne={options:void 0};ne.setOption=function(be,ut){this.options===void 0&&(this.options={}),this.options[be]=ut},C(ne,function(ut){if(ut==="option")Z(ne,ut),l(";");else throw N(ut)},function(){We(ne)})}function te(b,L){var x=1;switch(b.charAt(0)==="-"&&(x=-1,b=b.substring(1)),b){case"inf":case"INF":case"Inf":return x*(1/0);case"nan":case"NAN":case"Nan":case"NaN":return NaN;case"0":return 0}if(Ape.test(b))return x*parseInt(b,10);if(Npe.test(b))return x*parseInt(b,16);if(Ppe.test(b))return x*parseInt(b,8);if(Lpe.test(b))return x*parseFloat(b);throw N(b,"number",L)}function $(b,L){switch(b){case"max":case"MAX":case"Max":return 536870911;case"0":return 0}if(!L&&b.charAt(0)==="-")throw N(b,"id");if(Rpe.test(b))return parseInt(b,10);if(Cpe.test(b))return parseInt(b,16);if(Ipe.test(b))return parseInt(b,8);throw N(b,"id")}function le(){if(f!==void 0)throw N("package");if(f=a(),!Wr.test(f))throw N(f,"name");y=y.define(f),l(";")}function v(){var b=n(),L;switch(b){case"weak":L=m||(m=[]),a();break;case"public":a();default:L=_||(_=[]);break}b=K(),l(";"),L.push(b)}function W(){if(l("="),O=K(),O<2023)throw N(O,"syntax");l(";")}function R(){if(l("="),O=K(),!["2023"].includes(O))throw N(O,"edition");l(";")}function E(b,L){switch(L){case"option":return Z(b,L),l(";"),!0;case"message":return Q(b,L),!0;case"enum":return Me(b,L),!0;case"service":return Uo(b,L),!0;case"extend":return Ti(b,L),!0}return!1}function C(b,L,x){var j=s.line;if(b&&(typeof b.comment!="string"&&(b.comment=c()),b.filename=vn.filename),l("{",!0)){for(var q;(q=a())!=="}";)L(q);l(";",!0)}else x&&x(),l(";"),b&&(typeof b.comment!="string"||o)&&(b.comment=c(j)||b.comment)}function Q(b,L){if(!Xr.test(L=a()))throw N(L,"type name");var x=new uq(L);C(x,function(q){if(!E(x,q))switch(q){case"map":ce(x,q);break;case"required":if(O!=="proto2")throw N(q);case"repeated":Y(x,q);break;case"optional":if(O==="proto3")Y(x,"proto3_optional");else{if(O!=="proto2")throw N(q);Y(x,"optional")}break;case"oneof":Ne(x,q);break;case"extensions":G(x.extensions||(x.extensions=[]));break;case"reserved":G(x.reserved||(x.reserved=[]),!0);break;default:if(O==="proto2"||!Wr.test(q))throw N(q);i(q),Y(x,"optional");break}}),b.add(x),b===y&&A.push(x)}function Y(b,L,x){var j=a();if(j==="group"){J(b,L);return}for(;j.endsWith(".")||n().startsWith(".");)j+=a();if(!Wr.test(j))throw N(j,"type");var q=a();if(!Xr.test(q))throw N(q,"name");q=M(q),l("=");var ne=new fq(q,$(a()),j,L,x);if(C(ne,function(Et){if(Et==="option")Z(ne,Et),l(";");else throw N(Et)},function(){We(ne)}),L==="proto3_optional"){var be=new pq("_"+q);ne.setOption("proto3_optional",!0),be.add(ne),b.add(be)}else b.add(ne);b===y&&A.push(ne)}function J(b,L){if(O>=2023)throw N("group");var x=a();if(!Xr.test(x))throw N(x,"name");var j=Hy.lcFirst(x);x===j&&(x=Hy.ucFirst(x)),l("=");var q=$(a()),ne=new uq(x);ne.group=!0;var be=new fq(j,q,x,L);be.filename=vn.filename,C(ne,function(Et){switch(Et){case"option":Z(ne,Et),l(";");break;case"required":case"repeated":Y(ne,Et);break;case"optional":O==="proto3"?Y(ne,"proto3_optional"):Y(ne,"optional");break;case"message":Q(ne,Et);break;case"enum":Me(ne,Et);break;case"reserved":G(ne.reserved||(ne.reserved=[]),!0);break;default:throw N(Et)}}),b.add(ne).add(be)}function ce(b){l("<");var L=a();if(Ope.mapKey[L]===void 0)throw N(L,"type");l(",");var x=a();if(!Wr.test(x))throw N(x,"type");l(">");var j=a();if(!Xr.test(j))throw N(j,"name");l("=");var q=new Tpe(M(j),$(a()),L,x);C(q,function(be){if(be==="option")Z(q,be),l(";");else throw N(be)},function(){We(q)}),b.add(q)}function Ne(b,L){if(!Xr.test(L=a()))throw N(L,"name");var x=new pq(M(L));C(x,function(q){q==="option"?(Z(x,q),l(";")):(i(q),Y(x,"optional"))}),b.add(x)}function Me(b,L){if(!Xr.test(L=a()))throw N(L,"name");var x=new Spe(L);C(x,function(q){switch(q){case"option":Z(x,q),l(";");break;case"reserved":G(x.reserved||(x.reserved=[]),!0),x.reserved===void 0&&(x.reserved=[]);break;default:Te(x,q)}}),b.add(x),b===y&&A.push(x)}function Te(b,L){if(!Xr.test(L))throw N(L,"name");l("=");var x=$(a(),!0),j={options:void 0};j.getOption=function(q){return this.options[q]},j.setOption=function(q,ne){ype.prototype.setOption.call(j,q,ne)},j.setParsedOption=function(){},C(j,function(ne){if(ne==="option")Z(j,ne),l(";");else throw N(ne)},function(){We(j)}),b.add(L,x,j.comment,j.parsedOptions||j.options)}function Z(b,L){var x,j,q=!0;for(L==="option"&&(L=a());L!=="=";){if(L==="("){var ne=a();l(")"),L="("+ne+")"}if(q){if(q=!1,L.includes(".")&&!L.includes("(")){var be=L.split(".");x=be[0]+".",L=be[1];continue}x=L}else j=j?j+=L:L;L=a()}var ut=j?x.concat(j):x,Et=je(b,ut);j=j&&j[0]==="."?j.slice(1):j,x=x&&x[x.length-1]==="."?x.slice(0,-1):x,we(b,x,Et,j)}function je(b,L){if(l("{",!0)){for(var x={};!l("}",!0);){if(!Xr.test(Ye=a()))throw N(Ye,"name");if(Ye===null)throw N(Ye,"end of input");var j,q=Ye;if(l(":",!0),n()==="{")j=je(b,L+"."+Ye);else if(n()==="["){j=[];var ne;if(l("[",!0)){do ne=B(!0),j.push(ne);while(l(",",!0));l("]"),typeof ne<"u"&&Ee(b,L+"."+Ye,ne)}}else j=B(!0),Ee(b,L+"."+Ye,j);var be=x[q];be&&(j=[].concat(be).concat(j)),x[q]=j,l(",",!0),l(";",!0)}return x}var ut=B(!0);return Ee(b,L,ut),ut}function Ee(b,L,x){if(y===b&&/^features\./.test(L)){I[L]=x;return}b.setOption&&b.setOption(L,x)}function we(b,L,x,j){b.setParsedOption&&b.setParsedOption(L,x,j)}function We(b){if(l("[",!0)){do Z(b,"option");while(l(",",!0));l("]")}return b}function Uo(b,L){if(!Xr.test(L=a()))throw N(L,"service name");var x=new gpe(L);C(x,function(q){if(!E(x,q))if(q==="rpc")ko(x,q);else throw N(q)}),b.add(x),b===y&&A.push(x)}function ko(b,L){var x=c(),j=L;if(!Xr.test(L=a()))throw N(L,"name");var q=L,ne,be,ut,Et;if(l("("),l("stream",!0)&&(be=!0),!Wr.test(L=a())||(ne=L,l(")"),l("returns"),l("("),l("stream",!0)&&(Et=!0),!Wr.test(L=a())))throw N(L);ut=L,l(")");var wu=new vpe(q,j,ne,ut,be,Et);wu.comment=x,C(wu,function(mm){if(mm==="option")Z(wu,mm),l(";");else throw N(mm)}),b.add(wu)}function Ti(b,L){if(!Wr.test(L=a()))throw N(L,"reference");var x=L;C(null,function(q){switch(q){case"required":case"repeated":Y(b,q,x);break;case"optional":O==="proto3"?Y(b,"proto3_optional",x):Y(b,"optional",x);break;default:if(O==="proto2"||!Wr.test(q))throw N(q);i(q),Y(b,"optional",x);break}})}for(var Ye;(Ye=a())!==null;)switch(Ye){case"package":if(!u)throw N(Ye);le();break;case"import":if(!u)throw N(Ye);v();break;case"syntax":if(!u)throw N(Ye);W();break;case"edition":if(!u)throw N(Ye);R();break;case"option":Z(y,Ye),l(";",!0);break;default:if(E(y,Ye)){u=!1;continue}throw N(Ye)}return F(),vn.filename=null,{package:f,imports:_,weakImports:m,root:e}}});var mq=T((u2e,Eq)=>{"use strict";Eq.exports=Rr;var bpe=/\/|\./;function Rr(r,e){bpe.test(r)||(r="google/protobuf/"+r+".proto",e={nested:{google:{nested:{protobuf:{nested:e}}}}}),Rr[r]=e}Rr("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var _q;Rr("duration",{Duration:_q={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}});Rr("timestamp",{Timestamp:_q});Rr("empty",{Empty:{fields:{}}});Rr("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}});Rr("wrappers",{DoubleValue:{fields:{value:{type:"double",id:1}}},FloatValue:{fields:{value:{type:"float",id:1}}},Int64Value:{fields:{value:{type:"int64",id:1}}},UInt64Value:{fields:{value:{type:"uint64",id:1}}},Int32Value:{fields:{value:{type:"int32",id:1}}},UInt32Value:{fields:{value:{type:"uint32",id:1}}},BoolValue:{fields:{value:{type:"bool",id:1}}},StringValue:{fields:{value:{type:"string",id:1}}},BytesValue:{fields:{value:{type:"bytes",id:1}}}});Rr("field_mask",{FieldMask:{fields:{paths:{rule:"repeated",type:"string",id:1}}}});Rr.get=function(e){return Rr[e]||null}});var Sq=T((f2e,Tq)=>{"use strict";var ai=Tq.exports=oq();ai.build="full";ai.tokenize=Gy();ai.parse=hq();ai.common=mq();ai.Root._configure(ai.Type,ai.parse,ai.common)});var N_=T((p2e,gq)=>{"use strict";gq.exports=Sq()});var qy=T((d2e,xpe)=>{xpe.exports={nested:{google:{nested:{protobuf:{options:{go_package:"google.golang.org/protobuf/types/descriptorpb",java_package:"com.google.protobuf",java_outer_classname:"DescriptorProtos",csharp_namespace:"Google.Protobuf.Reflection",objc_class_prefix:"GPB",cc_enable_arenas:!0,optimize_for:"SPEED"},nested:{FileDescriptorSet:{edition:"proto2",fields:{file:{rule:"repeated",type:"FileDescriptorProto",id:1}},extensions:[[536e6,536e6]]},Edition:{edition:"proto2",values:{EDITION_UNKNOWN:0,EDITION_LEGACY:900,EDITION_PROTO2:998,EDITION_PROTO3:999,EDITION_2023:1e3,EDITION_2024:1001,EDITION_1_TEST_ONLY:1,EDITION_2_TEST_ONLY:2,EDITION_99997_TEST_ONLY:99997,EDITION_99998_TEST_ONLY:99998,EDITION_99999_TEST_ONLY:99999,EDITION_MAX:2147483647}},FileDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},package:{type:"string",id:2},dependency:{rule:"repeated",type:"string",id:3},publicDependency:{rule:"repeated",type:"int32",id:10},weakDependency:{rule:"repeated",type:"int32",id:11},optionDependency:{rule:"repeated",type:"string",id:15},messageType:{rule:"repeated",type:"DescriptorProto",id:4},enumType:{rule:"repeated",type:"EnumDescriptorProto",id:5},service:{rule:"repeated",type:"ServiceDescriptorProto",id:6},extension:{rule:"repeated",type:"FieldDescriptorProto",id:7},options:{type:"FileOptions",id:8},sourceCodeInfo:{type:"SourceCodeInfo",id:9},syntax:{type:"string",id:12},edition:{type:"Edition",id:14}}},DescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},field:{rule:"repeated",type:"FieldDescriptorProto",id:2},extension:{rule:"repeated",type:"FieldDescriptorProto",id:6},nestedType:{rule:"repeated",type:"DescriptorProto",id:3},enumType:{rule:"repeated",type:"EnumDescriptorProto",id:4},extensionRange:{rule:"repeated",type:"ExtensionRange",id:5},oneofDecl:{rule:"repeated",type:"OneofDescriptorProto",id:8},options:{type:"MessageOptions",id:7},reservedRange:{rule:"repeated",type:"ReservedRange",id:9},reservedName:{rule:"repeated",type:"string",id:10},visibility:{type:"SymbolVisibility",id:11}},nested:{ExtensionRange:{fields:{start:{type:"int32",id:1},end:{type:"int32",id:2},options:{type:"ExtensionRangeOptions",id:3}}},ReservedRange:{fields:{start:{type:"int32",id:1},end:{type:"int32",id:2}}}}},ExtensionRangeOptions:{edition:"proto2",fields:{uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999},declaration:{rule:"repeated",type:"Declaration",id:2,options:{retention:"RETENTION_SOURCE"}},features:{type:"FeatureSet",id:50},verification:{type:"VerificationState",id:3,options:{default:"UNVERIFIED",retention:"RETENTION_SOURCE"}}},extensions:[[1e3,536870911]],nested:{Declaration:{fields:{number:{type:"int32",id:1},fullName:{type:"string",id:2},type:{type:"string",id:3},reserved:{type:"bool",id:5},repeated:{type:"bool",id:6}},reserved:[[4,4]]},VerificationState:{values:{DECLARATION:0,UNVERIFIED:1}}}},FieldDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},number:{type:"int32",id:3},label:{type:"Label",id:4},type:{type:"Type",id:5},typeName:{type:"string",id:6},extendee:{type:"string",id:2},defaultValue:{type:"string",id:7},oneofIndex:{type:"int32",id:9},jsonName:{type:"string",id:10},options:{type:"FieldOptions",id:8},proto3Optional:{type:"bool",id:17}},nested:{Type:{values:{TYPE_DOUBLE:1,TYPE_FLOAT:2,TYPE_INT64:3,TYPE_UINT64:4,TYPE_INT32:5,TYPE_FIXED64:6,TYPE_FIXED32:7,TYPE_BOOL:8,TYPE_STRING:9,TYPE_GROUP:10,TYPE_MESSAGE:11,TYPE_BYTES:12,TYPE_UINT32:13,TYPE_ENUM:14,TYPE_SFIXED32:15,TYPE_SFIXED64:16,TYPE_SINT32:17,TYPE_SINT64:18}},Label:{values:{LABEL_OPTIONAL:1,LABEL_REPEATED:3,LABEL_REQUIRED:2}}}},OneofDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},options:{type:"OneofOptions",id:2}}},EnumDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},value:{rule:"repeated",type:"EnumValueDescriptorProto",id:2},options:{type:"EnumOptions",id:3},reservedRange:{rule:"repeated",type:"EnumReservedRange",id:4},reservedName:{rule:"repeated",type:"string",id:5},visibility:{type:"SymbolVisibility",id:6}},nested:{EnumReservedRange:{fields:{start:{type:"int32",id:1},end:{type:"int32",id:2}}}}},EnumValueDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},number:{type:"int32",id:2},options:{type:"EnumValueOptions",id:3}}},ServiceDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},method:{rule:"repeated",type:"MethodDescriptorProto",id:2},options:{type:"ServiceOptions",id:3}}},MethodDescriptorProto:{edition:"proto2",fields:{name:{type:"string",id:1},inputType:{type:"string",id:2},outputType:{type:"string",id:3},options:{type:"MethodOptions",id:4},clientStreaming:{type:"bool",id:5},serverStreaming:{type:"bool",id:6}}},FileOptions:{edition:"proto2",fields:{javaPackage:{type:"string",id:1},javaOuterClassname:{type:"string",id:8},javaMultipleFiles:{type:"bool",id:10},javaGenerateEqualsAndHash:{type:"bool",id:20,options:{deprecated:!0}},javaStringCheckUtf8:{type:"bool",id:27},optimizeFor:{type:"OptimizeMode",id:9,options:{default:"SPEED"}},goPackage:{type:"string",id:11},ccGenericServices:{type:"bool",id:16},javaGenericServices:{type:"bool",id:17},pyGenericServices:{type:"bool",id:18},deprecated:{type:"bool",id:23},ccEnableArenas:{type:"bool",id:31,options:{default:!0}},objcClassPrefix:{type:"string",id:36},csharpNamespace:{type:"string",id:37},swiftPrefix:{type:"string",id:39},phpClassPrefix:{type:"string",id:40},phpNamespace:{type:"string",id:41},phpMetadataNamespace:{type:"string",id:44},rubyPackage:{type:"string",id:45},features:{type:"FeatureSet",id:50},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]],reserved:[[42,42],"php_generic_services",[38,38]],nested:{OptimizeMode:{values:{SPEED:1,CODE_SIZE:2,LITE_RUNTIME:3}}}},MessageOptions:{edition:"proto2",fields:{messageSetWireFormat:{type:"bool",id:1},noStandardDescriptorAccessor:{type:"bool",id:2},deprecated:{type:"bool",id:3},mapEntry:{type:"bool",id:7},deprecatedLegacyJsonFieldConflicts:{type:"bool",id:11,options:{deprecated:!0}},features:{type:"FeatureSet",id:12},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]],reserved:[[4,4],[5,5],[6,6],[8,8],[9,9]]},FieldOptions:{edition:"proto2",fields:{ctype:{type:"CType",id:1,options:{default:"STRING"}},packed:{type:"bool",id:2},jstype:{type:"JSType",id:6,options:{default:"JS_NORMAL"}},lazy:{type:"bool",id:5},unverifiedLazy:{type:"bool",id:15},deprecated:{type:"bool",id:3},weak:{type:"bool",id:10,options:{deprecated:!0}},debugRedact:{type:"bool",id:16},retention:{type:"OptionRetention",id:17},targets:{rule:"repeated",type:"OptionTargetType",id:19},editionDefaults:{rule:"repeated",type:"EditionDefault",id:20},features:{type:"FeatureSet",id:21},featureSupport:{type:"FeatureSupport",id:22},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]],reserved:[[4,4],[18,18]],nested:{CType:{values:{STRING:0,CORD:1,STRING_PIECE:2}},JSType:{values:{JS_NORMAL:0,JS_STRING:1,JS_NUMBER:2}},OptionRetention:{values:{RETENTION_UNKNOWN:0,RETENTION_RUNTIME:1,RETENTION_SOURCE:2}},OptionTargetType:{values:{TARGET_TYPE_UNKNOWN:0,TARGET_TYPE_FILE:1,TARGET_TYPE_EXTENSION_RANGE:2,TARGET_TYPE_MESSAGE:3,TARGET_TYPE_FIELD:4,TARGET_TYPE_ONEOF:5,TARGET_TYPE_ENUM:6,TARGET_TYPE_ENUM_ENTRY:7,TARGET_TYPE_SERVICE:8,TARGET_TYPE_METHOD:9}},EditionDefault:{fields:{edition:{type:"Edition",id:3},value:{type:"string",id:2}}},FeatureSupport:{fields:{editionIntroduced:{type:"Edition",id:1},editionDeprecated:{type:"Edition",id:2},deprecationWarning:{type:"string",id:3},editionRemoved:{type:"Edition",id:4}}}}},OneofOptions:{edition:"proto2",fields:{features:{type:"FeatureSet",id:1},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]]},EnumOptions:{edition:"proto2",fields:{allowAlias:{type:"bool",id:2},deprecated:{type:"bool",id:3},deprecatedLegacyJsonFieldConflicts:{type:"bool",id:6,options:{deprecated:!0}},features:{type:"FeatureSet",id:7},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]],reserved:[[5,5]]},EnumValueOptions:{edition:"proto2",fields:{deprecated:{type:"bool",id:1},features:{type:"FeatureSet",id:2},debugRedact:{type:"bool",id:3},featureSupport:{type:"FieldOptions.FeatureSupport",id:4},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]]},ServiceOptions:{edition:"proto2",fields:{features:{type:"FeatureSet",id:34},deprecated:{type:"bool",id:33},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]]},MethodOptions:{edition:"proto2",fields:{deprecated:{type:"bool",id:33},idempotencyLevel:{type:"IdempotencyLevel",id:34,options:{default:"IDEMPOTENCY_UNKNOWN"}},features:{type:"FeatureSet",id:35},uninterpretedOption:{rule:"repeated",type:"UninterpretedOption",id:999}},extensions:[[1e3,536870911]],nested:{IdempotencyLevel:{values:{IDEMPOTENCY_UNKNOWN:0,NO_SIDE_EFFECTS:1,IDEMPOTENT:2}}}},UninterpretedOption:{edition:"proto2",fields:{name:{rule:"repeated",type:"NamePart",id:2},identifierValue:{type:"string",id:3},positiveIntValue:{type:"uint64",id:4},negativeIntValue:{type:"int64",id:5},doubleValue:{type:"double",id:6},stringValue:{type:"bytes",id:7},aggregateValue:{type:"string",id:8}},nested:{NamePart:{fields:{namePart:{rule:"required",type:"string",id:1},isExtension:{rule:"required",type:"bool",id:2}}}}},FeatureSet:{edition:"proto2",fields:{fieldPresence:{type:"FieldPresence",id:1,options:{retention:"RETENTION_RUNTIME",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2023","edition_defaults.edition":"EDITION_2023","edition_defaults.value":"EXPLICIT"}},enumType:{type:"EnumType",id:2,options:{retention:"RETENTION_RUNTIME",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2023","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"OPEN"}},repeatedFieldEncoding:{type:"RepeatedFieldEncoding",id:3,options:{retention:"RETENTION_RUNTIME",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2023","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"PACKED"}},utf8Validation:{type:"Utf8Validation",id:4,options:{retention:"RETENTION_RUNTIME",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2023","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"VERIFY"}},messageEncoding:{type:"MessageEncoding",id:5,options:{retention:"RETENTION_RUNTIME",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2023","edition_defaults.edition":"EDITION_LEGACY","edition_defaults.value":"LENGTH_PREFIXED"}},jsonFormat:{type:"JsonFormat",id:6,options:{retention:"RETENTION_RUNTIME",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2023","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"ALLOW"}},enforceNamingStyle:{type:"EnforceNamingStyle",id:7,options:{retention:"RETENTION_SOURCE",targets:"TARGET_TYPE_METHOD","feature_support.edition_introduced":"EDITION_2024","edition_defaults.edition":"EDITION_2024","edition_defaults.value":"STYLE2024"}},defaultSymbolVisibility:{type:"VisibilityFeature.DefaultSymbolVisibility",id:8,options:{retention:"RETENTION_SOURCE",targets:"TARGET_TYPE_FILE","feature_support.edition_introduced":"EDITION_2024","edition_defaults.edition":"EDITION_2024","edition_defaults.value":"EXPORT_TOP_LEVEL"}}},extensions:[[1e3,9994],[9995,9999],[1e4,1e4]],reserved:[[999,999]],nested:{FieldPresence:{values:{FIELD_PRESENCE_UNKNOWN:0,EXPLICIT:1,IMPLICIT:2,LEGACY_REQUIRED:3}},EnumType:{values:{ENUM_TYPE_UNKNOWN:0,OPEN:1,CLOSED:2}},RepeatedFieldEncoding:{values:{REPEATED_FIELD_ENCODING_UNKNOWN:0,PACKED:1,EXPANDED:2}},Utf8Validation:{values:{UTF8_VALIDATION_UNKNOWN:0,VERIFY:2,NONE:3}},MessageEncoding:{values:{MESSAGE_ENCODING_UNKNOWN:0,LENGTH_PREFIXED:1,DELIMITED:2}},JsonFormat:{values:{JSON_FORMAT_UNKNOWN:0,ALLOW:1,LEGACY_BEST_EFFORT:2}},EnforceNamingStyle:{values:{ENFORCE_NAMING_STYLE_UNKNOWN:0,STYLE2024:1,STYLE_LEGACY:2}},VisibilityFeature:{fields:{},reserved:[[1,536870911]],nested:{DefaultSymbolVisibility:{values:{DEFAULT_SYMBOL_VISIBILITY_UNKNOWN:0,EXPORT_ALL:1,EXPORT_TOP_LEVEL:2,LOCAL_ALL:3,STRICT:4}}}}}},FeatureSetDefaults:{edition:"proto2",fields:{defaults:{rule:"repeated",type:"FeatureSetEditionDefault",id:1},minimumEdition:{type:"Edition",id:4},maximumEdition:{type:"Edition",id:5}},nested:{FeatureSetEditionDefault:{fields:{edition:{type:"Edition",id:3},overridableFeatures:{type:"FeatureSet",id:4},fixedFeatures:{type:"FeatureSet",id:5}},reserved:[[1,1],[2,2],"features"]}}},SourceCodeInfo:{edition:"proto2",fields:{location:{rule:"repeated",type:"Location",id:1}},extensions:[[536e6,536e6]],nested:{Location:{fields:{path:{rule:"repeated",type:"int32",id:1,options:{packed:!0}},span:{rule:"repeated",type:"int32",id:2,options:{packed:!0}},leadingComments:{type:"string",id:3},trailingComments:{type:"string",id:4},leadingDetachedComments:{rule:"repeated",type:"string",id:6}}}}},GeneratedCodeInfo:{edition:"proto2",fields:{annotation:{rule:"repeated",type:"Annotation",id:1}},nested:{Annotation:{fields:{path:{rule:"repeated",type:"int32",id:1,options:{packed:!0}},sourceFile:{type:"string",id:2},begin:{type:"int32",id:3},end:{type:"int32",id:4},semantic:{type:"Semantic",id:5}},nested:{Semantic:{values:{NONE:0,SET:1,ALIAS:2}}}}}},SymbolVisibility:{edition:"proto2",values:{VISIBILITY_UNSET:0,VISIBILITY_LOCAL:1,VISIBILITY_EXPORT:2}}}}}}}}});var Cq=T((ae,Nq)=>{"use strict";var Ht=N_();Nq.exports=ae=Ht.descriptor=Ht.Root.fromJSON(qy()).lookup(".google.protobuf");var vq=Ht.Namespace,Xc=Ht.Root,yn=Ht.Enum,Jr=Ht.Type,li=Ht.Field,Mpe=Ht.MapField,C_=Ht.OneOf,Wc=Ht.Service,P_=Ht.Method;Xc.fromDescriptor=function(e){typeof e.length=="number"&&(e=ae.FileDescriptorSet.decode(e));var t=new Xc;if(e.file)for(var o,s,a=0,i;a{Ype.exports={nested:{google:{nested:{protobuf:{nested:{Api:{fields:{name:{type:"string",id:1},methods:{rule:"repeated",type:"Method",id:2},options:{rule:"repeated",type:"Option",id:3},version:{type:"string",id:4},sourceContext:{type:"SourceContext",id:5},mixins:{rule:"repeated",type:"Mixin",id:6},syntax:{type:"Syntax",id:7}}},Method:{fields:{name:{type:"string",id:1},requestTypeUrl:{type:"string",id:2},requestStreaming:{type:"bool",id:3},responseTypeUrl:{type:"string",id:4},responseStreaming:{type:"bool",id:5},options:{rule:"repeated",type:"Option",id:6},syntax:{type:"Syntax",id:7}}},Mixin:{fields:{name:{type:"string",id:1},root:{type:"string",id:2}}},SourceContext:{fields:{fileName:{type:"string",id:1}}},Option:{fields:{name:{type:"string",id:1},value:{type:"Any",id:2}}},Syntax:{values:{SYNTAX_PROTO2:0,SYNTAX_PROTO3:1}}}}}}}}});var Iq=T((_2e,Kpe)=>{Kpe.exports={nested:{google:{nested:{protobuf:{nested:{SourceContext:{fields:{fileName:{type:"string",id:1}}}}}}}}}});var Lq=T((E2e,zpe)=>{zpe.exports={nested:{google:{nested:{protobuf:{nested:{Type:{fields:{name:{type:"string",id:1},fields:{rule:"repeated",type:"Field",id:2},oneofs:{rule:"repeated",type:"string",id:3},options:{rule:"repeated",type:"Option",id:4},sourceContext:{type:"SourceContext",id:5},syntax:{type:"Syntax",id:6}}},Field:{fields:{kind:{type:"Kind",id:1},cardinality:{type:"Cardinality",id:2},number:{type:"int32",id:3},name:{type:"string",id:4},typeUrl:{type:"string",id:6},oneofIndex:{type:"int32",id:7},packed:{type:"bool",id:8},options:{rule:"repeated",type:"Option",id:9},jsonName:{type:"string",id:10},defaultValue:{type:"string",id:11}},nested:{Kind:{values:{TYPE_UNKNOWN:0,TYPE_DOUBLE:1,TYPE_FLOAT:2,TYPE_INT64:3,TYPE_UINT64:4,TYPE_INT32:5,TYPE_FIXED64:6,TYPE_FIXED32:7,TYPE_BOOL:8,TYPE_STRING:9,TYPE_GROUP:10,TYPE_MESSAGE:11,TYPE_BYTES:12,TYPE_UINT32:13,TYPE_ENUM:14,TYPE_SFIXED32:15,TYPE_SFIXED64:16,TYPE_SINT32:17,TYPE_SINT64:18}},Cardinality:{values:{CARDINALITY_UNKNOWN:0,CARDINALITY_OPTIONAL:1,CARDINALITY_REQUIRED:2,CARDINALITY_REPEATED:3}}}},Enum:{fields:{name:{type:"string",id:1},enumvalue:{rule:"repeated",type:"EnumValue",id:2},options:{rule:"repeated",type:"Option",id:3},sourceContext:{type:"SourceContext",id:4},syntax:{type:"Syntax",id:5}}},EnumValue:{fields:{name:{type:"string",id:1},number:{type:"int32",id:2},options:{rule:"repeated",type:"Option",id:3}}},Option:{fields:{name:{type:"string",id:1},value:{type:"Any",id:2}}},Syntax:{values:{SYNTAX_PROTO2:0,SYNTAX_PROTO3:1}},Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}},SourceContext:{fields:{fileName:{type:"string",id:1}}}}}}}}}});var wq=T(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.addCommonProtos=ci.loadProtosWithOptionsSync=ci.loadProtosWithOptions=void 0;var bq=V("fs"),xq=V("path"),Ea=N_();function Mq(r,e){let t=r.resolvePath;r.resolvePath=(o,s)=>{if(xq.isAbsolute(s))return s;for(let a of e){let i=xq.join(a,s);try{return bq.accessSync(i,bq.constants.R_OK),i}catch{continue}}return process.emitWarning(`${s} not found in any of the include paths ${e}`),t(o,s)}}async function $pe(r,e){let t=new Ea.Root;if(e=e||{},e.includeDirs){if(!Array.isArray(e.includeDirs))return Promise.reject(new Error("The includeDirs option must be an array"));Mq(t,e.includeDirs)}let o=await t.load(r,e);return o.resolveAll(),o}ci.loadProtosWithOptions=$pe;function Xpe(r,e){let t=new Ea.Root;if(e=e||{},e.includeDirs){if(!Array.isArray(e.includeDirs))throw new Error("The includeDirs option must be an array");Mq(t,e.includeDirs)}let o=t.loadSync(r,e);return o.resolveAll(),o}ci.loadProtosWithOptionsSync=Xpe;function Wpe(){let r=Pq(),e=qy(),t=Iq(),o=Lq();Ea.common("api",r.nested.google.nested.protobuf.nested),Ea.common("descriptor",e.nested.google.nested.protobuf.nested),Ea.common("source_context",t.nested.google.nested.protobuf.nested),Ea.common("type",o.nested.google.nested.protobuf.nested)}ci.addCommonProtos=Wpe});var Dq=T((Jc,Yy)=>{(function(r,e){function t(o){return o.default||o}typeof define=="function"&&define.amd?define([],function(){var o={};return e(o),t(o)}):typeof Jc=="object"?(e(Jc),typeof Yy=="object"&&(Yy.exports=t(Jc))):function(){var o={};e(o),r.Long=t(o)}()})(typeof globalThis<"u"?globalThis:typeof self<"u"?self:Jc,function(r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var e=null;try{e=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function t(R,E,C){this.low=R|0,this.high=E|0,this.unsigned=!!C}t.prototype.__isLong__,Object.defineProperty(t.prototype,"__isLong__",{value:!0});function o(R){return(R&&R.__isLong__)===!0}function s(R){var E=Math.clz32(R&-R);return R?31-E:E}t.isLong=o;var a={},i={};function n(R,E){var C,Q,Y;return E?(R>>>=0,(Y=0<=R&&R<256)&&(Q=i[R],Q)?Q:(C=c(R,0,!0),Y&&(i[R]=C),C)):(R|=0,(Y=-128<=R&&R<128)&&(Q=a[R],Q)?Q:(C=c(R,R<0?-1:0,!1),Y&&(a[R]=C),C))}t.fromInt=n;function l(R,E){if(isNaN(R))return E?N:F;if(E){if(R<0)return N;if(R>=A)return $}else{if(R<=-I)return le;if(R+1>=I)return te}return R<0?l(-R,E).neg():c(R%y|0,R/y|0,E)}t.fromNumber=l;function c(R,E,C){return new t(R,E,C)}t.fromBits=c;var u=Math.pow;function f(R,E,C){if(R.length===0)throw Error("empty string");if(typeof E=="number"?(C=E,E=!1):E=!!E,R==="NaN"||R==="Infinity"||R==="+Infinity"||R==="-Infinity")return E?N:F;if(C=C||10,C<2||360)throw Error("interior hyphen");if(Q===0)return f(R.substring(1),E,C).neg();for(var Y=l(u(C,8)),J=F,ce=0;ce>>0:this.low},v.toNumber=function(){return this.unsigned?(this.high>>>0)*y+(this.low>>>0):this.high*y+(this.low>>>0)},v.toString=function(E){if(E=E||10,E<2||36>>0,Z=Te.toString(E);if(ce=Me,ce.isZero())return Z+Ne;for(;Z.length<6;)Z="0"+Z;Ne=""+Z+Ne}},v.getHighBits=function(){return this.high},v.getHighBitsUnsigned=function(){return this.high>>>0},v.getLowBits=function(){return this.low},v.getLowBitsUnsigned=function(){return this.low>>>0},v.getNumBitsAbs=function(){if(this.isNegative())return this.eq(le)?64:this.neg().getNumBitsAbs();for(var E=this.high!=0?this.high:this.low,C=31;C>0&&(E&1<>21;return E?this.unsigned?!1:E===-1&&!(this.low===0&&this.high===-2097152):!0},v.isZero=function(){return this.high===0&&this.low===0},v.eqz=v.isZero,v.isNegative=function(){return!this.unsigned&&this.high<0},v.isPositive=function(){return this.unsigned||this.high>=0},v.isOdd=function(){return(this.low&1)===1},v.isEven=function(){return(this.low&1)===0},v.equals=function(E){return o(E)||(E=_(E)),this.unsigned!==E.unsigned&&this.high>>>31===1&&E.high>>>31===1?!1:this.high===E.high&&this.low===E.low},v.eq=v.equals,v.notEquals=function(E){return!this.eq(E)},v.neq=v.notEquals,v.ne=v.notEquals,v.lessThan=function(E){return this.comp(E)<0},v.lt=v.lessThan,v.lessThanOrEqual=function(E){return this.comp(E)<=0},v.lte=v.lessThanOrEqual,v.le=v.lessThanOrEqual,v.greaterThan=function(E){return this.comp(E)>0},v.gt=v.greaterThan,v.greaterThanOrEqual=function(E){return this.comp(E)>=0},v.gte=v.greaterThanOrEqual,v.ge=v.greaterThanOrEqual,v.compare=function(E){if(o(E)||(E=_(E)),this.eq(E))return 0;var C=this.isNegative(),Q=E.isNegative();return C&&!Q?-1:!C&&Q?1:this.unsigned?E.high>>>0>this.high>>>0||E.high===this.high&&E.low>>>0>this.low>>>0?-1:1:this.sub(E).isNegative()?-1:1},v.comp=v.compare,v.negate=function(){return!this.unsigned&&this.eq(le)?le:this.not().add(K)},v.neg=v.negate,v.add=function(E){o(E)||(E=_(E));var C=this.high>>>16,Q=this.high&65535,Y=this.low>>>16,J=this.low&65535,ce=E.high>>>16,Ne=E.high&65535,Me=E.low>>>16,Te=E.low&65535,Z=0,je=0,Ee=0,we=0;return we+=J+Te,Ee+=we>>>16,we&=65535,Ee+=Y+Me,je+=Ee>>>16,Ee&=65535,je+=Q+Ne,Z+=je>>>16,je&=65535,Z+=C+ce,Z&=65535,c(Ee<<16|we,Z<<16|je,this.unsigned)},v.subtract=function(E){return o(E)||(E=_(E)),this.add(E.neg())},v.sub=v.subtract,v.multiply=function(E){if(this.isZero())return this;if(o(E)||(E=_(E)),e){var C=e.mul(this.low,this.high,E.low,E.high);return c(C,e.get_high(),this.unsigned)}if(E.isZero())return this.unsigned?N:F;if(this.eq(le))return E.isOdd()?le:F;if(E.eq(le))return this.isOdd()?le:F;if(this.isNegative())return E.isNegative()?this.neg().mul(E.neg()):this.neg().mul(E).neg();if(E.isNegative())return this.mul(E.neg()).neg();if(this.lt(M)&&E.lt(M))return l(this.toNumber()*E.toNumber(),this.unsigned);var Q=this.high>>>16,Y=this.high&65535,J=this.low>>>16,ce=this.low&65535,Ne=E.high>>>16,Me=E.high&65535,Te=E.low>>>16,Z=E.low&65535,je=0,Ee=0,we=0,We=0;return We+=ce*Z,we+=We>>>16,We&=65535,we+=J*Z,Ee+=we>>>16,we&=65535,we+=ce*Te,Ee+=we>>>16,we&=65535,Ee+=Y*Z,je+=Ee>>>16,Ee&=65535,Ee+=J*Te,je+=Ee>>>16,Ee&=65535,Ee+=ce*Me,je+=Ee>>>16,Ee&=65535,je+=Q*Z+Y*Te+J*Me+ce*Ne,je&=65535,c(we<<16|We,je<<16|Ee,this.unsigned)},v.mul=v.multiply,v.divide=function(E){if(o(E)||(E=_(E)),E.isZero())throw Error("division by zero");if(e){if(!this.unsigned&&this.high===-2147483648&&E.low===-1&&E.high===-1)return this;var C=(this.unsigned?e.div_u:e.div_s)(this.low,this.high,E.low,E.high);return c(C,e.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?N:F;var Q,Y,J;if(this.unsigned){if(E.unsigned||(E=E.toUnsigned()),E.gt(this))return N;if(E.gt(this.shru(1)))return B;J=N}else{if(this.eq(le)){if(E.eq(K)||E.eq(G))return le;if(E.eq(le))return K;var ce=this.shr(1);return Q=ce.div(E).shl(1),Q.eq(F)?E.isNegative()?K:G:(Y=this.sub(E.mul(Q)),J=Q.add(Y.div(E)),J)}else if(E.eq(le))return this.unsigned?N:F;if(this.isNegative())return E.isNegative()?this.neg().div(E.neg()):this.neg().div(E).neg();if(E.isNegative())return this.div(E.neg()).neg();J=F}for(Y=this;Y.gte(E);){Q=Math.max(1,Math.floor(Y.toNumber()/E.toNumber()));for(var Ne=Math.ceil(Math.log(Q)/Math.LN2),Me=Ne<=48?1:u(2,Ne-48),Te=l(Q),Z=Te.mul(E);Z.isNegative()||Z.gt(Y);)Q-=Me,Te=l(Q,this.unsigned),Z=Te.mul(E);Te.isZero()&&(Te=K),J=J.add(Te),Y=Y.sub(Z)}return J},v.div=v.divide,v.modulo=function(E){if(o(E)||(E=_(E)),e){var C=(this.unsigned?e.rem_u:e.rem_s)(this.low,this.high,E.low,E.high);return c(C,e.get_high(),this.unsigned)}return this.sub(this.div(E).mul(E))},v.mod=v.modulo,v.rem=v.modulo,v.not=function(){return c(~this.low,~this.high,this.unsigned)},v.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},v.clz=v.countLeadingZeros,v.countTrailingZeros=function(){return this.low?s(this.low):s(this.high)+32},v.ctz=v.countTrailingZeros,v.and=function(E){return o(E)||(E=_(E)),c(this.low&E.low,this.high&E.high,this.unsigned)},v.or=function(E){return o(E)||(E=_(E)),c(this.low|E.low,this.high|E.high,this.unsigned)},v.xor=function(E){return o(E)||(E=_(E)),c(this.low^E.low,this.high^E.high,this.unsigned)},v.shiftLeft=function(E){return o(E)&&(E=E.toInt()),(E&=63)===0?this:E<32?c(this.low<>>32-E,this.unsigned):c(0,this.low<>>E|this.high<<32-E,this.high>>E,this.unsigned):c(this.high>>E-32,this.high>=0?0:-1,this.unsigned)},v.shr=v.shiftRight,v.shiftRightUnsigned=function(E){return o(E)&&(E=E.toInt()),(E&=63)===0?this:E<32?c(this.low>>>E|this.high<<32-E,this.high>>>E,this.unsigned):E===32?c(this.high,0,this.unsigned):c(this.high>>>E-32,0,this.unsigned)},v.shru=v.shiftRightUnsigned,v.shr_u=v.shiftRightUnsigned,v.rotateLeft=function(E){var C;return o(E)&&(E=E.toInt()),(E&=63)===0?this:E===32?c(this.high,this.low,this.unsigned):E<32?(C=32-E,c(this.low<>>C,this.high<>>C,this.unsigned)):(E-=32,C=32-E,c(this.high<>>C,this.low<>>C,this.unsigned))},v.rotl=v.rotateLeft,v.rotateRight=function(E){var C;return o(E)&&(E=E.toInt()),(E&=63)===0?this:E===32?c(this.high,this.low,this.unsigned):E<32?(C=32-E,c(this.high<>>E,this.low<>>E,this.unsigned)):(E-=32,C=32-E,c(this.low<>>E,this.high<>>E,this.unsigned))},v.rotr=v.rotateRight,v.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},v.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},v.toBytes=function(E){return E?this.toBytesLE():this.toBytesBE()},v.toBytesLE=function(){var E=this.high,C=this.low;return[C&255,C>>>8&255,C>>>16&255,C>>>24,E&255,E>>>8&255,E>>>16&255,E>>>24]},v.toBytesBE=function(){var E=this.high,C=this.low;return[E>>>24,E>>>16&255,E>>>8&255,E&255,C>>>24,C>>>16&255,C>>>8&255,C&255]},t.fromBytes=function(E,C,Q){return Q?t.fromBytesLE(E,C):t.fromBytesBE(E,C)},t.fromBytesLE=function(E,C){return new t(E[0]|E[1]<<8|E[2]<<16|E[3]<<24,E[4]|E[5]<<8|E[6]<<16|E[7]<<24,C)},t.fromBytesBE=function(E,C){return new t(E[4]<<24|E[5]<<16|E[6]<<8|E[7],E[0]<<24|E[1]<<16|E[2]<<8|E[3],C)},typeof BigInt=="function"&&(t.fromBigInt=function(E,C){var Q=Number(BigInt.asIntN(32,E)),Y=Number(BigInt.asIntN(32,E>>BigInt(32)));return c(Q,Y,C)},t.fromValue=function(E,C){return typeof E=="bigint"?t.fromBigInt(E,C):_(E,C)},v.toBigInt=function(){var E=BigInt(this.low>>>0),C=BigInt(this.unsigned?this.high>>>0:this.high);return C<{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.loadFileDescriptorSetFromObject=Je.loadFileDescriptorSetFromBuffer=Je.fromJSON=Je.loadSync=Je.load=Je.IdempotencyLevel=Je.isAnyExtension=Je.Long=void 0;var Jpe=TH(),Qr=N_(),zy=Cq(),$y=wq(),Qpe=Dq();Je.Long=Qpe;function Zpe(r){return"@type"in r&&typeof r["@type"]=="string"}Je.isAnyExtension=Zpe;var Bq;(function(r){r.IDEMPOTENCY_UNKNOWN="IDEMPOTENCY_UNKNOWN",r.NO_SIDE_EFFECTS="NO_SIDE_EFFECTS",r.IDEMPOTENT="IDEMPOTENT"})(Bq=Je.IdempotencyLevel||(Je.IdempotencyLevel={}));var Vq={longs:String,enums:String,bytes:String,defaults:!0,oneofs:!0,json:!0};function ede(r,e){return r===""?e:r+"."+e}function tde(r){return r instanceof Qr.Service||r instanceof Qr.Type||r instanceof Qr.Enum}function rde(r){return r instanceof Qr.Namespace||r instanceof Qr.Root}function Fq(r,e){let t=ede(e,r.name);return tde(r)?[[t,r]]:rde(r)&&typeof r.nested<"u"?Object.keys(r.nested).map(o=>Fq(r.nested[o],t)).reduce((o,s)=>o.concat(s),[]):[]}function Uq(r,e){return function(o){return r.toObject(r.decode(o),e)}}function kq(r){return function(t){if(Array.isArray(t))throw new Error(`Failed to serialize message: expected object with ${r.name} structure, got array instead`);let o=r.fromObject(t);return r.encode(o).finish()}}function nde(r){return(r||[]).reduce((e,t)=>{for(let[o,s]of Object.entries(t))switch(o){case"uninterpreted_option":e.uninterpreted_option.push(t.uninterpreted_option);break;default:e[o]=s}return e},{deprecated:!1,idempotency_level:Bq.IDEMPOTENCY_UNKNOWN,uninterpreted_option:[]})}function ide(r,e,t,o){let s=r.resolvedRequestType,a=r.resolvedResponseType;return{path:"/"+e+"/"+r.name,requestStream:!!r.requestStream,responseStream:!!r.responseStream,requestSerialize:kq(s),requestDeserialize:Uq(s,t),responseSerialize:kq(a),responseDeserialize:Uq(a,t),originalName:Jpe(r.name),requestType:Ky(s,o),responseType:Ky(a,o),options:nde(r.parsedOptions)}}function ode(r,e,t,o){let s={};for(let a of r.methodsArray)s[a.name]=ide(a,e,t,o);return s}function Ky(r,e){let t=r.toDescriptor("proto3");return{format:"Protocol Buffer 3 DescriptorProto",type:t.$type.toObject(t,Vq),fileDescriptorProtos:e}}function sde(r,e){let t=r.toDescriptor("proto3");return{format:"Protocol Buffer 3 EnumDescriptorProto",type:t.$type.toObject(t,Vq),fileDescriptorProtos:e}}function ade(r,e,t,o){if(r instanceof Qr.Service)return ode(r,e,t,o);if(r instanceof Qr.Type)return Ky(r,o);if(r instanceof Qr.Enum)return sde(r,o);throw new Error("Type mismatch in reflection object handling")}function I_(r,e){let t={};r.resolveAll();let s=r.toDescriptor("proto3").file.map(a=>Buffer.from(zy.FileDescriptorProto.encode(a).finish()));for(let[a,i]of Fq(r,""))t[a]=ade(i,a,e,s);return t}function Gq(r,e){e=e||{};let t=Qr.Root.fromDescriptor(r);return t.resolveAll(),I_(t,e)}function lde(r,e){return(0,$y.loadProtosWithOptions)(r,e).then(t=>I_(t,e))}Je.load=lde;function cde(r,e){let t=(0,$y.loadProtosWithOptionsSync)(r,e);return I_(t,e)}Je.loadSync=cde;function ude(r,e){e=e||{};let t=Qr.Root.fromJSON(r);return t.resolveAll(),I_(t,e)}Je.fromJSON=ude;function fde(r,e){let t=zy.FileDescriptorSet.decode(r);return Gq(t,e)}Je.loadFileDescriptorSetFromBuffer=fde;function pde(r,e){let t=zy.FileDescriptorSet.fromObject(r);return Gq(t,e)}Je.loadFileDescriptorSetFromObject=pde;(0,$y.addCommonProtos)()});var Eo=T(Ie=>{"use strict";Object.defineProperty(Ie,"__esModule",{value:!0});Ie.registerChannelzSocket=Ie.registerChannelzServer=Ie.registerChannelzSubchannel=Ie.registerChannelzChannel=Ie.ChannelzCallTrackerStub=Ie.ChannelzCallTracker=Ie.ChannelzChildrenTrackerStub=Ie.ChannelzChildrenTracker=Ie.ChannelzTrace=Ie.ChannelzTraceStub=void 0;Ie.unregisterChannelzRef=mde;Ie.getChannelzHandlers=Wq;Ie.getChannelzServiceDefinition=Jq;Ie.setup=Pde;var b_=V("net"),_o=(F3(),ee(V3)),Qc=tr(),Zc=ue(),dde=rr(),hde=t_(),_de=sy();function Xy(r){return{channel_id:r.id,name:r.name}}function eO(r){return{subchannel_id:r.id,name:r.name}}function Ede(r){return{server_id:r.id}}function w_(r){return{socket_id:r.id,name:r.name}}var qq=32,tO=100,Wy=class{constructor(){this.events=[],this.creationTimestamp=new Date,this.eventsLogged=0}addTrace(){}getTraceMessage(){return{creation_timestamp:Zr(this.creationTimestamp),num_events_logged:this.eventsLogged,events:[]}}};Ie.ChannelzTraceStub=Wy;var Jy=class{constructor(){this.events=[],this.eventsLogged=0,this.creationTimestamp=new Date}addTrace(e,t,o){let s=new Date;this.events.push({description:t,severity:e,timestamp:s,childChannel:(o==null?void 0:o.kind)==="channel"?o:void 0,childSubchannel:(o==null?void 0:o.kind)==="subchannel"?o:void 0}),this.events.length>=qq*2&&(this.events=this.events.slice(qq)),this.eventsLogged+=1}getTraceMessage(){return{creation_timestamp:Zr(this.creationTimestamp),num_events_logged:this.eventsLogged,events:this.events.map(e=>({description:e.description,severity:e.severity,timestamp:Zr(e.timestamp),channel_ref:e.childChannel?Xy(e.childChannel):null,subchannel_ref:e.childSubchannel?eO(e.childSubchannel):null}))}}};Ie.ChannelzTrace=Jy;var x_=class{constructor(){this.channelChildren=new _o.OrderedMap,this.subchannelChildren=new _o.OrderedMap,this.socketChildren=new _o.OrderedMap,this.trackerMap={channel:this.channelChildren,subchannel:this.subchannelChildren,socket:this.socketChildren}}refChild(e){let t=this.trackerMap[e.kind],o=t.find(e.id);o.equals(t.end())?t.setElement(e.id,{ref:e,count:1},o):o.pointer[1].count+=1}unrefChild(e){let t=this.trackerMap[e.kind],o=t.getElementByKey(e.id);o!==void 0&&(o.count-=1,o.count===0&&t.eraseElementByKey(e.id))}getChildLists(){return{channels:this.channelChildren,subchannels:this.subchannelChildren,sockets:this.socketChildren}}};Ie.ChannelzChildrenTracker=x_;var Qy=class extends x_{refChild(){}unrefChild(){}};Ie.ChannelzChildrenTrackerStub=Qy;var M_=class{constructor(){this.callsStarted=0,this.callsSucceeded=0,this.callsFailed=0,this.lastCallStartedTimestamp=null}addCallStarted(){this.callsStarted+=1,this.lastCallStartedTimestamp=new Date}addCallSucceeded(){this.callsSucceeded+=1}addCallFailed(){this.callsFailed+=1}};Ie.ChannelzCallTracker=M_;var Zy=class extends M_{addCallStarted(){}addCallSucceeded(){}addCallFailed(){}};Ie.ChannelzCallTrackerStub=Zy;var On={channel:new _o.OrderedMap,subchannel:new _o.OrderedMap,server:new _o.OrderedMap,socket:new _o.OrderedMap},D_=r=>{let e=1;function t(){return e++}let o=On[r];return(s,a,i)=>{let n=t(),l={id:n,name:s,kind:r};return i&&o.setElement(n,{ref:l,getInfo:a}),l}};Ie.registerChannelzChannel=D_("channel");Ie.registerChannelzSubchannel=D_("subchannel");Ie.registerChannelzServer=D_("server");Ie.registerChannelzSocket=D_("socket");function mde(r){On[r.kind].eraseElementByKey(r.id)}function Tde(r){let e=Number.parseInt(r,16);return[e/256|0,e%256]}function jq(r){if(r==="")return[];let e=r.split(":").map(o=>Tde(o));return[].concat(...e)}function Sde(r){return(0,b_.isIPv6)(r)&&r.toLowerCase().startsWith("::ffff:")&&(0,b_.isIPv4)(r.substring(7))}function Yq(r){return Buffer.from(Uint8Array.from(r.split(".").map(e=>Number.parseInt(e))))}function gde(r){if((0,b_.isIPv4)(r))return Yq(r);if(Sde(r))return Yq(r.substring(7));if((0,b_.isIPv6)(r)){let e,t,o=r.indexOf("::");o===-1?(e=r,t=""):(e=r.substring(0,o),t=r.substring(o+2));let s=Buffer.from(jq(e)),a=Buffer.from(jq(t)),i=Buffer.alloc(16-s.length-a.length,0);return Buffer.concat([s,i,a])}else return null}function zq(r){switch(r){case Qc.ConnectivityState.CONNECTING:return{state:"CONNECTING"};case Qc.ConnectivityState.IDLE:return{state:"IDLE"};case Qc.ConnectivityState.READY:return{state:"READY"};case Qc.ConnectivityState.SHUTDOWN:return{state:"SHUTDOWN"};case Qc.ConnectivityState.TRANSIENT_FAILURE:return{state:"TRANSIENT_FAILURE"};default:return{state:"UNKNOWN"}}}function Zr(r){if(!r)return null;let e=r.getTime();return{seconds:e/1e3|0,nanos:e%1e3*1e6}}function $q(r){let e=r.getInfo(),t=[],o=[];return e.children.channels.forEach(s=>{t.push(Xy(s[1].ref))}),e.children.subchannels.forEach(s=>{o.push(eO(s[1].ref))}),{ref:Xy(r.ref),data:{target:e.target,state:zq(e.state),calls_started:e.callTracker.callsStarted,calls_succeeded:e.callTracker.callsSucceeded,calls_failed:e.callTracker.callsFailed,last_call_started_timestamp:Zr(e.callTracker.lastCallStartedTimestamp),trace:e.trace.getTraceMessage()},channel_ref:t,subchannel_ref:o}}function vde(r,e){let t=parseInt(r.request.channel_id,10),o=On.channel.getElementByKey(t);if(o===void 0){e({code:Zc.Status.NOT_FOUND,details:"No channel data found for id "+t});return}e(null,{channel:$q(o)})}function yde(r,e){let t=parseInt(r.request.max_results,10)||tO,o=[],s=parseInt(r.request.start_channel_id,10),a=On.channel,i;for(i=a.lowerBound(s);!i.equals(a.end())&&o.length{t.push(w_(o[1].ref))}),{ref:Ede(r.ref),data:{calls_started:e.callTracker.callsStarted,calls_succeeded:e.callTracker.callsSucceeded,calls_failed:e.callTracker.callsFailed,last_call_started_timestamp:Zr(e.callTracker.lastCallStartedTimestamp),trace:e.trace.getTraceMessage()},listen_socket:t}}function Ode(r,e){let t=parseInt(r.request.server_id,10),s=On.server.getElementByKey(t);if(s===void 0){e({code:Zc.Status.NOT_FOUND,details:"No server data found for id "+t});return}e(null,{server:Xq(s)})}function Ade(r,e){let t=parseInt(r.request.max_results,10)||tO,o=parseInt(r.request.start_server_id,10),s=On.server,a=[],i;for(i=s.lowerBound(o);!i.equals(s.end())&&a.length{a.push(w_(n[1].ref))});let i={ref:eO(o.ref),data:{target:s.target,state:zq(s.state),calls_started:s.callTracker.callsStarted,calls_succeeded:s.callTracker.callsSucceeded,calls_failed:s.callTracker.callsFailed,last_call_started_timestamp:Zr(s.callTracker.lastCallStartedTimestamp),trace:s.trace.getTraceMessage()},socket_ref:a};e(null,{subchannel:i})}function Kq(r){var e;return(0,dde.isTcpSubchannelAddress)(r)?{address:"tcpip_address",tcpip_address:{ip_address:(e=gde(r.host))!==null&&e!==void 0?e:void 0,port:r.port}}:{address:"uds_address",uds_address:{filename:r.path}}}function Nde(r,e){var t,o,s,a,i;let n=parseInt(r.request.socket_id,10),l=On.socket.getElementByKey(n);if(l===void 0){e({code:Zc.Status.NOT_FOUND,details:"No socket data found for id "+n});return}let c=l.getInfo(),u=c.security?{model:"tls",tls:{cipher_suite:c.security.cipherSuiteStandardName?"standard_name":"other_name",standard_name:(t=c.security.cipherSuiteStandardName)!==null&&t!==void 0?t:void 0,other_name:(o=c.security.cipherSuiteOtherName)!==null&&o!==void 0?o:void 0,local_certificate:(s=c.security.localCertificate)!==null&&s!==void 0?s:void 0,remote_certificate:(a=c.security.remoteCertificate)!==null&&a!==void 0?a:void 0}}:null,f={ref:w_(l.ref),local:c.localAddress?Kq(c.localAddress):null,remote:c.remoteAddress?Kq(c.remoteAddress):null,remote_name:(i=c.remoteName)!==null&&i!==void 0?i:void 0,security:u,data:{keep_alives_sent:c.keepAlivesSent,streams_started:c.streamsStarted,streams_succeeded:c.streamsSucceeded,streams_failed:c.streamsFailed,last_local_stream_created_timestamp:Zr(c.lastLocalStreamCreatedTimestamp),last_remote_stream_created_timestamp:Zr(c.lastRemoteStreamCreatedTimestamp),messages_received:c.messagesReceived,messages_sent:c.messagesSent,last_message_received_timestamp:Zr(c.lastMessageReceivedTimestamp),last_message_sent_timestamp:Zr(c.lastMessageSentTimestamp),local_flow_control_window:c.localFlowControlWindow?{value:c.localFlowControlWindow}:null,remote_flow_control_window:c.remoteFlowControlWindow?{value:c.remoteFlowControlWindow}:null}};e(null,{socket:f})}function Cde(r,e){let t=parseInt(r.request.server_id,10),o=On.server.getElementByKey(t);if(o===void 0){e({code:Zc.Status.NOT_FOUND,details:"No server data found for id "+t});return}let s=parseInt(r.request.start_socket_id,10),a=parseInt(r.request.max_results,10)||tO,n=o.getInfo().sessionChildren.sockets,l=[],c;for(c=n.lowerBound(s);!c.equals(n.end())&&l.length{"use strict";Object.defineProperty(k_,"__esModule",{value:!0});k_.Subchannel=void 0;var ye=tr(),Ide=Ic(),rO=Pe(),U_=ue(),Lde=Pt(),bde=rr(),en=Eo(),xde="subchannel",Mde=~(1<<31),nO=class{constructor(e,t,o,s,a){var i;this.channelTarget=e,this.subchannelAddress=t,this.options=o,this.connector=a,this.connectivityState=ye.ConnectivityState.IDLE,this.transport=null,this.continueConnecting=!1,this.stateListeners=new Set,this.refcount=0,this.channelzEnabled=!0;let n={initialDelay:o["grpc.initial_reconnect_backoff_ms"],maxDelay:o["grpc.max_reconnect_backoff_ms"]};this.backoffTimeout=new Ide.BackoffTimeout(()=>{this.handleBackoffTimer()},n),this.backoffTimeout.unref(),this.subchannelAddressString=(0,bde.subchannelAddressToString)(t),this.keepaliveTime=(i=o["grpc.keepalive_time_ms"])!==null&&i!==void 0?i:-1,o["grpc.enable_channelz"]===0?(this.channelzEnabled=!1,this.channelzTrace=new en.ChannelzTraceStub,this.callTracker=new en.ChannelzCallTrackerStub,this.childrenTracker=new en.ChannelzChildrenTrackerStub,this.streamTracker=new en.ChannelzCallTrackerStub):(this.channelzTrace=new en.ChannelzTrace,this.callTracker=new en.ChannelzCallTracker,this.childrenTracker=new en.ChannelzChildrenTracker,this.streamTracker=new en.ChannelzCallTracker),this.channelzRef=(0,en.registerChannelzSubchannel)(this.subchannelAddressString,()=>this.getChannelzInfo(),this.channelzEnabled),this.channelzTrace.addTrace("CT_INFO","Subchannel created"),this.trace("Subchannel constructed with options "+JSON.stringify(o,void 0,2)),this.secureConnector=s._createSecureConnector(e,o)}getChannelzInfo(){return{state:this.connectivityState,trace:this.channelzTrace,callTracker:this.callTracker,children:this.childrenTracker.getChildLists(),target:this.subchannelAddressString}}trace(e){rO.trace(U_.LogVerbosity.DEBUG,xde,"("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}refTrace(e){rO.trace(U_.LogVerbosity.DEBUG,"subchannel_refcount","("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}handleBackoffTimer(){this.continueConnecting?this.transitionToState([ye.ConnectivityState.TRANSIENT_FAILURE],ye.ConnectivityState.CONNECTING):this.transitionToState([ye.ConnectivityState.TRANSIENT_FAILURE],ye.ConnectivityState.IDLE)}startBackoff(){this.backoffTimeout.runOnce()}stopBackoff(){this.backoffTimeout.stop(),this.backoffTimeout.reset()}startConnectingInternal(){let e=this.options;if(e["grpc.keepalive_time_ms"]){let t=Math.min(this.keepaliveTime,Mde);e=Object.assign(Object.assign({},e),{"grpc.keepalive_time_ms":t})}this.connector.connect(this.subchannelAddress,this.secureConnector,e).then(t=>{this.transitionToState([ye.ConnectivityState.CONNECTING],ye.ConnectivityState.READY)?(this.transport=t,this.channelzEnabled&&this.childrenTracker.refChild(t.getChannelzRef()),t.addDisconnectListener(o=>{this.transitionToState([ye.ConnectivityState.READY],ye.ConnectivityState.IDLE),o&&this.keepaliveTime>0&&(this.keepaliveTime*=2,rO.log(U_.LogVerbosity.ERROR,`Connection to ${(0,Lde.uriToString)(this.channelTarget)} at ${this.subchannelAddressString} rejected by server because of excess pings. Increasing ping interval to ${this.keepaliveTime} ms`))})):t.shutdown()},t=>{this.transitionToState([ye.ConnectivityState.CONNECTING],ye.ConnectivityState.TRANSIENT_FAILURE,`${t}`)})}transitionToState(e,t,o){var s,a;if(e.indexOf(this.connectivityState)===-1)return!1;o?this.trace(ye.ConnectivityState[this.connectivityState]+" -> "+ye.ConnectivityState[t]+' with error "'+o+'"'):this.trace(ye.ConnectivityState[this.connectivityState]+" -> "+ye.ConnectivityState[t]),this.channelzEnabled&&this.channelzTrace.addTrace("CT_INFO","Connectivity state change to "+ye.ConnectivityState[t]);let i=this.connectivityState;switch(this.connectivityState=t,t){case ye.ConnectivityState.READY:this.stopBackoff();break;case ye.ConnectivityState.CONNECTING:this.startBackoff(),this.startConnectingInternal(),this.continueConnecting=!1;break;case ye.ConnectivityState.TRANSIENT_FAILURE:this.channelzEnabled&&this.transport&&this.childrenTracker.unrefChild(this.transport.getChannelzRef()),(s=this.transport)===null||s===void 0||s.shutdown(),this.transport=null,this.backoffTimeout.isRunning()||process.nextTick(()=>{this.handleBackoffTimer()});break;case ye.ConnectivityState.IDLE:this.channelzEnabled&&this.transport&&this.childrenTracker.unrefChild(this.transport.getChannelzRef()),(a=this.transport)===null||a===void 0||a.shutdown(),this.transport=null;break;default:throw new Error(`Invalid state: unknown ConnectivityState ${t}`)}for(let n of this.stateListeners)n(this,i,t,this.keepaliveTime,o);return!0}ref(){this.refTrace("refcount "+this.refcount+" -> "+(this.refcount+1)),this.refcount+=1}unref(){this.refTrace("refcount "+this.refcount+" -> "+(this.refcount-1)),this.refcount-=1,this.refcount===0&&(this.channelzTrace.addTrace("CT_INFO","Shutting down"),(0,en.unregisterChannelzRef)(this.channelzRef),this.secureConnector.destroy(),process.nextTick(()=>{this.transitionToState([ye.ConnectivityState.CONNECTING,ye.ConnectivityState.READY],ye.ConnectivityState.IDLE)}))}unrefIfOneRef(){return this.refcount===1?(this.unref(),!0):!1}createCall(e,t,o,s){if(!this.transport)throw new Error("Cannot create call, subchannel not READY");let a;return this.channelzEnabled?(this.callTracker.addCallStarted(),this.streamTracker.addCallStarted(),a={onCallEnd:i=>{i.code===U_.Status.OK?this.callTracker.addCallSucceeded():this.callTracker.addCallFailed()}}):a={},this.transport.createCall(e,t,o,s,a)}startConnecting(){process.nextTick(()=>{this.transitionToState([ye.ConnectivityState.IDLE],ye.ConnectivityState.CONNECTING)||this.connectivityState===ye.ConnectivityState.TRANSIENT_FAILURE&&(this.continueConnecting=!0)})}getConnectivityState(){return this.connectivityState}addConnectivityStateListener(e){this.stateListeners.add(e)}removeConnectivityStateListener(e){this.stateListeners.delete(e)}resetBackoff(){process.nextTick(()=>{this.backoffTimeout.reset(),this.transitionToState([ye.ConnectivityState.TRANSIENT_FAILURE],ye.ConnectivityState.CONNECTING)})}getAddress(){return this.subchannelAddressString}getChannelzRef(){return this.channelzRef}isHealthy(){return!0}addHealthStateWatcher(e){}removeHealthStateWatcher(e){}getRealSubchannel(){return this}realSubchannelEquals(e){return e.getRealSubchannel()===this}throttleKeepalive(e){e>this.keepaliveTime&&(this.keepaliveTime=e)}getCallCredentials(){return this.secureConnector.getCallCredentials()}};k_.Subchannel=nO});var Zq=T(B_=>{"use strict";var iO;Object.defineProperty(B_,"__esModule",{value:!0});B_.GRPC_NODE_USE_ALTERNATIVE_RESOLVER=void 0;B_.GRPC_NODE_USE_ALTERNATIVE_RESOLVER=((iO=process.env.GRPC_NODE_USE_ALTERNATIVE_RESOLVER)!==null&&iO!==void 0?iO:"false")==="true"});var cO=T(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.DEFAULT_PORT=void 0;mo.setup=Fde;var ej=jr(),oO=V("dns"),wde=wv(),sO=ue(),aO=ht(),Dde=Pe(),Ude=ue(),ui=Pt(),tj=V("net"),kde=Ic(),rj=Zq(),Bde="dns_resolver";function tn(r){Dde.trace(Ude.LogVerbosity.DEBUG,Bde,r)}mo.DEFAULT_PORT=443;var Vde=3e4,lO=class{constructor(e,t,o){var s,a,i;this.target=e,this.listener=t,this.pendingLookupPromise=null,this.pendingTxtPromise=null,this.latestLookupResult=null,this.latestServiceConfig=null,this.latestServiceConfigError=null,this.continueResolving=!1,this.isNextResolutionTimerRunning=!1,this.isServiceConfigEnabled=!0,this.returnedIpResult=!1,this.alternativeResolver=new oO.promises.Resolver,tn("Resolver constructed for target "+(0,ui.uriToString)(e)),e.authority&&this.alternativeResolver.setServers([e.authority]);let n=(0,ui.splitHostPort)(e.path);n===null?(this.ipResult=null,this.dnsHostname=null,this.port=null):(0,tj.isIPv4)(n.host)||(0,tj.isIPv6)(n.host)?(this.ipResult=[{addresses:[{host:n.host,port:(s=n.port)!==null&&s!==void 0?s:mo.DEFAULT_PORT}]}],this.dnsHostname=null,this.port=null):(this.ipResult=null,this.dnsHostname=n.host,this.port=(a=n.port)!==null&&a!==void 0?a:mo.DEFAULT_PORT),this.percentage=Math.random()*100,o["grpc.service_config_disable_resolution"]===1&&(this.isServiceConfigEnabled=!1),this.defaultResolutionError={code:sO.Status.UNAVAILABLE,details:`Name resolution failed for target ${(0,ui.uriToString)(this.target)}`,metadata:new aO.Metadata};let l={initialDelay:o["grpc.initial_reconnect_backoff_ms"],maxDelay:o["grpc.max_reconnect_backoff_ms"]};this.backoff=new kde.BackoffTimeout(()=>{this.continueResolving&&this.startResolutionWithBackoff()},l),this.backoff.unref(),this.minTimeBetweenResolutionsMs=(i=o["grpc.dns_min_time_between_resolutions_ms"])!==null&&i!==void 0?i:Vde,this.nextResolutionTimer=setTimeout(()=>{},0),clearTimeout(this.nextResolutionTimer)}startResolution(){if(this.ipResult!==null){this.returnedIpResult||(tn("Returning IP address for target "+(0,ui.uriToString)(this.target)),setImmediate(()=>{this.listener.onSuccessfulResolution(this.ipResult,null,null,null,{})}),this.returnedIpResult=!0),this.backoff.stop(),this.backoff.reset(),this.stopNextResolutionTimer();return}if(this.dnsHostname===null)tn("Failed to parse DNS address "+(0,ui.uriToString)(this.target)),setImmediate(()=>{this.listener.onError({code:sO.Status.UNAVAILABLE,details:`Failed to parse DNS address ${(0,ui.uriToString)(this.target)}`,metadata:new aO.Metadata})}),this.stopNextResolutionTimer();else{if(this.pendingLookupPromise!==null)return;tn("Looking up DNS hostname "+this.dnsHostname),this.latestLookupResult=null;let e=this.dnsHostname;this.pendingLookupPromise=this.lookup(e),this.pendingLookupPromise.then(t=>{if(this.pendingLookupPromise===null)return;this.pendingLookupPromise=null,this.backoff.reset(),this.backoff.stop(),this.latestLookupResult=t.map(s=>({addresses:[s]}));let o="["+t.map(s=>s.host+":"+s.port).join(",")+"]";if(tn("Resolved addresses for target "+(0,ui.uriToString)(this.target)+": "+o),this.latestLookupResult.length===0){this.listener.onError(this.defaultResolutionError);return}this.listener.onSuccessfulResolution(this.latestLookupResult,this.latestServiceConfig,this.latestServiceConfigError,null,{})},t=>{this.pendingLookupPromise!==null&&(tn("Resolution error for target "+(0,ui.uriToString)(this.target)+": "+t.message),this.pendingLookupPromise=null,this.stopNextResolutionTimer(),this.listener.onError(this.defaultResolutionError))}),this.isServiceConfigEnabled&&this.pendingTxtPromise===null&&(this.pendingTxtPromise=this.resolveTxt(e),this.pendingTxtPromise.then(t=>{if(this.pendingTxtPromise!==null){this.pendingTxtPromise=null;try{this.latestServiceConfig=(0,wde.extractAndSelectServiceConfig)(t,this.percentage)}catch(o){this.latestServiceConfigError={code:sO.Status.UNAVAILABLE,details:`Parsing service config failed with error ${o.message}`,metadata:new aO.Metadata}}this.latestLookupResult!==null&&this.listener.onSuccessfulResolution(this.latestLookupResult,this.latestServiceConfig,this.latestServiceConfigError,null,{})}},t=>{}))}}async lookup(e){if(rj.GRPC_NODE_USE_ALTERNATIVE_RESOLVER){tn("Using alternative DNS resolver.");let o=await Promise.allSettled([this.alternativeResolver.resolve4(e),this.alternativeResolver.resolve6(e)]);if(o.every(s=>s.status==="rejected"))throw new Error(o[0].reason);return o.reduce((s,a)=>a.status==="fulfilled"?[...s,...a.value]:s,[]).map(s=>({host:s,port:+this.port}))}return(await oO.promises.lookup(e,{all:!0})).map(o=>({host:o.address,port:+this.port}))}async resolveTxt(e){return rj.GRPC_NODE_USE_ALTERNATIVE_RESOLVER?(tn("Using alternative DNS resolver."),this.alternativeResolver.resolveTxt(e)):oO.promises.resolveTxt(e)}startNextResolutionTimer(){var e,t;clearTimeout(this.nextResolutionTimer),this.nextResolutionTimer=setTimeout(()=>{this.stopNextResolutionTimer(),this.continueResolving&&this.startResolutionWithBackoff()},this.minTimeBetweenResolutionsMs),(t=(e=this.nextResolutionTimer).unref)===null||t===void 0||t.call(e),this.isNextResolutionTimerRunning=!0}stopNextResolutionTimer(){clearTimeout(this.nextResolutionTimer),this.isNextResolutionTimerRunning=!1}startResolutionWithBackoff(){this.pendingLookupPromise===null&&(this.continueResolving=!1,this.backoff.runOnce(),this.startNextResolutionTimer(),this.startResolution())}updateResolution(){this.pendingLookupPromise===null&&(this.isNextResolutionTimerRunning||this.backoff.isRunning()?(this.isNextResolutionTimerRunning?tn('resolution update delayed by "min time between resolutions" rate limit'):tn("resolution update delayed by backoff timer until "+this.backoff.getEndTime().toISOString()),this.continueResolving=!0):this.startResolutionWithBackoff())}destroy(){this.continueResolving=!1,this.backoff.reset(),this.backoff.stop(),this.stopNextResolutionTimer(),this.pendingLookupPromise=null,this.pendingTxtPromise=null,this.latestLookupResult=null,this.latestServiceConfig=null,this.latestServiceConfigError=null,this.returnedIpResult=!1}static getDefaultAuthority(e){return e.path}};function Fde(){(0,ej.registerResolver)("dns",lO),(0,ej.registerDefaultScheme)("dns")}});var uO=T(ru=>{"use strict";Object.defineProperty(ru,"__esModule",{value:!0});ru.parseCIDR=oj;ru.mapProxyName=Wde;ru.getProxiedConnection=Jde;var eu=Pe(),ma=ue(),ij=V("net"),Gde=V("http"),Hde=Pe(),nj=rr(),tu=Pt(),qde=V("url"),jde=cO(),Yde="proxy";function Ta(r){Hde.trace(ma.LogVerbosity.DEBUG,Yde,r)}function Kde(){let r="",e="";if(process.env.grpc_proxy)e="grpc_proxy",r=process.env.grpc_proxy;else if(process.env.https_proxy)e="https_proxy",r=process.env.https_proxy;else if(process.env.http_proxy)e="http_proxy",r=process.env.http_proxy;else return{};let t;try{t=new qde.URL(r)}catch{return(0,eu.log)(ma.LogVerbosity.ERROR,`cannot parse value of "${e}" env var`),{}}if(t.protocol!=="http:")return(0,eu.log)(ma.LogVerbosity.ERROR,`"${t.protocol}" scheme not supported in proxy URI`),{};let o=null;t.username&&(t.password?((0,eu.log)(ma.LogVerbosity.INFO,"userinfo found in proxy URI"),o=decodeURIComponent(`${t.username}:${t.password}`)):o=t.username);let s=t.hostname,a=t.port;a===""&&(a="80");let i={address:`${s}:${a}`};return o&&(i.creds=o),Ta("Proxy server "+i.address+" set by environment variable "+e),i}function zde(){let r=process.env.no_grpc_proxy,e="no_grpc_proxy";return r||(r=process.env.no_proxy,e="no_proxy"),r?(Ta("No proxy server list set by environment variable "+e),r.split(",")):[]}function oj(r){let e=r.split("/");if(e.length!==2)return null;let t=parseInt(e[1],10);return!(0,ij.isIPv4)(e[0])||Number.isNaN(t)||t<0||t>32?null:{ip:sj(e[0]),prefixLength:t}}function sj(r){return r.split(".").reduce((e,t)=>(e<<8)+parseInt(t,10),0)}function $de(r,e){let t=r.ip,o=-1<<32-r.prefixLength;return(sj(e)&o)===(t&o)}function Xde(r){for(let e of zde()){let t=oj(e);if((0,ij.isIPv4)(r)&&t&&$de(t,r))return!0;if(r.endsWith(e))return!0}return!1}function Wde(r,e){var t;let o={target:r,extraOptions:{}};if(((t=e["grpc.enable_http_proxy"])!==null&&t!==void 0?t:1)===0||r.scheme==="unix")return o;let s=Kde();if(!s.address)return o;let a=(0,tu.splitHostPort)(r.path);if(!a)return o;let i=a.host;if(Xde(i))return Ta("Not using proxy for target in no_proxy list: "+(0,tu.uriToString)(r)),o;let n={"grpc.http_connect_target":(0,tu.uriToString)(r)};return s.creds&&(n["grpc.http_connect_creds"]=s.creds),{target:{scheme:"dns",path:s.address},extraOptions:n}}function Jde(r,e){var t;if(!("grpc.http_connect_target"in e))return Promise.resolve(null);let o=e["grpc.http_connect_target"],s=(0,tu.parseUri)(o);if(s===null)return Promise.resolve(null);let a=(0,tu.splitHostPort)(s.path);if(a===null)return Promise.resolve(null);let i=`${a.host}:${(t=a.port)!==null&&t!==void 0?t:jde.DEFAULT_PORT}`,n={method:"CONNECT",path:i},l={Host:i};(0,nj.isTcpSubchannelAddress)(r)?(n.host=r.host,n.port=r.port):n.socketPath=r.path,"grpc.http_connect_creds"in e&&(l["Proxy-Authorization"]="Basic "+Buffer.from(e["grpc.http_connect_creds"]).toString("base64")),n.headers=l;let c=(0,nj.subchannelAddressToString)(r);return Ta("Using proxy "+c+" to connect to "+n.path),new Promise((u,f)=>{let _=Gde.request(n);_.once("connect",(m,O,y)=>{_.removeAllListeners(),O.removeAllListeners(),m.statusCode===200?(Ta("Successfully connected to "+n.path+" through proxy "+c),y.length>0&&O.unshift(y),Ta("Successfully established a plaintext connection to "+n.path+" through proxy "+c),u(O)):((0,eu.log)(ma.LogVerbosity.ERROR,"Failed to connect to "+n.path+" through proxy "+c+" with status "+m.statusCode),f())}),_.once("error",m=>{_.removeAllListeners(),(0,eu.log)(ma.LogVerbosity.ERROR,"Failed to connect to proxy "+c+" with error "+m.message),f()}),_.end()})}});var pO=T(V_=>{"use strict";Object.defineProperty(V_,"__esModule",{value:!0});V_.StreamDecoder=void 0;var rn;(function(r){r[r.NO_DATA=0]="NO_DATA",r[r.READING_SIZE=1]="READING_SIZE",r[r.READING_MESSAGE=2]="READING_MESSAGE"})(rn||(rn={}));var fO=class{constructor(e){this.maxReadMessageLength=e,this.readState=rn.NO_DATA,this.readCompressFlag=Buffer.alloc(1),this.readPartialSize=Buffer.alloc(4),this.readSizeRemaining=4,this.readMessageSize=0,this.readPartialMessage=[],this.readMessageRemaining=0}write(e){let t=0,o,s=[];for(;tthis.maxReadMessageLength)throw new Error(`Received message larger than max (${this.readMessageSize} vs ${this.maxReadMessageLength})`);if(this.readMessageRemaining=this.readMessageSize,this.readMessageRemaining>0)this.readState=rn.READING_MESSAGE;else{let a=Buffer.concat([this.readCompressFlag,this.readPartialSize],5);this.readState=rn.NO_DATA,s.push(a)}}break;case rn.READING_MESSAGE:if(o=Math.min(e.length-t,this.readMessageRemaining),this.readPartialMessage.push(e.slice(t,t+o)),this.readMessageRemaining-=o,t+=o,this.readMessageRemaining===0){let a=[this.readCompressFlag,this.readPartialSize].concat(this.readPartialMessage),i=Buffer.concat(a,this.readMessageSize+5);this.readState=rn.NO_DATA,s.push(i)}break;default:throw new Error("Unexpected read state")}return s}};V_.StreamDecoder=fO});var aj=T(F_=>{"use strict";Object.defineProperty(F_,"__esModule",{value:!0});F_.Http2SubchannelCall=void 0;var An=V("http2"),Qde=V("os"),Oe=ue(),Rn=ht(),Zde=pO(),ehe=Pe(),the=ue(),rhe="subchannel_call";function nhe(r){for(let[e,t]of Object.entries(Qde.constants.errno))if(t===r)return e;return"Unknown system error "+r}function dO(r){let e=`Received HTTP status code ${r}`,t;switch(r){case 400:t=Oe.Status.INTERNAL;break;case 401:t=Oe.Status.UNAUTHENTICATED;break;case 403:t=Oe.Status.PERMISSION_DENIED;break;case 404:t=Oe.Status.UNIMPLEMENTED;break;case 429:case 502:case 503:case 504:t=Oe.Status.UNAVAILABLE;break;default:t=Oe.Status.UNKNOWN}return{code:t,details:e,metadata:new Rn.Metadata}}var hO=class{constructor(e,t,o,s,a){var i;this.http2Stream=e,this.callEventTracker=t,this.listener=o,this.transport=s,this.callId=a,this.isReadFilterPending=!1,this.isPushPending=!1,this.canPush=!1,this.readsClosed=!1,this.statusOutput=!1,this.unpushedReadMessages=[],this.finalStatus=null,this.internalError=null,this.serverEndedCall=!1,this.connectionDropped=!1;let n=(i=s.getOptions()["grpc.max_receive_message_length"])!==null&&i!==void 0?i:Oe.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;this.decoder=new Zde.StreamDecoder(n),e.on("response",(l,c)=>{let u="";for(let f of Object.keys(l))u+=" "+f+": "+l[f]+` +`;if(this.trace(`Received server headers: +`+u),this.httpStatusCode=l[":status"],c&An.constants.NGHTTP2_FLAG_END_STREAM)this.handleTrailers(l);else{let f;try{f=Rn.Metadata.fromHttp2Headers(l)}catch(_){this.endCall({code:Oe.Status.UNKNOWN,details:_.message,metadata:new Rn.Metadata});return}this.listener.onReceiveMetadata(f)}}),e.on("trailers",l=>{this.handleTrailers(l)}),e.on("data",l=>{if(this.statusOutput)return;this.trace("receive HTTP/2 data frame of length "+l.length);let c;try{c=this.decoder.write(l)}catch(u){if(this.httpStatusCode!==void 0&&this.httpStatusCode!==200){let f=dO(this.httpStatusCode);this.cancelWithStatus(f.code,f.details)}else this.cancelWithStatus(Oe.Status.RESOURCE_EXHAUSTED,u.message);return}for(let u of c)this.trace("parsed message of length "+u.length),this.callEventTracker.addMessageReceived(),this.tryPush(u)}),e.on("end",()=>{this.readsClosed=!0,this.maybeOutputStatus()}),e.on("close",()=>{this.serverEndedCall=!0,process.nextTick(()=>{var l;if(this.trace("HTTP/2 stream closed with code "+e.rstCode),((l=this.finalStatus)===null||l===void 0?void 0:l.code)===Oe.Status.OK)return;let c,u="";switch(e.rstCode){case An.constants.NGHTTP2_NO_ERROR:if(this.finalStatus!==null)return;if(this.httpStatusCode&&this.httpStatusCode!==200){let f=dO(this.httpStatusCode);c=f.code,u=f.details}else c=Oe.Status.INTERNAL,u=`Received RST_STREAM with code ${e.rstCode} (Call ended without gRPC status)`;break;case An.constants.NGHTTP2_REFUSED_STREAM:c=Oe.Status.UNAVAILABLE,u="Stream refused by server";break;case An.constants.NGHTTP2_CANCEL:this.connectionDropped?(c=Oe.Status.UNAVAILABLE,u="Connection dropped"):(c=Oe.Status.CANCELLED,u="Call cancelled");break;case An.constants.NGHTTP2_ENHANCE_YOUR_CALM:c=Oe.Status.RESOURCE_EXHAUSTED,u="Bandwidth exhausted or memory limit exceeded";break;case An.constants.NGHTTP2_INADEQUATE_SECURITY:c=Oe.Status.PERMISSION_DENIED,u="Protocol not secure enough";break;case An.constants.NGHTTP2_INTERNAL_ERROR:c=Oe.Status.INTERNAL,this.internalError===null?u=`Received RST_STREAM with code ${e.rstCode} (Internal server error)`:this.internalError.code==="ECONNRESET"||this.internalError.code==="ETIMEDOUT"?(c=Oe.Status.UNAVAILABLE,u=this.internalError.message):u=`Received RST_STREAM with code ${e.rstCode} triggered by internal client error: ${this.internalError.message}`;break;default:c=Oe.Status.INTERNAL,u=`Received RST_STREAM with code ${e.rstCode}`}this.endCall({code:c,details:u,metadata:new Rn.Metadata,rstCode:e.rstCode})})}),e.on("error",l=>{l.code!=="ERR_HTTP2_STREAM_ERROR"&&(this.trace("Node error event: message="+l.message+" code="+l.code+" errno="+nhe(l.errno)+" syscall="+l.syscall),this.internalError=l),this.callEventTracker.onStreamEnd(!1)})}getDeadlineInfo(){return[`remote_addr=${this.getPeer()}`]}onDisconnect(){this.connectionDropped=!0,setImmediate(()=>{this.endCall({code:Oe.Status.UNAVAILABLE,details:"Connection dropped",metadata:new Rn.Metadata})})}outputStatus(){this.statusOutput||(this.statusOutput=!0,this.trace("ended with status: code="+this.finalStatus.code+' details="'+this.finalStatus.details+'"'),this.callEventTracker.onCallEnd(this.finalStatus),process.nextTick(()=>{this.listener.onReceiveStatus(this.finalStatus)}),this.http2Stream.resume())}trace(e){ehe.trace(the.LogVerbosity.DEBUG,rhe,"["+this.callId+"] "+e)}endCall(e){(this.finalStatus===null||this.finalStatus.code===Oe.Status.OK)&&(this.finalStatus=e,this.maybeOutputStatus()),this.destroyHttp2Stream()}maybeOutputStatus(){this.finalStatus!==null&&(this.finalStatus.code!==Oe.Status.OK||this.readsClosed&&this.unpushedReadMessages.length===0&&!this.isReadFilterPending&&!this.isPushPending)&&this.outputStatus()}push(e){this.trace("pushing to reader message of length "+(e instanceof Buffer?e.length:null)),this.canPush=!1,this.isPushPending=!0,process.nextTick(()=>{this.isPushPending=!1,!this.statusOutput&&(this.listener.onReceiveMessage(e),this.maybeOutputStatus())})}tryPush(e){this.canPush?(this.http2Stream.pause(),this.push(e)):(this.trace("unpushedReadMessages.push message of length "+e.length),this.unpushedReadMessages.push(e))}handleTrailers(e){this.serverEndedCall=!0,this.callEventTracker.onStreamEnd(!0);let t="";for(let i of Object.keys(e))t+=" "+i+": "+e[i]+` +`;this.trace(`Received server trailers: +`+t);let o;try{o=Rn.Metadata.fromHttp2Headers(e)}catch{o=new Rn.Metadata}let s=o.getMap(),a;if(typeof s["grpc-status"]=="string"){let i=Number(s["grpc-status"]);this.trace("received status code "+i+" from server"),o.remove("grpc-status");let n="";if(typeof s["grpc-message"]=="string"){try{n=decodeURI(s["grpc-message"])}catch{n=s["grpc-message"]}o.remove("grpc-message"),this.trace('received status details string "'+n+'" from server')}a={code:i,details:n,metadata:o}}else this.httpStatusCode?(a=dO(this.httpStatusCode),a.metadata=o):a={code:Oe.Status.UNKNOWN,details:"No status information received",metadata:o};this.endCall(a)}destroyHttp2Stream(){var e;if(!this.http2Stream.destroyed)if(this.serverEndedCall)this.http2Stream.end();else{let t;((e=this.finalStatus)===null||e===void 0?void 0:e.code)===Oe.Status.OK?t=An.constants.NGHTTP2_NO_ERROR:t=An.constants.NGHTTP2_CANCEL,this.trace("close http2 stream with code "+t),this.http2Stream.close(t)}}cancelWithStatus(e,t){this.trace("cancelWithStatus code: "+e+' details: "'+t+'"'),this.endCall({code:e,details:t,metadata:new Rn.Metadata})}getStatus(){return this.finalStatus}getPeer(){return this.transport.getPeerName()}getCallNumber(){return this.callId}startRead(){if(this.finalStatus!==null&&this.finalStatus.code!==Oe.Status.OK){this.readsClosed=!0,this.maybeOutputStatus();return}if(this.canPush=!0,this.unpushedReadMessages.length>0){let e=this.unpushedReadMessages.shift();this.push(e);return}this.http2Stream.resume()}sendMessageWithContext(e,t){this.trace("write() called with message of length "+t.length);let o=s=>{process.nextTick(()=>{var a;let i=Oe.Status.UNAVAILABLE;(s==null?void 0:s.code)==="ERR_STREAM_WRITE_AFTER_END"&&(i=Oe.Status.INTERNAL),s&&this.cancelWithStatus(i,`Write error: ${s.message}`),(a=e.callback)===null||a===void 0||a.call(e)})};this.trace("sending data chunk of length "+t.length),this.callEventTracker.addMessageSent();try{this.http2Stream.write(t,o)}catch(s){this.endCall({code:Oe.Status.UNAVAILABLE,details:`Write failed with error ${s.message}`,metadata:new Rn.Metadata})}}halfClose(){this.trace("end() called"),this.trace("calling end() on HTTP/2 stream"),this.http2Stream.end()}};F_.Http2SubchannelCall=hO});var EO=T(_O=>{"use strict";Object.defineProperty(_O,"__esModule",{value:!0});_O.getNextCallNumber=ohe;var ihe=0;function ohe(){return ihe++}});var lj=T(q_=>{"use strict";Object.defineProperty(q_,"__esModule",{value:!0});q_.Http2SubchannelConnector=void 0;var vO=V("http2"),G_=Eo(),nu=ue(),she=uO(),Sa=Pe(),ahe=jr(),H_=rr(),mO=Pt(),lhe=V("net"),che=aj(),uhe=EO(),TO="transport",fhe="transport_flowctrl",phe=hv().version,{HTTP2_HEADER_AUTHORITY:dhe,HTTP2_HEADER_CONTENT_TYPE:hhe,HTTP2_HEADER_METHOD:_he,HTTP2_HEADER_PATH:Ehe,HTTP2_HEADER_TE:mhe,HTTP2_HEADER_USER_AGENT:The}=vO.constants,She=2e4,ghe=Buffer.from("too_many_pings","ascii"),SO=class{constructor(e,t,o,s){this.session=e,this.options=o,this.remoteName=s,this.keepaliveTimer=null,this.pendingSendKeepalivePing=!1,this.activeCalls=new Set,this.disconnectListeners=[],this.disconnectHandled=!1,this.channelzEnabled=!0,this.keepalivesSent=0,this.messagesSent=0,this.messagesReceived=0,this.lastMessageSentTimestamp=null,this.lastMessageReceivedTimestamp=null,this.subchannelAddressString=(0,H_.subchannelAddressToString)(t),o["grpc.enable_channelz"]===0?(this.channelzEnabled=!1,this.streamTracker=new G_.ChannelzCallTrackerStub):this.streamTracker=new G_.ChannelzCallTracker,this.channelzRef=(0,G_.registerChannelzSocket)(this.subchannelAddressString,()=>this.getChannelzInfo(),this.channelzEnabled),this.userAgent=[o["grpc.primary_user_agent"],`grpc-node-js/${phe}`,o["grpc.secondary_user_agent"]].filter(a=>a).join(" "),"grpc.keepalive_time_ms"in o?this.keepaliveTimeMs=o["grpc.keepalive_time_ms"]:this.keepaliveTimeMs=-1,"grpc.keepalive_timeout_ms"in o?this.keepaliveTimeoutMs=o["grpc.keepalive_timeout_ms"]:this.keepaliveTimeoutMs=She,"grpc.keepalive_permit_without_calls"in o?this.keepaliveWithoutCalls=o["grpc.keepalive_permit_without_calls"]===1:this.keepaliveWithoutCalls=!1,e.once("close",()=>{this.trace("session closed"),this.handleDisconnect()}),e.once("goaway",(a,i,n)=>{let l=!1;a===vO.constants.NGHTTP2_ENHANCE_YOUR_CALM&&n&&n.equals(ghe)&&(l=!0),this.trace("connection closed by GOAWAY with code "+a+" and data "+(n==null?void 0:n.toString())),this.reportDisconnectToOwner(l)}),e.once("error",a=>{this.trace("connection closed with error "+a.message),this.handleDisconnect()}),e.socket.once("close",a=>{this.trace("connection closed. hadError="+a),this.handleDisconnect()}),Sa.isTracerEnabled(TO)&&(e.on("remoteSettings",a=>{this.trace("new settings received"+(this.session!==e?" on the old connection":"")+": "+JSON.stringify(a))}),e.on("localSettings",a=>{this.trace("local settings acknowledged by remote"+(this.session!==e?" on the old connection":"")+": "+JSON.stringify(a))})),this.keepaliveWithoutCalls&&this.maybeStartKeepalivePingTimer()}getChannelzInfo(){var e,t,o;let s=this.session.socket,a=s.remoteAddress?(0,H_.stringToSubchannelAddress)(s.remoteAddress,s.remotePort):null,i=s.localAddress?(0,H_.stringToSubchannelAddress)(s.localAddress,s.localPort):null,n;if(this.session.encrypted){let c=s,u=c.getCipher(),f=c.getCertificate(),_=c.getPeerCertificate();n={cipherSuiteStandardName:(e=u.standardName)!==null&&e!==void 0?e:null,cipherSuiteOtherName:u.standardName?null:u.name,localCertificate:f&&"raw"in f?f.raw:null,remoteCertificate:_&&"raw"in _?_.raw:null}}else n=null;return{remoteAddress:a,localAddress:i,security:n,remoteName:this.remoteName,streamsStarted:this.streamTracker.callsStarted,streamsSucceeded:this.streamTracker.callsSucceeded,streamsFailed:this.streamTracker.callsFailed,messagesSent:this.messagesSent,messagesReceived:this.messagesReceived,keepAlivesSent:this.keepalivesSent,lastLocalStreamCreatedTimestamp:this.streamTracker.lastCallStartedTimestamp,lastRemoteStreamCreatedTimestamp:null,lastMessageSentTimestamp:this.lastMessageSentTimestamp,lastMessageReceivedTimestamp:this.lastMessageReceivedTimestamp,localFlowControlWindow:(t=this.session.state.localWindowSize)!==null&&t!==void 0?t:null,remoteFlowControlWindow:(o=this.session.state.remoteWindowSize)!==null&&o!==void 0?o:null}}trace(e){Sa.trace(nu.LogVerbosity.DEBUG,TO,"("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}keepaliveTrace(e){Sa.trace(nu.LogVerbosity.DEBUG,"keepalive","("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}flowControlTrace(e){Sa.trace(nu.LogVerbosity.DEBUG,fhe,"("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}internalsTrace(e){Sa.trace(nu.LogVerbosity.DEBUG,"transport_internals","("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}reportDisconnectToOwner(e){this.disconnectHandled||(this.disconnectHandled=!0,this.disconnectListeners.forEach(t=>t(e)))}handleDisconnect(){this.clearKeepaliveTimeout(),this.reportDisconnectToOwner(!1);for(let e of this.activeCalls)e.onDisconnect();setImmediate(()=>{this.session.destroy()})}addDisconnectListener(e){this.disconnectListeners.push(e)}canSendPing(){return!this.session.destroyed&&this.keepaliveTimeMs>0&&(this.keepaliveWithoutCalls||this.activeCalls.size>0)}maybeSendPing(){var e,t;if(!this.canSendPing()){this.pendingSendKeepalivePing=!0;return}if(this.keepaliveTimer){console.error("keepaliveTimeout is not null");return}this.channelzEnabled&&(this.keepalivesSent+=1),this.keepaliveTrace("Sending ping with timeout "+this.keepaliveTimeoutMs+"ms"),this.keepaliveTimer=setTimeout(()=>{this.keepaliveTimer=null,this.keepaliveTrace("Ping timeout passed without response"),this.handleDisconnect()},this.keepaliveTimeoutMs),(t=(e=this.keepaliveTimer).unref)===null||t===void 0||t.call(e);let o="";try{this.session.ping((a,i,n)=>{this.clearKeepaliveTimeout(),a?(this.keepaliveTrace("Ping failed with error "+a.message),this.handleDisconnect()):(this.keepaliveTrace("Received ping response"),this.maybeStartKeepalivePingTimer())})||(o="Ping returned false")}catch(s){o=(s instanceof Error?s.message:"")||"Unknown error"}o&&(this.keepaliveTrace("Ping send failed: "+o),this.handleDisconnect())}maybeStartKeepalivePingTimer(){var e,t;this.canSendPing()&&(this.pendingSendKeepalivePing?(this.pendingSendKeepalivePing=!1,this.maybeSendPing()):this.keepaliveTimer||(this.keepaliveTrace("Starting keepalive timer for "+this.keepaliveTimeMs+"ms"),this.keepaliveTimer=setTimeout(()=>{this.keepaliveTimer=null,this.maybeSendPing()},this.keepaliveTimeMs),(t=(e=this.keepaliveTimer).unref)===null||t===void 0||t.call(e)))}clearKeepaliveTimeout(){this.keepaliveTimer&&(clearTimeout(this.keepaliveTimer),this.keepaliveTimer=null)}removeActiveCall(e){this.activeCalls.delete(e),this.activeCalls.size===0&&this.session.unref()}addActiveCall(e){this.activeCalls.add(e),this.activeCalls.size===1&&(this.session.ref(),this.keepaliveWithoutCalls||this.maybeStartKeepalivePingTimer())}createCall(e,t,o,s,a){let i=e.toHttp2Headers();i[dhe]=t,i[The]=this.userAgent,i[hhe]="application/grpc",i[_he]="POST",i[Ehe]=o,i[mhe]="trailers";let n;try{n=this.session.request(i)}catch(u){throw this.handleDisconnect(),u}this.flowControlTrace("local window size: "+this.session.state.localWindowSize+" remote window size: "+this.session.state.remoteWindowSize),this.internalsTrace("session.closed="+this.session.closed+" session.destroyed="+this.session.destroyed+" session.socket.destroyed="+this.session.socket.destroyed);let l,c;return this.channelzEnabled?(this.streamTracker.addCallStarted(),l={addMessageSent:()=>{var u;this.messagesSent+=1,this.lastMessageSentTimestamp=new Date,(u=a.addMessageSent)===null||u===void 0||u.call(a)},addMessageReceived:()=>{var u;this.messagesReceived+=1,this.lastMessageReceivedTimestamp=new Date,(u=a.addMessageReceived)===null||u===void 0||u.call(a)},onCallEnd:u=>{var f;(f=a.onCallEnd)===null||f===void 0||f.call(a,u),this.removeActiveCall(c)},onStreamEnd:u=>{var f;u?this.streamTracker.addCallSucceeded():this.streamTracker.addCallFailed(),(f=a.onStreamEnd)===null||f===void 0||f.call(a,u)}}):l={addMessageSent:()=>{var u;(u=a.addMessageSent)===null||u===void 0||u.call(a)},addMessageReceived:()=>{var u;(u=a.addMessageReceived)===null||u===void 0||u.call(a)},onCallEnd:u=>{var f;(f=a.onCallEnd)===null||f===void 0||f.call(a,u),this.removeActiveCall(c)},onStreamEnd:u=>{var f;(f=a.onStreamEnd)===null||f===void 0||f.call(a,u)}},c=new che.Http2SubchannelCall(n,l,s,this,(0,uhe.getNextCallNumber)()),this.addActiveCall(c),c}getChannelzRef(){return this.channelzRef}getPeerName(){return this.subchannelAddressString}getOptions(){return this.options}shutdown(){this.session.close(),(0,G_.unregisterChannelzRef)(this.channelzRef)}},gO=class{constructor(e){this.channelTarget=e,this.session=null,this.isShutdown=!1}trace(e){Sa.trace(nu.LogVerbosity.DEBUG,TO,(0,mO.uriToString)(this.channelTarget)+" "+e)}createSession(e,t,o){return this.isShutdown?Promise.reject():e.socket.closed?Promise.reject("Connection closed before starting HTTP/2 handshake"):new Promise((s,a)=>{let i=null,n=this.channelTarget;if("grpc.http_connect_target"in o){let A=(0,mO.parseUri)(o["grpc.http_connect_target"]);A&&(n=A,i=(0,mO.uriToString)(A))}let l=e.secure?"https":"http",c=(0,ahe.getDefaultAuthority)(n),u=()=>{var A;(A=this.session)===null||A===void 0||A.destroy(),this.session=null,setImmediate(()=>{y||(y=!0,a(`${O.trim()} (${new Date().toISOString()})`))})},f=A=>{var I;(I=this.session)===null||I===void 0||I.destroy(),O=A.message,this.trace("connection failed with error "+O),y||(y=!0,a(`${O} (${new Date().toISOString()})`))},_={createConnection:(A,I)=>e.socket};o["grpc-node.flow_control_window"]!==void 0&&(_.settings={initialWindowSize:o["grpc-node.flow_control_window"]});let m=vO.connect(`${l}://${c}`,_);this.session=m;let O="Failed to connect",y=!1;m.unref(),m.once("remoteSettings",()=>{m.removeAllListeners(),e.socket.removeListener("close",u),e.socket.removeListener("error",f),s(new SO(m,t,o,i)),this.session=null}),m.once("close",u),m.once("error",f),e.socket.once("close",u),e.socket.once("error",f)})}tcpConnect(e,t){return(0,she.getProxiedConnection)(e,t).then(o=>o||new Promise((s,a)=>{let i=()=>{a(new Error("Socket closed"))},n=c=>{a(c)},l=lhe.connect(e,()=>{l.removeListener("close",i),l.removeListener("error",n),s(l)});l.once("close",i),l.once("error",n)}))}async connect(e,t,o){if(this.isShutdown)return Promise.reject();let s=null,a=null,i=(0,H_.subchannelAddressToString)(e);try{return this.trace(i+" Waiting for secureConnector to be ready"),await t.waitForReady(),this.trace(i+" secureConnector is ready"),s=await this.tcpConnect(e,o),s.setNoDelay(),this.trace(i+" Established TCP connection"),a=await t.connect(s),this.trace(i+" Established secure connection"),this.createSession(a,e,o)}catch(n){throw s==null||s.destroy(),a==null||a.socket.destroy(),n}}shutdown(){var e;this.isShutdown=!0,(e=this.session)===null||e===void 0||e.close(),this.session=null}};q_.Http2SubchannelConnector=gO});var cj=T(ou=>{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});ou.SubchannelPool=void 0;ou.getSubchannelPool=Phe;var vhe=w3(),yhe=Qq(),Ohe=rr(),Ahe=Pt(),Rhe=lj(),Nhe=1e4,iu=class{constructor(){this.pool=Object.create(null),this.cleanupTimer=null}unrefUnusedSubchannels(){let e=!0;for(let t in this.pool){let s=this.pool[t].filter(a=>!a.subchannel.unrefIfOneRef());s.length>0&&(e=!1),this.pool[t]=s}e&&this.cleanupTimer!==null&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null)}ensureCleanupTask(){var e,t;this.cleanupTimer===null&&(this.cleanupTimer=setInterval(()=>{this.unrefUnusedSubchannels()},Nhe),(t=(e=this.cleanupTimer).unref)===null||t===void 0||t.call(e))}getOrCreateSubchannel(e,t,o,s){this.ensureCleanupTask();let a=(0,Ahe.uriToString)(e);if(a in this.pool){let n=this.pool[a];for(let l of n)if((0,Ohe.subchannelAddressEqual)(t,l.subchannelAddress)&&(0,vhe.channelOptionsEqual)(o,l.channelArguments)&&s._equals(l.channelCredentials))return l.subchannel}let i=new yhe.Subchannel(e,t,o,s,new Rhe.Http2SubchannelConnector(e));return a in this.pool||(this.pool[a]=[]),this.pool[a].push({subchannelAddress:t,channelArguments:o,channelCredentials:s,subchannel:i}),i.ref(),i}};ou.SubchannelPool=iu;var Che=new iu;function Phe(r){return r?Che:new iu}});var OO=T(ga=>{"use strict";Object.defineProperty(ga,"__esModule",{value:!0});ga.FilterStackFactory=ga.FilterStack=void 0;var j_=class{constructor(e){this.filters=e}sendMetadata(e){let t=e;for(let o=0;o=0;o--)t=this.filters[o].receiveMetadata(t);return t}sendMessage(e){let t=e;for(let o=0;o=0;o--)t=this.filters[o].receiveMessage(t);return t}receiveTrailers(e){let t=e;for(let o=this.filters.length-1;o>=0;o--)t=this.filters[o].receiveTrailers(t);return t}push(e){this.filters.unshift(...e)}getFilters(){return this.filters}};ga.FilterStack=j_;var yO=class r{constructor(e){this.factories=e}push(e){this.factories.unshift(...e)}clone(){return new r([...this.factories])}createFilter(){return new j_(this.factories.map(e=>e.createFilter()))}};ga.FilterStackFactory=yO});var AO=T(Y_=>{"use strict";Object.defineProperty(Y_,"__esModule",{value:!0});Y_.CompressionAlgorithms=void 0;var uj;(function(r){r[r.identity=0]="identity",r[r.deflate=1]="deflate",r[r.gzip=2]="gzip"})(uj||(Y_.CompressionAlgorithms=uj={}))});var NO=T(K_=>{"use strict";Object.defineProperty(K_,"__esModule",{value:!0});K_.BaseFilter=void 0;var RO=class{async sendMetadata(e){return e}receiveMetadata(e){return e}async sendMessage(e){return e}async receiveMessage(e){return e}receiveTrailers(e){return e}};K_.BaseFilter=RO});var dj=T(Oa=>{"use strict";Object.defineProperty(Oa,"__esModule",{value:!0});Oa.CompressionFilterFactory=Oa.CompressionFilter=void 0;var z_=V("zlib"),pj=AO(),va=ue(),Ihe=NO(),Lhe=Pe(),bhe=r=>typeof r=="number"&&typeof pj.CompressionAlgorithms[r]=="string",ya=class{async writeMessage(e,t){let o=e;t&&(o=await this.compressMessage(o));let s=Buffer.allocUnsafe(o.length+5);return s.writeUInt8(t?1:0,0),s.writeUInt32BE(o.length,1),o.copy(s,5),s}async readMessage(e){let t=e.readUInt8(0)===1,o=e.slice(5);return t&&(o=await this.decompressMessage(o)),o}},To=class extends ya{async compressMessage(e){return e}async writeMessage(e,t){let o=Buffer.allocUnsafe(e.length+5);return o.writeUInt8(0,0),o.writeUInt32BE(e.length,1),e.copy(o,5),o}decompressMessage(e){return Promise.reject(new Error('Received compressed message but "grpc-encoding" header was identity'))}},CO=class extends ya{constructor(e){super(),this.maxRecvMessageLength=e}compressMessage(e){return new Promise((t,o)=>{z_.deflate(e,(s,a)=>{s?o(s):t(a)})})}decompressMessage(e){return new Promise((t,o)=>{let s=0,a=[],i=z_.createInflate();i.on("data",n=>{a.push(n),s+=n.byteLength,this.maxRecvMessageLength!==-1&&s>this.maxRecvMessageLength&&(i.destroy(),o({code:va.Status.RESOURCE_EXHAUSTED,details:`Received message that decompresses to a size larger than ${this.maxRecvMessageLength}`}))}),i.on("end",()=>{t(Buffer.concat(a))}),i.write(e),i.end()})}},PO=class extends ya{constructor(e){super(),this.maxRecvMessageLength=e}compressMessage(e){return new Promise((t,o)=>{z_.gzip(e,(s,a)=>{s?o(s):t(a)})})}decompressMessage(e){return new Promise((t,o)=>{let s=0,a=[],i=z_.createGunzip();i.on("data",n=>{a.push(n),s+=n.byteLength,this.maxRecvMessageLength!==-1&&s>this.maxRecvMessageLength&&(i.destroy(),o({code:va.Status.RESOURCE_EXHAUSTED,details:`Received message that decompresses to a size larger than ${this.maxRecvMessageLength}`}))}),i.on("end",()=>{t(Buffer.concat(a))}),i.write(e),i.end()})}},IO=class extends ya{constructor(e){super(),this.compressionName=e}compressMessage(e){return Promise.reject(new Error(`Received message compressed with unsupported compression method ${this.compressionName}`))}decompressMessage(e){return Promise.reject(new Error(`Compression method not supported: ${this.compressionName}`))}};function fj(r,e){switch(r){case"identity":return new To;case"deflate":return new CO(e);case"gzip":return new PO(e);default:return new IO(r)}}var $_=class extends Ihe.BaseFilter{constructor(e,t){var o,s,a;super(),this.sharedFilterConfig=t,this.sendCompression=new To,this.receiveCompression=new To,this.currentCompressionAlgorithm="identity";let i=e["grpc.default_compression_algorithm"];if(this.maxReceiveMessageLength=(o=e["grpc.max_receive_message_length"])!==null&&o!==void 0?o:va.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,this.maxSendMessageLength=(s=e["grpc.max_send_message_length"])!==null&&s!==void 0?s:va.DEFAULT_MAX_SEND_MESSAGE_LENGTH,i!==void 0)if(bhe(i)){let n=pj.CompressionAlgorithms[i],l=(a=t.serverSupportedEncodingHeader)===null||a===void 0?void 0:a.split(",");(!l||l.includes(n))&&(this.currentCompressionAlgorithm=n,this.sendCompression=fj(this.currentCompressionAlgorithm,-1))}else Lhe.log(va.LogVerbosity.ERROR,`Invalid value provided for grpc.default_compression_algorithm option: ${i}`)}async sendMetadata(e){let t=await e;return t.set("grpc-accept-encoding","identity,deflate,gzip"),t.set("accept-encoding","identity"),this.currentCompressionAlgorithm==="identity"?t.remove("grpc-encoding"):t.set("grpc-encoding",this.currentCompressionAlgorithm),t}receiveMetadata(e){let t=e.get("grpc-encoding");if(t.length>0){let s=t[0];typeof s=="string"&&(this.receiveCompression=fj(s,this.maxReceiveMessageLength))}e.remove("grpc-encoding");let o=e.get("grpc-accept-encoding")[0];return o&&(this.sharedFilterConfig.serverSupportedEncodingHeader=o,o.split(",").includes(this.currentCompressionAlgorithm)||(this.sendCompression=new To,this.currentCompressionAlgorithm="identity")),e.remove("grpc-accept-encoding"),e}async sendMessage(e){var t;let o=await e;if(this.maxSendMessageLength!==-1&&o.message.length>this.maxSendMessageLength)throw{code:va.Status.RESOURCE_EXHAUSTED,details:`Attempted to send message with a size larger than ${this.maxSendMessageLength}`};let s;return this.sendCompression instanceof To?s=!1:s=(((t=o.flags)!==null&&t!==void 0?t:0)&2)===0,{message:await this.sendCompression.writeMessage(o.message,s),flags:o.flags}}async receiveMessage(e){return this.receiveCompression.readMessage(await e)}};Oa.CompressionFilter=$_;var LO=class{constructor(e,t){this.options=t,this.sharedFilterConfig={}}createFilter(){return new $_(this.options,this.sharedFilterConfig)}};Oa.CompressionFilterFactory=LO});var su=T(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.minDeadline=xhe;So.getDeadlineTimeoutString=whe;So.getRelativeTimeout=Uhe;So.deadlineToString=khe;So.formatDateDifference=Bhe;function xhe(...r){let e=1/0;for(let t of r){let o=t instanceof Date?t.getTime():t;oDhe?1/0:o}function khe(r){if(r instanceof Date)return r.toISOString();{let e=new Date(r);return Number.isNaN(e.getTime())?""+r:e.toISOString()}}function Bhe(r,e){return((e.getTime()-r.getTime())/1e3).toFixed(3)+"s"}});var X_=T(bO=>{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});bO.restrictControlPlaneStatusCode=Fhe;var nn=ue(),Vhe=[nn.Status.OK,nn.Status.INVALID_ARGUMENT,nn.Status.NOT_FOUND,nn.Status.ALREADY_EXISTS,nn.Status.FAILED_PRECONDITION,nn.Status.ABORTED,nn.Status.OUT_OF_RANGE,nn.Status.DATA_LOSS];function Fhe(r,e){return Vhe.includes(r)?{code:nn.Status.INTERNAL,details:`Invalid status from control plane: ${r} ${nn.Status[r]} ${e}`}:{code:r,details:e}}});var Ej=T(Q_=>{"use strict";Object.defineProperty(Q_,"__esModule",{value:!0});Q_.LoadBalancingCall=void 0;var hj=tr(),W_=ue(),_j=su(),J_=ht(),au=ri(),Ghe=Pt(),Hhe=Pe(),xO=X_(),qhe=V("http2"),jhe="load_balancing_call",MO=class{constructor(e,t,o,s,a,i,n){var l,c;this.channel=e,this.callConfig=t,this.methodName=o,this.host=s,this.credentials=a,this.deadline=i,this.callNumber=n,this.child=null,this.readPending=!1,this.pendingMessage=null,this.pendingHalfClose=!1,this.ended=!1,this.metadata=null,this.listener=null,this.onCallEnded=null,this.childStartTime=null;let u=this.methodName.split("/"),f="";u.length>=2&&(f=u[1]);let _=(c=(l=(0,Ghe.splitHostPort)(this.host))===null||l===void 0?void 0:l.host)!==null&&c!==void 0?c:"localhost";this.serviceUrl=`https://${_}/${f}`,this.startTime=new Date}getDeadlineInfo(){var e,t;let o=[];return this.childStartTime?(this.childStartTime>this.startTime&&(!((e=this.metadata)===null||e===void 0)&&e.getOptions().waitForReady&&o.push("wait_for_ready"),o.push(`LB pick: ${(0,_j.formatDateDifference)(this.startTime,this.childStartTime)}`)),o.push(...this.child.getDeadlineInfo()),o):(!((t=this.metadata)===null||t===void 0)&&t.getOptions().waitForReady&&o.push("wait_for_ready"),o.push("Waiting for LB pick"),o)}trace(e){Hhe.trace(W_.LogVerbosity.DEBUG,jhe,"["+this.callNumber+"] "+e)}outputStatus(e,t){var o,s;if(!this.ended){this.ended=!0,this.trace("ended with status: code="+e.code+' details="'+e.details+'" start time='+this.startTime.toISOString());let a=Object.assign(Object.assign({},e),{progress:t});(o=this.listener)===null||o===void 0||o.onReceiveStatus(a),(s=this.onCallEnded)===null||s===void 0||s.call(this,a.code)}}doPick(){var e,t;if(this.ended)return;if(!this.metadata)throw new Error("doPick called before start");this.trace("Pick called");let o=this.metadata.clone(),s=this.channel.doPick(o,this.callConfig.pickInformation),a=s.subchannel?"("+s.subchannel.getChannelzRef().id+") "+s.subchannel.getAddress():""+s.subchannel;switch(this.trace("Pick result: "+au.PickResultType[s.pickResultType]+" subchannel: "+a+" status: "+((e=s.status)===null||e===void 0?void 0:e.code)+" "+((t=s.status)===null||t===void 0?void 0:t.details)),s.pickResultType){case au.PickResultType.COMPLETE:this.credentials.compose(s.subchannel.getCallCredentials()).generateMetadata({method_name:this.methodName,service_url:this.serviceUrl}).then(c=>{var u;if(this.ended){this.trace("Credentials metadata generation finished after call ended");return}if(o.merge(c),o.get("authorization").length>1&&this.outputStatus({code:W_.Status.INTERNAL,details:'"authorization" metadata cannot have multiple values',metadata:new J_.Metadata},"PROCESSED"),s.subchannel.getConnectivityState()!==hj.ConnectivityState.READY){this.trace("Picked subchannel "+a+" has state "+hj.ConnectivityState[s.subchannel.getConnectivityState()]+" after getting credentials metadata. Retrying pick"),this.doPick();return}this.deadline!==1/0&&o.set("grpc-timeout",(0,_j.getDeadlineTimeoutString)(this.deadline));try{this.child=s.subchannel.getRealSubchannel().createCall(o,this.host,this.methodName,{onReceiveMetadata:f=>{this.trace("Received metadata"),this.listener.onReceiveMetadata(f)},onReceiveMessage:f=>{this.trace("Received message"),this.listener.onReceiveMessage(f)},onReceiveStatus:f=>{this.trace("Received status"),f.rstCode===qhe.constants.NGHTTP2_REFUSED_STREAM?this.outputStatus(f,"REFUSED"):this.outputStatus(f,"PROCESSED")}}),this.childStartTime=new Date}catch(f){this.trace("Failed to start call on picked subchannel "+a+" with error "+f.message),this.outputStatus({code:W_.Status.INTERNAL,details:"Failed to start HTTP/2 stream with error "+f.message,metadata:new J_.Metadata},"NOT_STARTED");return}(u=s.onCallStarted)===null||u===void 0||u.call(s),this.onCallEnded=s.onCallEnded,this.trace("Created child call ["+this.child.getCallNumber()+"]"),this.readPending&&this.child.startRead(),this.pendingMessage&&this.child.sendMessageWithContext(this.pendingMessage.context,this.pendingMessage.message),this.pendingHalfClose&&this.child.halfClose()},c=>{let{code:u,details:f}=(0,xO.restrictControlPlaneStatusCode)(typeof c.code=="number"?c.code:W_.Status.UNKNOWN,`Getting metadata from plugin failed with error: ${c.message}`);this.outputStatus({code:u,details:f,metadata:new J_.Metadata},"PROCESSED")});break;case au.PickResultType.DROP:let{code:n,details:l}=(0,xO.restrictControlPlaneStatusCode)(s.status.code,s.status.details);setImmediate(()=>{this.outputStatus({code:n,details:l,metadata:s.status.metadata},"DROP")});break;case au.PickResultType.TRANSIENT_FAILURE:if(this.metadata.getOptions().waitForReady)this.channel.queueCallForPick(this);else{let{code:c,details:u}=(0,xO.restrictControlPlaneStatusCode)(s.status.code,s.status.details);setImmediate(()=>{this.outputStatus({code:c,details:u,metadata:s.status.metadata},"PROCESSED")})}break;case au.PickResultType.QUEUE:this.channel.queueCallForPick(this)}}cancelWithStatus(e,t){var o;this.trace("cancelWithStatus code: "+e+' details: "'+t+'"'),(o=this.child)===null||o===void 0||o.cancelWithStatus(e,t),this.outputStatus({code:e,details:t,metadata:new J_.Metadata},"PROCESSED")}getPeer(){var e,t;return(t=(e=this.child)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:this.channel.getTarget()}start(e,t){this.trace("start called"),this.listener=t,this.metadata=e,this.doPick()}sendMessageWithContext(e,t){this.trace("write() called with message of length "+t.length),this.child?this.child.sendMessageWithContext(e,t):this.pendingMessage={context:e,message:t}}startRead(){this.trace("startRead called"),this.child?this.child.startRead():this.readPending=!0}halfClose(){this.trace("halfClose called"),this.child?this.child.halfClose():this.pendingHalfClose=!0}setCredentials(e){throw new Error("Method not implemented.")}getCallNumber(){return this.callNumber}};Q_.LoadBalancingCall=MO});var Tj=T(Z_=>{"use strict";Object.defineProperty(Z_,"__esModule",{value:!0});Z_.ResolvingCall=void 0;var Yhe=Fh(),go=ue(),vo=su(),mj=ht(),Khe=Pe(),zhe=X_(),$he="resolving_call",wO=class{constructor(e,t,o,s,a){this.channel=e,this.method=t,this.filterStackFactory=s,this.callNumber=a,this.child=null,this.readPending=!1,this.pendingMessage=null,this.pendingHalfClose=!1,this.ended=!1,this.readFilterPending=!1,this.writeFilterPending=!1,this.pendingChildStatus=null,this.metadata=null,this.listener=null,this.statusWatchers=[],this.deadlineTimer=setTimeout(()=>{},0),this.filterStack=null,this.deadlineStartTime=null,this.configReceivedTime=null,this.childStartTime=null,this.credentials=Yhe.CallCredentials.createEmpty(),this.deadline=o.deadline,this.host=o.host,o.parentCall&&(o.flags&go.Propagate.CANCELLATION&&o.parentCall.on("cancelled",()=>{this.cancelWithStatus(go.Status.CANCELLED,"Cancelled by parent call")}),o.flags&go.Propagate.DEADLINE&&(this.trace("Propagating deadline from parent: "+o.parentCall.getDeadline()),this.deadline=(0,vo.minDeadline)(this.deadline,o.parentCall.getDeadline()))),this.trace("Created"),this.runDeadlineTimer()}trace(e){Khe.trace(go.LogVerbosity.DEBUG,$he,"["+this.callNumber+"] "+e)}runDeadlineTimer(){clearTimeout(this.deadlineTimer),this.deadlineStartTime=new Date,this.trace("Deadline: "+(0,vo.deadlineToString)(this.deadline));let e=(0,vo.getRelativeTimeout)(this.deadline);if(e!==1/0){this.trace("Deadline will be reached in "+e+"ms");let t=()=>{if(!this.deadlineStartTime){this.cancelWithStatus(go.Status.DEADLINE_EXCEEDED,"Deadline exceeded");return}let o=[],s=new Date;o.push(`Deadline exceeded after ${(0,vo.formatDateDifference)(this.deadlineStartTime,s)}`),this.configReceivedTime?(this.configReceivedTime>this.deadlineStartTime&&o.push(`name resolution: ${(0,vo.formatDateDifference)(this.deadlineStartTime,this.configReceivedTime)}`),this.childStartTime?this.childStartTime>this.configReceivedTime&&o.push(`metadata filters: ${(0,vo.formatDateDifference)(this.configReceivedTime,this.childStartTime)}`):o.push("waiting for metadata filters")):o.push("waiting for name resolution"),this.child&&o.push(...this.child.getDeadlineInfo()),this.cancelWithStatus(go.Status.DEADLINE_EXCEEDED,o.join(","))};e<=0?process.nextTick(t):this.deadlineTimer=setTimeout(t,e)}}outputStatus(e){if(!this.ended){this.ended=!0,this.filterStack||(this.filterStack=this.filterStackFactory.createFilter()),clearTimeout(this.deadlineTimer);let t=this.filterStack.receiveTrailers(e);this.trace("ended with status: code="+t.code+' details="'+t.details+'"'),this.statusWatchers.forEach(o=>o(t)),process.nextTick(()=>{var o;(o=this.listener)===null||o===void 0||o.onReceiveStatus(t)})}}sendMessageOnChild(e,t){if(!this.child)throw new Error("sendMessageonChild called with child not populated");let o=this.child;this.writeFilterPending=!0,this.filterStack.sendMessage(Promise.resolve({message:t,flags:e.flags})).then(s=>{this.writeFilterPending=!1,o.sendMessageWithContext(e,s.message),this.pendingHalfClose&&o.halfClose()},s=>{this.cancelWithStatus(s.code,s.details)})}getConfig(){if(this.ended)return;if(!this.metadata||!this.listener)throw new Error("getConfig called before start");let e=this.channel.getConfig(this.method,this.metadata);if(e.type==="NONE"){this.channel.queueCallForConfig(this);return}else if(e.type==="ERROR"){this.metadata.getOptions().waitForReady?this.channel.queueCallForConfig(this):this.outputStatus(e.error);return}this.configReceivedTime=new Date;let t=e.config;if(t.status!==go.Status.OK){let{code:o,details:s}=(0,zhe.restrictControlPlaneStatusCode)(t.status,"Failed to route call to method "+this.method);this.outputStatus({code:o,details:s,metadata:new mj.Metadata});return}if(t.methodConfig.timeout){let o=new Date;o.setSeconds(o.getSeconds()+t.methodConfig.timeout.seconds),o.setMilliseconds(o.getMilliseconds()+t.methodConfig.timeout.nanos/1e6),this.deadline=(0,vo.minDeadline)(this.deadline,o),this.runDeadlineTimer()}this.filterStackFactory.push(t.dynamicFilterFactories),this.filterStack=this.filterStackFactory.createFilter(),this.filterStack.sendMetadata(Promise.resolve(this.metadata)).then(o=>{this.child=this.channel.createRetryingCall(t,this.method,this.host,this.credentials,this.deadline),this.trace("Created child ["+this.child.getCallNumber()+"]"),this.childStartTime=new Date,this.child.start(o,{onReceiveMetadata:s=>{this.trace("Received metadata"),this.listener.onReceiveMetadata(this.filterStack.receiveMetadata(s))},onReceiveMessage:s=>{this.trace("Received message"),this.readFilterPending=!0,this.filterStack.receiveMessage(s).then(a=>{this.trace("Finished filtering received message"),this.readFilterPending=!1,this.listener.onReceiveMessage(a),this.pendingChildStatus&&this.outputStatus(this.pendingChildStatus)},a=>{this.cancelWithStatus(a.code,a.details)})},onReceiveStatus:s=>{this.trace("Received status"),this.readFilterPending?this.pendingChildStatus=s:this.outputStatus(s)}}),this.readPending&&this.child.startRead(),this.pendingMessage?this.sendMessageOnChild(this.pendingMessage.context,this.pendingMessage.message):this.pendingHalfClose&&this.child.halfClose()},o=>{this.outputStatus(o)})}reportResolverError(e){var t;!((t=this.metadata)===null||t===void 0)&&t.getOptions().waitForReady?this.channel.queueCallForConfig(this):this.outputStatus(e)}cancelWithStatus(e,t){var o;this.trace("cancelWithStatus code: "+e+' details: "'+t+'"'),(o=this.child)===null||o===void 0||o.cancelWithStatus(e,t),this.outputStatus({code:e,details:t,metadata:new mj.Metadata})}getPeer(){var e,t;return(t=(e=this.child)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:this.channel.getTarget()}start(e,t){this.trace("start called"),this.metadata=e.clone(),this.listener=t,this.getConfig()}sendMessageWithContext(e,t){this.trace("write() called with message of length "+t.length),this.child?this.sendMessageOnChild(e,t):this.pendingMessage={context:e,message:t}}startRead(){this.trace("startRead called"),this.child?this.child.startRead():this.readPending=!0}halfClose(){this.trace("halfClose called"),this.child&&!this.writeFilterPending?this.child.halfClose():this.pendingHalfClose=!0}setCredentials(e){this.credentials=e}addStatusWatcher(e){this.statusWatchers.push(e)}getCallNumber(){return this.callNumber}};Z_.ResolvingCall=wO});var Sj=T(fi=>{"use strict";Object.defineProperty(fi,"__esModule",{value:!0});fi.RetryingCall=fi.MessageBufferTracker=fi.RetryThrottler=void 0;var eE=ue(),Xhe=su(),Whe=ht(),Jhe=Pe(),Qhe="retrying_call",UO=class{constructor(e,t,o){this.maxTokens=e,this.tokenRatio=t,o?this.tokens=o.tokens*(e/o.maxTokens):this.tokens=e}addCallSucceeded(){this.tokens=Math.min(this.tokens+this.tokenRatio,this.maxTokens)}addCallFailed(){this.tokens=Math.max(this.tokens-1,0)}canRetryCall(){return this.tokens>this.maxTokens/2}};fi.RetryThrottler=UO;var kO=class{constructor(e,t){this.totalLimit=e,this.limitPerCall=t,this.totalAllocated=0,this.allocatedPerCall=new Map}allocate(e,t){var o;let s=(o=this.allocatedPerCall.get(t))!==null&&o!==void 0?o:0;return this.limitPerCall-s total allocated ${this.totalAllocated}`);this.totalAllocated-=e;let s=(o=this.allocatedPerCall.get(t))!==null&&o!==void 0?o:0;if(s allocated for call ${s}`);this.allocatedPerCall.set(t,s-e)}freeAll(e){var t;let o=(t=this.allocatedPerCall.get(e))!==null&&t!==void 0?t:0;if(this.totalAllocated total allocated ${this.totalAllocated}`);this.totalAllocated-=o,this.allocatedPerCall.delete(e)}};fi.MessageBufferTracker=kO;var DO="grpc-previous-rpc-attempts",Zhe=5,BO=class{constructor(e,t,o,s,a,i,n,l,c){var u;this.channel=e,this.callConfig=t,this.methodName=o,this.host=s,this.credentials=a,this.deadline=i,this.callNumber=n,this.bufferTracker=l,this.retryThrottler=c,this.listener=null,this.initialMetadata=null,this.underlyingCalls=[],this.writeBuffer=[],this.writeBufferOffset=0,this.readStarted=!1,this.transparentRetryUsed=!1,this.attempts=0,this.hedgingTimer=null,this.committedCallIndex=null,this.initialRetryBackoffSec=0,this.nextRetryBackoffSec=0;let f=(u=e.getOptions()["grpc-node.retry_max_attempts_limit"])!==null&&u!==void 0?u:Zhe;if(e.getOptions()["grpc.enable_retries"]===0)this.state="NO_RETRY",this.maxAttempts=1;else if(t.methodConfig.retryPolicy){this.state="RETRY";let _=t.methodConfig.retryPolicy;this.nextRetryBackoffSec=this.initialRetryBackoffSec=Number(_.initialBackoff.substring(0,_.initialBackoff.length-1)),this.maxAttempts=Math.min(_.maxAttempts,f)}else t.methodConfig.hedgingPolicy?(this.state="HEDGING",this.maxAttempts=Math.min(t.methodConfig.hedgingPolicy.maxAttempts,f)):(this.state="TRANSPARENT_ONLY",this.maxAttempts=1);this.startTime=new Date}getDeadlineInfo(){if(this.underlyingCalls.length===0)return[];let e=[],t=this.underlyingCalls[this.underlyingCalls.length-1];return this.underlyingCalls.length>1&&e.push(`previous attempts: ${this.underlyingCalls.length-1}`),t.startTime>this.startTime&&e.push(`time to current attempt start: ${(0,Xhe.formatDateDifference)(this.startTime,t.startTime)}`),e.push(...t.call.getDeadlineInfo()),e}getCallNumber(){return this.callNumber}trace(e){Jhe.trace(eE.LogVerbosity.DEBUG,Qhe,"["+this.callNumber+"] "+e)}reportStatus(e){this.trace("ended with status: code="+e.code+' details="'+e.details+'" start time='+this.startTime.toISOString()),this.bufferTracker.freeAll(this.callNumber),this.writeBufferOffset=this.writeBufferOffset+this.writeBuffer.length,this.writeBuffer=[],process.nextTick(()=>{var t;(t=this.listener)===null||t===void 0||t.onReceiveStatus({code:e.code,details:e.details,metadata:e.metadata})})}cancelWithStatus(e,t){this.trace("cancelWithStatus code: "+e+' details: "'+t+'"'),this.reportStatus({code:e,details:t,metadata:new Whe.Metadata});for(let{call:o}of this.underlyingCalls)o.cancelWithStatus(e,t)}getPeer(){return this.committedCallIndex!==null?this.underlyingCalls[this.committedCallIndex].call.getPeer():"unknown"}getBufferEntry(e){var t;return(t=this.writeBuffer[e-this.writeBufferOffset])!==null&&t!==void 0?t:{entryType:"FREED",allocated:!1}}getNextBufferIndex(){return this.writeBufferOffset+this.writeBuffer.length}clearSentMessages(){if(this.state!=="COMMITTED")return;let e;this.underlyingCalls[this.committedCallIndex].state==="COMPLETED"?e=this.getNextBufferIndex():e=this.underlyingCalls[this.committedCallIndex].nextMessageToSend;for(let t=this.writeBufferOffset;te&&(e=s.nextMessageToSend,t=o);t===-1?this.state="TRANSPARENT_ONLY":this.commitCall(t)}isStatusCodeInList(e,t){return e.some(o=>{var s;return o===t||o.toString().toLowerCase()===((s=eE.Status[t])===null||s===void 0?void 0:s.toLowerCase())})}getNextRetryBackoffMs(){var e;let t=(e=this.callConfig)===null||e===void 0?void 0:e.methodConfig.retryPolicy;if(!t)return 0;let o=Math.random()*this.nextRetryBackoffSec*1e3,s=Number(t.maxBackoff.substring(0,t.maxBackoff.length-1));return this.nextRetryBackoffSec=Math.min(this.nextRetryBackoffSec*t.backoffMultiplier,s),o}maybeRetryCall(e,t){if(this.state!=="RETRY"){t(!1);return}if(this.attempts>=this.maxAttempts){t(!1);return}let o;if(e===null)o=this.getNextRetryBackoffMs();else if(e<0){this.state="TRANSPARENT_ONLY",t(!1);return}else o=e,this.nextRetryBackoffSec=this.initialRetryBackoffSec;setTimeout(()=>{var s,a;if(this.state!=="RETRY"){t(!1);return}!((a=(s=this.retryThrottler)===null||s===void 0?void 0:s.canRetryCall())!==null&&a!==void 0)||a?(t(!0),this.attempts+=1,this.startNewAttempt()):(this.trace("Retry attempt denied by throttling policy"),t(!1))},o)}countActiveCalls(){let e=0;for(let t of this.underlyingCalls)(t==null?void 0:t.state)==="ACTIVE"&&(e+=1);return e}handleProcessedStatus(e,t,o){var s,a,i;switch(this.state){case"COMMITTED":case"NO_RETRY":case"TRANSPARENT_ONLY":this.commitCall(t),this.reportStatus(e);break;case"HEDGING":if(this.isStatusCodeInList((s=this.callConfig.methodConfig.hedgingPolicy.nonFatalStatusCodes)!==null&&s!==void 0?s:[],e.code)){(a=this.retryThrottler)===null||a===void 0||a.addCallFailed();let n;if(o===null)n=0;else if(o<0){this.state="TRANSPARENT_ONLY",this.commitCall(t),this.reportStatus(e);return}else n=o;setTimeout(()=>{this.maybeStartHedgingAttempt(),this.countActiveCalls()===0&&(this.commitCall(t),this.reportStatus(e))},n)}else this.commitCall(t),this.reportStatus(e);break;case"RETRY":this.isStatusCodeInList(this.callConfig.methodConfig.retryPolicy.retryableStatusCodes,e.code)?((i=this.retryThrottler)===null||i===void 0||i.addCallFailed(),this.maybeRetryCall(o,n=>{n||(this.commitCall(t),this.reportStatus(e))})):(this.commitCall(t),this.reportStatus(e));break}}getPushback(e){let t=e.get("grpc-retry-pushback-ms");if(t.length===0)return null;try{return parseInt(t[0])}catch{return-1}}handleChildStatus(e,t){var o;if(this.underlyingCalls[t].state==="COMPLETED")return;if(this.trace("state="+this.state+" handling status with progress "+e.progress+" from child ["+this.underlyingCalls[t].call.getCallNumber()+"] in state "+this.underlyingCalls[t].state),this.underlyingCalls[t].state="COMPLETED",e.code===eE.Status.OK){(o=this.retryThrottler)===null||o===void 0||o.addCallSucceeded(),this.commitCall(t),this.reportStatus(e);return}if(this.state==="NO_RETRY"){this.commitCall(t),this.reportStatus(e);return}if(this.state==="COMMITTED"){this.reportStatus(e);return}let s=this.getPushback(e.metadata);switch(e.progress){case"NOT_STARTED":this.startNewAttempt();break;case"REFUSED":this.transparentRetryUsed?this.handleProcessedStatus(e,t,s):(this.transparentRetryUsed=!0,this.startNewAttempt());break;case"DROP":this.commitCall(t),this.reportStatus(e);break;case"PROCESSED":this.handleProcessedStatus(e,t,s);break}}maybeStartHedgingAttempt(){this.state==="HEDGING"&&this.callConfig.methodConfig.hedgingPolicy&&(this.attempts>=this.maxAttempts||(this.attempts+=1,this.startNewAttempt(),this.maybeStartHedgingTimer()))}maybeStartHedgingTimer(){var e,t,o;if(this.hedgingTimer&&clearTimeout(this.hedgingTimer),this.state!=="HEDGING"||!this.callConfig.methodConfig.hedgingPolicy)return;let s=this.callConfig.methodConfig.hedgingPolicy;if(this.attempts>=this.maxAttempts)return;let a=(e=s.hedgingDelay)!==null&&e!==void 0?e:"0s",i=Number(a.substring(0,a.length-1));this.hedgingTimer=setTimeout(()=>{this.maybeStartHedgingAttempt()},i*1e3),(o=(t=this.hedgingTimer).unref)===null||o===void 0||o.call(t)}startNewAttempt(){let e=this.channel.createLoadBalancingCall(this.callConfig,this.methodName,this.host,this.credentials,this.deadline);this.trace("Created child call ["+e.getCallNumber()+"] for attempt "+this.attempts);let t=this.underlyingCalls.length;this.underlyingCalls.push({state:"ACTIVE",call:e,nextMessageToSend:0,startTime:new Date});let o=this.attempts-1,s=this.initialMetadata.clone();o>0&&s.set(DO,`${o}`);let a=!1;e.start(s,{onReceiveMetadata:i=>{this.trace("Received metadata from child ["+e.getCallNumber()+"]"),this.commitCall(t),a=!0,o>0&&i.set(DO,`${o}`),this.underlyingCalls[t].state==="ACTIVE"&&this.listener.onReceiveMetadata(i)},onReceiveMessage:i=>{this.trace("Received message from child ["+e.getCallNumber()+"]"),this.commitCall(t),this.underlyingCalls[t].state==="ACTIVE"&&this.listener.onReceiveMessage(i)},onReceiveStatus:i=>{this.trace("Received status from child ["+e.getCallNumber()+"]"),!a&&o>0&&i.metadata.set(DO,`${o}`),this.handleChildStatus(i,t)}}),this.sendNextChildMessage(t),this.readStarted&&e.startRead()}start(e,t){this.trace("start called"),this.listener=t,this.initialMetadata=e,this.attempts+=1,this.startNewAttempt(),this.maybeStartHedgingTimer()}handleChildWriteCompleted(e){var t,o;let s=this.underlyingCalls[e],a=s.nextMessageToSend;(o=(t=this.getBufferEntry(a)).callback)===null||o===void 0||o.call(t),this.clearSentMessages(),s.nextMessageToSend+=1,this.sendNextChildMessage(e)}sendNextChildMessage(e){let t=this.underlyingCalls[e];if(t.state!=="COMPLETED"&&this.getBufferEntry(t.nextMessageToSend)){let o=this.getBufferEntry(t.nextMessageToSend);switch(o.entryType){case"MESSAGE":t.call.sendMessageWithContext({callback:s=>{this.handleChildWriteCompleted(e)}},o.message.message);break;case"HALF_CLOSE":t.nextMessageToSend+=1,t.call.halfClose();break;case"FREED":break}}}sendMessageWithContext(e,t){var o;this.trace("write() called with message of length "+t.length);let s={message:t,flags:e.flags},a=this.getNextBufferIndex(),i={entryType:"MESSAGE",message:s,allocated:this.bufferTracker.allocate(t.length,this.callNumber)};if(this.writeBuffer.push(i),i.allocated){(o=e.callback)===null||o===void 0||o.call(e);for(let[n,l]of this.underlyingCalls.entries())l.state==="ACTIVE"&&l.nextMessageToSend===a&&l.call.sendMessageWithContext({callback:c=>{this.handleChildWriteCompleted(n)}},t)}else{if(this.commitCallWithMostMessages(),this.committedCallIndex===null)return;let n=this.underlyingCalls[this.committedCallIndex];i.callback=e.callback,n.state==="ACTIVE"&&n.nextMessageToSend===a&&n.call.sendMessageWithContext({callback:l=>{this.handleChildWriteCompleted(this.committedCallIndex)}},t)}}startRead(){this.trace("startRead called"),this.readStarted=!0;for(let e of this.underlyingCalls)(e==null?void 0:e.state)==="ACTIVE"&&e.call.startRead()}halfClose(){this.trace("halfClose called");let e=this.getNextBufferIndex();this.writeBuffer.push({entryType:"HALF_CLOSE",allocated:!1});for(let t of this.underlyingCalls)(t==null?void 0:t.state)==="ACTIVE"&&t.nextMessageToSend===e&&(t.nextMessageToSend+=1,t.call.halfClose())}setCredentials(e){throw new Error("Method not implemented.")}getMethod(){return this.methodName}getHost(){return this.host}};fi.RetryingCall=BO});var rE=T(tE=>{"use strict";Object.defineProperty(tE,"__esModule",{value:!0});tE.BaseSubchannelWrapper=void 0;var VO=class{constructor(e){this.child=e,this.healthy=!0,this.healthListeners=new Set,e.addHealthStateWatcher(t=>{this.healthy&&this.updateHealthListeners()})}updateHealthListeners(){for(let e of this.healthListeners)e(this.isHealthy())}getConnectivityState(){return this.child.getConnectivityState()}addConnectivityStateListener(e){this.child.addConnectivityStateListener(e)}removeConnectivityStateListener(e){this.child.removeConnectivityStateListener(e)}startConnecting(){this.child.startConnecting()}getAddress(){return this.child.getAddress()}throttleKeepalive(e){this.child.throttleKeepalive(e)}ref(){this.child.ref()}unref(){this.child.unref()}getChannelzRef(){return this.child.getChannelzRef()}isHealthy(){return this.healthy&&this.child.isHealthy()}addHealthStateWatcher(e){this.healthListeners.add(e)}removeHealthStateWatcher(e){this.healthListeners.delete(e)}setHealthy(e){e!==this.healthy&&(this.healthy=e,this.child.isHealthy()&&this.updateHealthListeners())}getRealSubchannel(){return this.child.getRealSubchannel()}realSubchannelEquals(e){return this.getRealSubchannel()===e.getRealSubchannel()}getCallCredentials(){return this.child.getCallCredentials()}};tE.BaseSubchannelWrapper=VO});var zO=T(yo=>{"use strict";Object.defineProperty(yo,"__esModule",{value:!0});yo.InternalChannel=yo.SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX=void 0;var e_e=Nc(),t_e=M3(),r_e=cj(),HO=ri(),n_e=ht(),pi=ue(),i_e=OO(),o_e=dj(),gj=jr(),nE=Pe(),s_e=uO(),iE=Pt(),or=tr(),lu=Eo(),a_e=Ej(),l_e=su(),c_e=Tj(),FO=EO(),u_e=X_(),GO=Sj(),f_e=rE(),p_e=2147483647,d_e=1e3,h_e=30*60*1e3,oE=new Map,__e=1<<24,E_e=1<<20,qO=class extends f_e.BaseSubchannelWrapper{constructor(e,t){super(e),this.channel=t,this.refCount=0,this.subchannelStateListener=(o,s,a,i)=>{t.throttleKeepalive(i)}}ref(){this.refCount===0&&(this.child.addConnectivityStateListener(this.subchannelStateListener),this.channel.addWrappedSubchannel(this)),this.child.ref(),this.refCount+=1}unref(){this.child.unref(),this.refCount-=1,this.refCount<=0&&(this.child.removeConnectivityStateListener(this.subchannelStateListener),this.channel.removeWrappedSubchannel(this))}},jO=class{pick(e){return{pickResultType:HO.PickResultType.DROP,status:{code:pi.Status.UNAVAILABLE,details:"Channel closed before call started",metadata:new n_e.Metadata},subchannel:null,onCallStarted:null,onCallEnded:null}}};yo.SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX="grpc.internal.no_subchannel";var YO=class{constructor(e){this.target=e,this.trace=new lu.ChannelzTrace,this.callTracker=new lu.ChannelzCallTracker,this.childrenTracker=new lu.ChannelzChildrenTracker,this.state=or.ConnectivityState.IDLE}getChannelzInfoCallback(){return()=>({target:this.target,state:this.state,trace:this.trace,callTracker:this.callTracker,children:this.childrenTracker.getChildLists()})}},KO=class{constructor(e,t,o){var s,a,i,n,l,c;if(this.credentials=t,this.options=o,this.connectivityState=or.ConnectivityState.IDLE,this.currentPicker=new HO.UnavailablePicker,this.configSelectionQueue=[],this.pickQueue=[],this.connectivityStateWatchers=[],this.callRefTimer=null,this.configSelector=null,this.currentResolutionError=null,this.wrappedSubchannels=new Set,this.callCount=0,this.idleTimer=null,this.channelzEnabled=!0,this.randomChannelId=Math.floor(Math.random()*Number.MAX_SAFE_INTEGER),typeof e!="string")throw new TypeError("Channel target must be a string");if(!(t instanceof e_e.ChannelCredentials))throw new TypeError("Channel credentials must be a ChannelCredentials object");if(o&&typeof o!="object")throw new TypeError("Channel options must be an object");this.channelzInfoTracker=new YO(e);let u=(0,iE.parseUri)(e);if(u===null)throw new Error(`Could not parse target name "${e}"`);let f=(0,gj.mapUriDefaultScheme)(u);if(f===null)throw new Error(`Could not find a default scheme for target name "${e}"`);this.options["grpc.enable_channelz"]===0&&(this.channelzEnabled=!1),this.channelzRef=(0,lu.registerChannelzChannel)(e,this.channelzInfoTracker.getChannelzInfoCallback(),this.channelzEnabled),this.channelzEnabled&&this.channelzInfoTracker.trace.addTrace("CT_INFO","Channel created"),this.options["grpc.default_authority"]?this.defaultAuthority=this.options["grpc.default_authority"]:this.defaultAuthority=(0,gj.getDefaultAuthority)(f);let _=(0,s_e.mapProxyName)(f,o);this.target=_.target,this.options=Object.assign({},this.options,_.extraOptions),this.subchannelPool=(0,r_e.getSubchannelPool)(((s=this.options["grpc.use_local_subchannel_pool"])!==null&&s!==void 0?s:0)===0),this.retryBufferTracker=new GO.MessageBufferTracker((a=this.options["grpc.retry_buffer_size"])!==null&&a!==void 0?a:__e,(i=this.options["grpc.per_rpc_retry_buffer_size"])!==null&&i!==void 0?i:E_e),this.keepaliveTime=(n=this.options["grpc.keepalive_time_ms"])!==null&&n!==void 0?n:-1,this.idleTimeoutMs=Math.max((l=this.options["grpc.client_idle_timeout_ms"])!==null&&l!==void 0?l:h_e,d_e);let m={createSubchannel:(y,A)=>{let I={};for(let[N,K]of Object.entries(A))N.startsWith(yo.SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX)||(I[N]=K);let M=this.subchannelPool.getOrCreateSubchannel(this.target,y,I,this.credentials);return M.throttleKeepalive(this.keepaliveTime),this.channelzEnabled&&this.channelzInfoTracker.trace.addTrace("CT_INFO","Created subchannel or used existing subchannel",M.getChannelzRef()),new qO(M,this)},updateState:(y,A)=>{this.currentPicker=A;let I=this.pickQueue.slice();this.pickQueue=[],I.length>0&&this.callRefTimerUnref();for(let M of I)M.doPick();this.updateState(y)},requestReresolution:()=>{throw new Error("Resolving load balancer should never call requestReresolution")},addChannelzChild:y=>{this.channelzEnabled&&this.channelzInfoTracker.childrenTracker.refChild(y)},removeChannelzChild:y=>{this.channelzEnabled&&this.channelzInfoTracker.childrenTracker.unrefChild(y)}};this.resolvingLoadBalancer=new t_e.ResolvingLoadBalancer(this.target,m,this.options,(y,A)=>{var I;y.retryThrottling?oE.set(this.getTarget(),new GO.RetryThrottler(y.retryThrottling.maxTokens,y.retryThrottling.tokenRatio,oE.get(this.getTarget()))):oE.delete(this.getTarget()),this.channelzEnabled&&this.channelzInfoTracker.trace.addTrace("CT_INFO","Address resolution succeeded"),(I=this.configSelector)===null||I===void 0||I.unref(),this.configSelector=A,this.currentResolutionError=null,process.nextTick(()=>{let M=this.configSelectionQueue;this.configSelectionQueue=[],M.length>0&&this.callRefTimerUnref();for(let F of M)F.getConfig()})},y=>{this.channelzEnabled&&this.channelzInfoTracker.trace.addTrace("CT_WARNING","Address resolution failed with code "+y.code+' and details "'+y.details+'"'),this.configSelectionQueue.length>0&&this.trace("Name resolution failed with calls queued for config selection"),this.configSelector===null&&(this.currentResolutionError=Object.assign(Object.assign({},(0,u_e.restrictControlPlaneStatusCode)(y.code,y.details)),{metadata:y.metadata}));let A=this.configSelectionQueue;this.configSelectionQueue=[],A.length>0&&this.callRefTimerUnref();for(let I of A)I.reportResolverError(y)}),this.filterStackFactory=new i_e.FilterStackFactory([new o_e.CompressionFilterFactory(this,this.options)]),this.trace("Channel constructed with options "+JSON.stringify(o,void 0,2));let O=new Error;(0,nE.isTracerEnabled)("channel_stacktrace")&&(0,nE.trace)(pi.LogVerbosity.DEBUG,"channel_stacktrace","("+this.channelzRef.id+`) Channel constructed +`+((c=O.stack)===null||c===void 0?void 0:c.substring(O.stack.indexOf(` +`)+1))),this.lastActivityTimestamp=new Date}trace(e,t){(0,nE.trace)(t??pi.LogVerbosity.DEBUG,"channel","("+this.channelzRef.id+") "+(0,iE.uriToString)(this.target)+" "+e)}callRefTimerRef(){var e,t,o,s;this.callRefTimer||(this.callRefTimer=setInterval(()=>{},p_e)),!((t=(e=this.callRefTimer).hasRef)===null||t===void 0)&&t.call(e)||(this.trace("callRefTimer.ref | configSelectionQueue.length="+this.configSelectionQueue.length+" pickQueue.length="+this.pickQueue.length),(s=(o=this.callRefTimer).ref)===null||s===void 0||s.call(o))}callRefTimerUnref(){var e,t,o;(!(!((e=this.callRefTimer)===null||e===void 0)&&e.hasRef)||this.callRefTimer.hasRef())&&(this.trace("callRefTimer.unref | configSelectionQueue.length="+this.configSelectionQueue.length+" pickQueue.length="+this.pickQueue.length),(o=(t=this.callRefTimer)===null||t===void 0?void 0:t.unref)===null||o===void 0||o.call(t))}removeConnectivityStateWatcher(e){let t=this.connectivityStateWatchers.findIndex(o=>o===e);t>=0&&this.connectivityStateWatchers.splice(t,1)}updateState(e){(0,nE.trace)(pi.LogVerbosity.DEBUG,"connectivity_state","("+this.channelzRef.id+") "+(0,iE.uriToString)(this.target)+" "+or.ConnectivityState[this.connectivityState]+" -> "+or.ConnectivityState[e]),this.channelzEnabled&&this.channelzInfoTracker.trace.addTrace("CT_INFO","Connectivity state change to "+or.ConnectivityState[e]),this.connectivityState=e,this.channelzInfoTracker.state=e;let t=this.connectivityStateWatchers.slice();for(let o of t)e!==o.currentState&&(o.timer&&clearTimeout(o.timer),this.removeConnectivityStateWatcher(o),o.callback());e!==or.ConnectivityState.TRANSIENT_FAILURE&&(this.currentResolutionError=null)}throttleKeepalive(e){if(e>this.keepaliveTime){this.keepaliveTime=e;for(let t of this.wrappedSubchannels)t.throttleKeepalive(e)}}addWrappedSubchannel(e){this.wrappedSubchannels.add(e)}removeWrappedSubchannel(e){this.wrappedSubchannels.delete(e)}doPick(e,t){return this.currentPicker.pick({metadata:e,extraPickInfo:t})}queueCallForPick(e){this.pickQueue.push(e),this.callRefTimerRef()}getConfig(e,t){return this.connectivityState!==or.ConnectivityState.SHUTDOWN&&this.resolvingLoadBalancer.exitIdle(),this.configSelector?{type:"SUCCESS",config:this.configSelector.invoke(e,t,this.randomChannelId)}:this.currentResolutionError?{type:"ERROR",error:this.currentResolutionError}:{type:"NONE"}}queueCallForConfig(e){this.configSelectionQueue.push(e),this.callRefTimerRef()}enterIdle(){this.resolvingLoadBalancer.destroy(),this.updateState(or.ConnectivityState.IDLE),this.currentPicker=new HO.QueuePicker(this.resolvingLoadBalancer),this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null),this.callRefTimer&&(clearInterval(this.callRefTimer),this.callRefTimer=null)}startIdleTimeout(e){var t,o;this.idleTimer=setTimeout(()=>{if(this.callCount>0){this.startIdleTimeout(this.idleTimeoutMs);return}let a=new Date().valueOf()-this.lastActivityTimestamp.valueOf();a>=this.idleTimeoutMs?(this.trace("Idle timer triggered after "+this.idleTimeoutMs+"ms of inactivity"),this.enterIdle()):this.startIdleTimeout(this.idleTimeoutMs-a)},e),(o=(t=this.idleTimer).unref)===null||o===void 0||o.call(t)}maybeStartIdleTimer(){this.connectivityState!==or.ConnectivityState.SHUTDOWN&&!this.idleTimer&&this.startIdleTimeout(this.idleTimeoutMs)}onCallStart(){this.channelzEnabled&&this.channelzInfoTracker.callTracker.addCallStarted(),this.callCount+=1}onCallEnd(e){this.channelzEnabled&&(e.code===pi.Status.OK?this.channelzInfoTracker.callTracker.addCallSucceeded():this.channelzInfoTracker.callTracker.addCallFailed()),this.callCount-=1,this.lastActivityTimestamp=new Date,this.maybeStartIdleTimer()}createLoadBalancingCall(e,t,o,s,a){let i=(0,FO.getNextCallNumber)();return this.trace("createLoadBalancingCall ["+i+'] method="'+t+'"'),new a_e.LoadBalancingCall(this,e,t,o,s,a,i)}createRetryingCall(e,t,o,s,a){let i=(0,FO.getNextCallNumber)();return this.trace("createRetryingCall ["+i+'] method="'+t+'"'),new GO.RetryingCall(this,e,t,o,s,a,i,this.retryBufferTracker,oE.get(this.getTarget()))}createResolvingCall(e,t,o,s,a){let i=(0,FO.getNextCallNumber)();this.trace("createResolvingCall ["+i+'] method="'+e+'", deadline='+(0,l_e.deadlineToString)(t));let n={deadline:t,flags:a??pi.Propagate.DEFAULTS,host:o??this.defaultAuthority,parentCall:s},l=new c_e.ResolvingCall(this,e,n,this.filterStackFactory.clone(),i);return this.onCallStart(),l.addStatusWatcher(c=>{this.onCallEnd(c)}),l}close(){var e;this.resolvingLoadBalancer.destroy(),this.updateState(or.ConnectivityState.SHUTDOWN),this.currentPicker=new jO;for(let t of this.configSelectionQueue)t.cancelWithStatus(pi.Status.UNAVAILABLE,"Channel closed before call started");this.configSelectionQueue=[];for(let t of this.pickQueue)t.cancelWithStatus(pi.Status.UNAVAILABLE,"Channel closed before call started");this.pickQueue=[],this.callRefTimer&&clearInterval(this.callRefTimer),this.idleTimer&&clearTimeout(this.idleTimer),this.channelzEnabled&&(0,lu.unregisterChannelzRef)(this.channelzRef),this.subchannelPool.unrefUnusedSubchannels(),(e=this.configSelector)===null||e===void 0||e.unref(),this.configSelector=null}getTarget(){return(0,iE.uriToString)(this.target)}getConnectivityState(e){let t=this.connectivityState;return e&&(this.resolvingLoadBalancer.exitIdle(),this.lastActivityTimestamp=new Date,this.maybeStartIdleTimer()),t}watchConnectivityState(e,t,o){if(this.connectivityState===or.ConnectivityState.SHUTDOWN)throw new Error("Channel has been shut down");let s=null;if(t!==1/0){let i=t instanceof Date?t:new Date(t),n=new Date;if(t===-1/0||i<=n){process.nextTick(o,new Error("Deadline passed without connectivity state change"));return}s=setTimeout(()=>{this.removeConnectivityStateWatcher(a),o(new Error("Deadline passed without connectivity state change"))},i.getTime()-n.getTime())}let a={currentState:e,callback:o,timer:s};this.connectivityStateWatchers.push(a)}getChannelzRef(){return this.channelzRef}createCall(e,t,o,s,a){if(typeof e!="string")throw new TypeError("Channel#createCall: method must be a string");if(!(typeof t=="number"||t instanceof Date))throw new TypeError("Channel#createCall: deadline must be a number or Date");if(this.connectivityState===or.ConnectivityState.SHUTDOWN)throw new Error("Channel has been shut down");return this.createResolvingCall(e,t,o,s,a)}getOptions(){return this.options}};yo.InternalChannel=KO});var iy=T(sE=>{"use strict";Object.defineProperty(sE,"__esModule",{value:!0});sE.ChannelImplementation=void 0;var m_e=Nc(),T_e=zO(),$O=class{constructor(e,t,o){if(typeof e!="string")throw new TypeError("Channel target must be a string");if(!(t instanceof m_e.ChannelCredentials))throw new TypeError("Channel credentials must be a ChannelCredentials object");if(o&&typeof o!="object")throw new TypeError("Channel options must be an object");this.internalChannel=new T_e.InternalChannel(e,t,o)}close(){this.internalChannel.close()}getTarget(){return this.internalChannel.getTarget()}getConnectivityState(e){return this.internalChannel.getConnectivityState(e)}watchConnectivityState(e,t,o){this.internalChannel.watchConnectivityState(e,t,o)}getChannelzRef(){return this.internalChannel.getChannelzRef()}createCall(e,t,o,s,a){if(typeof e!="string")throw new TypeError("Channel#createCall: method must be a string");if(!(typeof t=="number"||t instanceof Date))throw new TypeError("Channel#createCall: deadline must be a number or Date");return this.internalChannel.createCall(e,t,o,s,a)}};sE.ChannelImplementation=$O});var yj=T(Nr=>{"use strict";Object.defineProperty(Nr,"__esModule",{value:!0});Nr.ServerDuplexStreamImpl=Nr.ServerWritableStreamImpl=Nr.ServerReadableStreamImpl=Nr.ServerUnaryCallImpl=void 0;Nr.serverErrorToStatus=tA;var S_e=V("events"),ZO=V("stream"),eA=ue(),vj=ht();function tA(r,e){var t;let o={code:eA.Status.UNKNOWN,details:"message"in r?r.message:"Unknown Error",metadata:(t=e??r.metadata)!==null&&t!==void 0?t:null};return"code"in r&&typeof r.code=="number"&&Number.isInteger(r.code)&&(o.code=r.code,"details"in r&&typeof r.details=="string"&&(o.details=r.details)),o}var XO=class extends S_e.EventEmitter{constructor(e,t,o,s){super(),this.path=e,this.call=t,this.metadata=o,this.request=s,this.cancelled=!1}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}getHost(){return this.call.getHost()}};Nr.ServerUnaryCallImpl=XO;var WO=class extends ZO.Readable{constructor(e,t,o){super({objectMode:!0}),this.path=e,this.call=t,this.metadata=o,this.cancelled=!1}_read(e){this.call.startRead()}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}getHost(){return this.call.getHost()}};Nr.ServerReadableStreamImpl=WO;var JO=class extends ZO.Writable{constructor(e,t,o,s){super({objectMode:!0}),this.path=e,this.call=t,this.metadata=o,this.request=s,this.pendingStatus={code:eA.Status.OK,details:"OK"},this.cancelled=!1,this.trailingMetadata=new vj.Metadata,this.on("error",a=>{this.pendingStatus=tA(a),this.end()})}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}getHost(){return this.call.getHost()}_write(e,t,o){this.call.sendMessage(e,o)}_final(e){var t;e(null),this.call.sendStatus(Object.assign(Object.assign({},this.pendingStatus),{metadata:(t=this.pendingStatus.metadata)!==null&&t!==void 0?t:this.trailingMetadata}))}end(e){return e&&(this.trailingMetadata=e),super.end()}};Nr.ServerWritableStreamImpl=JO;var QO=class extends ZO.Duplex{constructor(e,t,o){super({objectMode:!0}),this.path=e,this.call=t,this.metadata=o,this.pendingStatus={code:eA.Status.OK,details:"OK"},this.cancelled=!1,this.trailingMetadata=new vj.Metadata,this.on("error",s=>{this.pendingStatus=tA(s),this.end()})}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}getHost(){return this.call.getHost()}_read(e){this.call.startRead()}_write(e,t,o){this.call.sendMessage(e,o)}_final(e){var t;e(null),this.call.sendStatus(Object.assign(Object.assign({},this.pendingStatus),{metadata:(t=this.pendingStatus.metadata)!==null&&t!==void 0?t:this.trailingMetadata}))}end(e){return e&&(this.trailingMetadata=e),super.end()}};Nr.ServerDuplexStreamImpl=QO});var aE=T(Aa=>{"use strict";Object.defineProperty(Aa,"__esModule",{value:!0});Aa.ServerCredentials=void 0;Aa.createCertificateProviderServerCredentials=g_e;Aa.createServerCredentialsWithInterceptors=v_e;var rA=Nv(),Oo=class{constructor(e,t){this.serverConstructorOptions=e,this.watchers=new Set,this.latestContextOptions=null,this.latestContextOptions=t??null}_addWatcher(e){this.watchers.add(e)}_removeWatcher(e){this.watchers.delete(e)}getWatcherCount(){return this.watchers.size}updateSecureContextOptions(e){this.latestContextOptions=e;for(let t of this.watchers)t(this.latestContextOptions)}_isSecure(){return this.serverConstructorOptions!==null}_getSecureContextOptions(){return this.latestContextOptions}_getConstructorOptions(){return this.serverConstructorOptions}_getInterceptors(){return[]}static createInsecure(){return new nA}static createSsl(e,t,o=!1){var s;if(e!==null&&!Buffer.isBuffer(e))throw new TypeError("rootCerts must be null or a Buffer");if(!Array.isArray(t))throw new TypeError("keyCertPairs must be an array");if(typeof o!="boolean")throw new TypeError("checkClientCertificate must be a boolean");let a=[],i=[];for(let n=0;n{"use strict";Object.defineProperty(sr,"__esModule",{value:!0});sr.BaseServerInterceptingCall=sr.ServerInterceptingCall=sr.ResponderBuilder=sr.ServerListenerBuilder=void 0;sr.isInterceptingServerListener=O_e;sr.getServerInterceptingCall=P_e;var lA=ht(),Lt=ue(),Ra=V("http2"),Oj=Uh(),Aj=V("zlib"),y_e=pO(),Pj=Pe(),Ij="server_call";function Ao(r){Pj.trace(Lt.LogVerbosity.DEBUG,Ij,r)}var cA=class{constructor(){this.metadata=void 0,this.message=void 0,this.halfClose=void 0,this.cancel=void 0}withOnReceiveMetadata(e){return this.metadata=e,this}withOnReceiveMessage(e){return this.message=e,this}withOnReceiveHalfClose(e){return this.halfClose=e,this}withOnCancel(e){return this.cancel=e,this}build(){return{onReceiveMetadata:this.metadata,onReceiveMessage:this.message,onReceiveHalfClose:this.halfClose,onCancel:this.cancel}}};sr.ServerListenerBuilder=cA;function O_e(r){return r.onReceiveMetadata!==void 0&&r.onReceiveMetadata.length===1}var uA=class{constructor(e,t){this.listener=e,this.nextListener=t,this.cancelled=!1,this.processingMetadata=!1,this.hasPendingMessage=!1,this.pendingMessage=null,this.processingMessage=!1,this.hasPendingHalfClose=!1}processPendingMessage(){this.hasPendingMessage&&(this.nextListener.onReceiveMessage(this.pendingMessage),this.pendingMessage=null,this.hasPendingMessage=!1)}processPendingHalfClose(){this.hasPendingHalfClose&&(this.nextListener.onReceiveHalfClose(),this.hasPendingHalfClose=!1)}onReceiveMetadata(e){this.cancelled||(this.processingMetadata=!0,this.listener.onReceiveMetadata(e,t=>{this.processingMetadata=!1,!this.cancelled&&(this.nextListener.onReceiveMetadata(t),this.processPendingMessage(),this.processPendingHalfClose())}))}onReceiveMessage(e){this.cancelled||(this.processingMessage=!0,this.listener.onReceiveMessage(e,t=>{this.processingMessage=!1,!this.cancelled&&(this.processingMetadata?(this.pendingMessage=t,this.hasPendingMessage=!0):(this.nextListener.onReceiveMessage(t),this.processPendingHalfClose()))}))}onReceiveHalfClose(){this.cancelled||this.listener.onReceiveHalfClose(()=>{this.cancelled||(this.processingMetadata||this.processingMessage?this.hasPendingHalfClose=!0:this.nextListener.onReceiveHalfClose())})}onCancel(){this.cancelled=!0,this.listener.onCancel(),this.nextListener.onCancel()}},fA=class{constructor(){this.start=void 0,this.metadata=void 0,this.message=void 0,this.status=void 0}withStart(e){return this.start=e,this}withSendMetadata(e){return this.metadata=e,this}withSendMessage(e){return this.message=e,this}withSendStatus(e){return this.status=e,this}build(){return{start:this.start,sendMetadata:this.metadata,sendMessage:this.message,sendStatus:this.status}}};sr.ResponderBuilder=fA;var lE={onReceiveMetadata:(r,e)=>{e(r)},onReceiveMessage:(r,e)=>{e(r)},onReceiveHalfClose:r=>{r()},onCancel:()=>{}},cE={start:r=>{r()},sendMetadata:(r,e)=>{e(r)},sendMessage:(r,e)=>{e(r)},sendStatus:(r,e)=>{e(r)}},pA=class{constructor(e,t){var o,s,a,i;this.nextCall=e,this.processingMetadata=!1,this.sentMetadata=!1,this.processingMessage=!1,this.pendingMessage=null,this.pendingMessageCallback=null,this.pendingStatus=null,this.responder={start:(o=t==null?void 0:t.start)!==null&&o!==void 0?o:cE.start,sendMetadata:(s=t==null?void 0:t.sendMetadata)!==null&&s!==void 0?s:cE.sendMetadata,sendMessage:(a=t==null?void 0:t.sendMessage)!==null&&a!==void 0?a:cE.sendMessage,sendStatus:(i=t==null?void 0:t.sendStatus)!==null&&i!==void 0?i:cE.sendStatus}}processPendingMessage(){this.pendingMessageCallback&&(this.nextCall.sendMessage(this.pendingMessage,this.pendingMessageCallback),this.pendingMessage=null,this.pendingMessageCallback=null)}processPendingStatus(){this.pendingStatus&&(this.nextCall.sendStatus(this.pendingStatus),this.pendingStatus=null)}start(e){this.responder.start(t=>{var o,s,a,i;let n={onReceiveMetadata:(o=t==null?void 0:t.onReceiveMetadata)!==null&&o!==void 0?o:lE.onReceiveMetadata,onReceiveMessage:(s=t==null?void 0:t.onReceiveMessage)!==null&&s!==void 0?s:lE.onReceiveMessage,onReceiveHalfClose:(a=t==null?void 0:t.onReceiveHalfClose)!==null&&a!==void 0?a:lE.onReceiveHalfClose,onCancel:(i=t==null?void 0:t.onCancel)!==null&&i!==void 0?i:lE.onCancel},l=new uA(n,e);this.nextCall.start(l)})}sendMetadata(e){this.processingMetadata=!0,this.sentMetadata=!0,this.responder.sendMetadata(e,t=>{this.processingMetadata=!1,this.nextCall.sendMetadata(t),this.processPendingMessage(),this.processPendingStatus()})}sendMessage(e,t){this.processingMessage=!0,this.sentMetadata||this.sendMetadata(new lA.Metadata),this.responder.sendMessage(e,o=>{this.processingMessage=!1,this.processingMetadata?(this.pendingMessage=o,this.pendingMessageCallback=t):this.nextCall.sendMessage(o,t)})}sendStatus(e){this.responder.sendStatus(e,t=>{this.processingMetadata||this.processingMessage?this.pendingStatus=t:this.nextCall.sendStatus(t)})}startRead(){this.nextCall.startRead()}getPeer(){return this.nextCall.getPeer()}getDeadline(){return this.nextCall.getDeadline()}getHost(){return this.nextCall.getHost()}};sr.ServerInterceptingCall=pA;var Lj="grpc-accept-encoding",dA="grpc-encoding",Rj="grpc-message",Nj="grpc-status",aA="grpc-timeout",A_e=/(\d{1,8})\s*([HMSmun])/,R_e={H:36e5,M:6e4,S:1e3,m:1,u:.001,n:1e-6},N_e={[Lj]:"identity,deflate,gzip",[dA]:"identity"},Cj={[Ra.constants.HTTP2_HEADER_STATUS]:Ra.constants.HTTP_STATUS_OK,[Ra.constants.HTTP2_HEADER_CONTENT_TYPE]:"application/grpc+proto"},C_e={waitForTrailers:!0},uE=class{constructor(e,t,o,s,a){var i;this.stream=e,this.callEventTracker=o,this.handler=s,this.listener=null,this.deadlineTimer=null,this.deadline=1/0,this.maxSendMessageSize=Lt.DEFAULT_MAX_SEND_MESSAGE_LENGTH,this.maxReceiveMessageSize=Lt.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,this.cancelled=!1,this.metadataSent=!1,this.wantTrailers=!1,this.cancelNotified=!1,this.incomingEncoding="identity",this.readQueue=[],this.isReadPending=!1,this.receivedHalfClose=!1,this.streamEnded=!1,this.stream.once("error",u=>{}),this.stream.once("close",()=>{var u;Ao("Request to method "+((u=this.handler)===null||u===void 0?void 0:u.path)+" stream closed with rstCode "+this.stream.rstCode),this.callEventTracker&&!this.streamEnded&&(this.streamEnded=!0,this.callEventTracker.onStreamEnd(!1),this.callEventTracker.onCallEnd({code:Lt.Status.CANCELLED,details:"Stream closed before sending status",metadata:null})),this.notifyOnCancel()}),this.stream.on("data",u=>{this.handleDataFrame(u)}),this.stream.pause(),this.stream.on("end",()=>{this.handleEndEvent()}),"grpc.max_send_message_length"in a&&(this.maxSendMessageSize=a["grpc.max_send_message_length"]),"grpc.max_receive_message_length"in a&&(this.maxReceiveMessageSize=a["grpc.max_receive_message_length"]),this.host=(i=t[":authority"])!==null&&i!==void 0?i:t.host,this.decoder=new y_e.StreamDecoder(this.maxReceiveMessageSize);let n=lA.Metadata.fromHttp2Headers(t);Pj.isTracerEnabled(Ij)&&Ao("Request to "+this.handler.path+" received headers "+JSON.stringify(n.toJSON()));let l=n.get(aA);l.length>0&&this.handleTimeoutHeader(l[0]);let c=n.get(dA);c.length>0&&(this.incomingEncoding=c[0]),n.remove(aA),n.remove(dA),n.remove(Lj),n.remove(Ra.constants.HTTP2_HEADER_ACCEPT_ENCODING),n.remove(Ra.constants.HTTP2_HEADER_TE),n.remove(Ra.constants.HTTP2_HEADER_CONTENT_TYPE),this.metadata=n}handleTimeoutHeader(e){let t=e.toString().match(A_e);if(t===null){let a={code:Lt.Status.INTERNAL,details:`Invalid ${aA} value "${e}"`,metadata:null};process.nextTick(()=>{this.sendStatus(a)});return}let o=+t[1]*R_e[t[2]]|0,s=new Date;this.deadline=s.setMilliseconds(s.getMilliseconds()+o),this.deadlineTimer=setTimeout(()=>{let a={code:Lt.Status.DEADLINE_EXCEEDED,details:"Deadline exceeded",metadata:null};this.sendStatus(a)},o)}checkCancelled(){return!this.cancelled&&(this.stream.destroyed||this.stream.closed)&&(this.notifyOnCancel(),this.cancelled=!0),this.cancelled}notifyOnCancel(){this.cancelNotified||(this.cancelNotified=!0,this.cancelled=!0,process.nextTick(()=>{var e;(e=this.listener)===null||e===void 0||e.onCancel()}),this.deadlineTimer&&clearTimeout(this.deadlineTimer),this.stream.resume())}maybeSendMetadata(){this.metadataSent||this.sendMetadata(new lA.Metadata)}serializeMessage(e){let t=this.handler.serialize(e),o=t.byteLength,s=Buffer.allocUnsafe(o+5);return s.writeUInt8(0,0),s.writeUInt32BE(o,1),t.copy(s,5),s}decompressMessage(e,t){let o=e.subarray(5);if(t==="identity")return o;if(t==="deflate"||t==="gzip"){let s;return t==="deflate"?s=Aj.createInflate():s=Aj.createGunzip(),new Promise((a,i)=>{let n=0,l=[];s.on("data",c=>{l.push(c),n+=c.byteLength,this.maxReceiveMessageSize!==-1&&n>this.maxReceiveMessageSize&&(s.destroy(),i({code:Lt.Status.RESOURCE_EXHAUSTED,details:`Received message that decompresses to a size larger than ${this.maxReceiveMessageSize}`}))}),s.on("end",()=>{a(Buffer.concat(l))}),s.write(o),s.end()})}else return Promise.reject({code:Lt.Status.UNIMPLEMENTED,details:`Received message compressed with unsupported encoding "${t}"`})}async decompressAndMaybePush(e){if(e.type!=="COMPRESSED")throw new Error(`Invalid queue entry type: ${e.type}`);let o=e.compressedMessage.readUInt8(0)===1?this.incomingEncoding:"identity",s;try{s=await this.decompressMessage(e.compressedMessage,o)}catch(a){this.sendStatus(a);return}try{e.parsedMessage=this.handler.deserialize(s)}catch(a){this.sendStatus({code:Lt.Status.INTERNAL,details:`Error deserializing request: ${a.message}`});return}e.type="READABLE",this.maybePushNextMessage()}maybePushNextMessage(){if(this.listener&&this.isReadPending&&this.readQueue.length>0&&this.readQueue[0].type!=="COMPRESSED"){this.isReadPending=!1;let e=this.readQueue.shift();e.type==="READABLE"?this.listener.onReceiveMessage(e.parsedMessage):this.listener.onReceiveHalfClose()}}handleDataFrame(e){var t;if(this.checkCancelled())return;Ao("Request to "+this.handler.path+" received data frame of size "+e.length);let o;try{o=this.decoder.write(e)}catch(s){this.sendStatus({code:Lt.Status.RESOURCE_EXHAUSTED,details:s.message});return}for(let s of o){this.stream.pause();let a={type:"COMPRESSED",compressedMessage:s,parsedMessage:null};this.readQueue.push(a),this.decompressAndMaybePush(a),(t=this.callEventTracker)===null||t===void 0||t.addMessageReceived()}}handleEndEvent(){this.readQueue.push({type:"HALF_CLOSE",compressedMessage:null,parsedMessage:null}),this.receivedHalfClose=!0,this.maybePushNextMessage()}start(e){Ao("Request to "+this.handler.path+" start called"),!this.checkCancelled()&&(this.listener=e,e.onReceiveMetadata(this.metadata))}sendMetadata(e){if(this.checkCancelled()||this.metadataSent)return;this.metadataSent=!0;let t=e?e.toHttp2Headers():null,o=Object.assign(Object.assign(Object.assign({},Cj),N_e),t);this.stream.respond(o,C_e)}sendMessage(e,t){if(this.checkCancelled())return;let o;try{o=this.serializeMessage(e)}catch(s){this.sendStatus({code:Lt.Status.INTERNAL,details:`Error serializing response: ${(0,Oj.getErrorMessage)(s)}`,metadata:null});return}if(this.maxSendMessageSize!==-1&&o.length-5>this.maxSendMessageSize){this.sendStatus({code:Lt.Status.RESOURCE_EXHAUSTED,details:`Sent message larger than max (${o.length} vs. ${this.maxSendMessageSize})`,metadata:null});return}this.maybeSendMetadata(),Ao("Request to "+this.handler.path+" sent data frame of size "+o.length),this.stream.write(o,s=>{var a;if(s){this.sendStatus({code:Lt.Status.INTERNAL,details:`Error writing message: ${(0,Oj.getErrorMessage)(s)}`,metadata:null});return}(a=this.callEventTracker)===null||a===void 0||a.addMessageSent(),t()})}sendStatus(e){var t,o;if(!this.checkCancelled())if(Ao("Request to method "+((t=this.handler)===null||t===void 0?void 0:t.path)+" ended with status code: "+Lt.Status[e.code]+" details: "+e.details),this.metadataSent)this.wantTrailers?this.notifyOnCancel():(this.wantTrailers=!0,this.stream.once("wantTrailers",()=>{var s;this.callEventTracker&&!this.streamEnded&&(this.streamEnded=!0,this.callEventTracker.onStreamEnd(!0),this.callEventTracker.onCallEnd(e));let a=Object.assign({[Nj]:e.code,[Rj]:encodeURI(e.details)},(s=e.metadata)===null||s===void 0?void 0:s.toHttp2Headers());this.stream.sendTrailers(a),this.notifyOnCancel()}),this.stream.end());else{this.callEventTracker&&!this.streamEnded&&(this.streamEnded=!0,this.callEventTracker.onStreamEnd(!0),this.callEventTracker.onCallEnd(e));let s=Object.assign(Object.assign({[Nj]:e.code,[Rj]:encodeURI(e.details)},Cj),(o=e.metadata)===null||o===void 0?void 0:o.toHttp2Headers());this.stream.respond(s,{endStream:!0}),this.notifyOnCancel()}}startRead(){Ao("Request to "+this.handler.path+" startRead called"),!this.checkCancelled()&&(this.isReadPending=!0,this.readQueue.length===0?this.receivedHalfClose||this.stream.resume():this.maybePushNextMessage())}getPeer(){var e;let t=(e=this.stream.session)===null||e===void 0?void 0:e.socket;return t!=null&&t.remoteAddress?t.remotePort?`${t.remoteAddress}:${t.remotePort}`:t.remoteAddress:"unknown"}getDeadline(){return this.deadline}getHost(){return this.host}};sr.BaseServerInterceptingCall=uE;function P_e(r,e,t,o,s,a){let i={path:s.path,requestStream:s.type==="clientStream"||s.type==="bidi",responseStream:s.type==="serverStream"||s.type==="bidi",requestDeserialize:s.deserialize,responseSerialize:s.serialize},n=new uE(e,t,o,s,a);return r.reduce((l,c)=>c(i,l),n)}});var kj=T(hi=>{"use strict";var I_e=hi&&hi.__runInitializers||function(r,e,t){for(var o=arguments.length>2,s=0;s=0;m--){var O={};for(var y in o)O[y]=y==="access"?{}:o[y];for(var y in o.access)O.access[y]=o.access[y];O.addInitializer=function(I){if(_)throw new TypeError("Cannot add initializers after decoration has completed");a.push(i(I||null))};var A=(0,t[m])(n==="accessor"?{get:u.get,set:u.set}:u[l],O);if(n==="accessor"){if(A===void 0)continue;if(A===null||typeof A!="object")throw new TypeError("Object expected");(f=i(A.get))&&(u.get=f),(f=i(A.set))&&(u.set=f),(f=i(A.init))&&s.unshift(f)}else(f=i(A))&&(n==="field"?s.unshift(f):u[l]=f)}c&&Object.defineProperty(c,o.name,u),_=!0};Object.defineProperty(hi,"__esModule",{value:!0});hi.Server=void 0;var bt=V("http2"),b_e=V("util"),qe=ue(),Pa=yj(),_A=aE(),bj=jr(),Ca=Pe(),di=rr(),Cr=Pt(),Qe=Eo(),xj=hA(),Na=~(1<<31),EA=~(1<<31),x_e=2e4,Mj=~(1<<31),{HTTP2_HEADER_PATH:wj}=bt.constants,M_e="server",Dj=Buffer.from("max_age");function Uj(r){Ca.trace(qe.LogVerbosity.DEBUG,"server_call",r)}function w_e(){}function D_e(r){return function(e,t){return b_e.deprecate(e,r)}}function mA(r){return{code:qe.Status.UNIMPLEMENTED,details:`The server does not implement the method ${r}`}}function U_e(r,e){let t=mA(e);switch(r){case"unary":return(o,s)=>{s(t,null)};case"clientStream":return(o,s)=>{s(t,null)};case"serverStream":return o=>{o.emit("error",t)};case"bidi":return o=>{o.emit("error",t)};default:throw new Error(`Invalid handlerType ${r}`)}}var k_e=(()=>{var r;let e=[],t;return r=class{constructor(s){var a,i,n,l,c,u;this.boundPorts=(I_e(this,e),new Map),this.http2Servers=new Map,this.sessionIdleTimeouts=new Map,this.handlers=new Map,this.sessions=new Map,this.started=!1,this.shutdown=!1,this.serverAddressString="null",this.channelzEnabled=!0,this.options=s??{},this.options["grpc.enable_channelz"]===0?(this.channelzEnabled=!1,this.channelzTrace=new Qe.ChannelzTraceStub,this.callTracker=new Qe.ChannelzCallTrackerStub,this.listenerChildrenTracker=new Qe.ChannelzChildrenTrackerStub,this.sessionChildrenTracker=new Qe.ChannelzChildrenTrackerStub):(this.channelzTrace=new Qe.ChannelzTrace,this.callTracker=new Qe.ChannelzCallTracker,this.listenerChildrenTracker=new Qe.ChannelzChildrenTracker,this.sessionChildrenTracker=new Qe.ChannelzChildrenTracker),this.channelzRef=(0,Qe.registerChannelzServer)("server",()=>this.getChannelzInfo(),this.channelzEnabled),this.channelzTrace.addTrace("CT_INFO","Server created"),this.maxConnectionAgeMs=(a=this.options["grpc.max_connection_age_ms"])!==null&&a!==void 0?a:Na,this.maxConnectionAgeGraceMs=(i=this.options["grpc.max_connection_age_grace_ms"])!==null&&i!==void 0?i:Na,this.keepaliveTimeMs=(n=this.options["grpc.keepalive_time_ms"])!==null&&n!==void 0?n:EA,this.keepaliveTimeoutMs=(l=this.options["grpc.keepalive_timeout_ms"])!==null&&l!==void 0?l:x_e,this.sessionIdleTimeout=(c=this.options["grpc.max_connection_idle_ms"])!==null&&c!==void 0?c:Mj,this.commonServerOptions={maxSendHeaderBlockLength:Number.MAX_SAFE_INTEGER},"grpc-node.max_session_memory"in this.options?this.commonServerOptions.maxSessionMemory=this.options["grpc-node.max_session_memory"]:this.commonServerOptions.maxSessionMemory=Number.MAX_SAFE_INTEGER,"grpc.max_concurrent_streams"in this.options&&(this.commonServerOptions.settings={maxConcurrentStreams:this.options["grpc.max_concurrent_streams"]}),this.interceptors=(u=this.options.interceptors)!==null&&u!==void 0?u:[],this.trace("Server constructed")}getChannelzInfo(){return{trace:this.channelzTrace,callTracker:this.callTracker,listenerChildren:this.listenerChildrenTracker.getChildLists(),sessionChildren:this.sessionChildrenTracker.getChildLists()}}getChannelzSessionInfo(s){var a,i,n;let l=this.sessions.get(s),c=s.socket,u=c.remoteAddress?(0,di.stringToSubchannelAddress)(c.remoteAddress,c.remotePort):null,f=c.localAddress?(0,di.stringToSubchannelAddress)(c.localAddress,c.localPort):null,_;if(s.encrypted){let O=c,y=O.getCipher(),A=O.getCertificate(),I=O.getPeerCertificate();_={cipherSuiteStandardName:(a=y.standardName)!==null&&a!==void 0?a:null,cipherSuiteOtherName:y.standardName?null:y.name,localCertificate:A&&"raw"in A?A.raw:null,remoteCertificate:I&&"raw"in I?I.raw:null}}else _=null;return{remoteAddress:u,localAddress:f,security:_,remoteName:null,streamsStarted:l.streamTracker.callsStarted,streamsSucceeded:l.streamTracker.callsSucceeded,streamsFailed:l.streamTracker.callsFailed,messagesSent:l.messagesSent,messagesReceived:l.messagesReceived,keepAlivesSent:l.keepAlivesSent,lastLocalStreamCreatedTimestamp:null,lastRemoteStreamCreatedTimestamp:l.streamTracker.lastCallStartedTimestamp,lastMessageSentTimestamp:l.lastMessageSentTimestamp,lastMessageReceivedTimestamp:l.lastMessageReceivedTimestamp,localFlowControlWindow:(i=s.state.localWindowSize)!==null&&i!==void 0?i:null,remoteFlowControlWindow:(n=s.state.remoteWindowSize)!==null&&n!==void 0?n:null}}trace(s){Ca.trace(qe.LogVerbosity.DEBUG,M_e,"("+this.channelzRef.id+") "+s)}keepaliveTrace(s){Ca.trace(qe.LogVerbosity.DEBUG,"keepalive","("+this.channelzRef.id+") "+s)}addProtoService(){throw new Error("Not implemented. Use addService() instead")}addService(s,a){if(s===null||typeof s!="object"||a===null||typeof a!="object")throw new Error("addService() requires two objects as arguments");let i=Object.keys(s);if(i.length===0)throw new Error("Cannot add an empty service to a server");i.forEach(n=>{let l=s[n],c;l.requestStream?l.responseStream?c="bidi":c="clientStream":l.responseStream?c="serverStream":c="unary";let u=a[n],f;if(u===void 0&&typeof l.originalName=="string"&&(u=a[l.originalName]),u!==void 0?f=u.bind(a):f=U_e(c,n),this.register(l.path,f,l.responseSerialize,l.requestDeserialize,c)===!1)throw new Error(`Method handler for ${l.path} already provided.`)})}removeService(s){if(s===null||typeof s!="object")throw new Error("removeService() requires object as argument");Object.keys(s).forEach(i=>{let n=s[i];this.unregister(n.path)})}bind(s,a){throw new Error("Not implemented. Use bindAsync() instead")}experimentalRegisterListenerToChannelz(s){return(0,Qe.registerChannelzSocket)((0,di.subchannelAddressToString)(s),()=>({localAddress:s,remoteAddress:null,security:null,remoteName:null,streamsStarted:0,streamsSucceeded:0,streamsFailed:0,messagesSent:0,messagesReceived:0,keepAlivesSent:0,lastLocalStreamCreatedTimestamp:null,lastRemoteStreamCreatedTimestamp:null,lastMessageSentTimestamp:null,lastMessageReceivedTimestamp:null,localFlowControlWindow:null,remoteFlowControlWindow:null}),this.channelzEnabled)}experimentalUnregisterListenerFromChannelz(s){(0,Qe.unregisterChannelzRef)(s)}createHttp2Server(s){let a;if(s._isSecure()){let i=s._getConstructorOptions(),n=s._getSecureContextOptions(),l=Object.assign(Object.assign(Object.assign(Object.assign({},this.commonServerOptions),i),n),{enableTrace:this.options["grpc-node.tls_enable_trace"]===1}),c=n!==null;this.trace("Initial credentials valid: "+c),a=bt.createSecureServer(l),a.prependListener("connection",f=>{c||(this.trace("Dropped connection from "+JSON.stringify(f.address())+" due to unloaded credentials"),f.destroy())}),a.on("secureConnection",f=>{f.on("error",_=>{this.trace("An incoming TLS connection closed with error: "+_.message)})});let u=f=>{if(f){let _=a;try{_.setSecureContext(f)}catch(m){Ca.log(qe.LogVerbosity.ERROR,"Failed to set secure context with error "+m.message),f=null}}c=f!==null,this.trace("Post-update credentials valid: "+c)};s._addWatcher(u),a.on("close",()=>{s._removeWatcher(u)})}else a=bt.createServer(this.commonServerOptions);return a.setTimeout(0,w_e),this._setupHandlers(a,s._getInterceptors()),a}bindOneAddress(s,a){this.trace("Attempting to bind "+(0,di.subchannelAddressToString)(s));let i=this.createHttp2Server(a.credentials);return new Promise((n,l)=>{let c=u=>{this.trace("Failed to bind "+(0,di.subchannelAddressToString)(s)+" with error "+u.message),n({port:"port"in s?s.port:1,error:u.message})};i.once("error",c),i.listen(s,()=>{let u=i.address(),f;typeof u=="string"?f={path:u}:f={host:u.address,port:u.port};let _=this.experimentalRegisterListenerToChannelz(f);this.listenerChildrenTracker.refChild(_),this.http2Servers.set(i,{channelzRef:_,sessions:new Set,ownsChannelzRef:!0}),a.listeningServers.add(i),this.trace("Successfully bound "+(0,di.subchannelAddressToString)(f)),n({port:"port"in f?f.port:1}),i.removeListener("error",c)})})}async bindManyPorts(s,a){if(s.length===0)return{count:0,port:0,errors:[]};if((0,di.isTcpSubchannelAddress)(s[0])&&s[0].port===0){let i=await this.bindOneAddress(s[0],a);if(i.error){let n=await this.bindManyPorts(s.slice(1),a);return Object.assign(Object.assign({},n),{errors:[i.error,...n.errors]})}else{let n=s.slice(1).map(u=>(0,di.isTcpSubchannelAddress)(u)?{host:u.host,port:i.port}:u),l=await Promise.all(n.map(u=>this.bindOneAddress(u,a))),c=[i,...l];return{count:c.filter(u=>u.error===void 0).length,port:i.port,errors:c.filter(u=>u.error).map(u=>u.error)}}}else{let i=await Promise.all(s.map(n=>this.bindOneAddress(n,a)));return{count:i.filter(n=>n.error===void 0).length,port:i[0].port,errors:i.filter(n=>n.error).map(n=>n.error)}}}async bindAddressList(s,a){let i=await this.bindManyPorts(s,a);if(i.count>0)return i.count{let n={onSuccessfulResolution:(c,u,f)=>{n.onSuccessfulResolution=()=>{};let _=[].concat(...c.map(m=>m.addresses));if(_.length===0){i(new Error(`No addresses resolved for port ${s}`));return}a(_)},onError:c=>{i(new Error(c.details))}};(0,bj.createResolver)(s,n,this.options).updateResolution()})}async bindPort(s,a){let i=await this.resolvePort(s);if(a.cancelled)throw this.completeUnbind(a),new Error("bindAsync operation cancelled by unbind call");let n=await this.bindAddressList(i,a);if(a.cancelled)throw this.completeUnbind(a),new Error("bindAsync operation cancelled by unbind call");return n}normalizePort(s){let a=(0,Cr.parseUri)(s);if(a===null)throw new Error(`Could not parse port "${s}"`);let i=(0,bj.mapUriDefaultScheme)(a);if(i===null)throw new Error(`Could not get a default scheme for port "${s}"`);return i}bindAsync(s,a,i){if(this.shutdown)throw new Error("bindAsync called after shutdown");if(typeof s!="string")throw new TypeError("port must be a string");if(a===null||!(a instanceof _A.ServerCredentials))throw new TypeError("creds must be a ServerCredentials object");if(typeof i!="function")throw new TypeError("callback must be a function");this.trace("bindAsync port="+s);let n=this.normalizePort(s),l=(_,m)=>{process.nextTick(()=>i(_,m))},c=this.boundPorts.get((0,Cr.uriToString)(n));if(c){if(!a._equals(c.credentials)){l(new Error(`${s} already bound with incompatible credentials`),0);return}c.cancelled=!1,c.completionPromise?c.completionPromise.then(_=>i(null,_),_=>i(_,0)):l(null,c.portNumber);return}c={mapKey:(0,Cr.uriToString)(n),originalUri:n,completionPromise:null,cancelled:!1,portNumber:0,credentials:a,listeningServers:new Set};let u=(0,Cr.splitHostPort)(n.path),f=this.bindPort(n,c);c.completionPromise=f,(u==null?void 0:u.port)===0?f.then(_=>{let m={scheme:n.scheme,authority:n.authority,path:(0,Cr.combineHostPort)({host:u.host,port:_})};c.mapKey=(0,Cr.uriToString)(m),c.completionPromise=null,c.portNumber=_,this.boundPorts.set(c.mapKey,c),i(null,_)},_=>{i(_,0)}):(this.boundPorts.set(c.mapKey,c),f.then(_=>{c.completionPromise=null,c.portNumber=_,i(null,_)},_=>{i(_,0)}))}registerInjectorToChannelz(){return(0,Qe.registerChannelzSocket)("injector",()=>({localAddress:null,remoteAddress:null,security:null,remoteName:null,streamsStarted:0,streamsSucceeded:0,streamsFailed:0,messagesSent:0,messagesReceived:0,keepAlivesSent:0,lastLocalStreamCreatedTimestamp:null,lastRemoteStreamCreatedTimestamp:null,lastMessageSentTimestamp:null,lastMessageReceivedTimestamp:null,localFlowControlWindow:null,remoteFlowControlWindow:null}),this.channelzEnabled)}experimentalCreateConnectionInjectorWithChannelzRef(s,a,i=!1){if(s===null||!(s instanceof _A.ServerCredentials))throw new TypeError("creds must be a ServerCredentials object");this.channelzEnabled&&this.listenerChildrenTracker.refChild(a);let n=this.createHttp2Server(s),l=new Set;return this.http2Servers.set(n,{channelzRef:a,sessions:l,ownsChannelzRef:i}),{injectConnection:c=>{n.emit("connection",c)},drain:c=>{var u,f;for(let _ of l)this.closeSession(_);(f=(u=setTimeout(()=>{for(let _ of l)_.destroy(bt.constants.NGHTTP2_CANCEL)},c)).unref)===null||f===void 0||f.call(u)},destroy:()=>{this.closeServer(n);for(let c of l)this.closeSession(c)}}}createConnectionInjector(s){if(s===null||!(s instanceof _A.ServerCredentials))throw new TypeError("creds must be a ServerCredentials object");let a=this.registerInjectorToChannelz();return this.experimentalCreateConnectionInjectorWithChannelzRef(s,a,!0)}closeServer(s,a){this.trace("Closing server with address "+JSON.stringify(s.address()));let i=this.http2Servers.get(s);s.close(()=>{i&&i.ownsChannelzRef&&(this.listenerChildrenTracker.unrefChild(i.channelzRef),(0,Qe.unregisterChannelzRef)(i.channelzRef)),this.http2Servers.delete(s),a==null||a()})}closeSession(s,a){var i;this.trace("Closing session initiated by "+((i=s.socket)===null||i===void 0?void 0:i.remoteAddress));let n=this.sessions.get(s),l=()=>{n&&(this.sessionChildrenTracker.unrefChild(n.ref),(0,Qe.unregisterChannelzRef)(n.ref)),a==null||a()};s.closed?queueMicrotask(l):s.close(l)}completeUnbind(s){for(let a of s.listeningServers){let i=this.http2Servers.get(a);if(this.closeServer(a,()=>{s.listeningServers.delete(a)}),i)for(let n of i.sessions)this.closeSession(n)}this.boundPorts.delete(s.mapKey)}unbind(s){this.trace("unbind port="+s);let a=this.normalizePort(s),i=(0,Cr.splitHostPort)(a.path);if((i==null?void 0:i.port)===0)throw new Error("Cannot unbind port 0");let n=this.boundPorts.get((0,Cr.uriToString)(a));n&&(this.trace("unbinding "+n.mapKey+" originally bound as "+(0,Cr.uriToString)(n.originalUri)),n.completionPromise?n.cancelled=!0:this.completeUnbind(n))}drain(s,a){var i,n;this.trace("drain port="+s+" graceTimeMs="+a);let l=this.normalizePort(s),c=(0,Cr.splitHostPort)(l.path);if((c==null?void 0:c.port)===0)throw new Error("Cannot drain port 0");let u=this.boundPorts.get((0,Cr.uriToString)(l));if(!u)return;let f=new Set;for(let _ of u.listeningServers){let m=this.http2Servers.get(_);if(m)for(let O of m.sessions)f.add(O),this.closeSession(O,()=>{f.delete(O)})}(n=(i=setTimeout(()=>{for(let _ of f)_.destroy(bt.constants.NGHTTP2_CANCEL)},a)).unref)===null||n===void 0||n.call(i)}forceShutdown(){for(let s of this.boundPorts.values())s.cancelled=!0;this.boundPorts.clear();for(let s of this.http2Servers.keys())this.closeServer(s);this.sessions.forEach((s,a)=>{this.closeSession(a),a.destroy(bt.constants.NGHTTP2_CANCEL)}),this.sessions.clear(),(0,Qe.unregisterChannelzRef)(this.channelzRef),this.shutdown=!0}register(s,a,i,n,l){return this.handlers.has(s)?!1:(this.handlers.set(s,{func:a,serialize:i,deserialize:n,type:l,path:s}),!0)}unregister(s){return this.handlers.delete(s)}start(){if(this.http2Servers.size===0||[...this.http2Servers.keys()].every(s=>!s.listening))throw new Error("server must be bound in order to start");if(this.started===!0)throw new Error("server is already started");this.started=!0}tryShutdown(s){var a;let i=c=>{(0,Qe.unregisterChannelzRef)(this.channelzRef),s(c)},n=0;function l(){n--,n===0&&i()}this.shutdown=!0;for(let[c,u]of this.http2Servers.entries()){n++;let f=u.channelzRef.name;this.trace("Waiting for server "+f+" to close"),this.closeServer(c,()=>{this.trace("Server "+f+" finished closing"),l()});for(let _ of u.sessions.keys()){n++;let m=(a=_.socket)===null||a===void 0?void 0:a.remoteAddress;this.trace("Waiting for session "+m+" to close"),this.closeSession(_,()=>{this.trace("Session "+m+" finished closing"),l()})}}n===0&&i()}addHttp2Port(){throw new Error("Not yet implemented")}getChannelzRef(){return this.channelzRef}_verifyContentType(s,a){let i=a[bt.constants.HTTP2_HEADER_CONTENT_TYPE];return typeof i!="string"||!i.startsWith("application/grpc")?(s.respond({[bt.constants.HTTP2_HEADER_STATUS]:bt.constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE},{endStream:!0}),!1):!0}_retrieveHandler(s){Uj("Received call to method "+s+" at address "+this.serverAddressString);let a=this.handlers.get(s);return a===void 0?(Uj("No handler registered for method "+s+". Sending UNIMPLEMENTED status."),null):a}_respondWithError(s,a,i=null){var n,l;let c=Object.assign({"grpc-status":(n=s.code)!==null&&n!==void 0?n:qe.Status.INTERNAL,"grpc-message":s.details,[bt.constants.HTTP2_HEADER_STATUS]:bt.constants.HTTP_STATUS_OK,[bt.constants.HTTP2_HEADER_CONTENT_TYPE]:"application/grpc+proto"},(l=s.metadata)===null||l===void 0?void 0:l.toHttp2Headers());a.respond(c,{endStream:!0}),this.callTracker.addCallFailed(),i==null||i.streamTracker.addCallFailed()}_channelzHandler(s,a,i){this.onStreamOpened(a);let n=this.sessions.get(a.session);if(this.callTracker.addCallStarted(),n==null||n.streamTracker.addCallStarted(),!this._verifyContentType(a,i)){this.callTracker.addCallFailed(),n==null||n.streamTracker.addCallFailed();return}let l=i[wj],c=this._retrieveHandler(l);if(!c){this._respondWithError(mA(l),a,n);return}let u={addMessageSent:()=>{n&&(n.messagesSent+=1,n.lastMessageSentTimestamp=new Date)},addMessageReceived:()=>{n&&(n.messagesReceived+=1,n.lastMessageReceivedTimestamp=new Date)},onCallEnd:_=>{_.code===qe.Status.OK?this.callTracker.addCallSucceeded():this.callTracker.addCallFailed()},onStreamEnd:_=>{n&&(_?n.streamTracker.addCallSucceeded():n.streamTracker.addCallFailed())}},f=(0,xj.getServerInterceptingCall)([...s,...this.interceptors],a,i,u,c,this.options);this._runHandlerForCall(f,c)||(this.callTracker.addCallFailed(),n==null||n.streamTracker.addCallFailed(),f.sendStatus({code:qe.Status.INTERNAL,details:`Unknown handler type: ${c.type}`}))}_streamHandler(s,a,i){if(this.onStreamOpened(a),this._verifyContentType(a,i)!==!0)return;let n=i[wj],l=this._retrieveHandler(n);if(!l){this._respondWithError(mA(n),a,null);return}let c=(0,xj.getServerInterceptingCall)([...s,...this.interceptors],a,i,null,l,this.options);this._runHandlerForCall(c,l)||c.sendStatus({code:qe.Status.INTERNAL,details:`Unknown handler type: ${l.type}`})}_runHandlerForCall(s,a){let{type:i}=a;if(i==="unary")B_e(s,a);else if(i==="clientStream")V_e(s,a);else if(i==="serverStream")F_e(s,a);else if(i==="bidi")G_e(s,a);else return!1;return!0}_setupHandlers(s,a){if(s===null)return;let i=s.address(),n="null";i&&(typeof i=="string"?n=i:n=i.address+":"+i.port),this.serverAddressString=n;let l=this.channelzEnabled?this._channelzHandler:this._streamHandler,c=this.channelzEnabled?this._channelzSessionHandler(s):this._sessionHandler(s);s.on("stream",l.bind(this,a)),s.on("session",c)}_sessionHandler(s){return a=>{var i,n;(i=this.http2Servers.get(s))===null||i===void 0||i.sessions.add(a);let l=null,c=null,u=null,f=!1,_=this.enableIdleTimeout(a);if(this.maxConnectionAgeMs!==Na){let I=this.maxConnectionAgeMs/10,M=Math.random()*I*2-I;l=setTimeout(()=>{var F,N;f=!0,this.trace("Connection dropped by max connection age: "+((F=a.socket)===null||F===void 0?void 0:F.remoteAddress));try{a.goaway(bt.constants.NGHTTP2_NO_ERROR,~(1<<31),Dj)}catch{a.destroy();return}a.close(),this.maxConnectionAgeGraceMs!==Na&&(c=setTimeout(()=>{a.destroy()},this.maxConnectionAgeGraceMs),(N=c.unref)===null||N===void 0||N.call(c))},this.maxConnectionAgeMs+M),(n=l.unref)===null||n===void 0||n.call(l)}let m=()=>{u&&(clearTimeout(u),u=null)},O=()=>!a.destroyed&&this.keepaliveTimeMs0,y,A=()=>{var I;O()&&(this.keepaliveTrace("Starting keepalive timer for "+this.keepaliveTimeMs+"ms"),u=setTimeout(()=>{m(),y()},this.keepaliveTimeMs),(I=u.unref)===null||I===void 0||I.call(u))};y=()=>{var I;if(!O())return;this.keepaliveTrace("Sending ping with timeout "+this.keepaliveTimeoutMs+"ms");let M="";try{a.ping((N,K,B)=>{m(),N?(this.keepaliveTrace("Ping failed with error: "+N.message),f=!0,a.close()):(this.keepaliveTrace("Received ping response"),A())})||(M="Ping returned false")}catch(F){M=(F instanceof Error?F.message:"")||"Unknown error"}if(M){this.keepaliveTrace("Ping send failed: "+M),this.trace("Connection dropped due to ping send error: "+M),f=!0,a.close();return}u=setTimeout(()=>{m(),this.keepaliveTrace("Ping timeout passed without response"),this.trace("Connection dropped by keepalive timeout"),f=!0,a.close()},this.keepaliveTimeoutMs),(I=u.unref)===null||I===void 0||I.call(u)},A(),a.on("close",()=>{var I,M;f||this.trace(`Connection dropped by client ${(I=a.socket)===null||I===void 0?void 0:I.remoteAddress}`),l&&clearTimeout(l),c&&clearTimeout(c),m(),_!==null&&(clearTimeout(_.timeout),this.sessionIdleTimeouts.delete(a)),(M=this.http2Servers.get(s))===null||M===void 0||M.sessions.delete(a)})}}_channelzSessionHandler(s){return a=>{var i,n,l,c;let u=(0,Qe.registerChannelzSocket)((n=(i=a.socket)===null||i===void 0?void 0:i.remoteAddress)!==null&&n!==void 0?n:"unknown",this.getChannelzSessionInfo.bind(this,a),this.channelzEnabled),f={ref:u,streamTracker:new Qe.ChannelzCallTracker,messagesSent:0,messagesReceived:0,keepAlivesSent:0,lastMessageSentTimestamp:null,lastMessageReceivedTimestamp:null};(l=this.http2Servers.get(s))===null||l===void 0||l.sessions.add(a),this.sessions.set(a,f);let _=`${a.socket.remoteAddress}:${a.socket.remotePort}`;this.channelzTrace.addTrace("CT_INFO","Connection established by client "+_),this.trace("Connection established by client "+_),this.sessionChildrenTracker.refChild(u);let m=null,O=null,y=null,A=!1,I=this.enableIdleTimeout(a);if(this.maxConnectionAgeMs!==Na){let B=this.maxConnectionAgeMs/10,G=Math.random()*B*2-B;m=setTimeout(()=>{var te;A=!0,this.channelzTrace.addTrace("CT_INFO","Connection dropped by max connection age from "+_);try{a.goaway(bt.constants.NGHTTP2_NO_ERROR,~(1<<31),Dj)}catch{a.destroy();return}a.close(),this.maxConnectionAgeGraceMs!==Na&&(O=setTimeout(()=>{a.destroy()},this.maxConnectionAgeGraceMs),(te=O.unref)===null||te===void 0||te.call(O))},this.maxConnectionAgeMs+G),(c=m.unref)===null||c===void 0||c.call(m)}let M=()=>{y&&(clearTimeout(y),y=null)},F=()=>!a.destroyed&&this.keepaliveTimeMs0,N,K=()=>{var B;F()&&(this.keepaliveTrace("Starting keepalive timer for "+this.keepaliveTimeMs+"ms"),y=setTimeout(()=>{M(),N()},this.keepaliveTimeMs),(B=y.unref)===null||B===void 0||B.call(y))};N=()=>{var B;if(!F())return;this.keepaliveTrace("Sending ping with timeout "+this.keepaliveTimeoutMs+"ms");let G="";try{a.ping(($,le,v)=>{M(),$?(this.keepaliveTrace("Ping failed with error: "+$.message),this.channelzTrace.addTrace("CT_INFO","Connection dropped due to error of a ping frame "+$.message+" return in "+le),A=!0,a.close()):(this.keepaliveTrace("Received ping response"),K())})||(G="Ping returned false")}catch(te){G=(te instanceof Error?te.message:"")||"Unknown error"}if(G){this.keepaliveTrace("Ping send failed: "+G),this.channelzTrace.addTrace("CT_INFO","Connection dropped due to ping send error: "+G),A=!0,a.close();return}f.keepAlivesSent+=1,y=setTimeout(()=>{M(),this.keepaliveTrace("Ping timeout passed without response"),this.channelzTrace.addTrace("CT_INFO","Connection dropped by keepalive timeout from "+_),A=!0,a.close()},this.keepaliveTimeoutMs),(B=y.unref)===null||B===void 0||B.call(y)},K(),a.on("close",()=>{var B;A||this.channelzTrace.addTrace("CT_INFO","Connection dropped by client "+_),this.sessionChildrenTracker.unrefChild(u),(0,Qe.unregisterChannelzRef)(u),m&&clearTimeout(m),O&&clearTimeout(O),M(),I!==null&&(clearTimeout(I.timeout),this.sessionIdleTimeouts.delete(a)),(B=this.http2Servers.get(s))===null||B===void 0||B.sessions.delete(a),this.sessions.delete(a)})}}enableIdleTimeout(s){var a,i;if(this.sessionIdleTimeout>=Mj)return null;let n={activeStreams:0,lastIdle:Date.now(),onClose:this.onStreamClose.bind(this,s),timeout:setTimeout(this.onIdleTimeout,this.sessionIdleTimeout,this,s)};(i=(a=n.timeout).unref)===null||i===void 0||i.call(a),this.sessionIdleTimeouts.set(s,n);let{socket:l}=s;return this.trace("Enable idle timeout for "+l.remoteAddress+":"+l.remotePort),n}onIdleTimeout(s,a){let{socket:i}=a,n=s.sessionIdleTimeouts.get(a);n!==void 0&&n.activeStreams===0&&(Date.now()-n.lastIdle>=s.sessionIdleTimeout?(s.trace("Session idle timeout triggered for "+(i==null?void 0:i.remoteAddress)+":"+(i==null?void 0:i.remotePort)+" last idle at "+n.lastIdle),s.closeSession(a)):n.timeout.refresh())}onStreamOpened(s){let a=s.session,i=this.sessionIdleTimeouts.get(a);i&&(i.activeStreams+=1,s.once("close",i.onClose))}onStreamClose(s){var a,i;let n=this.sessionIdleTimeouts.get(s);n&&(n.activeStreams-=1,n.activeStreams===0&&(n.lastIdle=Date.now(),n.timeout.refresh(),this.trace("Session onStreamClose"+((a=s.socket)===null||a===void 0?void 0:a.remoteAddress)+":"+((i=s.socket)===null||i===void 0?void 0:i.remotePort)+" at "+n.lastIdle)))}},(()=>{let o=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;t=[D_e("Calling start() is no longer necessary. It can be safely omitted.")],L_e(r,null,t,{kind:"method",name:"start",static:!1,private:!1,access:{has:s=>"start"in s,get:s=>s.start},metadata:o},null,e),o&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})})(),r})();hi.Server=k_e;async function B_e(r,e){let t;function o(i,n,l,c){if(i){r.sendStatus((0,Pa.serverErrorToStatus)(i,l));return}r.sendMessage(n,()=>{r.sendStatus({code:qe.Status.OK,details:"OK",metadata:l??null})})}let s,a=null;r.start({onReceiveMetadata(i){s=i,r.startRead()},onReceiveMessage(i){if(a){r.sendStatus({code:qe.Status.UNIMPLEMENTED,details:`Received a second request message for server streaming method ${e.path}`,metadata:null});return}a=i,r.startRead()},onReceiveHalfClose(){if(!a){r.sendStatus({code:qe.Status.UNIMPLEMENTED,details:`Received no request message for server streaming method ${e.path}`,metadata:null});return}t=new Pa.ServerWritableStreamImpl(e.path,r,s,a);try{e.func(t,o)}catch(i){r.sendStatus({code:qe.Status.UNKNOWN,details:`Server method handler threw error ${i.message}`,metadata:null})}},onCancel(){t&&(t.cancelled=!0,t.emit("cancelled","cancelled"))}})}function V_e(r,e){let t;function o(s,a,i,n){if(s){r.sendStatus((0,Pa.serverErrorToStatus)(s,i));return}r.sendMessage(a,()=>{r.sendStatus({code:qe.Status.OK,details:"OK",metadata:i??null})})}r.start({onReceiveMetadata(s){t=new Pa.ServerDuplexStreamImpl(e.path,r,s);try{e.func(t,o)}catch(a){r.sendStatus({code:qe.Status.UNKNOWN,details:`Server method handler threw error ${a.message}`,metadata:null})}},onReceiveMessage(s){t.push(s)},onReceiveHalfClose(){t.push(null)},onCancel(){t&&(t.cancelled=!0,t.emit("cancelled","cancelled"),t.destroy())}})}function F_e(r,e){let t,o,s=null;r.start({onReceiveMetadata(a){o=a,r.startRead()},onReceiveMessage(a){if(s){r.sendStatus({code:qe.Status.UNIMPLEMENTED,details:`Received a second request message for server streaming method ${e.path}`,metadata:null});return}s=a,r.startRead()},onReceiveHalfClose(){if(!s){r.sendStatus({code:qe.Status.UNIMPLEMENTED,details:`Received no request message for server streaming method ${e.path}`,metadata:null});return}t=new Pa.ServerWritableStreamImpl(e.path,r,o,s);try{e.func(t)}catch(a){r.sendStatus({code:qe.Status.UNKNOWN,details:`Server method handler threw error ${a.message}`,metadata:null})}},onCancel(){t&&(t.cancelled=!0,t.emit("cancelled","cancelled"),t.destroy())}})}function G_e(r,e){let t;r.start({onReceiveMetadata(o){t=new Pa.ServerDuplexStreamImpl(e.path,r,o);try{e.func(t)}catch(s){r.sendStatus({code:qe.Status.UNKNOWN,details:`Server method handler threw error ${s.message}`,metadata:null})}},onReceiveMessage(o){t.push(o)},onReceiveHalfClose(){t.push(null)},onCancel(){t&&(t.cancelled=!0,t.emit("cancelled","cancelled"),t.destroy())}})}});var Bj=T(fE=>{"use strict";Object.defineProperty(fE,"__esModule",{value:!0});fE.StatusBuilder=void 0;var TA=class{constructor(){this.code=null,this.details=null,this.metadata=null}withCode(e){return this.code=e,this}withDetails(e){return this.details=e,this}withMetadata(e){return this.metadata=e,this}build(){let e={};return this.code!==null&&(e.code=this.code),this.details!==null&&(e.details=this.details),this.metadata!==null&&(e.metadata=this.metadata),e}};fE.StatusBuilder=TA});var SA=T(Ia=>{"use strict";Object.defineProperty(Ia,"__esModule",{value:!0});Ia.msToDuration=H_e;Ia.durationToMs=q_e;Ia.isDuration=j_e;Ia.parseDuration=K_e;function H_e(r){return{seconds:r/1e3|0,nanos:r%1e3*1e6|0}}function q_e(r){return r.seconds*1e3+r.nanos/1e6|0}function j_e(r){return typeof r.seconds=="number"&&typeof r.nanos=="number"}var Y_e=/^(\d+)(?:\.(\d+))?s$/;function K_e(r){let e=r.match(Y_e);return e?{seconds:Number.parseInt(e[1],10),nanos:e[2]?Number.parseInt(e[2].padEnd(9,"0"),10):0}:null}});var pE=T(on=>{"use strict";Object.defineProperty(on,"__esModule",{value:!0});on.LeafLoadBalancer=on.PickFirstLoadBalancer=on.PickFirstLoadBalancingConfig=void 0;on.shuffled=Hj;on.setup=Z_e;var gA=ao(),$e=tr(),Ro=ri(),Vj=rr(),z_e=Pe(),$_e=ue(),Fj=rr(),Gj=V("net"),X_e="pick_first";function cu(r){z_e.trace($_e.LogVerbosity.DEBUG,X_e,r)}var uu="pick_first",W_e=250,La=class r{constructor(e){this.shuffleAddressList=e}getLoadBalancerName(){return uu}toJsonObject(){return{[uu]:{shuffleAddressList:this.shuffleAddressList}}}getShuffleAddressList(){return this.shuffleAddressList}static createFromJson(e){if("shuffleAddressList"in e&&typeof e.shuffleAddressList!="boolean")throw new Error("pick_first config field shuffleAddressList must be a boolean if provided");return new r(e.shuffleAddressList===!0)}};on.PickFirstLoadBalancingConfig=La;var vA=class{constructor(e){this.subchannel=e}pick(e){return{pickResultType:Ro.PickResultType.COMPLETE,subchannel:this.subchannel,status:null,onCallStarted:null,onCallEnded:null}}};function Hj(r){let e=r.slice();for(let t=e.length-1;t>1;t--){let o=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[o],e[o]=s}return e}function J_e(r){if(r.length===0)return[];let e=[],t=[],o=[],s=(0,Fj.isTcpSubchannelAddress)(r[0])&&(0,Gj.isIPv6)(r[0].host);for(let n of r)(0,Fj.isTcpSubchannelAddress)(n)&&(0,Gj.isIPv6)(n.host)?t.push(n):o.push(n);let a=s?t:o,i=s?o:t;for(let n=0;n{this.onSubchannelStateUpdate(t,o,s,i)},this.pickedSubchannelHealthListener=()=>this.calculateAndReportNewState(),this.stickyTransientFailureMode=!1,this.reportHealthStatus=!1,this.lastError=null,this.latestAddressList=null,this.latestOptions={},this.connectionDelayTimeout=setTimeout(()=>{},0),clearTimeout(this.connectionDelayTimeout)}allChildrenHaveReportedTF(){return this.children.every(e=>e.hasReportedTransientFailure)}resetChildrenReportedTF(){this.children.every(e=>e.hasReportedTransientFailure=!1)}calculateAndReportNewState(){var e;if(this.currentPick)if(this.reportHealthStatus&&!this.currentPick.isHealthy()){let t=`Picked subchannel ${this.currentPick.getAddress()} is unhealthy`;this.updateState($e.ConnectivityState.TRANSIENT_FAILURE,new Ro.UnavailablePicker({details:t}),t)}else this.updateState($e.ConnectivityState.READY,new vA(this.currentPick),null);else if(((e=this.latestAddressList)===null||e===void 0?void 0:e.length)===0){let t=`No connection established. Last error: ${this.lastError}`;this.updateState($e.ConnectivityState.TRANSIENT_FAILURE,new Ro.UnavailablePicker({details:t}),t)}else if(this.children.length===0)this.updateState($e.ConnectivityState.IDLE,new Ro.QueuePicker(this),null);else if(this.stickyTransientFailureMode){let t=`No connection established. Last error: ${this.lastError}`;this.updateState($e.ConnectivityState.TRANSIENT_FAILURE,new Ro.UnavailablePicker({details:t}),t)}else this.updateState($e.ConnectivityState.CONNECTING,new Ro.QueuePicker(this),null)}requestReresolution(){this.channelControlHelper.requestReresolution()}maybeEnterStickyTransientFailureMode(){if(this.allChildrenHaveReportedTF()){if(this.requestReresolution(),this.resetChildrenReportedTF(),this.stickyTransientFailureMode){this.calculateAndReportNewState();return}this.stickyTransientFailureMode=!0;for(let{subchannel:e}of this.children)e.startConnecting();this.calculateAndReportNewState()}}removeCurrentPick(){this.currentPick!==null&&(this.currentPick.removeConnectivityStateListener(this.subchannelStateListener),this.channelControlHelper.removeChannelzChild(this.currentPick.getChannelzRef()),this.currentPick.removeHealthStateWatcher(this.pickedSubchannelHealthListener),this.currentPick.unref(),this.currentPick=null)}onSubchannelStateUpdate(e,t,o,s){var a;if(!((a=this.currentPick)===null||a===void 0)&&a.realSubchannelEquals(e)){o!==$e.ConnectivityState.READY&&(this.removeCurrentPick(),this.calculateAndReportNewState());return}for(let[i,n]of this.children.entries())if(e.realSubchannelEquals(n.subchannel)){o===$e.ConnectivityState.READY&&this.pickSubchannel(n.subchannel),o===$e.ConnectivityState.TRANSIENT_FAILURE&&(n.hasReportedTransientFailure=!0,s&&(this.lastError=s),this.maybeEnterStickyTransientFailureMode(),i===this.currentSubchannelIndex&&this.startNextSubchannelConnecting(i+1)),n.subchannel.startConnecting();return}}startNextSubchannelConnecting(e){clearTimeout(this.connectionDelayTimeout);for(let[t,o]of this.children.entries())if(t>=e){let s=o.subchannel.getConnectivityState();if(s===$e.ConnectivityState.IDLE||s===$e.ConnectivityState.CONNECTING){this.startConnecting(t);return}}this.maybeEnterStickyTransientFailureMode()}startConnecting(e){var t,o;clearTimeout(this.connectionDelayTimeout),this.currentSubchannelIndex=e,this.children[e].subchannel.getConnectivityState()===$e.ConnectivityState.IDLE&&(cu("Start connecting to subchannel with address "+this.children[e].subchannel.getAddress()),process.nextTick(()=>{var s;(s=this.children[e])===null||s===void 0||s.subchannel.startConnecting()})),this.connectionDelayTimeout=setTimeout(()=>{this.startNextSubchannelConnecting(e+1)},W_e),(o=(t=this.connectionDelayTimeout).unref)===null||o===void 0||o.call(t)}pickSubchannel(e){cu("Pick subchannel with address "+e.getAddress()),this.stickyTransientFailureMode=!1,e.ref(),this.channelControlHelper.addChannelzChild(e.getChannelzRef()),this.removeCurrentPick(),this.resetSubchannelList(),e.addConnectivityStateListener(this.subchannelStateListener),e.addHealthStateWatcher(this.pickedSubchannelHealthListener),this.currentPick=e,clearTimeout(this.connectionDelayTimeout),this.calculateAndReportNewState()}updateState(e,t,o){cu($e.ConnectivityState[this.currentState]+" -> "+$e.ConnectivityState[e]),this.currentState=e,this.channelControlHelper.updateState(e,t,o)}resetSubchannelList(){for(let e of this.children)e.subchannel.removeConnectivityStateListener(this.subchannelStateListener),e.subchannel.unref(),this.channelControlHelper.removeChannelzChild(e.subchannel.getChannelzRef());this.currentSubchannelIndex=0,this.children=[]}connectToAddressList(e,t){cu("connectToAddressList(["+e.map(s=>(0,Vj.subchannelAddressToString)(s))+"])");let o=e.map(s=>({subchannel:this.channelControlHelper.createSubchannel(s,t),hasReportedTransientFailure:!1}));for(let{subchannel:s}of o)if(s.getConnectivityState()===$e.ConnectivityState.READY){this.pickSubchannel(s);return}for(let{subchannel:s}of o)s.ref(),this.channelControlHelper.addChannelzChild(s.getChannelzRef());this.resetSubchannelList(),this.children=o;for(let{subchannel:s}of this.children)s.addConnectivityStateListener(this.subchannelStateListener);for(let s of this.children)s.subchannel.getConnectivityState()===$e.ConnectivityState.TRANSIENT_FAILURE&&(s.hasReportedTransientFailure=!0);this.startNextSubchannelConnecting(0),this.calculateAndReportNewState()}updateAddressList(e,t,o){if(!(t instanceof La))return;this.reportHealthStatus=o[qj],t.getShuffleAddressList()&&(e=Hj(e));let s=[].concat(...e.map(i=>i.addresses));cu("updateAddressList(["+s.map(i=>(0,Vj.subchannelAddressToString)(i))+"])"),s.length===0&&(this.lastError="No addresses resolved");let a=J_e(s);this.latestAddressList=a,this.latestOptions=o,this.connectToAddressList(a,o)}exitIdle(){this.currentState===$e.ConnectivityState.IDLE&&this.latestAddressList&&this.connectToAddressList(this.latestAddressList,this.latestOptions)}resetBackoff(){}destroy(){this.resetSubchannelList(),this.removeCurrentPick()}getTypeName(){return uu}};on.PickFirstLoadBalancer=fu;var Q_e=new La(!1),yA=class{constructor(e,t,o){this.endpoint=e,this.options=o,this.latestState=$e.ConnectivityState.IDLE;let s=(0,gA.createChildChannelControlHelper)(t,{updateState:(a,i,n)=>{this.latestState=a,this.latestPicker=i,t.updateState(a,i,n)}});this.pickFirstBalancer=new fu(s),this.latestPicker=new Ro.QueuePicker(this.pickFirstBalancer)}startConnecting(){this.pickFirstBalancer.updateAddressList([this.endpoint],Q_e,Object.assign(Object.assign({},this.options),{[qj]:!0}))}updateEndpoint(e,t){this.options=t,this.endpoint=e,this.latestState!==$e.ConnectivityState.IDLE&&this.startConnecting()}getConnectivityState(){return this.latestState}getPicker(){return this.latestPicker}getEndpoint(){return this.endpoint}exitIdle(){this.pickFirstBalancer.exitIdle()}destroy(){this.pickFirstBalancer.destroy()}};on.LeafLoadBalancer=yA;function Z_e(){(0,gA.registerLoadBalancerType)(uu,fu,La),(0,gA.registerDefaultLoadBalancerType)(uu)}});var jj=T(hE=>{"use strict";Object.defineProperty(hE,"__esModule",{value:!0});hE.FileWatcherCertificateProvider=void 0;var eEe=V("fs"),tEe=Pe(),rEe=ue(),nEe=V("util"),iEe="certificate_provider";function dE(r){tEe.trace(rEe.LogVerbosity.DEBUG,iEe,r)}var OA=(0,nEe.promisify)(eEe.readFile),AA=class{constructor(e){if(this.config=e,this.refreshTimer=null,this.fileResultPromise=null,this.latestCaUpdate=void 0,this.caListeners=new Set,this.latestIdentityUpdate=void 0,this.identityListeners=new Set,this.lastUpdateTime=null,e.certificateFile===void 0!=(e.privateKeyFile===void 0))throw new Error("certificateFile and privateKeyFile must be set or unset together");if(e.certificateFile===void 0&&e.caCertificateFile===void 0)throw new Error("At least one of certificateFile and caCertificateFile must be set");dE("File watcher constructed with config "+JSON.stringify(e))}updateCertificates(){this.fileResultPromise||(this.fileResultPromise=Promise.allSettled([this.config.certificateFile?OA(this.config.certificateFile):Promise.reject(),this.config.privateKeyFile?OA(this.config.privateKeyFile):Promise.reject(),this.config.caCertificateFile?OA(this.config.caCertificateFile):Promise.reject()]),this.fileResultPromise.then(([e,t,o])=>{if(this.refreshTimer){dE("File watcher read certificates certificate "+e.status+", privateKey "+t.status+", CA certificate "+o.status),this.lastUpdateTime=new Date,this.fileResultPromise=null,e.status==="fulfilled"&&t.status==="fulfilled"?this.latestIdentityUpdate={certificate:e.value,privateKey:t.value}:this.latestIdentityUpdate=null,o.status==="fulfilled"?this.latestCaUpdate={caCertificate:o.value}:this.latestCaUpdate=null;for(let s of this.identityListeners)s(this.latestIdentityUpdate);for(let s of this.caListeners)s(this.latestCaUpdate)}}),dE("File watcher initiated certificate update"))}maybeStartWatchingFiles(){if(!this.refreshTimer){let e=this.lastUpdateTime?new Date().getTime()-this.lastUpdateTime.getTime():1/0;e>this.config.refreshIntervalMs&&this.updateCertificates(),e>this.config.refreshIntervalMs*2&&(this.latestCaUpdate=void 0,this.latestIdentityUpdate=void 0),this.refreshTimer=setInterval(()=>this.updateCertificates(),this.config.refreshIntervalMs),dE("File watcher started watching")}}maybeStopWatchingFiles(){this.caListeners.size===0&&this.identityListeners.size===0&&(this.fileResultPromise=null,this.refreshTimer&&(clearInterval(this.refreshTimer),this.refreshTimer=null))}addCaCertificateListener(e){this.caListeners.add(e),this.maybeStartWatchingFiles(),this.latestCaUpdate!==void 0&&process.nextTick(e,this.latestCaUpdate)}removeCaCertificateListener(e){this.caListeners.delete(e),this.maybeStopWatchingFiles()}addIdentityCertificateListener(e){this.identityListeners.add(e),this.maybeStartWatchingFiles(),this.latestIdentityUpdate!==void 0&&process.nextTick(e,this.latestIdentityUpdate)}removeIdentityCertificateListener(e){this.identityListeners.delete(e),this.maybeStopWatchingFiles()}};hE.FileWatcherCertificateProvider=AA});var NA=T(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});k.SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX=k.createCertificateProviderChannelCredentials=k.FileWatcherCertificateProvider=k.createCertificateProviderServerCredentials=k.createServerCredentialsWithInterceptors=k.BaseSubchannelWrapper=k.registerAdminService=k.FilterStackFactory=k.BaseFilter=k.PickResultType=k.QueuePicker=k.UnavailablePicker=k.ChildLoadBalancerHandler=k.EndpointMap=k.endpointHasAddress=k.endpointToString=k.subchannelAddressToString=k.LeafLoadBalancer=k.isLoadBalancerNameRegistered=k.parseLoadBalancingConfig=k.selectLbConfigFromList=k.registerLoadBalancerType=k.createChildChannelControlHelper=k.BackoffTimeout=k.parseDuration=k.durationToMs=k.splitHostPort=k.uriToString=k.createResolver=k.registerResolver=k.log=k.trace=void 0;var Yj=Pe();Object.defineProperty(k,"trace",{enumerable:!0,get:function(){return Yj.trace}});Object.defineProperty(k,"log",{enumerable:!0,get:function(){return Yj.log}});var Kj=jr();Object.defineProperty(k,"registerResolver",{enumerable:!0,get:function(){return Kj.registerResolver}});Object.defineProperty(k,"createResolver",{enumerable:!0,get:function(){return Kj.createResolver}});var zj=Pt();Object.defineProperty(k,"uriToString",{enumerable:!0,get:function(){return zj.uriToString}});Object.defineProperty(k,"splitHostPort",{enumerable:!0,get:function(){return zj.splitHostPort}});var $j=SA();Object.defineProperty(k,"durationToMs",{enumerable:!0,get:function(){return $j.durationToMs}});Object.defineProperty(k,"parseDuration",{enumerable:!0,get:function(){return $j.parseDuration}});var oEe=Ic();Object.defineProperty(k,"BackoffTimeout",{enumerable:!0,get:function(){return oEe.BackoffTimeout}});var pu=ao();Object.defineProperty(k,"createChildChannelControlHelper",{enumerable:!0,get:function(){return pu.createChildChannelControlHelper}});Object.defineProperty(k,"registerLoadBalancerType",{enumerable:!0,get:function(){return pu.registerLoadBalancerType}});Object.defineProperty(k,"selectLbConfigFromList",{enumerable:!0,get:function(){return pu.selectLbConfigFromList}});Object.defineProperty(k,"parseLoadBalancingConfig",{enumerable:!0,get:function(){return pu.parseLoadBalancingConfig}});Object.defineProperty(k,"isLoadBalancerNameRegistered",{enumerable:!0,get:function(){return pu.isLoadBalancerNameRegistered}});var sEe=pE();Object.defineProperty(k,"LeafLoadBalancer",{enumerable:!0,get:function(){return sEe.LeafLoadBalancer}});var _E=rr();Object.defineProperty(k,"subchannelAddressToString",{enumerable:!0,get:function(){return _E.subchannelAddressToString}});Object.defineProperty(k,"endpointToString",{enumerable:!0,get:function(){return _E.endpointToString}});Object.defineProperty(k,"endpointHasAddress",{enumerable:!0,get:function(){return _E.endpointHasAddress}});Object.defineProperty(k,"EndpointMap",{enumerable:!0,get:function(){return _E.EndpointMap}});var aEe=Jh();Object.defineProperty(k,"ChildLoadBalancerHandler",{enumerable:!0,get:function(){return aEe.ChildLoadBalancerHandler}});var RA=ri();Object.defineProperty(k,"UnavailablePicker",{enumerable:!0,get:function(){return RA.UnavailablePicker}});Object.defineProperty(k,"QueuePicker",{enumerable:!0,get:function(){return RA.QueuePicker}});Object.defineProperty(k,"PickResultType",{enumerable:!0,get:function(){return RA.PickResultType}});var lEe=NO();Object.defineProperty(k,"BaseFilter",{enumerable:!0,get:function(){return lEe.BaseFilter}});var cEe=OO();Object.defineProperty(k,"FilterStackFactory",{enumerable:!0,get:function(){return cEe.FilterStackFactory}});var uEe=t_();Object.defineProperty(k,"registerAdminService",{enumerable:!0,get:function(){return uEe.registerAdminService}});var fEe=rE();Object.defineProperty(k,"BaseSubchannelWrapper",{enumerable:!0,get:function(){return fEe.BaseSubchannelWrapper}});var Xj=aE();Object.defineProperty(k,"createServerCredentialsWithInterceptors",{enumerable:!0,get:function(){return Xj.createServerCredentialsWithInterceptors}});Object.defineProperty(k,"createCertificateProviderServerCredentials",{enumerable:!0,get:function(){return Xj.createCertificateProviderServerCredentials}});var pEe=jj();Object.defineProperty(k,"FileWatcherCertificateProvider",{enumerable:!0,get:function(){return pEe.FileWatcherCertificateProvider}});var dEe=Nc();Object.defineProperty(k,"createCertificateProviderChannelCredentials",{enumerable:!0,get:function(){return dEe.createCertificateProviderChannelCredentials}});var hEe=zO();Object.defineProperty(k,"SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX",{enumerable:!0,get:function(){return hEe.SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX}})});var Wj=T(PA=>{"use strict";Object.defineProperty(PA,"__esModule",{value:!0});PA.setup=EEe;var _Ee=jr(),CA=class{constructor(e,t,o){this.listener=t,this.hasReturnedResult=!1,this.endpoints=[];let s;e.authority===""?s="/"+e.path:s=e.path,this.endpoints=[{addresses:[{path:s}]}]}updateResolution(){this.hasReturnedResult||(this.hasReturnedResult=!0,process.nextTick(this.listener.onSuccessfulResolution,this.endpoints,null,null,null,{}))}destroy(){this.hasReturnedResult=!1}static getDefaultAuthority(e){return"localhost"}};function EEe(){(0,_Ee.registerResolver)("unix",CA)}});var t4=T(xA=>{"use strict";Object.defineProperty(xA,"__esModule",{value:!0});xA.setup=gEe;var Jj=V("net"),EE=ue(),IA=ht(),Qj=jr(),Zj=Pt(),mEe=Pe(),TEe="ip_resolver";function e4(r){mEe.trace(EE.LogVerbosity.DEBUG,TEe,r)}var LA="ipv4",bA="ipv6",SEe=443,mE=class{constructor(e,t,o){var s;this.listener=t,this.endpoints=[],this.error=null,this.hasReturnedResult=!1,e4("Resolver constructed for target "+(0,Zj.uriToString)(e));let a=[];if(!(e.scheme===LA||e.scheme===bA)){this.error={code:EE.Status.UNAVAILABLE,details:`Unrecognized scheme ${e.scheme} in IP resolver`,metadata:new IA.Metadata};return}let i=e.path.split(",");for(let n of i){let l=(0,Zj.splitHostPort)(n);if(l===null){this.error={code:EE.Status.UNAVAILABLE,details:`Failed to parse ${e.scheme} address ${n}`,metadata:new IA.Metadata};return}if(e.scheme===LA&&!(0,Jj.isIPv4)(l.host)||e.scheme===bA&&!(0,Jj.isIPv6)(l.host)){this.error={code:EE.Status.UNAVAILABLE,details:`Failed to parse ${e.scheme} address ${n}`,metadata:new IA.Metadata};return}a.push({host:l.host,port:(s=l.port)!==null&&s!==void 0?s:SEe})}this.endpoints=a.map(n=>({addresses:[n]})),e4("Parsed "+e.scheme+" address list "+a)}updateResolution(){this.hasReturnedResult||(this.hasReturnedResult=!0,process.nextTick(()=>{this.error?this.listener.onError(this.error):this.listener.onSuccessfulResolution(this.endpoints,null,null,null,{})}))}destroy(){this.hasReturnedResult=!1}static getDefaultAuthority(e){return e.path.split(",")[0]}};function gEe(){(0,Qj.registerResolver)(LA,mE),(0,Qj.registerResolver)(bA,mE)}});var o4=T(du=>{"use strict";Object.defineProperty(du,"__esModule",{value:!0});du.RoundRobinLoadBalancer=void 0;du.setup=REe;var i4=ao(),yt=tr(),MA=ri(),vEe=Pe(),yEe=ue(),r4=rr(),OEe=pE(),AEe="round_robin";function n4(r){vEe.trace(yEe.LogVerbosity.DEBUG,AEe,r)}var TE="round_robin",wA=class r{getLoadBalancerName(){return TE}constructor(){}toJsonObject(){return{[TE]:{}}}static createFromJson(e){return new r}},DA=class{constructor(e,t=0){this.children=e,this.nextIndex=t}pick(e){let t=this.children[this.nextIndex].picker;return this.nextIndex=(this.nextIndex+1)%this.children.length,t.pick(e)}peekNextEndpoint(){return this.children[this.nextIndex].endpoint}},SE=class{constructor(e){this.channelControlHelper=e,this.children=[],this.currentState=yt.ConnectivityState.IDLE,this.currentReadyPicker=null,this.updatesPaused=!1,this.lastError=null,this.childChannelControlHelper=(0,i4.createChildChannelControlHelper)(e,{updateState:(t,o,s)=>{this.currentState===yt.ConnectivityState.READY&&t!==yt.ConnectivityState.READY&&this.channelControlHelper.requestReresolution(),s&&(this.lastError=s),this.calculateAndUpdateState()}})}countChildrenWithState(e){return this.children.filter(t=>t.getConnectivityState()===e).length}calculateAndUpdateState(){if(!this.updatesPaused){if(this.countChildrenWithState(yt.ConnectivityState.READY)>0){let e=this.children.filter(o=>o.getConnectivityState()===yt.ConnectivityState.READY),t=0;if(this.currentReadyPicker!==null){let o=this.currentReadyPicker.peekNextEndpoint();t=e.findIndex(s=>(0,r4.endpointEqual)(s.getEndpoint(),o)),t<0&&(t=0)}this.updateState(yt.ConnectivityState.READY,new DA(e.map(o=>({endpoint:o.getEndpoint(),picker:o.getPicker()})),t),null)}else if(this.countChildrenWithState(yt.ConnectivityState.CONNECTING)>0)this.updateState(yt.ConnectivityState.CONNECTING,new MA.QueuePicker(this),null);else if(this.countChildrenWithState(yt.ConnectivityState.TRANSIENT_FAILURE)>0){let e=`round_robin: No connection established. Last error: ${this.lastError}`;this.updateState(yt.ConnectivityState.TRANSIENT_FAILURE,new MA.UnavailablePicker({details:e}),e)}else this.updateState(yt.ConnectivityState.IDLE,new MA.QueuePicker(this),null);for(let e of this.children)e.getConnectivityState()===yt.ConnectivityState.IDLE&&e.exitIdle()}}updateState(e,t,o){n4(yt.ConnectivityState[this.currentState]+" -> "+yt.ConnectivityState[e]),e===yt.ConnectivityState.READY?this.currentReadyPicker=t:this.currentReadyPicker=null,this.currentState=e,this.channelControlHelper.updateState(e,t,o)}resetSubchannelList(){for(let e of this.children)e.destroy()}updateAddressList(e,t,o){this.resetSubchannelList(),n4("Connect to endpoint list "+e.map(r4.endpointToString)),this.updatesPaused=!0,this.children=e.map(s=>new OEe.LeafLoadBalancer(s,this.childChannelControlHelper,o));for(let s of this.children)s.startConnecting();this.updatesPaused=!1,this.calculateAndUpdateState()}exitIdle(){}resetBackoff(){}destroy(){this.resetSubchannelList()}getTypeName(){return TE}};du.RoundRobinLoadBalancer=SE;function REe(){(0,i4.registerLoadBalancerType)(TE,SE,wA)}});var l4=T(Co=>{"use strict";var UA;Object.defineProperty(Co,"__esModule",{value:!0});Co.OutlierDetectionLoadBalancer=Co.OutlierDetectionLoadBalancingConfig=void 0;Co.setup=UEe;var NEe=tr(),s4=ue(),No=SA(),a4=NA(),CEe=ao(),PEe=Jh(),IEe=ri(),kA=rr(),LEe=rE(),bEe=Pe(),xEe="outlier_detection";function it(r){bEe.trace(s4.LogVerbosity.DEBUG,xEe,r)}var qA="outlier_detection",MEe=((UA=process.env.GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION)!==null&&UA!==void 0?UA:"true")==="true",wEe={stdev_factor:1900,enforcement_percentage:100,minimum_hosts:5,request_volume:100},DEe={threshold:85,enforcement_percentage:100,minimum_hosts:5,request_volume:50};function ba(r,e,t,o){if(e in r&&r[e]!==void 0&&typeof r[e]!==t){let s=o?`${o}.${e}`:e;throw new Error(`outlier detection config ${s} parse error: expected ${t}, got ${typeof r[e]}`)}}function BA(r,e,t){let o=t?`${t}.${e}`:e;if(e in r&&r[e]!==void 0){if(!(0,No.isDuration)(r[e]))throw new Error(`outlier detection config ${o} parse error: expected Duration, got ${typeof r[e]}`);if(!(r[e].seconds>=0&&r[e].seconds<=315576e6&&r[e].nanos>=0&&r[e].nanos<=999999999))throw new Error(`outlier detection config ${o} parse error: values out of range for non-negative Duaration`)}}function gE(r,e,t){let o=t?`${t}.${e}`:e;if(ba(r,e,"number",t),e in r&&r[e]!==void 0&&!(r[e]>=0&&r[e]<=100))throw new Error(`outlier detection config ${o} parse error: value out of range for percentage (0-100)`)}var hu=class r{constructor(e,t,o,s,a,i,n){if(this.childPolicy=n,n.getLoadBalancerName()==="pick_first")throw new Error("outlier_detection LB policy cannot have a pick_first child policy");this.intervalMs=e??1e4,this.baseEjectionTimeMs=t??3e4,this.maxEjectionTimeMs=o??3e5,this.maxEjectionPercent=s??10,this.successRateEjection=a?Object.assign(Object.assign({},wEe),a):null,this.failurePercentageEjection=i?Object.assign(Object.assign({},DEe),i):null}getLoadBalancerName(){return qA}toJsonObject(){var e,t;return{outlier_detection:{interval:(0,No.msToDuration)(this.intervalMs),base_ejection_time:(0,No.msToDuration)(this.baseEjectionTimeMs),max_ejection_time:(0,No.msToDuration)(this.maxEjectionTimeMs),max_ejection_percent:this.maxEjectionPercent,success_rate_ejection:(e=this.successRateEjection)!==null&&e!==void 0?e:void 0,failure_percentage_ejection:(t=this.failurePercentageEjection)!==null&&t!==void 0?t:void 0,child_policy:[this.childPolicy.toJsonObject()]}}}getIntervalMs(){return this.intervalMs}getBaseEjectionTimeMs(){return this.baseEjectionTimeMs}getMaxEjectionTimeMs(){return this.maxEjectionTimeMs}getMaxEjectionPercent(){return this.maxEjectionPercent}getSuccessRateEjectionConfig(){return this.successRateEjection}getFailurePercentageEjectionConfig(){return this.failurePercentageEjection}getChildPolicy(){return this.childPolicy}static createFromJson(e){var t;if(BA(e,"interval"),BA(e,"base_ejection_time"),BA(e,"max_ejection_time"),gE(e,"max_ejection_percent"),"success_rate_ejection"in e&&e.success_rate_ejection!==void 0){if(typeof e.success_rate_ejection!="object")throw new Error("outlier detection config success_rate_ejection must be an object");ba(e.success_rate_ejection,"stdev_factor","number","success_rate_ejection"),gE(e.success_rate_ejection,"enforcement_percentage","success_rate_ejection"),ba(e.success_rate_ejection,"minimum_hosts","number","success_rate_ejection"),ba(e.success_rate_ejection,"request_volume","number","success_rate_ejection")}if("failure_percentage_ejection"in e&&e.failure_percentage_ejection!==void 0){if(typeof e.failure_percentage_ejection!="object")throw new Error("outlier detection config failure_percentage_ejection must be an object");gE(e.failure_percentage_ejection,"threshold","failure_percentage_ejection"),gE(e.failure_percentage_ejection,"enforcement_percentage","failure_percentage_ejection"),ba(e.failure_percentage_ejection,"minimum_hosts","number","failure_percentage_ejection"),ba(e.failure_percentage_ejection,"request_volume","number","failure_percentage_ejection")}if(!("child_policy"in e)||!Array.isArray(e.child_policy))throw new Error("outlier detection config child_policy must be an array");let o=(0,CEe.selectLbConfigFromList)(e.child_policy);if(!o)throw new Error("outlier detection config child_policy: no valid recognized policy found");return new r(e.interval?(0,No.durationToMs)(e.interval):null,e.base_ejection_time?(0,No.durationToMs)(e.base_ejection_time):null,e.max_ejection_time?(0,No.durationToMs)(e.max_ejection_time):null,(t=e.max_ejection_percent)!==null&&t!==void 0?t:null,e.success_rate_ejection,e.failure_percentage_ejection,o)}};Co.OutlierDetectionLoadBalancingConfig=hu;var FA=class extends LEe.BaseSubchannelWrapper{constructor(e,t){super(e),this.mapEntry=t,this.refCount=0}ref(){this.child.ref(),this.refCount+=1}unref(){if(this.child.unref(),this.refCount-=1,this.refCount<=0&&this.mapEntry){let e=this.mapEntry.subchannelWrappers.indexOf(this);e>=0&&this.mapEntry.subchannelWrappers.splice(e,1)}}eject(){this.setHealthy(!1)}uneject(){this.setHealthy(!0)}getMapEntry(){return this.mapEntry}getWrappedSubchannel(){return this.child}};function VA(){return{success:0,failure:0}}var GA=class{constructor(){this.activeBucket=VA(),this.inactiveBucket=VA()}addSuccess(){this.activeBucket.success+=1}addFailure(){this.activeBucket.failure+=1}switchBuckets(){this.inactiveBucket=this.activeBucket,this.activeBucket=VA()}getLastSuccesses(){return this.inactiveBucket.success}getLastFailures(){return this.inactiveBucket.failure}},HA=class{constructor(e,t){this.wrappedPicker=e,this.countCalls=t}pick(e){let t=this.wrappedPicker.pick(e);if(t.pickResultType===IEe.PickResultType.COMPLETE){let o=t.subchannel,s=o.getMapEntry();if(s){let a=t.onCallEnded;return this.countCalls&&(a=i=>{var n;i===s4.Status.OK?s.counter.addSuccess():s.counter.addFailure(),(n=t.onCallEnded)===null||n===void 0||n.call(t,i)}),Object.assign(Object.assign({},t),{subchannel:o.getWrappedSubchannel(),onCallEnded:a})}else return Object.assign(Object.assign({},t),{subchannel:o.getWrappedSubchannel()})}else return t}},vE=class{constructor(e){this.entryMap=new kA.EndpointMap,this.latestConfig=null,this.timerStartTime=null,this.childBalancer=new PEe.ChildLoadBalancerHandler((0,a4.createChildChannelControlHelper)(e,{createSubchannel:(t,o)=>{let s=e.createSubchannel(t,o),a=this.entryMap.getForSubchannelAddress(t),i=new FA(s,a);return(a==null?void 0:a.currentEjectionTimestamp)!==null&&i.eject(),a==null||a.subchannelWrappers.push(i),i},updateState:(t,o,s)=>{t===NEe.ConnectivityState.READY?e.updateState(t,new HA(o,this.isCountingEnabled()),s):e.updateState(t,o,s)}})),this.ejectionTimer=setInterval(()=>{},0),clearInterval(this.ejectionTimer)}isCountingEnabled(){return this.latestConfig!==null&&(this.latestConfig.getSuccessRateEjectionConfig()!==null||this.latestConfig.getFailurePercentageEjectionConfig()!==null)}getCurrentEjectionPercent(){let e=0;for(let t of this.entryMap.values())t.currentEjectionTimestamp!==null&&(e+=1);return e*100/this.entryMap.size}runSuccessRateCheck(e){if(!this.latestConfig)return;let t=this.latestConfig.getSuccessRateEjectionConfig();if(!t)return;it("Running success rate check");let o=t.request_volume,s=0,a=[];for(let[f,_]of this.entryMap.entries()){let m=_.counter.getLastSuccesses(),O=_.counter.getLastFailures();it("Stats for "+(0,kA.endpointToString)(f)+": successes="+m+" failures="+O+" targetRequestVolume="+o),m+O>=o&&(s+=1,a.push(m/(m+O)))}if(it("Found "+s+" success rate candidates; currentEjectionPercent="+this.getCurrentEjectionPercent()+" successRates=["+a+"]"),sf+_)/a.length,n=0;for(let f of a){let _=f-i;n+=_*_}let l=n/a.length,c=Math.sqrt(l),u=i-c*(t.stdev_factor/1e3);it("stdev="+c+" ejectionThreshold="+u);for(let[f,_]of this.entryMap.entries()){if(this.getCurrentEjectionPercent()>=this.latestConfig.getMaxEjectionPercent())break;let m=_.counter.getLastSuccesses(),O=_.counter.getLastFailures();if(m+Othis.runChecks(),e),(o=(t=this.ejectionTimer).unref)===null||o===void 0||o.call(t)}runChecks(){let e=new Date;if(it("Ejection timer running"),this.switchAllBuckets(),!!this.latestConfig){this.timerStartTime=e,this.startTimer(this.latestConfig.getIntervalMs()),this.runSuccessRateCheck(e),this.runFailurePercentageCheck(e);for(let[t,o]of this.entryMap.entries())if(o.currentEjectionTimestamp===null)o.ejectionTimeMultiplier>0&&(o.ejectionTimeMultiplier-=1);else{let s=this.latestConfig.getBaseEjectionTimeMs(),a=this.latestConfig.getMaxEjectionTimeMs(),i=new Date(o.currentEjectionTimestamp.getTime());i.setMilliseconds(i.getMilliseconds()+Math.min(s*o.ejectionTimeMultiplier,Math.max(s,a))),i{"use strict";Object.defineProperty(w,"__esModule",{value:!0});w.experimental=w.ServerInterceptingCall=w.ResponderBuilder=w.ServerListenerBuilder=w.addAdminServicesToServer=w.getChannelzHandlers=w.getChannelzServiceDefinition=w.InterceptorConfigurationError=w.InterceptingCall=w.RequesterBuilder=w.ListenerBuilder=w.StatusBuilder=w.getClientChannel=w.ServerCredentials=w.Server=w.setLogVerbosity=w.setLogger=w.load=w.loadObject=w.CallCredentials=w.ChannelCredentials=w.waitForClientReady=w.closeClient=w.Channel=w.makeGenericClientConstructor=w.makeClientConstructor=w.loadPackageDefinition=w.Client=w.compressionAlgorithms=w.propagate=w.connectivityState=w.status=w.logVerbosity=w.Metadata=w.credentials=void 0;var yE=Fh();Object.defineProperty(w,"CallCredentials",{enumerable:!0,get:function(){return yE.CallCredentials}});var kEe=iy();Object.defineProperty(w,"Channel",{enumerable:!0,get:function(){return kEe.ChannelImplementation}});var BEe=AO();Object.defineProperty(w,"compressionAlgorithms",{enumerable:!0,get:function(){return BEe.CompressionAlgorithms}});var VEe=tr();Object.defineProperty(w,"connectivityState",{enumerable:!0,get:function(){return VEe.ConnectivityState}});var OE=Nc();Object.defineProperty(w,"ChannelCredentials",{enumerable:!0,get:function(){return OE.ChannelCredentials}});var c4=ny();Object.defineProperty(w,"Client",{enumerable:!0,get:function(){return c4.Client}});var jA=ue();Object.defineProperty(w,"logVerbosity",{enumerable:!0,get:function(){return jA.LogVerbosity}});Object.defineProperty(w,"status",{enumerable:!0,get:function(){return jA.Status}});Object.defineProperty(w,"propagate",{enumerable:!0,get:function(){return jA.Propagate}});var u4=Pe(),YA=sy();Object.defineProperty(w,"loadPackageDefinition",{enumerable:!0,get:function(){return YA.loadPackageDefinition}});Object.defineProperty(w,"makeClientConstructor",{enumerable:!0,get:function(){return YA.makeClientConstructor}});Object.defineProperty(w,"makeGenericClientConstructor",{enumerable:!0,get:function(){return YA.makeClientConstructor}});var FEe=ht();Object.defineProperty(w,"Metadata",{enumerable:!0,get:function(){return FEe.Metadata}});var GEe=kj();Object.defineProperty(w,"Server",{enumerable:!0,get:function(){return GEe.Server}});var HEe=aE();Object.defineProperty(w,"ServerCredentials",{enumerable:!0,get:function(){return HEe.ServerCredentials}});var qEe=Bj();Object.defineProperty(w,"StatusBuilder",{enumerable:!0,get:function(){return qEe.StatusBuilder}});w.credentials={combineChannelCredentials:(r,...e)=>e.reduce((t,o)=>t.compose(o),r),combineCallCredentials:(r,...e)=>e.reduce((t,o)=>t.compose(o),r),createInsecure:OE.ChannelCredentials.createInsecure,createSsl:OE.ChannelCredentials.createSsl,createFromSecureContext:OE.ChannelCredentials.createFromSecureContext,createFromMetadataGenerator:yE.CallCredentials.createFromMetadataGenerator,createFromGoogleCredential:yE.CallCredentials.createFromGoogleCredential,createEmpty:yE.CallCredentials.createEmpty};var jEe=r=>r.close();w.closeClient=jEe;var YEe=(r,e,t)=>r.waitForReady(e,t);w.waitForClientReady=YEe;var KEe=(r,e)=>{throw new Error("Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead")};w.loadObject=KEe;var zEe=(r,e,t)=>{throw new Error("Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead")};w.load=zEe;var $Ee=r=>{u4.setLogger(r)};w.setLogger=$Ee;var XEe=r=>{u4.setLoggerVerbosity(r)};w.setLogVerbosity=XEe;var WEe=r=>c4.Client.prototype.getChannel.call(r);w.getClientChannel=WEe;var AE=ey();Object.defineProperty(w,"ListenerBuilder",{enumerable:!0,get:function(){return AE.ListenerBuilder}});Object.defineProperty(w,"RequesterBuilder",{enumerable:!0,get:function(){return AE.RequesterBuilder}});Object.defineProperty(w,"InterceptingCall",{enumerable:!0,get:function(){return AE.InterceptingCall}});Object.defineProperty(w,"InterceptorConfigurationError",{enumerable:!0,get:function(){return AE.InterceptorConfigurationError}});var f4=Eo();Object.defineProperty(w,"getChannelzServiceDefinition",{enumerable:!0,get:function(){return f4.getChannelzServiceDefinition}});Object.defineProperty(w,"getChannelzHandlers",{enumerable:!0,get:function(){return f4.getChannelzHandlers}});var JEe=t_();Object.defineProperty(w,"addAdminServicesToServer",{enumerable:!0,get:function(){return JEe.addAdminServicesToServer}});var KA=hA();Object.defineProperty(w,"ServerListenerBuilder",{enumerable:!0,get:function(){return KA.ServerListenerBuilder}});Object.defineProperty(w,"ResponderBuilder",{enumerable:!0,get:function(){return KA.ResponderBuilder}});Object.defineProperty(w,"ServerInterceptingCall",{enumerable:!0,get:function(){return KA.ServerInterceptingCall}});var QEe=NA();w.experimental=QEe;var ZEe=cO(),eme=Wj(),tme=t4(),rme=pE(),nme=o4(),ime=l4(),ome=Eo();ZEe.setup(),eme.setup(),tme.setup(),rme.setup(),nme.setup(),ime.setup(),ome.setup()});var p4=T(RE=>{"use strict";Object.defineProperty(RE,"__esModule",{value:!0});RE.createServiceClientConstructor=void 0;var sme=_u();function ame(r,e){let t={export:{path:r,requestStream:!1,responseStream:!1,requestSerialize:o=>o,requestDeserialize:o=>o,responseSerialize:o=>o,responseDeserialize:o=>o}};return sme.makeGenericClientConstructor(t,e)}RE.createServiceClientConstructor=ame});var Eu=T(ar=>{"use strict";Object.defineProperty(ar,"__esModule",{value:!0});ar.createOtlpGrpcExporterTransport=ar.GrpcExporterTransport=ar.createEmptyMetadata=ar.createSslCredentials=ar.createInsecureCredentials=void 0;var lme=0,cme=2;function ume(r){return r==="gzip"?cme:lme}function fme(){let{credentials:r}=_u();return r.createInsecure()}ar.createInsecureCredentials=fme;function pme(r,e,t){let{credentials:o}=_u();return o.createSsl(r,e,t)}ar.createSslCredentials=pme;function dme(){let{Metadata:r}=_u();return new r}ar.createEmptyMetadata=dme;var NE=class{constructor(e){this._parameters=e}shutdown(){var e;(e=this._client)===null||e===void 0||e.close()}send(e,t){let o=Buffer.from(e);if(this._client==null){let{createServiceClientConstructor:s}=p4();try{this._metadata=this._parameters.metadata()}catch(i){return Promise.resolve({status:"failure",error:i})}let a=s(this._parameters.grpcPath,this._parameters.grpcName);try{this._client=new a(this._parameters.address,this._parameters.credentials(),{"grpc.default_compression_algorithm":ume(this._parameters.compression)})}catch(i){return Promise.resolve({status:"failure",error:i})}}return new Promise(s=>{let a=Date.now()+t;if(this._metadata==null)return s({error:new Error("metadata was null"),status:"failure"});this._client.export(o,this._metadata,{deadline:a},(i,n)=>{s(i?{status:"failure",error:i}:{data:n,status:"success"})})})}};ar.GrpcExporterTransport=NE;function hme(r){return new NE(r)}ar.createOtlpGrpcExporterTransport=hme});var d4=T(CE=>{"use strict";Object.defineProperty(CE,"__esModule",{value:!0});CE.VERSION=void 0;CE.VERSION="0.56.0"});var T4=T(_i=>{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.getOtlpGrpcDefaultConfiguration=_i.mergeOtlpGrpcConfigurationWithDefaults=_i.validateAndNormalizeUrl=void 0;var E4=(_n(),ee(mc)),mu=Eu(),_me=d4(),Eme=V("url"),h4=(P(),ee(ot));function m4(r){var e;r=r.trim(),r.match(/^([\w]{1,8}):\/\//)||(r=`https://${r}`);let o=new Eme.URL(r);return o.protocol==="unix:"?r:(o.pathname&&o.pathname!=="/"&&h4.diag.warn("URL path should not be set when using grpc, the path part of the URL will be ignored."),o.protocol!==""&&!(!((e=o.protocol)===null||e===void 0)&&e.match(/^(http)s?:$/))&&h4.diag.warn("URL protocol should be http(s)://. Using http://."),o.host)}_i.validateAndNormalizeUrl=m4;function _4(r,e){for(let[t,o]of Object.entries(e.getMap()))r.get(t).length<1&&r.set(t,o)}function mme(r,e,t){var o,s,a,i,n;let l=(s=(o=r.url)!==null&&o!==void 0?o:e.url)!==null&&s!==void 0?s:t.url;return Object.assign(Object.assign({},(0,E4.mergeOtlpSharedConfigurationWithDefaults)(r,e,t)),{metadata:()=>{var c,u,f,_;let m=t.metadata();return _4(m,(u=(c=r.metadata)===null||c===void 0?void 0:c.call(r).clone())!==null&&u!==void 0?u:(0,mu.createEmptyMetadata)()),_4(m,(_=(f=e.metadata)===null||f===void 0?void 0:f.call(e))!==null&&_!==void 0?_:(0,mu.createEmptyMetadata)()),m},url:m4(l),credentials:(n=(a=r.credentials)!==null&&a!==void 0?a:(i=e.credentials)===null||i===void 0?void 0:i.call(e,l))!==null&&n!==void 0?n:t.credentials(l)})}_i.mergeOtlpGrpcConfigurationWithDefaults=mme;function Tme(){return Object.assign(Object.assign({},(0,E4.getSharedConfigurationDefaults)()),{metadata:()=>{let r=(0,mu.createEmptyMetadata)();return r.set("User-Agent",`OTel-OTLP-Exporter-JavaScript/${_me.VERSION}`),r},url:"http://localhost:4317",credentials:r=>r.startsWith("http://")?()=>(0,mu.createInsecureCredentials)():()=>(0,mu.createSslCredentials)()})}_i.getOtlpGrpcDefaultConfiguration=Tme});function PE(r){return r.setValue(zA,!0)}function S4(r){return r.deleteValue(zA)}function xa(r){return r.getValue(zA)===!0}var zA,Tu=p(()=>{P();zA=De("OpenTelemetry SDK Context Key SUPPRESS_TRACING")});var g4,IE,Ma,LE,$A=p(()=>{g4="=",IE=";",Ma=",",LE="baggage"});function bE(r){return r.reduce((e,t)=>{let o=`${e}${e!==""?Ma:""}${t}`;return o.length>8192?e:o},"")}function xE(r){return r.getAllEntries().map(([e,t])=>{let o=`${encodeURIComponent(e)}=${encodeURIComponent(t.value)}`;return t.metadata!==void 0&&(o+=IE+t.metadata.toString()),o})}function Su(r){let e=r.split(IE);if(e.length<=0)return;let t=e.shift();if(!t)return;let o=t.indexOf(g4);if(o<=0)return;let s=decodeURIComponent(t.substring(0,o).trim()),a=decodeURIComponent(t.substring(o+1).trim()),i;return e.length>0&&(i=Lr(e.join(IE))),{key:s,value:a,metadata:i}}function v4(r){return typeof r!="string"||r.length===0?{}:r.split(Ma).map(e=>Su(e)).filter(e=>e!==void 0&&e.value.length>0).reduce((e,t)=>(e[t.key]=t.value,e),{})}var XA=p(()=>{P();$A()});var ME,y4=p(()=>{P();Tu();$A();XA();ME=class{inject(e,t,o){let s=Ue.getBaggage(e);if(!s||xa(e))return;let a=xE(s).filter(n=>n.length<=4096).slice(0,180),i=bE(a);i.length>0&&o.set(t,LE,i)}extract(e,t,o){let s=o.get(t,LE),a=Array.isArray(s)?s.join(Ma):s;if(!a)return e;let i={};return a.length===0||(a.split(Ma).forEach(l=>{let c=Su(l);if(c){let u={value:c.value};c.metadata&&(u.metadata=c.metadata),i[c.key]=u}}),Object.entries(i).length===0)?e:Ue.setBaggage(e,Ue.createBaggage(i))}fields(){return[LE]}}});var wE,O4=p(()=>{wE=class{constructor(e,t){this._monotonicClock=t,this._epochMillis=e.now(),this._performanceMillis=t.now()}now(){let e=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+e}}});function A4(r){let e={};if(typeof r!="object"||r==null)return e;for(let[t,o]of Object.entries(r)){if(!WA(t)){S.warn(`Invalid attribute key: ${t}`);continue}if(!JA(o)){S.warn(`Invalid attribute value set for key: ${t}`);continue}Array.isArray(o)?e[t]=o.slice():e[t]=o}return e}function WA(r){return typeof r=="string"&&r.length>0}function JA(r){return r==null?!0:Array.isArray(r)?yme(r):R4(r)}function yme(r){let e;for(let t of r)if(t!=null){if(!e){if(R4(t)){e=typeof t;continue}return!1}if(typeof t!==e)return!1}return!0}function R4(r){switch(typeof r){case"number":case"boolean":case"string":return!0}return!1}var N4=p(()=>{P()});function DE(){return r=>{S.error(Ome(r))}}function Ome(r){return typeof r=="string"?r:JSON.stringify(Ame(r))}function Ame(r){let e={},t=r;for(;t!==null;)Object.getOwnPropertyNames(t).forEach(o=>{if(e[o])return;let s=t[o];s&&(e[o]=String(s))}),t=Object.getPrototypeOf(t);return e}var QA=p(()=>{P()});function P4(r){C4=r}function UE(r){try{C4(r)}catch{}}var C4,ZA=p(()=>{QA();C4=DE()});var wa,eR=p(()=>{(function(r){r.AlwaysOff="always_off",r.AlwaysOn="always_on",r.ParentBasedAlwaysOff="parentbased_always_off",r.ParentBasedAlwaysOn="parentbased_always_on",r.ParentBasedTraceIdRatio="parentbased_traceidratio",r.TraceIdRatio="traceidratio"})(wa||(wa={}))});function Cme(r){return Nme.indexOf(r)>-1}function Ime(r){return Pme.indexOf(r)>-1}function bme(r){return Lme.indexOf(r)>-1}function xme(r,e,t){if(typeof t[r]>"u")return;let o=String(t[r]);e[r]=o.toLowerCase()==="true"}function Mme(r,e,t,o=-1/0,s=1/0){if(typeof t[r]<"u"){let a=Number(t[r]);isNaN(a)||(as?e[r]=s:e[r]=a)}}function wme(r,e,t,o=Rme){let s=t[r];typeof s=="string"&&(e[r]=s.split(o).map(a=>a.trim()))}function Ume(r,e,t){let o=t[r];if(typeof o=="string"){let s=Dme[o.toUpperCase()];s!=null&&(e[r]=s)}}function Ou(r){let e={};for(let t in yu){let o=t;switch(o){case"OTEL_LOG_LEVEL":Ume(o,e,r);break;default:if(Cme(o))xme(o,e,r);else if(Ime(o))Mme(o,e,r);else if(bme(o))wme(o,e,r);else{let s=r[o];typeof s<"u"&&s!==null&&(e[o]=String(s))}}}return e}var Rme,Nme,Pme,Lme,gu,vu,tR,rR,yu,Dme,nR=p(()=>{P();eR();Rme=",",Nme=["OTEL_SDK_DISABLED"];Pme=["OTEL_BSP_EXPORT_TIMEOUT","OTEL_BSP_MAX_EXPORT_BATCH_SIZE","OTEL_BSP_MAX_QUEUE_SIZE","OTEL_BSP_SCHEDULE_DELAY","OTEL_BLRP_EXPORT_TIMEOUT","OTEL_BLRP_MAX_EXPORT_BATCH_SIZE","OTEL_BLRP_MAX_QUEUE_SIZE","OTEL_BLRP_SCHEDULE_DELAY","OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_SPAN_LINK_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_EXPORTER_OTLP_TIMEOUT","OTEL_EXPORTER_OTLP_TRACES_TIMEOUT","OTEL_EXPORTER_OTLP_METRICS_TIMEOUT","OTEL_EXPORTER_OTLP_LOGS_TIMEOUT","OTEL_EXPORTER_JAEGER_AGENT_PORT"];Lme=["OTEL_NO_PATCH_MODULES","OTEL_PROPAGATORS","OTEL_SEMCONV_STABILITY_OPT_IN"];gu=1/0,vu=128,tR=128,rR=128,yu={OTEL_SDK_DISABLED:!1,CONTAINER_NAME:"",ECS_CONTAINER_METADATA_URI_V4:"",ECS_CONTAINER_METADATA_URI:"",HOSTNAME:"",KUBERNETES_SERVICE_HOST:"",NAMESPACE:"",OTEL_BSP_EXPORT_TIMEOUT:3e4,OTEL_BSP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BSP_MAX_QUEUE_SIZE:2048,OTEL_BSP_SCHEDULE_DELAY:5e3,OTEL_BLRP_EXPORT_TIMEOUT:3e4,OTEL_BLRP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BLRP_MAX_QUEUE_SIZE:2048,OTEL_BLRP_SCHEDULE_DELAY:5e3,OTEL_EXPORTER_JAEGER_AGENT_HOST:"",OTEL_EXPORTER_JAEGER_AGENT_PORT:6832,OTEL_EXPORTER_JAEGER_ENDPOINT:"",OTEL_EXPORTER_JAEGER_PASSWORD:"",OTEL_EXPORTER_JAEGER_USER:"",OTEL_EXPORTER_OTLP_ENDPOINT:"",OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:"",OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:"",OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:"",OTEL_EXPORTER_OTLP_HEADERS:"",OTEL_EXPORTER_OTLP_TRACES_HEADERS:"",OTEL_EXPORTER_OTLP_METRICS_HEADERS:"",OTEL_EXPORTER_OTLP_LOGS_HEADERS:"",OTEL_EXPORTER_OTLP_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_TRACES_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_METRICS_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_LOGS_TIMEOUT:1e4,OTEL_EXPORTER_ZIPKIN_ENDPOINT:"http://localhost:9411/api/v2/spans",OTEL_LOG_LEVEL:H.INFO,OTEL_NO_PATCH_MODULES:[],OTEL_PROPAGATORS:["tracecontext","baggage"],OTEL_RESOURCE_ATTRIBUTES:"",OTEL_SERVICE_NAME:"",OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT:gu,OTEL_ATTRIBUTE_COUNT_LIMIT:vu,OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT:gu,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT:vu,OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT:gu,OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT:vu,OTEL_SPAN_EVENT_COUNT_LIMIT:128,OTEL_SPAN_LINK_COUNT_LIMIT:128,OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:tR,OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:rR,OTEL_TRACES_EXPORTER:"",OTEL_TRACES_SAMPLER:wa.ParentBasedAlwaysOn,OTEL_TRACES_SAMPLER_ARG:"",OTEL_LOGS_EXPORTER:"",OTEL_EXPORTER_OTLP_INSECURE:"",OTEL_EXPORTER_OTLP_TRACES_INSECURE:"",OTEL_EXPORTER_OTLP_METRICS_INSECURE:"",OTEL_EXPORTER_OTLP_LOGS_INSECURE:"",OTEL_EXPORTER_OTLP_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_COMPRESSION:"",OTEL_EXPORTER_OTLP_TRACES_COMPRESSION:"",OTEL_EXPORTER_OTLP_METRICS_COMPRESSION:"",OTEL_EXPORTER_OTLP_LOGS_COMPRESSION:"",OTEL_EXPORTER_OTLP_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_TRACES_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_LOGS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE:"cumulative",OTEL_SEMCONV_STABILITY_OPT_IN:[]};Dme={ALL:H.ALL,VERBOSE:H.VERBOSE,DEBUG:H.DEBUG,INFO:H.INFO,WARN:H.WARN,ERROR:H.ERROR,NONE:H.NONE}});function kE(){let r=Ou(process.env);return Object.assign({},yu,r)}function BE(){return Ou(process.env)}var I4=p(()=>{nR()});var VE,L4=p(()=>{VE=typeof globalThis=="object"?globalThis:global});function b4(r){return r>=48&&r<=57?r-48:r>=97&&r<=102?r-87:r-55}function FE(r){let e=new Uint8Array(r.length/2),t=0;for(let o=0;o{});function GE(r){return Buffer.from(FE(r)).toString("base64")}var x4=p(()=>{iR()});function M4(r){return function(){for(let t=0;t>>0,t*4);for(let t=0;t0);t++)t===r-1&&(HE[r-1]=1);return HE.toString("hex",0,r)}}var Da,HE,w4=p(()=>{Da=class{constructor(){this.generateTraceId=M4(16),this.generateSpanId=M4(8)}},HE=Buffer.allocUnsafe(16)});import{performance as kme}from"perf_hooks";var Ei,D4=p(()=>{Ei=kme});var qE,oR=p(()=>{qE="1.29.0"});var jE,U4=p(()=>{oR();Ve();jE={[Se]:"opentelemetry",[st]:"node",[ge]:wt,[ve]:qE}});function YE(r){r.unref()}var k4=p(()=>{});var B4=p(()=>{I4();L4();x4();w4();D4();U4();k4()});var sR=p(()=>{B4()});function Ua(r){let e=r/1e3,t=Math.trunc(e),o=Math.round(r%1e3*Vme);return[t,o]}function zE(){let r=Ei.timeOrigin;if(typeof r!="number"){let e=Ei;r=e.timing&&e.timing.fetchStart}return r}function aR(r){let e=Ua(zE()),t=Ua(typeof r=="number"?r:Ei.now());return lR(e,t)}function F4(r){if($E(r))return r;if(typeof r=="number")return r=KE&&(t[1]-=KE,t[0]+=1),t}var V4,Bme,Vme,KE,z4=p(()=>{sR();V4=9,Bme=6,Vme=Math.pow(10,Bme),KE=Math.pow(10,V4)});var XE,$4=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(XE||(XE={}))});var WE,X4=p(()=>{P();WE=class{constructor(e={}){var t;this._propagators=(t=e.propagators)!==null&&t!==void 0?t:[],this._fields=Array.from(new Set(this._propagators.map(o=>typeof o.fields=="function"?o.fields():[]).reduce((o,s)=>o.concat(s),[])))}inject(e,t,o){for(let s of this._propagators)try{s.inject(e,t,o)}catch(a){S.warn(`Failed to inject with ${s.constructor.name}. Err: ${a.message}`)}}extract(e,t,o){return this._propagators.reduce((s,a)=>{try{return a.extract(s,t,o)}catch(i){S.warn(`Failed to extract with ${a.constructor.name}. Err: ${i.message}`)}return s},e)}fields(){return this._fields.slice()}}});function W4(r){return Hme.test(r)}function J4(r){return qme.test(r)&&!jme.test(r)}var cR,Fme,Gme,Hme,qme,jme,Q4=p(()=>{cR="[_0-9a-z-*/]",Fme=`[a-z]${cR}{0,255}`,Gme=`[a-z0-9]${cR}{0,240}@[a-z]${cR}{0,13}`,Hme=new RegExp(`^(?:${Fme}|${Gme})$`),qme=/^[ -~]{0,255}[!-~]$/,jme=/,|=/});var Z4,Yme,e6,t6,ka,uR=p(()=>{Q4();Z4=32,Yme=512,e6=",",t6="=",ka=class r{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let o=this._clone();return o._internalState.has(e)&&o._internalState.delete(e),o._internalState.set(e,t),o}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+t6+this.get(t)),e),[]).join(e6)}_parse(e){e.length>Yme||(this._internalState=e.split(e6).reverse().reduce((t,o)=>{let s=o.trim(),a=s.indexOf(t6);if(a!==-1){let i=s.slice(0,a),n=s.slice(a+1,o.length);W4(i)&&J4(n)&&t.set(i,n)}return t},new Map),this._internalState.size>Z4&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,Z4))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new r;return e._internalState=new Map(this._internalState),e}}});function fR(r){let e=Jme.exec(r);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var Au,Ru,Kme,zme,$me,Xme,Wme,Jme,JE,r6=p(()=>{P();Tu();uR();Au="traceparent",Ru="tracestate",Kme="00",zme="(?!ff)[\\da-f]{2}",$me="(?![0]{32})[\\da-f]{32}",Xme="(?![0]{16})[\\da-f]{16}",Wme="[\\da-f]{2}",Jme=new RegExp(`^\\s?(${zme})-(${$me})-(${Xme})-(${Wme})(-.*)?\\s?$`);JE=class{inject(e,t,o){let s=ie.getSpanContext(e);if(!s||xa(e)||!xe(s))return;let a=`${Kme}-${s.traceId}-${s.spanId}-0${Number(s.traceFlags||se.NONE).toString(16)}`;o.set(t,Au,a),s.traceState&&o.set(t,Ru,s.traceState.serialize())}extract(e,t,o){let s=o.get(t,Au);if(!s)return e;let a=Array.isArray(s)?s[0]:s;if(typeof a!="string")return e;let i=fR(a);if(!i)return e;i.isRemote=!0;let n=o.get(t,Ru);if(n){let l=Array.isArray(n)?n.join(","):n;i.traceState=new ka(typeof l=="string"?l:void 0)}return ie.setSpanContext(e,i)}fields(){return[Au,Ru]}}});function n6(r,e){return r.setValue(pR,e)}function i6(r){return r.deleteValue(pR)}function o6(r){return r.getValue(pR)}var pR,QE,s6=p(()=>{P();pR=De("OpenTelemetry SDK Context Key RPC_METADATA");(function(r){r.HTTP="http"})(QE||(QE={}))});var Po,dR=p(()=>{P();Po=class{shouldSample(){return{decision:ke.NOT_RECORD}}toString(){return"AlwaysOffSampler"}}});var mi,hR=p(()=>{P();mi=class{shouldSample(){return{decision:ke.RECORD_AND_SAMPLED}}toString(){return"AlwaysOnSampler"}}});var ZE,a6=p(()=>{P();ZA();dR();hR();ZE=class{constructor(e){var t,o,s,a;this._root=e.root,this._root||(UE(new Error("ParentBasedSampler must have a root sampler configured")),this._root=new mi),this._remoteParentSampled=(t=e.remoteParentSampled)!==null&&t!==void 0?t:new mi,this._remoteParentNotSampled=(o=e.remoteParentNotSampled)!==null&&o!==void 0?o:new Po,this._localParentSampled=(s=e.localParentSampled)!==null&&s!==void 0?s:new mi,this._localParentNotSampled=(a=e.localParentNotSampled)!==null&&a!==void 0?a:new Po}shouldSample(e,t,o,s,a,i){let n=ie.getSpanContext(e);return!n||!xe(n)?this._root.shouldSample(e,t,o,s,a,i):n.isRemote?n.traceFlags&se.SAMPLED?this._remoteParentSampled.shouldSample(e,t,o,s,a,i):this._remoteParentNotSampled.shouldSample(e,t,o,s,a,i):n.traceFlags&se.SAMPLED?this._localParentSampled.shouldSample(e,t,o,s,a,i):this._localParentNotSampled.shouldSample(e,t,o,s,a,i)}toString(){return`ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`}}});var em,l6=p(()=>{P();em=class{constructor(e=0){this._ratio=e,this._ratio=this._normalize(e),this._upperBound=Math.floor(this._ratio*4294967295)}shouldSample(e,t){return{decision:Mt(t)&&this._accumulate(t)=1?1:e<=0?0:e}_accumulate(e){let t=0;for(let o=0;o>>0}return t}}});function iTe(r,e){return function(t){return r(e(t))}}function _R(r){if(!oTe(r)||sTe(r)!==Qme)return!1;let e=nTe(r);if(e===null)return!0;let t=f6.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&c6.call(t)===rTe}function oTe(r){return r!=null&&typeof r=="object"}function sTe(r){return r==null?r===void 0?eTe:Zme:Io&&Io in Object(r)?aTe(r):lTe(r)}function aTe(r){let e=f6.call(r,Io),t=r[Io],o=!1;try{r[Io]=void 0,o=!0}catch{}let s=p6.call(r);return o&&(e?r[Io]=t:delete r[Io]),s}function lTe(r){return p6.call(r)}var Qme,Zme,eTe,tTe,c6,rTe,nTe,u6,f6,Io,p6,d6=p(()=>{Qme="[object Object]",Zme="[object Null]",eTe="[object Undefined]",tTe=Function.prototype,c6=tTe.toString,rTe=c6.call(Object),nTe=iTe(Object.getPrototypeOf,Object),u6=Object.prototype,f6=u6.hasOwnProperty,Io=Symbol?Symbol.toStringTag:void 0,p6=u6.toString});function _6(...r){let e=r.shift(),t=new WeakMap;for(;r.length>0;)e=E6(e,r.shift(),0,t);return e}function ER(r){return rm(r)?r.slice():r}function E6(r,e,t=0,o){let s;if(!(t>cTe)){if(t++,tm(r)||tm(e)||m6(e))s=ER(e);else if(rm(r)){if(s=r.slice(),rm(e))for(let a=0,i=e.length;a"u"?delete s[l]:s[l]=c;else{let u=s[l],f=c;if(h6(r,l,o)||h6(e,l,o))delete s[l];else{if(Nu(u)&&Nu(f)){let _=o.get(u)||[],m=o.get(f)||[];_.push({obj:r,key:l}),m.push({obj:e,key:l}),o.set(u,_),o.set(f,m)}s[l]=E6(s[l],c,t,o)}}}}else s=e;return s}}function h6(r,e,t){let o=t.get(r[e])||[];for(let s=0,a=o.length;s"u"||r instanceof Date||r instanceof RegExp||r===null}function uTe(r,e){return!(!_R(r)||!_R(e))}var cTe,T6=p(()=>{d6();cTe=20});function S6(r,e){let t,o=new Promise(function(a,i){t=setTimeout(function(){i(new Cu("Operation timed out."))},e)});return Promise.race([r,o]).then(s=>(clearTimeout(t),s),s=>{throw clearTimeout(t),s})}var Cu,g6=p(()=>{Cu=class r extends Error{constructor(e){super(e),Object.setPrototypeOf(this,r.prototype)}}});function mR(r,e){return typeof e=="string"?r===e:!!r.match(e)}function v6(r,e){if(!e)return!1;for(let t of e)if(mR(r,t))return!0;return!1}var y6=p(()=>{});function O6(r){return typeof r=="function"&&typeof r.__original=="function"&&typeof r.__unwrap=="function"&&r.__wrapped===!0}var A6=p(()=>{});var nm,R6=p(()=>{nm=class{constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}}});var im,N6=p(()=>{R6();im=class{constructor(e,t){this._callback=e,this._that=t,this._isCalled=!1,this._deferred=new nm}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(t=>this._deferred.resolve(t),t=>this._deferred.reject(t))}catch(t){this._deferred.reject(t)}}return this._deferred.promise}}});function C6(r,e){return new Promise(t=>{me.with(PE(me.active()),()=>{r.export(e,o=>{t(o)})})})}var P6=p(()=>{P();Tu()});var I6={};Ae(I6,{AlwaysOffSampler:()=>Po,AlwaysOnSampler:()=>mi,AnchoredClock:()=>wE,BindOnceFuture:()=>im,CompositePropagator:()=>WE,DEFAULT_ATTRIBUTE_COUNT_LIMIT:()=>vu,DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT:()=>gu,DEFAULT_ENVIRONMENT:()=>yu,DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:()=>tR,DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:()=>rR,ExportResultCode:()=>XE,ParentBasedSampler:()=>ZE,RPCType:()=>QE,RandomIdGenerator:()=>Da,SDK_INFO:()=>jE,TRACE_PARENT_HEADER:()=>Au,TRACE_STATE_HEADER:()=>Ru,TimeoutError:()=>Cu,TraceIdRatioBasedSampler:()=>em,TraceState:()=>ka,TracesSamplerValues:()=>wa,VERSION:()=>qE,W3CBaggagePropagator:()=>ME,W3CTraceContextPropagator:()=>JE,_globalThis:()=>VE,addHrTimes:()=>lR,baggageUtils:()=>fTe,callWithTimeout:()=>S6,deleteRPCMetadata:()=>i6,getEnv:()=>kE,getEnvWithoutDefaults:()=>BE,getRPCMetadata:()=>o6,getTimeOrigin:()=>zE,globalErrorHandler:()=>UE,hexToBase64:()=>GE,hexToBinary:()=>FE,hrTime:()=>aR,hrTimeDuration:()=>G4,hrTimeToMicroseconds:()=>Y4,hrTimeToMilliseconds:()=>j4,hrTimeToNanoseconds:()=>q4,hrTimeToTimeStamp:()=>H4,internal:()=>pTe,isAttributeKey:()=>WA,isAttributeValue:()=>JA,isTimeInput:()=>K4,isTimeInputHrTime:()=>$E,isTracingSuppressed:()=>xa,isUrlIgnored:()=>v6,isWrapped:()=>O6,loggingErrorHandler:()=>DE,merge:()=>_6,millisToHrTime:()=>Ua,otperformance:()=>Ei,parseEnvironment:()=>Ou,parseTraceParent:()=>fR,sanitizeAttributes:()=>A4,setGlobalErrorHandler:()=>P4,setRPCMetadata:()=>n6,suppressTracing:()=>PE,timeInputToHrTime:()=>F4,unrefTimer:()=>YE,unsuppressTracing:()=>S4,urlMatches:()=>mR});var fTe,pTe,L6=p(()=>{y4();O4();N4();ZA();QA();z4();iR();$4();XA();sR();X4();r6();s6();dR();hR();a6();l6();Tu();uR();nR();T6();eR();g6();y6();A6();N6();oR();P6();fTe={getKeyPairs:xE,serializeKeyPairs:bE,parseKeyPairsIntoRecord:v4,parsePairKeyValue:Su},pTe={_export:C6}});var D6=T(om=>{"use strict";Object.defineProperty(om,"__esModule",{value:!0});om.getOtlpGrpcConfigurationFromEnv=void 0;var b6=(L6(),ee(I6)),Pu=Eu(),dTe=(Zs(),ee(f3)),hTe=V("fs"),_Te=V("path"),M6=(P(),ee(ot));function TR(r,e){if(r!=null&&r!=="")return r;if(e!=null&&e!=="")return e}function ETe(r){var e,t;let o=(e=process.env[`OTEL_EXPORTER_OTLP_${r}_HEADERS`])===null||e===void 0?void 0:e.trim(),s=(t=process.env.OTEL_EXPORTER_OTLP_HEADERS)===null||t===void 0?void 0:t.trim(),a=b6.baggageUtils.parseKeyPairsIntoRecord(o),i=b6.baggageUtils.parseKeyPairsIntoRecord(s);if(Object.keys(a).length===0&&Object.keys(i).length===0)return;let n=Object.assign({},i,a),l=(0,Pu.createEmptyMetadata)();for(let[c,u]of Object.entries(n))l.set(c,u);return l}function mTe(r){let e=ETe(r);if(e!=null)return()=>e}function TTe(r){var e,t;let o=(e=process.env[`OTEL_EXPORTER_OTLP_${r}_ENDPOINT`])===null||e===void 0?void 0:e.trim(),s=(t=process.env.OTEL_EXPORTER_OTLP_ENDPOINT)===null||t===void 0?void 0:t.trim();return TR(o,s)}function STe(r){var e,t;let o=(e=process.env[`OTEL_EXPORTER_OTLP_${r}_INSECURE`])===null||e===void 0?void 0:e.toLowerCase().trim(),s=(t=process.env.OTEL_EXPORTER_OTLP_INSECURE)===null||t===void 0?void 0:t.toLowerCase().trim();return TR(o,s)==="true"}function SR(r,e,t){var o,s;let a=(o=process.env[r])===null||o===void 0?void 0:o.trim(),i=(s=process.env[e])===null||s===void 0?void 0:s.trim(),n=TR(a,i);if(n!=null)try{return hTe.readFileSync(_Te.resolve(process.cwd(),n))}catch{M6.diag.warn(t);return}else return}function gTe(r){return SR(`OTEL_EXPORTER_OTLP_${r}_CLIENT_CERTIFICATE`,"OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE","Failed to read client certificate chain file")}function vTe(r){return SR(`OTEL_EXPORTER_OTLP_${r}_CLIENT_KEY`,"OTEL_EXPORTER_OTLP_CLIENT_KEY","Failed to read client certificate private key file")}function x6(r){return SR(`OTEL_EXPORTER_OTLP_${r}_CERTIFICATE`,"OTEL_EXPORTER_OTLP_CERTIFICATE","Failed to read root certificate file")}function w6(r){let e=vTe(r),t=gTe(r),o=x6(r),s=e!=null&&t!=null;return o!=null&&!s?(M6.diag.warn("Client key and certificate must both be provided, but one was missing - attempting to create credentials from just the root certificate"),(0,Pu.createSslCredentials)(x6(r))):(0,Pu.createSslCredentials)(o,e,t)}function yTe(r){return STe(r)?(0,Pu.createInsecureCredentials)():w6(r)}function OTe(r){return Object.assign(Object.assign({},(0,dTe.getSharedConfigurationFromEnvironment)(r)),{metadata:mTe(r),url:TTe(r),credentials:e=>e.startsWith("http://")?()=>(0,Pu.createInsecureCredentials)():e.startsWith("https://")?()=>w6(r):()=>yTe(r)})}om.getOtlpGrpcConfigurationFromEnv=OTe});var k6=T(sm=>{"use strict";Object.defineProperty(sm,"__esModule",{value:!0});sm.convertLegacyOtlpGrpcOptions=void 0;var ATe=(P(),ee(ot)),U6=T4(),RTe=Eu(),NTe=D6();function CTe(r,e){r.headers&&ATe.diag.warn("Headers cannot be set when using grpc");let t=r.credentials;return(0,U6.mergeOtlpGrpcConfigurationWithDefaults)({url:r.url,metadata:()=>{var o;return(o=r.metadata)!==null&&o!==void 0?o:(0,RTe.createEmptyMetadata)()},compression:r.compression,timeoutMillis:r.timeoutMillis,concurrencyLimit:r.concurrencyLimit,credentials:t!=null?()=>t:void 0},(0,NTe.getOtlpGrpcConfigurationFromEnv)(e),(0,U6.getOtlpGrpcDefaultConfiguration)())}sm.convertLegacyOtlpGrpcOptions=CTe});var B6=T(am=>{"use strict";Object.defineProperty(am,"__esModule",{value:!0});am.createOtlpGrpcExportDelegate=void 0;var PTe=(_n(),ee(mc)),ITe=Eu();function LTe(r,e,t,o){return(0,PTe.createOtlpNetworkExportDelegate)(r,e,(0,ITe.createOtlpGrpcExporterTransport)({address:r.url,compression:r.compression,credentials:r.credentials,metadata:r.metadata,grpcName:t,grpcPath:o}))}am.createOtlpGrpcExportDelegate=LTe});var gR=T(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.createOtlpGrpcExportDelegate=Ba.convertLegacyOtlpGrpcOptions=void 0;var bTe=k6();Object.defineProperty(Ba,"convertLegacyOtlpGrpcOptions",{enumerable:!0,get:function(){return bTe.convertLegacyOtlpGrpcOptions}});var xTe=B6();Object.defineProperty(Ba,"createOtlpGrpcExportDelegate",{enumerable:!0,get:function(){return xTe.createOtlpGrpcExportDelegate}})});var F6=T(lm=>{"use strict";Object.defineProperty(lm,"__esModule",{value:!0});lm.OTLPLogExporter=void 0;var V6=gR(),MTe=(Qn(),ee(fv)),wTe=(_n(),ee(mc)),vR=class extends wTe.OTLPExporterBase{constructor(e={}){super((0,V6.createOtlpGrpcExportDelegate)((0,V6.convertLegacyOtlpGrpcOptions)(e,"LOGS"),MTe.ProtobufLogsSerializer,"LogsExportService","/opentelemetry.proto.collector.logs.v1.LogsService/Export"))}};lm.OTLPLogExporter=vR});var G6=T(Lo=>{"use strict";var DTe=Lo&&Lo.__createBinding||(Object.create?function(r,e,t,o){o===void 0&&(o=t),Object.defineProperty(r,o,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,o){o===void 0&&(o=t),r[o]=e[t]}),UTe=Lo&&Lo.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&DTe(e,r,t)};Object.defineProperty(Lo,"__esModule",{value:!0});UTe(F6(),Lo)});var H6,q6=p(()=>{H6="0.56.0"});var Va,j6=p(()=>{_n();Qn();Zs();q6();Va=class extends Br{constructor(e={}){super(Hr(qr(e,"LOGS","v1/logs",{"User-Agent":`OTel-OTLP-Exporter-JavaScript/${H6}`,"Content-Type":"application/x-protobuf"}),Ch))}}});var Y6=p(()=>{j6()});var K6=p(()=>{Y6()});var z6={};Ae(z6,{OTLPLogExporter:()=>Va});var $6=p(()=>{K6()});var X6,W6=p(()=>{X6="0.56.0"});var Fa,J6=p(()=>{_n();Qn();W6();Zs();Fa=class extends Br{constructor(e={}){super(Hr(qr(e,"TRACES","v1/traces",{"User-Agent":`OTel-OTLP-Exporter-JavaScript/${X6}`,"Content-Type":"application/x-protobuf"}),Ph))}}});var Q6=p(()=>{J6()});var Z6=p(()=>{Q6()});var eY={};Ae(eY,{OTLPTraceExporter:()=>Fa});var tY=p(()=>{Z6()});var rY,nY=p(()=>{rY="0.56.0"});var yR,iY=p(()=>{_n();nY();Qn();Zs();yR=class extends Br{constructor(e={}){super(Hr(qr(e,"TRACES","v1/traces",{"User-Agent":`OTel-OTLP-Exporter-JavaScript/${rY}`,"Content-Type":"application/json"}),Ih))}}});var oY=p(()=>{iY()});var sY=p(()=>{oY()});var aY={};Ae(aY,{OTLPTraceExporter:()=>yR});var lY=p(()=>{sY()});var uY=T(cm=>{"use strict";Object.defineProperty(cm,"__esModule",{value:!0});cm.OTLPTraceExporter=void 0;var cY=gR(),kTe=(Qn(),ee(fv)),BTe=(_n(),ee(mc)),OR=class extends BTe.OTLPExporterBase{constructor(e={}){super((0,cY.createOtlpGrpcExportDelegate)((0,cY.convertLegacyOtlpGrpcOptions)(e,"TRACES"),kTe.ProtobufTraceSerializer,"TraceExportService","/opentelemetry.proto.collector.trace.v1.TraceService/Export"))}};cm.OTLPTraceExporter=OR});var fY=T(bo=>{"use strict";var VTe=bo&&bo.__createBinding||(Object.create?function(r,e,t,o){o===void 0&&(o=t),Object.defineProperty(r,o,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,o){o===void 0&&(o=t),r[o]=e[t]}),FTe=bo&&bo.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&VTe(e,r,t)};Object.defineProperty(bo,"__esModule",{value:!0});FTe(uY(),bo)});var um,pY=p(()=>{(function(r){r.AlwaysOff="always_off",r.AlwaysOn="always_on",r.ParentBasedAlwaysOff="parentbased_always_off",r.ParentBasedAlwaysOn="parentbased_always_on",r.ParentBasedTraceIdRatio="parentbased_traceidratio",r.TraceIdRatio="traceidratio"})(um||(um={}))});function qTe(r){return HTe.indexOf(r)>-1}function YTe(r){return jTe.indexOf(r)>-1}function zTe(r){return KTe.indexOf(r)>-1}function WTe(r,e,t){if(typeof t[r]>"u")return;let o=String(t[r]);e[r]=o.toLowerCase()==="true"}function JTe(r,e,t,o=-1/0,s=1/0){if(typeof t[r]<"u"){let a=Number(t[r]);isNaN(a)||(as?e[r]=s:e[r]=a)}}function QTe(r,e,t,o=GTe){let s=t[r];typeof s=="string"&&(e[r]=s.split(o).map(a=>a.trim()))}function eSe(r,e,t){let o=t[r];if(typeof o=="string"){let s=ZTe[o.toUpperCase()];s!=null&&(e[r]=s)}}function dY(r){let e={};for(let t in NR){let o=t;switch(o){case"OTEL_LOG_LEVEL":eSe(o,e,r);break;default:if(qTe(o))WTe(o,e,r);else if(YTe(o))JTe(o,e,r);else if(zTe(o))QTe(o,e,r);else{let s=r[o];typeof s<"u"&&s!==null&&(e[o]=String(s))}}}return e}var GTe,HTe,jTe,KTe,AR,RR,$Te,XTe,NR,ZTe,hY=p(()=>{P();pY();GTe=",",HTe=["OTEL_SDK_DISABLED"];jTe=["OTEL_BSP_EXPORT_TIMEOUT","OTEL_BSP_MAX_EXPORT_BATCH_SIZE","OTEL_BSP_MAX_QUEUE_SIZE","OTEL_BSP_SCHEDULE_DELAY","OTEL_BLRP_EXPORT_TIMEOUT","OTEL_BLRP_MAX_EXPORT_BATCH_SIZE","OTEL_BLRP_MAX_QUEUE_SIZE","OTEL_BLRP_SCHEDULE_DELAY","OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_SPAN_LINK_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_EXPORTER_OTLP_TIMEOUT","OTEL_EXPORTER_OTLP_TRACES_TIMEOUT","OTEL_EXPORTER_OTLP_METRICS_TIMEOUT","OTEL_EXPORTER_OTLP_LOGS_TIMEOUT","OTEL_EXPORTER_JAEGER_AGENT_PORT"];KTe=["OTEL_NO_PATCH_MODULES","OTEL_PROPAGATORS","OTEL_SEMCONV_STABILITY_OPT_IN"];AR=1/0,RR=128,$Te=128,XTe=128,NR={OTEL_SDK_DISABLED:!1,CONTAINER_NAME:"",ECS_CONTAINER_METADATA_URI_V4:"",ECS_CONTAINER_METADATA_URI:"",HOSTNAME:"",KUBERNETES_SERVICE_HOST:"",NAMESPACE:"",OTEL_BSP_EXPORT_TIMEOUT:3e4,OTEL_BSP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BSP_MAX_QUEUE_SIZE:2048,OTEL_BSP_SCHEDULE_DELAY:5e3,OTEL_BLRP_EXPORT_TIMEOUT:3e4,OTEL_BLRP_MAX_EXPORT_BATCH_SIZE:512,OTEL_BLRP_MAX_QUEUE_SIZE:2048,OTEL_BLRP_SCHEDULE_DELAY:5e3,OTEL_EXPORTER_JAEGER_AGENT_HOST:"",OTEL_EXPORTER_JAEGER_AGENT_PORT:6832,OTEL_EXPORTER_JAEGER_ENDPOINT:"",OTEL_EXPORTER_JAEGER_PASSWORD:"",OTEL_EXPORTER_JAEGER_USER:"",OTEL_EXPORTER_OTLP_ENDPOINT:"",OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:"",OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:"",OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:"",OTEL_EXPORTER_OTLP_HEADERS:"",OTEL_EXPORTER_OTLP_TRACES_HEADERS:"",OTEL_EXPORTER_OTLP_METRICS_HEADERS:"",OTEL_EXPORTER_OTLP_LOGS_HEADERS:"",OTEL_EXPORTER_OTLP_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_TRACES_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_METRICS_TIMEOUT:1e4,OTEL_EXPORTER_OTLP_LOGS_TIMEOUT:1e4,OTEL_EXPORTER_ZIPKIN_ENDPOINT:"http://localhost:9411/api/v2/spans",OTEL_LOG_LEVEL:H.INFO,OTEL_NO_PATCH_MODULES:[],OTEL_PROPAGATORS:["tracecontext","baggage"],OTEL_RESOURCE_ATTRIBUTES:"",OTEL_SERVICE_NAME:"",OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT:AR,OTEL_ATTRIBUTE_COUNT_LIMIT:RR,OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT:AR,OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT:RR,OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT:AR,OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT:RR,OTEL_SPAN_EVENT_COUNT_LIMIT:128,OTEL_SPAN_LINK_COUNT_LIMIT:128,OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT:$Te,OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT:XTe,OTEL_TRACES_EXPORTER:"",OTEL_TRACES_SAMPLER:um.ParentBasedAlwaysOn,OTEL_TRACES_SAMPLER_ARG:"",OTEL_LOGS_EXPORTER:"",OTEL_EXPORTER_OTLP_INSECURE:"",OTEL_EXPORTER_OTLP_TRACES_INSECURE:"",OTEL_EXPORTER_OTLP_METRICS_INSECURE:"",OTEL_EXPORTER_OTLP_LOGS_INSECURE:"",OTEL_EXPORTER_OTLP_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE:"",OTEL_EXPORTER_OTLP_COMPRESSION:"",OTEL_EXPORTER_OTLP_TRACES_COMPRESSION:"",OTEL_EXPORTER_OTLP_METRICS_COMPRESSION:"",OTEL_EXPORTER_OTLP_LOGS_COMPRESSION:"",OTEL_EXPORTER_OTLP_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY:"",OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE:"",OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_TRACES_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_LOGS_PROTOCOL:"http/protobuf",OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE:"cumulative",OTEL_SEMCONV_STABILITY_OPT_IN:[]};ZTe={ALL:H.ALL,VERBOSE:H.VERBOSE,DEBUG:H.DEBUG,INFO:H.INFO,WARN:H.WARN,ERROR:H.ERROR,NONE:H.NONE}});function Iu(){let r=dY(process.env);return Object.assign({},NR,r)}var _Y=p(()=>{hY()});var mY=p(()=>{_Y()});var TY=p(()=>{mY()});function Lu(r){return r[0]*1e6+r[1]/1e3}var aSe,lSe,sHe,aHe,SY=p(()=>{aSe=9,lSe=6,sHe=Math.pow(10,lSe),aHe=Math.pow(10,aSe)});var sn,gY=p(()=>{(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(sn||(sn={}))});var fm=p(()=>{SY();gY();TY()});import*as cSe from"http";import*as uSe from"https";import*as vY from"url";function xo(r,e){let t=vY.parse(r),o=Object.assign({method:"POST",headers:Object.assign({"Content-Type":"application/json"},e)},t);return function(a,i){if(a.length===0)return S.debug("Zipkin send with empty spans"),i({code:sn.SUCCESS});let{request:n}=o.protocol==="http:"?cSe:uSe,l=n(o,u=>{let f="";u.on("data",_=>{f+=_}),u.on("end",()=>{let _=u.statusCode||0;return S.debug(`Zipkin response status code: ${_}, body: ${f}`),_<400?i({code:sn.SUCCESS}):i({code:sn.FAILED,error:new Error(`Got unexpected status code from zipkin: ${_}`)})})});l.on("error",u=>i({code:sn.FAILED,error:u}));let c=JSON.stringify(a);S.debug(`Zipkin request payload: ${c}`),l.write(c,"utf8"),l.end()}}var yY=p(()=>{P();fm()});var OY=p(()=>{yY()});var CR=p(()=>{OY()});var Mo,AY=p(()=>{(function(r){r.CLIENT="CLIENT",r.SERVER="SERVER",r.CONSUMER="CONSUMER",r.PRODUCER="PRODUCER"})(Mo||(Mo={}))});function CY(r,e,t,o){return{traceId:r.spanContext().traceId,parentId:r.parentSpanId,name:r.name,id:r.spanContext().spanId,kind:pSe[r.kind],timestamp:Lu(r.startTime),duration:Math.round(Lu(r.duration)),localEndpoint:{serviceName:e},tags:dSe(r,t,o),annotations:r.events.length?hSe(r.events):void 0}}function dSe({attributes:r,resource:e,status:t,droppedAttributesCount:o,droppedEventsCount:s,droppedLinksCount:a},i,n){let l={};for(let c of Object.keys(r))l[c]=String(r[c]);return t.code!==br.UNSET&&(l[i]=String(br[t.code])),t.code===br.ERROR&&t.message&&(l[n]=t.message),o&&(l["otel.dropped_attributes_count"]=String(o)),s&&(l["otel.dropped_events_count"]=String(s)),a&&(l["otel.dropped_links_count"]=String(a)),Object.keys(e.attributes).forEach(c=>l[c]=String(e.attributes[c])),l}function hSe(r){return r.map(e=>({timestamp:Math.round(Lu(e.time)),value:e.name}))}var pSe,RY,NY,PY=p(()=>{P();fm();AY();pSe={[qt.CLIENT]:Mo.CLIENT,[qt.SERVER]:Mo.SERVER,[qt.CONSUMER]:Mo.CONSUMER,[qt.PRODUCER]:Mo.PRODUCER,[qt.INTERNAL]:void 0},RY="otel.status_code",NY="error"});function IY(r){return function(){return r()}}var LY=p(()=>{});var pm,bY=p(()=>{P();fm();CR();PY();Ve();LY();pm=class{constructor(e={}){this.DEFAULT_SERVICE_NAME="OpenTelemetry Service",this._sendingPromises=[],this._urlStr=e.url||Iu().OTEL_EXPORTER_ZIPKIN_ENDPOINT,this._send=xo(this._urlStr,e.headers),this._serviceName=e.serviceName,this._statusCodeTagName=e.statusCodeTagName||RY,this._statusDescriptionTagName=e.statusDescriptionTagName||NY,this._isShutdown=!1,typeof e.getExportRequestHeaders=="function"?this._getHeaders=IY(e.getExportRequestHeaders):this._beforeSend=function(){}}export(e,t){let o=String(this._serviceName||e[0].resource.attributes[at]||this.DEFAULT_SERVICE_NAME);if(S.debug("Zipkin exporter export"),this._isShutdown){setTimeout(()=>t({code:sn.FAILED,error:new Error("Exporter has been shutdown")}));return}let s=new Promise(i=>{this._sendSpans(e,o,n=>{i(),t(n)})});this._sendingPromises.push(s);let a=()=>{let i=this._sendingPromises.indexOf(s);this._sendingPromises.splice(i,1)};s.then(a,a)}shutdown(){return S.debug("Zipkin exporter shutdown"),this._isShutdown=!0,this.forceFlush()}forceFlush(){return new Promise((e,t)=>{Promise.all(this._sendingPromises).then(()=>{e()},t)})}_beforeSend(){this._getHeaders&&(this._send=xo(this._urlStr,this._getHeaders()))}_sendSpans(e,t,o){let s=e.map(a=>CY(a,String(a.attributes[at]||a.resource.attributes[at]||t),this._statusCodeTagName,this._statusDescriptionTagName));return this._beforeSend(),this._send(s,a=>{if(o)return o(a)})}}});var xY={};Ae(xY,{ZipkinExporter:()=>pm,prepareSend:()=>xo});var MY=p(()=>{CR();bY()});var kY=T(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.getSpanProcessorsFromEnv=an.getOtlpProtocolFromEnv=an.filterBlanksAndNulls=an.getResourceDetectorsFromEnv=void 0;var wo=(P(),ee(ot)),hm=(xr(),ee(If)),wY=(tY(),ee(eY)),_Se=(lY(),ee(aY)),ESe=fY(),mSe=(MY(),ee(xY)),bu=(Hd(),ee(Gd)),dm=(qi(),ee(Ds)),TSe="env",SSe="host",gSe="os",vSe="process",ySe="serviceinstance";function OSe(){var r,e;let t=new Map([[TSe,bu.envDetectorSync],[SSe,bu.hostDetectorSync],[gSe,bu.osDetectorSync],[ySe,bu.serviceInstanceIdDetectorSync],[vSe,bu.processDetectorSync]]),o=(e=(r=process.env.OTEL_NODE_RESOURCE_DETECTORS)===null||r===void 0?void 0:r.split(","))!==null&&e!==void 0?e:["all"];return o.includes("all")?[...t.values()].flat():o.includes("none")?[]:o.flatMap(s=>{let a=t.get(s);return a||wo.diag.warn(`Invalid resource detector "${s}" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`),a||[]})}an.getResourceDetectorsFromEnv=OSe;function DY(r){return r.map(e=>e.trim()).filter(e=>e!=="null"&&e!=="")}an.filterBlanksAndNulls=DY;function UY(){var r,e,t;let o=(0,hm.getEnvWithoutDefaults)();return(t=(e=(r=o.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL)!==null&&r!==void 0?r:o.OTEL_EXPORTER_OTLP_PROTOCOL)!==null&&e!==void 0?e:(0,hm.getEnv)().OTEL_EXPORTER_OTLP_TRACES_PROTOCOL)!==null&&t!==void 0?t:(0,hm.getEnv)().OTEL_EXPORTER_OTLP_PROTOCOL}an.getOtlpProtocolFromEnv=UY;function ASe(){let r=UY();switch(r){case"grpc":return new ESe.OTLPTraceExporter;case"http/json":return new _Se.OTLPTraceExporter;case"http/protobuf":return new wY.OTLPTraceExporter;default:return wo.diag.warn(`Unsupported OTLP traces protocol: ${r}. Using http/protobuf.`),new wY.OTLPTraceExporter}}function RSe(){try{let{JaegerExporter:r}=V("@opentelemetry/exporter-jaeger");return new r}catch(r){throw new Error(`Could not instantiate JaegerExporter. This could be due to the JaegerExporter's lack of support for bundling. If possible, use @opentelemetry/exporter-trace-otlp-proto instead. Original Error: ${r}`)}}function NSe(){var r;let e=new Map([["otlp",()=>ASe()],["zipkin",()=>new mSe.ZipkinExporter],["console",()=>new dm.ConsoleSpanExporter],["jaeger",()=>RSe()]]),t=[],o=[],s=DY(Array.from(new Set((0,hm.getEnv)().OTEL_TRACES_EXPORTER.split(","))));if(s[0]==="none")return wo.diag.warn('OTEL_TRACES_EXPORTER contains "none". SDK will not be initialized.'),[];s.length===0?(wo.diag.warn("OTEL_TRACES_EXPORTER is empty. Using default otlp exporter."),s=["otlp"]):s.length>1&&s.includes("none")&&(wo.diag.warn('OTEL_TRACES_EXPORTER contains "none" along with other exporters. Using default otlp exporter.'),s=["otlp"]);for(let a of s){let i=(r=e.get(a))===null||r===void 0?void 0:r();i?t.push(i):wo.diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${a}.`)}for(let a of t)a instanceof dm.ConsoleSpanExporter?o.push(new dm.SimpleSpanProcessor(a)):o.push(new dm.BatchSpanProcessor(a));return t.length===0&&wo.diag.warn("Unable to set up trace exporter(s) due to invalid exporter and/or protocol values."),o}an.getSpanProcessorsFromEnv=NSe});var VY=T(_m=>{"use strict";Object.defineProperty(_m,"__esModule",{value:!0});_m.NodeSDK=void 0;var ln=(P(),ee(ot)),CSe=(El(),ee(vw)),PSe=(EF(),ee(_F)),Ga=(Hd(),ee(Gd)),xu=(FT(),ee(VT)),ISe=(E3(),ee(_3)),LSe=G6(),PR=($6(),ee(z6)),bSe=(Hp(),ee(iS)),xSe=(qi(),ee(Ds)),MSe=XS(),wSe=(Ve(),ee(rM)),BY=(xr(),ee(If)),IR=kY(),LR=class{constructor(e={}){var t,o,s,a,i,n,l;let c=(0,BY.getEnv)(),u=(0,BY.getEnvWithoutDefaults)();if(c.OTEL_SDK_DISABLED&&(this._disabled=!0),u.OTEL_LOG_LEVEL&&ln.diag.setLogger(new ln.DiagConsoleLogger,{logLevel:u.OTEL_LOG_LEVEL}),this._configuration=e,this._resource=(t=e.resource)!==null&&t!==void 0?t:new Ga.Resource({}),this._mergeResourceWithDefaults=(o=e.mergeResourceWithDefaults)!==null&&o!==void 0?o:!0,this._autoDetectResources=(s=e.autoDetectResources)!==null&&s!==void 0?s:!0,this._autoDetectResources?e.resourceDetectors!=null?this._resourceDetectors=e.resourceDetectors:process.env.OTEL_NODE_RESOURCE_DETECTORS!=null?this._resourceDetectors=(0,IR.getResourceDetectorsFromEnv)():this._resourceDetectors=[Ga.envDetector,Ga.processDetector,Ga.hostDetector]:this._resourceDetectors=[],this._serviceName=e.serviceName,e.traceExporter||e.spanProcessor||e.spanProcessors){let f={};e.sampler&&(f.sampler=e.sampler),e.spanLimits&&(f.spanLimits=e.spanLimits),e.idGenerator&&(f.idGenerator=e.idGenerator),e.spanProcessor&&ln.diag.warn("The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.");let _=(a=e.spanProcessor)!==null&&a!==void 0?a:new xSe.BatchSpanProcessor(e.traceExporter),m=(i=e.spanProcessors)!==null&&i!==void 0?i:[_];this._tracerProviderConfig={tracerConfig:f,spanProcessors:m,contextManager:e.contextManager,textMapPropagator:e.textMapPropagator}}if(e.logRecordProcessors?this._loggerProviderConfig={logRecordProcessors:e.logRecordProcessors}:e.logRecordProcessor?(this._loggerProviderConfig={logRecordProcessors:[e.logRecordProcessor]},ln.diag.warn("The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.")):this.configureLoggerProviderFromEnv(),e.metricReader||e.views){let f={};e.metricReader&&(f.reader=e.metricReader),e.views&&(f.views=e.views),this._meterProviderConfig=f}this._instrumentations=(l=(n=e.instrumentations)===null||n===void 0?void 0:n.flat())!==null&&l!==void 0?l:[]}start(){var e,t,o,s,a,i;if(this._disabled)return;if((0,PSe.registerInstrumentations)({instrumentations:this._instrumentations}),this._autoDetectResources){let l={detectors:this._resourceDetectors};this._resource=this._resource.merge((0,Ga.detectResourcesSync)(l))}this._resource=this._serviceName===void 0?this._resource:this._resource.merge(new Ga.Resource({[wSe.SEMRESATTRS_SERVICE_NAME]:this._serviceName}));let n=this._tracerProviderConfig?this._tracerProviderConfig.spanProcessors:(0,IR.getSpanProcessorsFromEnv)();if(this._tracerProvider=new MSe.NodeTracerProvider(Object.assign(Object.assign({},this._configuration),{resource:this._resource,mergeResourceWithDefaults:this._mergeResourceWithDefaults,spanProcessors:n})),n.length>0&&this._tracerProvider.register({contextManager:(t=(e=this._tracerProviderConfig)===null||e===void 0?void 0:e.contextManager)!==null&&t!==void 0?t:(o=this._configuration)===null||o===void 0?void 0:o.contextManager,propagator:(s=this._tracerProviderConfig)===null||s===void 0?void 0:s.textMapPropagator}),this._loggerProviderConfig){let l=new xu.LoggerProvider({resource:this._resource,mergeResourceWithDefaults:this._mergeResourceWithDefaults});for(let c of this._loggerProviderConfig.logRecordProcessors)l.addLogRecordProcessor(c);this._loggerProvider=l,CSe.logs.setGlobalLoggerProvider(l)}if(this._meterProviderConfig){let l=[];this._meterProviderConfig.reader&&l.push(this._meterProviderConfig.reader);let c=new bSe.MeterProvider({resource:this._resource,views:(i=(a=this._meterProviderConfig)===null||a===void 0?void 0:a.views)!==null&&i!==void 0?i:[],readers:l,mergeResourceWithDefaults:this._mergeResourceWithDefaults});this._meterProvider=c,ln.metrics.setGlobalMeterProvider(c);for(let u of this._instrumentations)u.setMeterProvider(ln.metrics.getMeterProvider())}}shutdown(){let e=[];return this._tracerProvider&&e.push(this._tracerProvider.shutdown()),this._loggerProvider&&e.push(this._loggerProvider.shutdown()),this._meterProvider&&e.push(this._meterProvider.shutdown()),Promise.all(e).then(()=>{})}configureLoggerProviderFromEnv(){var e;let t=(e=process.env.OTEL_LOGS_EXPORTER)!==null&&e!==void 0?e:"",o=(0,IR.filterBlanksAndNulls)(t.split(","));if(o.length===0&&(ln.diag.info("OTEL_LOGS_EXPORTER is empty. Using default otlp exporter."),o.push("otlp")),o.includes("none")){ln.diag.info('OTEL_LOGS_EXPORTER contains "none". Logger provider will not be initialized.');return}let s=[];o.forEach(a=>{var i,n;if(a==="otlp"){let l=(n=(i=process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL)!==null&&i!==void 0?i:process.env.OTEL_EXPORTER_OTLP_PROTOCOL)===null||n===void 0?void 0:n.trim();switch(l){case"grpc":s.push(new LSe.OTLPLogExporter);break;case"http/json":s.push(new ISe.OTLPLogExporter);break;case"http/protobuf":s.push(new PR.OTLPLogExporter);break;case void 0:case"":s.push(new PR.OTLPLogExporter);break;default:ln.diag.warn(`Unsupported OTLP logs protocol: "${l}". Using http/protobuf.`),s.push(new PR.OTLPLogExporter)}}else a==="console"?s.push(new xu.ConsoleLogRecordExporter):ln.diag.warn(`Unsupported OTEL_LOGS_EXPORTER value: "${a}". Supported values are: otlp, console, none.`)}),s.length>0&&(this._loggerProviderConfig={logRecordProcessors:s.map(a=>a instanceof xu.ConsoleLogRecordExporter?new xu.SimpleLogRecordProcessor(a):new xu.BatchLogRecordProcessor(a))})}};_m.NodeSDK=LR});var FY=T(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.NodeSDK=Xe.tracing=Xe.resources=Xe.node=Xe.metrics=Xe.logs=Xe.core=Xe.contextBase=Xe.api=void 0;Xe.api=(P(),ee(ot));Xe.contextBase=(P(),ee(ot));Xe.core=(xr(),ee(If));Xe.logs=(FT(),ee(VT));Xe.metrics=(Hp(),ee(iS));Xe.node=XS();Xe.resources=(Hd(),ee(Gd));Xe.tracing=(qi(),ee(Ds));var DSe=VY();Object.defineProperty(Xe,"NodeSDK",{enumerable:!0,get:function(){return DSe.NodeSDK}})});P();import{env as Mu,version as USe}from"process";P();Ve();var nM="1.30.1";Ve();var Ai={[Se]:"opentelemetry",[st]:"node",[ge]:wt,[ve]:nM};var Go;(function(r){r[r.SUCCESS=0]="SUCCESS",r[r.FAILED=1]="FAILED"})(Go||(Go={}));var Ju=class{constructor(){this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}};var rl=class{constructor(e,t){this._callback=e,this._that=t,this._isCalled=!1,this._deferred=new Ju}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(t=>this._deferred.resolve(t),t=>this._deferred.reject(t))}catch(t){this._deferred.reject(t)}}return this._deferred.promise}};function Qu(){return`unknown_service:${process.argv0}`}var Ri=class r{constructor(e,t){var o;this._attributes=e,this.asyncAttributesPending=t!=null,this._syncAttributes=(o=this._attributes)!==null&&o!==void 0?o:{},this._asyncAttributesPromise=t==null?void 0:t.then(s=>(this._attributes=Object.assign({},this._attributes,s),this.asyncAttributesPending=!1,s),s=>(S.debug("a resource's async attributes promise rejected: %s",s),this.asyncAttributesPending=!1,{}))}static empty(){return r.EMPTY}static default(){return new r({[at]:Qu(),[ge]:Ai[ge],[Se]:Ai[Se],[ve]:Ai[ve]})}get attributes(){var e;return this.asyncAttributesPending&&S.error("Accessing resource attributes before async attributes settled"),(e=this._attributes)!==null&&e!==void 0?e:{}}async waitForAsyncAttributes(){this.asyncAttributesPending&&await this._asyncAttributesPromise}merge(e){var t;if(!e)return this;let o=Object.assign(Object.assign({},this._syncAttributes),(t=e._syncAttributes)!==null&&t!==void 0?t:e.attributes);if(!this._asyncAttributesPromise&&!e._asyncAttributesPromise)return new r(o);let s=Promise.all([this._asyncAttributesPromise,e._asyncAttributesPromise]).then(([a,i])=>{var n;return Object.assign(Object.assign(Object.assign(Object.assign({},this._syncAttributes),a),(n=e._syncAttributes)!==null&&n!==void 0?n:e.attributes),i)});return new r(o,s)}};Ri.EMPTY=new Ri({});var jY=Nn(FY(),1);P();Qn();var Ha,Do,qa,GY,HY,Em=class{constructor(){Uu(this,qa);Uu(this,Ha);Uu(this,Do);Sm(this,Ha,new rl(gm(this,qa,GY),this)),Sm(this,Do,S.createComponentLogger({namespace:"netlify-span-exporter"}))}convert(e){return Xn(e,{useHex:!0,useLongBits:!1})}export(e,t){if(Bo(this,Do).debug(`export ${e.length} spans`),Bo(this,Ha).isCalled){t({code:Go.FAILED,error:new Error("Exporter has been shutdown")});return}return gm(this,qa,HY).call(this,e,t)}shutdown(){return Bo(this,Do).debug("Shutting down"),Bo(this,Ha).call()}forceFlush(){return Bo(this,Do).debug("force flush"),Promise.resolve()}};Ha=new WeakMap,Do=new WeakMap,qa=new WeakSet,GY=function(){return this.forceFlush()},HY=function(e,t){if(console.log("__nfOTLPTrace",JSON.stringify(this.convert(e))),t)return t({code:Go.SUCCESS})};Mu.NETLIFY_DEBUG_OPENTELEMETRY&&S.setLogger(new Vu,{logLevel:H.ALL,suppressOverrideMessage:!0});var qY,kSe=new Ri({"service.name":SERVICE_NAME??"lambda-function","service.version":SERVICE_VERSION,"process.runtime.name":"nodejs","process.runtime.version":USe.slice(1),"deployment.environment":(qY=Mu.URL)!=null&&qY.includes("netlifystg.com")?"staging":"production","http.url":Mu.URL,"netlify.site.id":Mu.SITE_ID,"netlify.site.name":Mu.SITE_NAME}),BSe=new jY.default.NodeSDK({resource:kSe,traceExporter:new Em});BSe.start(); +/*! Bundled license information: + +@grpc/proto-loader/build/src/util.js: +@grpc/proto-loader/build/src/index.js: + (** + * @license + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *) + +long/umd/index.js: + (** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + *) +*/ + diff --git a/.netlify/functions-serve/data-handler/data-handler.js b/.netlify/functions-serve/data-handler/data-handler.js new file mode 100644 index 0000000..1bd85ff --- /dev/null +++ b/.netlify/functions-serve/data-handler/data-handler.js @@ -0,0 +1 @@ +module.exports = require('./netlify/functions/data-handler.js') \ No newline at end of file diff --git a/.netlify/functions-serve/data-handler/netlify/functions/data-handler.js b/.netlify/functions-serve/data-handler/netlify/functions/data-handler.js new file mode 100644 index 0000000..c1deff6 --- /dev/null +++ b/.netlify/functions-serve/data-handler/netlify/functions/data-handler.js @@ -0,0 +1,15243 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/webidl-conversions/lib/index.js +var require_lib = __commonJS({ + "node_modules/webidl-conversions/lib/index.js"(exports2, module2) { + "use strict"; + var conversions = {}; + module2.exports = conversions; + function sign(x) { + return x < 0 ? -1 : 1; + } + function evenRound(x) { + if (x % 1 === 0.5 && (x & 1) === 0) { + return Math.floor(x); + } else { + return Math.round(x); + } + } + function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); + const upperBound = Math.pow(2, bitLength) - 1; + const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); + const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); + return function(V, opts) { + if (!opts) opts = {}; + let x = +V; + if (opts.enforceRange) { + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite number"); + } + x = sign(x) * Math.floor(Math.abs(x)); + if (x < lowerBound || x > upperBound) { + throw new TypeError("Argument is not in byte range"); + } + return x; + } + if (!isNaN(x) && opts.clamp) { + x = evenRound(x); + if (x < lowerBound) x = lowerBound; + if (x > upperBound) x = upperBound; + return x; + } + if (!Number.isFinite(x) || x === 0) { + return 0; + } + x = sign(x) * Math.floor(Math.abs(x)); + x = x % moduloVal; + if (!typeOpts.unsigned && x >= moduloBound) { + return x - moduloVal; + } else if (typeOpts.unsigned) { + if (x < 0) { + x += moduloVal; + } else if (x === -0) { + return 0; + } + } + return x; + }; + } + conversions["void"] = function() { + return void 0; + }; + conversions["boolean"] = function(val) { + return !!val; + }; + conversions["byte"] = createNumberConversion(8, { unsigned: false }); + conversions["octet"] = createNumberConversion(8, { unsigned: true }); + conversions["short"] = createNumberConversion(16, { unsigned: false }); + conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); + conversions["long"] = createNumberConversion(32, { unsigned: false }); + conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); + conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); + conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); + conversions["double"] = function(V) { + const x = +V; + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite floating-point value"); + } + return x; + }; + conversions["unrestricted double"] = function(V) { + const x = +V; + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } + return x; + }; + conversions["float"] = conversions["double"]; + conversions["unrestricted float"] = conversions["unrestricted double"]; + conversions["DOMString"] = function(V, opts) { + if (!opts) opts = {}; + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } + return String(V); + }; + conversions["ByteString"] = function(V, opts) { + const x = String(V); + let c = void 0; + for (let i = 0; (c = x.codePointAt(i)) !== void 0; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } + return x; + }; + conversions["USVString"] = function(V) { + const S = String(V); + const n = S.length; + const U = []; + for (let i = 0; i < n; ++i) { + const c = S.charCodeAt(i); + if (c < 55296 || c > 57343) { + U.push(String.fromCodePoint(c)); + } else if (56320 <= c && c <= 57343) { + U.push(String.fromCodePoint(65533)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(65533)); + } else { + const d = S.charCodeAt(i + 1); + if (56320 <= d && d <= 57343) { + const a = c & 1023; + const b = d & 1023; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(65533)); + } + } + } + } + return U.join(""); + }; + conversions["Date"] = function(V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return void 0; + } + return V; + }; + conversions["RegExp"] = function(V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + return V; + }; + } +}); + +// node_modules/whatwg-url/lib/utils.js +var require_utils = __commonJS({ + "node_modules/whatwg-url/lib/utils.js"(exports2, module2) { + "use strict"; + module2.exports.mixin = function mixin(target, source) { + const keys = Object.getOwnPropertyNames(source); + for (let i = 0; i < keys.length; ++i) { + Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + } + }; + module2.exports.wrapperSymbol = Symbol("wrapper"); + module2.exports.implSymbol = Symbol("impl"); + module2.exports.wrapperForImpl = function(impl) { + return impl[module2.exports.wrapperSymbol]; + }; + module2.exports.implForWrapper = function(wrapper) { + return wrapper[module2.exports.implSymbol]; + }; + } +}); + +// node_modules/tr46/lib/mappingTable.json +var require_mappingTable = __commonJS({ + "node_modules/tr46/lib/mappingTable.json"(exports2, module2) { + module2.exports = [[[0, 44], "disallowed_STD3_valid"], [[45, 46], "valid"], [[47, 47], "disallowed_STD3_valid"], [[48, 57], "valid"], [[58, 64], "disallowed_STD3_valid"], [[65, 65], "mapped", [97]], [[66, 66], "mapped", [98]], [[67, 67], "mapped", [99]], [[68, 68], "mapped", [100]], [[69, 69], "mapped", [101]], [[70, 70], "mapped", [102]], [[71, 71], "mapped", [103]], [[72, 72], "mapped", [104]], [[73, 73], "mapped", [105]], [[74, 74], "mapped", [106]], [[75, 75], "mapped", [107]], [[76, 76], "mapped", [108]], [[77, 77], "mapped", [109]], [[78, 78], "mapped", [110]], [[79, 79], "mapped", [111]], [[80, 80], "mapped", [112]], [[81, 81], "mapped", [113]], [[82, 82], "mapped", [114]], [[83, 83], "mapped", [115]], [[84, 84], "mapped", [116]], [[85, 85], "mapped", [117]], [[86, 86], "mapped", [118]], [[87, 87], "mapped", [119]], [[88, 88], "mapped", [120]], [[89, 89], "mapped", [121]], [[90, 90], "mapped", [122]], [[91, 96], "disallowed_STD3_valid"], [[97, 122], "valid"], [[123, 127], "disallowed_STD3_valid"], [[128, 159], "disallowed"], [[160, 160], "disallowed_STD3_mapped", [32]], [[161, 167], "valid", [], "NV8"], [[168, 168], "disallowed_STD3_mapped", [32, 776]], [[169, 169], "valid", [], "NV8"], [[170, 170], "mapped", [97]], [[171, 172], "valid", [], "NV8"], [[173, 173], "ignored"], [[174, 174], "valid", [], "NV8"], [[175, 175], "disallowed_STD3_mapped", [32, 772]], [[176, 177], "valid", [], "NV8"], [[178, 178], "mapped", [50]], [[179, 179], "mapped", [51]], [[180, 180], "disallowed_STD3_mapped", [32, 769]], [[181, 181], "mapped", [956]], [[182, 182], "valid", [], "NV8"], [[183, 183], "valid"], [[184, 184], "disallowed_STD3_mapped", [32, 807]], [[185, 185], "mapped", [49]], [[186, 186], "mapped", [111]], [[187, 187], "valid", [], "NV8"], [[188, 188], "mapped", [49, 8260, 52]], [[189, 189], "mapped", [49, 8260, 50]], [[190, 190], "mapped", [51, 8260, 52]], [[191, 191], "valid", [], "NV8"], [[192, 192], "mapped", [224]], [[193, 193], "mapped", [225]], [[194, 194], "mapped", [226]], [[195, 195], "mapped", [227]], [[196, 196], "mapped", [228]], [[197, 197], "mapped", [229]], [[198, 198], "mapped", [230]], [[199, 199], "mapped", [231]], [[200, 200], "mapped", [232]], [[201, 201], "mapped", [233]], [[202, 202], "mapped", [234]], [[203, 203], "mapped", [235]], [[204, 204], "mapped", [236]], [[205, 205], "mapped", [237]], [[206, 206], "mapped", [238]], [[207, 207], "mapped", [239]], [[208, 208], "mapped", [240]], [[209, 209], "mapped", [241]], [[210, 210], "mapped", [242]], [[211, 211], "mapped", [243]], [[212, 212], "mapped", [244]], [[213, 213], "mapped", [245]], [[214, 214], "mapped", [246]], [[215, 215], "valid", [], "NV8"], [[216, 216], "mapped", [248]], [[217, 217], "mapped", [249]], [[218, 218], "mapped", [250]], [[219, 219], "mapped", [251]], [[220, 220], "mapped", [252]], [[221, 221], "mapped", [253]], [[222, 222], "mapped", [254]], [[223, 223], "deviation", [115, 115]], [[224, 246], "valid"], [[247, 247], "valid", [], "NV8"], [[248, 255], "valid"], [[256, 256], "mapped", [257]], [[257, 257], "valid"], [[258, 258], "mapped", [259]], [[259, 259], "valid"], [[260, 260], "mapped", [261]], [[261, 261], "valid"], [[262, 262], "mapped", [263]], [[263, 263], "valid"], [[264, 264], "mapped", [265]], [[265, 265], "valid"], [[266, 266], "mapped", [267]], [[267, 267], "valid"], [[268, 268], "mapped", [269]], [[269, 269], "valid"], [[270, 270], "mapped", [271]], [[271, 271], "valid"], [[272, 272], "mapped", [273]], [[273, 273], "valid"], [[274, 274], "mapped", [275]], [[275, 275], "valid"], [[276, 276], "mapped", [277]], [[277, 277], "valid"], [[278, 278], "mapped", [279]], [[279, 279], "valid"], [[280, 280], "mapped", [281]], [[281, 281], "valid"], [[282, 282], "mapped", [283]], [[283, 283], "valid"], [[284, 284], "mapped", [285]], [[285, 285], "valid"], [[286, 286], "mapped", [287]], [[287, 287], "valid"], [[288, 288], "mapped", [289]], [[289, 289], "valid"], [[290, 290], "mapped", [291]], [[291, 291], "valid"], [[292, 292], "mapped", [293]], [[293, 293], "valid"], [[294, 294], "mapped", [295]], [[295, 295], "valid"], [[296, 296], "mapped", [297]], [[297, 297], "valid"], [[298, 298], "mapped", [299]], [[299, 299], "valid"], [[300, 300], "mapped", [301]], [[301, 301], "valid"], [[302, 302], "mapped", [303]], [[303, 303], "valid"], [[304, 304], "mapped", [105, 775]], [[305, 305], "valid"], [[306, 307], "mapped", [105, 106]], [[308, 308], "mapped", [309]], [[309, 309], "valid"], [[310, 310], "mapped", [311]], [[311, 312], "valid"], [[313, 313], "mapped", [314]], [[314, 314], "valid"], [[315, 315], "mapped", [316]], [[316, 316], "valid"], [[317, 317], "mapped", [318]], [[318, 318], "valid"], [[319, 320], "mapped", [108, 183]], [[321, 321], "mapped", [322]], [[322, 322], "valid"], [[323, 323], "mapped", [324]], [[324, 324], "valid"], [[325, 325], "mapped", [326]], [[326, 326], "valid"], [[327, 327], "mapped", [328]], [[328, 328], "valid"], [[329, 329], "mapped", [700, 110]], [[330, 330], "mapped", [331]], [[331, 331], "valid"], [[332, 332], "mapped", [333]], [[333, 333], "valid"], [[334, 334], "mapped", [335]], [[335, 335], "valid"], [[336, 336], "mapped", [337]], [[337, 337], "valid"], [[338, 338], "mapped", [339]], [[339, 339], "valid"], [[340, 340], "mapped", [341]], [[341, 341], "valid"], [[342, 342], "mapped", [343]], [[343, 343], "valid"], [[344, 344], "mapped", [345]], [[345, 345], "valid"], [[346, 346], "mapped", [347]], [[347, 347], "valid"], [[348, 348], "mapped", [349]], [[349, 349], "valid"], [[350, 350], "mapped", [351]], [[351, 351], "valid"], [[352, 352], "mapped", [353]], [[353, 353], "valid"], [[354, 354], "mapped", [355]], [[355, 355], "valid"], [[356, 356], "mapped", [357]], [[357, 357], "valid"], [[358, 358], "mapped", [359]], [[359, 359], "valid"], [[360, 360], "mapped", [361]], [[361, 361], "valid"], [[362, 362], "mapped", [363]], [[363, 363], "valid"], [[364, 364], "mapped", [365]], [[365, 365], "valid"], [[366, 366], "mapped", [367]], [[367, 367], "valid"], [[368, 368], "mapped", [369]], [[369, 369], "valid"], [[370, 370], "mapped", [371]], [[371, 371], "valid"], [[372, 372], "mapped", [373]], [[373, 373], "valid"], [[374, 374], "mapped", [375]], [[375, 375], "valid"], [[376, 376], "mapped", [255]], [[377, 377], "mapped", [378]], [[378, 378], "valid"], [[379, 379], "mapped", [380]], [[380, 380], "valid"], [[381, 381], "mapped", [382]], [[382, 382], "valid"], [[383, 383], "mapped", [115]], [[384, 384], "valid"], [[385, 385], "mapped", [595]], [[386, 386], "mapped", [387]], [[387, 387], "valid"], [[388, 388], "mapped", [389]], [[389, 389], "valid"], [[390, 390], "mapped", [596]], [[391, 391], "mapped", [392]], [[392, 392], "valid"], [[393, 393], "mapped", [598]], [[394, 394], "mapped", [599]], [[395, 395], "mapped", [396]], [[396, 397], "valid"], [[398, 398], "mapped", [477]], [[399, 399], "mapped", [601]], [[400, 400], "mapped", [603]], [[401, 401], "mapped", [402]], [[402, 402], "valid"], [[403, 403], "mapped", [608]], [[404, 404], "mapped", [611]], [[405, 405], "valid"], [[406, 406], "mapped", [617]], [[407, 407], "mapped", [616]], [[408, 408], "mapped", [409]], [[409, 411], "valid"], [[412, 412], "mapped", [623]], [[413, 413], "mapped", [626]], [[414, 414], "valid"], [[415, 415], "mapped", [629]], [[416, 416], "mapped", [417]], [[417, 417], "valid"], [[418, 418], "mapped", [419]], [[419, 419], "valid"], [[420, 420], "mapped", [421]], [[421, 421], "valid"], [[422, 422], "mapped", [640]], [[423, 423], "mapped", [424]], [[424, 424], "valid"], [[425, 425], "mapped", [643]], [[426, 427], "valid"], [[428, 428], "mapped", [429]], [[429, 429], "valid"], [[430, 430], "mapped", [648]], [[431, 431], "mapped", [432]], [[432, 432], "valid"], [[433, 433], "mapped", [650]], [[434, 434], "mapped", [651]], [[435, 435], "mapped", [436]], [[436, 436], "valid"], [[437, 437], "mapped", [438]], [[438, 438], "valid"], [[439, 439], "mapped", [658]], [[440, 440], "mapped", [441]], [[441, 443], "valid"], [[444, 444], "mapped", [445]], [[445, 451], "valid"], [[452, 454], "mapped", [100, 382]], [[455, 457], "mapped", [108, 106]], [[458, 460], "mapped", [110, 106]], [[461, 461], "mapped", [462]], [[462, 462], "valid"], [[463, 463], "mapped", [464]], [[464, 464], "valid"], [[465, 465], "mapped", [466]], [[466, 466], "valid"], [[467, 467], "mapped", [468]], [[468, 468], "valid"], [[469, 469], "mapped", [470]], [[470, 470], "valid"], [[471, 471], "mapped", [472]], [[472, 472], "valid"], [[473, 473], "mapped", [474]], [[474, 474], "valid"], [[475, 475], "mapped", [476]], [[476, 477], "valid"], [[478, 478], "mapped", [479]], [[479, 479], "valid"], [[480, 480], "mapped", [481]], [[481, 481], "valid"], [[482, 482], "mapped", [483]], [[483, 483], "valid"], [[484, 484], "mapped", [485]], [[485, 485], "valid"], [[486, 486], "mapped", [487]], [[487, 487], "valid"], [[488, 488], "mapped", [489]], [[489, 489], "valid"], [[490, 490], "mapped", [491]], [[491, 491], "valid"], [[492, 492], "mapped", [493]], [[493, 493], "valid"], [[494, 494], "mapped", [495]], [[495, 496], "valid"], [[497, 499], "mapped", [100, 122]], [[500, 500], "mapped", [501]], [[501, 501], "valid"], [[502, 502], "mapped", [405]], [[503, 503], "mapped", [447]], [[504, 504], "mapped", [505]], [[505, 505], "valid"], [[506, 506], "mapped", [507]], [[507, 507], "valid"], [[508, 508], "mapped", [509]], [[509, 509], "valid"], [[510, 510], "mapped", [511]], [[511, 511], "valid"], [[512, 512], "mapped", [513]], [[513, 513], "valid"], [[514, 514], "mapped", [515]], [[515, 515], "valid"], [[516, 516], "mapped", [517]], [[517, 517], "valid"], [[518, 518], "mapped", [519]], [[519, 519], "valid"], [[520, 520], "mapped", [521]], [[521, 521], "valid"], [[522, 522], "mapped", [523]], [[523, 523], "valid"], [[524, 524], "mapped", [525]], [[525, 525], "valid"], [[526, 526], "mapped", [527]], [[527, 527], "valid"], [[528, 528], "mapped", [529]], [[529, 529], "valid"], [[530, 530], "mapped", [531]], [[531, 531], "valid"], [[532, 532], "mapped", [533]], [[533, 533], "valid"], [[534, 534], "mapped", [535]], [[535, 535], "valid"], [[536, 536], "mapped", [537]], [[537, 537], "valid"], [[538, 538], "mapped", [539]], [[539, 539], "valid"], [[540, 540], "mapped", [541]], [[541, 541], "valid"], [[542, 542], "mapped", [543]], [[543, 543], "valid"], [[544, 544], "mapped", [414]], [[545, 545], "valid"], [[546, 546], "mapped", [547]], [[547, 547], "valid"], [[548, 548], "mapped", [549]], [[549, 549], "valid"], [[550, 550], "mapped", [551]], [[551, 551], "valid"], [[552, 552], "mapped", [553]], [[553, 553], "valid"], [[554, 554], "mapped", [555]], [[555, 555], "valid"], [[556, 556], "mapped", [557]], [[557, 557], "valid"], [[558, 558], "mapped", [559]], [[559, 559], "valid"], [[560, 560], "mapped", [561]], [[561, 561], "valid"], [[562, 562], "mapped", [563]], [[563, 563], "valid"], [[564, 566], "valid"], [[567, 569], "valid"], [[570, 570], "mapped", [11365]], [[571, 571], "mapped", [572]], [[572, 572], "valid"], [[573, 573], "mapped", [410]], [[574, 574], "mapped", [11366]], [[575, 576], "valid"], [[577, 577], "mapped", [578]], [[578, 578], "valid"], [[579, 579], "mapped", [384]], [[580, 580], "mapped", [649]], [[581, 581], "mapped", [652]], [[582, 582], "mapped", [583]], [[583, 583], "valid"], [[584, 584], "mapped", [585]], [[585, 585], "valid"], [[586, 586], "mapped", [587]], [[587, 587], "valid"], [[588, 588], "mapped", [589]], [[589, 589], "valid"], [[590, 590], "mapped", [591]], [[591, 591], "valid"], [[592, 680], "valid"], [[681, 685], "valid"], [[686, 687], "valid"], [[688, 688], "mapped", [104]], [[689, 689], "mapped", [614]], [[690, 690], "mapped", [106]], [[691, 691], "mapped", [114]], [[692, 692], "mapped", [633]], [[693, 693], "mapped", [635]], [[694, 694], "mapped", [641]], [[695, 695], "mapped", [119]], [[696, 696], "mapped", [121]], [[697, 705], "valid"], [[706, 709], "valid", [], "NV8"], [[710, 721], "valid"], [[722, 727], "valid", [], "NV8"], [[728, 728], "disallowed_STD3_mapped", [32, 774]], [[729, 729], "disallowed_STD3_mapped", [32, 775]], [[730, 730], "disallowed_STD3_mapped", [32, 778]], [[731, 731], "disallowed_STD3_mapped", [32, 808]], [[732, 732], "disallowed_STD3_mapped", [32, 771]], [[733, 733], "disallowed_STD3_mapped", [32, 779]], [[734, 734], "valid", [], "NV8"], [[735, 735], "valid", [], "NV8"], [[736, 736], "mapped", [611]], [[737, 737], "mapped", [108]], [[738, 738], "mapped", [115]], [[739, 739], "mapped", [120]], [[740, 740], "mapped", [661]], [[741, 745], "valid", [], "NV8"], [[746, 747], "valid", [], "NV8"], [[748, 748], "valid"], [[749, 749], "valid", [], "NV8"], [[750, 750], "valid"], [[751, 767], "valid", [], "NV8"], [[768, 831], "valid"], [[832, 832], "mapped", [768]], [[833, 833], "mapped", [769]], [[834, 834], "valid"], [[835, 835], "mapped", [787]], [[836, 836], "mapped", [776, 769]], [[837, 837], "mapped", [953]], [[838, 846], "valid"], [[847, 847], "ignored"], [[848, 855], "valid"], [[856, 860], "valid"], [[861, 863], "valid"], [[864, 865], "valid"], [[866, 866], "valid"], [[867, 879], "valid"], [[880, 880], "mapped", [881]], [[881, 881], "valid"], [[882, 882], "mapped", [883]], [[883, 883], "valid"], [[884, 884], "mapped", [697]], [[885, 885], "valid"], [[886, 886], "mapped", [887]], [[887, 887], "valid"], [[888, 889], "disallowed"], [[890, 890], "disallowed_STD3_mapped", [32, 953]], [[891, 893], "valid"], [[894, 894], "disallowed_STD3_mapped", [59]], [[895, 895], "mapped", [1011]], [[896, 899], "disallowed"], [[900, 900], "disallowed_STD3_mapped", [32, 769]], [[901, 901], "disallowed_STD3_mapped", [32, 776, 769]], [[902, 902], "mapped", [940]], [[903, 903], "mapped", [183]], [[904, 904], "mapped", [941]], [[905, 905], "mapped", [942]], [[906, 906], "mapped", [943]], [[907, 907], "disallowed"], [[908, 908], "mapped", [972]], [[909, 909], "disallowed"], [[910, 910], "mapped", [973]], [[911, 911], "mapped", [974]], [[912, 912], "valid"], [[913, 913], "mapped", [945]], [[914, 914], "mapped", [946]], [[915, 915], "mapped", [947]], [[916, 916], "mapped", [948]], [[917, 917], "mapped", [949]], [[918, 918], "mapped", [950]], [[919, 919], "mapped", [951]], [[920, 920], "mapped", [952]], [[921, 921], "mapped", [953]], [[922, 922], "mapped", [954]], [[923, 923], "mapped", [955]], [[924, 924], "mapped", [956]], [[925, 925], "mapped", [957]], [[926, 926], "mapped", [958]], [[927, 927], "mapped", [959]], [[928, 928], "mapped", [960]], [[929, 929], "mapped", [961]], [[930, 930], "disallowed"], [[931, 931], "mapped", [963]], [[932, 932], "mapped", [964]], [[933, 933], "mapped", [965]], [[934, 934], "mapped", [966]], [[935, 935], "mapped", [967]], [[936, 936], "mapped", [968]], [[937, 937], "mapped", [969]], [[938, 938], "mapped", [970]], [[939, 939], "mapped", [971]], [[940, 961], "valid"], [[962, 962], "deviation", [963]], [[963, 974], "valid"], [[975, 975], "mapped", [983]], [[976, 976], "mapped", [946]], [[977, 977], "mapped", [952]], [[978, 978], "mapped", [965]], [[979, 979], "mapped", [973]], [[980, 980], "mapped", [971]], [[981, 981], "mapped", [966]], [[982, 982], "mapped", [960]], [[983, 983], "valid"], [[984, 984], "mapped", [985]], [[985, 985], "valid"], [[986, 986], "mapped", [987]], [[987, 987], "valid"], [[988, 988], "mapped", [989]], [[989, 989], "valid"], [[990, 990], "mapped", [991]], [[991, 991], "valid"], [[992, 992], "mapped", [993]], [[993, 993], "valid"], [[994, 994], "mapped", [995]], [[995, 995], "valid"], [[996, 996], "mapped", [997]], [[997, 997], "valid"], [[998, 998], "mapped", [999]], [[999, 999], "valid"], [[1e3, 1e3], "mapped", [1001]], [[1001, 1001], "valid"], [[1002, 1002], "mapped", [1003]], [[1003, 1003], "valid"], [[1004, 1004], "mapped", [1005]], [[1005, 1005], "valid"], [[1006, 1006], "mapped", [1007]], [[1007, 1007], "valid"], [[1008, 1008], "mapped", [954]], [[1009, 1009], "mapped", [961]], [[1010, 1010], "mapped", [963]], [[1011, 1011], "valid"], [[1012, 1012], "mapped", [952]], [[1013, 1013], "mapped", [949]], [[1014, 1014], "valid", [], "NV8"], [[1015, 1015], "mapped", [1016]], [[1016, 1016], "valid"], [[1017, 1017], "mapped", [963]], [[1018, 1018], "mapped", [1019]], [[1019, 1019], "valid"], [[1020, 1020], "valid"], [[1021, 1021], "mapped", [891]], [[1022, 1022], "mapped", [892]], [[1023, 1023], "mapped", [893]], [[1024, 1024], "mapped", [1104]], [[1025, 1025], "mapped", [1105]], [[1026, 1026], "mapped", [1106]], [[1027, 1027], "mapped", [1107]], [[1028, 1028], "mapped", [1108]], [[1029, 1029], "mapped", [1109]], [[1030, 1030], "mapped", [1110]], [[1031, 1031], "mapped", [1111]], [[1032, 1032], "mapped", [1112]], [[1033, 1033], "mapped", [1113]], [[1034, 1034], "mapped", [1114]], [[1035, 1035], "mapped", [1115]], [[1036, 1036], "mapped", [1116]], [[1037, 1037], "mapped", [1117]], [[1038, 1038], "mapped", [1118]], [[1039, 1039], "mapped", [1119]], [[1040, 1040], "mapped", [1072]], [[1041, 1041], "mapped", [1073]], [[1042, 1042], "mapped", [1074]], [[1043, 1043], "mapped", [1075]], [[1044, 1044], "mapped", [1076]], [[1045, 1045], "mapped", [1077]], [[1046, 1046], "mapped", [1078]], [[1047, 1047], "mapped", [1079]], [[1048, 1048], "mapped", [1080]], [[1049, 1049], "mapped", [1081]], [[1050, 1050], "mapped", [1082]], [[1051, 1051], "mapped", [1083]], [[1052, 1052], "mapped", [1084]], [[1053, 1053], "mapped", [1085]], [[1054, 1054], "mapped", [1086]], [[1055, 1055], "mapped", [1087]], [[1056, 1056], "mapped", [1088]], [[1057, 1057], "mapped", [1089]], [[1058, 1058], "mapped", [1090]], [[1059, 1059], "mapped", [1091]], [[1060, 1060], "mapped", [1092]], [[1061, 1061], "mapped", [1093]], [[1062, 1062], "mapped", [1094]], [[1063, 1063], "mapped", [1095]], [[1064, 1064], "mapped", [1096]], [[1065, 1065], "mapped", [1097]], [[1066, 1066], "mapped", [1098]], [[1067, 1067], "mapped", [1099]], [[1068, 1068], "mapped", [1100]], [[1069, 1069], "mapped", [1101]], [[1070, 1070], "mapped", [1102]], [[1071, 1071], "mapped", [1103]], [[1072, 1103], "valid"], [[1104, 1104], "valid"], [[1105, 1116], "valid"], [[1117, 1117], "valid"], [[1118, 1119], "valid"], [[1120, 1120], "mapped", [1121]], [[1121, 1121], "valid"], [[1122, 1122], "mapped", [1123]], [[1123, 1123], "valid"], [[1124, 1124], "mapped", [1125]], [[1125, 1125], "valid"], [[1126, 1126], "mapped", [1127]], [[1127, 1127], "valid"], [[1128, 1128], "mapped", [1129]], [[1129, 1129], "valid"], [[1130, 1130], "mapped", [1131]], [[1131, 1131], "valid"], [[1132, 1132], "mapped", [1133]], [[1133, 1133], "valid"], [[1134, 1134], "mapped", [1135]], [[1135, 1135], "valid"], [[1136, 1136], "mapped", [1137]], [[1137, 1137], "valid"], [[1138, 1138], "mapped", [1139]], [[1139, 1139], "valid"], [[1140, 1140], "mapped", [1141]], [[1141, 1141], "valid"], [[1142, 1142], "mapped", [1143]], [[1143, 1143], "valid"], [[1144, 1144], "mapped", [1145]], [[1145, 1145], "valid"], [[1146, 1146], "mapped", [1147]], [[1147, 1147], "valid"], [[1148, 1148], "mapped", [1149]], [[1149, 1149], "valid"], [[1150, 1150], "mapped", [1151]], [[1151, 1151], "valid"], [[1152, 1152], "mapped", [1153]], [[1153, 1153], "valid"], [[1154, 1154], "valid", [], "NV8"], [[1155, 1158], "valid"], [[1159, 1159], "valid"], [[1160, 1161], "valid", [], "NV8"], [[1162, 1162], "mapped", [1163]], [[1163, 1163], "valid"], [[1164, 1164], "mapped", [1165]], [[1165, 1165], "valid"], [[1166, 1166], "mapped", [1167]], [[1167, 1167], "valid"], [[1168, 1168], "mapped", [1169]], [[1169, 1169], "valid"], [[1170, 1170], "mapped", [1171]], [[1171, 1171], "valid"], [[1172, 1172], "mapped", [1173]], [[1173, 1173], "valid"], [[1174, 1174], "mapped", [1175]], [[1175, 1175], "valid"], [[1176, 1176], "mapped", [1177]], [[1177, 1177], "valid"], [[1178, 1178], "mapped", [1179]], [[1179, 1179], "valid"], [[1180, 1180], "mapped", [1181]], [[1181, 1181], "valid"], [[1182, 1182], "mapped", [1183]], [[1183, 1183], "valid"], [[1184, 1184], "mapped", [1185]], [[1185, 1185], "valid"], [[1186, 1186], "mapped", [1187]], [[1187, 1187], "valid"], [[1188, 1188], "mapped", [1189]], [[1189, 1189], "valid"], [[1190, 1190], "mapped", [1191]], [[1191, 1191], "valid"], [[1192, 1192], "mapped", [1193]], [[1193, 1193], "valid"], [[1194, 1194], "mapped", [1195]], [[1195, 1195], "valid"], [[1196, 1196], "mapped", [1197]], [[1197, 1197], "valid"], [[1198, 1198], "mapped", [1199]], [[1199, 1199], "valid"], [[1200, 1200], "mapped", [1201]], [[1201, 1201], "valid"], [[1202, 1202], "mapped", [1203]], [[1203, 1203], "valid"], [[1204, 1204], "mapped", [1205]], [[1205, 1205], "valid"], [[1206, 1206], "mapped", [1207]], [[1207, 1207], "valid"], [[1208, 1208], "mapped", [1209]], [[1209, 1209], "valid"], [[1210, 1210], "mapped", [1211]], [[1211, 1211], "valid"], [[1212, 1212], "mapped", [1213]], [[1213, 1213], "valid"], [[1214, 1214], "mapped", [1215]], [[1215, 1215], "valid"], [[1216, 1216], "disallowed"], [[1217, 1217], "mapped", [1218]], [[1218, 1218], "valid"], [[1219, 1219], "mapped", [1220]], [[1220, 1220], "valid"], [[1221, 1221], "mapped", [1222]], [[1222, 1222], "valid"], [[1223, 1223], "mapped", [1224]], [[1224, 1224], "valid"], [[1225, 1225], "mapped", [1226]], [[1226, 1226], "valid"], [[1227, 1227], "mapped", [1228]], [[1228, 1228], "valid"], [[1229, 1229], "mapped", [1230]], [[1230, 1230], "valid"], [[1231, 1231], "valid"], [[1232, 1232], "mapped", [1233]], [[1233, 1233], "valid"], [[1234, 1234], "mapped", [1235]], [[1235, 1235], "valid"], [[1236, 1236], "mapped", [1237]], [[1237, 1237], "valid"], [[1238, 1238], "mapped", [1239]], [[1239, 1239], "valid"], [[1240, 1240], "mapped", [1241]], [[1241, 1241], "valid"], [[1242, 1242], "mapped", [1243]], [[1243, 1243], "valid"], [[1244, 1244], "mapped", [1245]], [[1245, 1245], "valid"], [[1246, 1246], "mapped", [1247]], [[1247, 1247], "valid"], [[1248, 1248], "mapped", [1249]], [[1249, 1249], "valid"], [[1250, 1250], "mapped", [1251]], [[1251, 1251], "valid"], [[1252, 1252], "mapped", [1253]], [[1253, 1253], "valid"], [[1254, 1254], "mapped", [1255]], [[1255, 1255], "valid"], [[1256, 1256], "mapped", [1257]], [[1257, 1257], "valid"], [[1258, 1258], "mapped", [1259]], [[1259, 1259], "valid"], [[1260, 1260], "mapped", [1261]], [[1261, 1261], "valid"], [[1262, 1262], "mapped", [1263]], [[1263, 1263], "valid"], [[1264, 1264], "mapped", [1265]], [[1265, 1265], "valid"], [[1266, 1266], "mapped", [1267]], [[1267, 1267], "valid"], [[1268, 1268], "mapped", [1269]], [[1269, 1269], "valid"], [[1270, 1270], "mapped", [1271]], [[1271, 1271], "valid"], [[1272, 1272], "mapped", [1273]], [[1273, 1273], "valid"], [[1274, 1274], "mapped", [1275]], [[1275, 1275], "valid"], [[1276, 1276], "mapped", [1277]], [[1277, 1277], "valid"], [[1278, 1278], "mapped", [1279]], [[1279, 1279], "valid"], [[1280, 1280], "mapped", [1281]], [[1281, 1281], "valid"], [[1282, 1282], "mapped", [1283]], [[1283, 1283], "valid"], [[1284, 1284], "mapped", [1285]], [[1285, 1285], "valid"], [[1286, 1286], "mapped", [1287]], [[1287, 1287], "valid"], [[1288, 1288], "mapped", [1289]], [[1289, 1289], "valid"], [[1290, 1290], "mapped", [1291]], [[1291, 1291], "valid"], [[1292, 1292], "mapped", [1293]], [[1293, 1293], "valid"], [[1294, 1294], "mapped", [1295]], [[1295, 1295], "valid"], [[1296, 1296], "mapped", [1297]], [[1297, 1297], "valid"], [[1298, 1298], "mapped", [1299]], [[1299, 1299], "valid"], [[1300, 1300], "mapped", [1301]], [[1301, 1301], "valid"], [[1302, 1302], "mapped", [1303]], [[1303, 1303], "valid"], [[1304, 1304], "mapped", [1305]], [[1305, 1305], "valid"], [[1306, 1306], "mapped", [1307]], [[1307, 1307], "valid"], [[1308, 1308], "mapped", [1309]], [[1309, 1309], "valid"], [[1310, 1310], "mapped", [1311]], [[1311, 1311], "valid"], [[1312, 1312], "mapped", [1313]], [[1313, 1313], "valid"], [[1314, 1314], "mapped", [1315]], [[1315, 1315], "valid"], [[1316, 1316], "mapped", [1317]], [[1317, 1317], "valid"], [[1318, 1318], "mapped", [1319]], [[1319, 1319], "valid"], [[1320, 1320], "mapped", [1321]], [[1321, 1321], "valid"], [[1322, 1322], "mapped", [1323]], [[1323, 1323], "valid"], [[1324, 1324], "mapped", [1325]], [[1325, 1325], "valid"], [[1326, 1326], "mapped", [1327]], [[1327, 1327], "valid"], [[1328, 1328], "disallowed"], [[1329, 1329], "mapped", [1377]], [[1330, 1330], "mapped", [1378]], [[1331, 1331], "mapped", [1379]], [[1332, 1332], "mapped", [1380]], [[1333, 1333], "mapped", [1381]], [[1334, 1334], "mapped", [1382]], [[1335, 1335], "mapped", [1383]], [[1336, 1336], "mapped", [1384]], [[1337, 1337], "mapped", [1385]], [[1338, 1338], "mapped", [1386]], [[1339, 1339], "mapped", [1387]], [[1340, 1340], "mapped", [1388]], [[1341, 1341], "mapped", [1389]], [[1342, 1342], "mapped", [1390]], [[1343, 1343], "mapped", [1391]], [[1344, 1344], "mapped", [1392]], [[1345, 1345], "mapped", [1393]], [[1346, 1346], "mapped", [1394]], [[1347, 1347], "mapped", [1395]], [[1348, 1348], "mapped", [1396]], [[1349, 1349], "mapped", [1397]], [[1350, 1350], "mapped", [1398]], [[1351, 1351], "mapped", [1399]], [[1352, 1352], "mapped", [1400]], [[1353, 1353], "mapped", [1401]], [[1354, 1354], "mapped", [1402]], [[1355, 1355], "mapped", [1403]], [[1356, 1356], "mapped", [1404]], [[1357, 1357], "mapped", [1405]], [[1358, 1358], "mapped", [1406]], [[1359, 1359], "mapped", [1407]], [[1360, 1360], "mapped", [1408]], [[1361, 1361], "mapped", [1409]], [[1362, 1362], "mapped", [1410]], [[1363, 1363], "mapped", [1411]], [[1364, 1364], "mapped", [1412]], [[1365, 1365], "mapped", [1413]], [[1366, 1366], "mapped", [1414]], [[1367, 1368], "disallowed"], [[1369, 1369], "valid"], [[1370, 1375], "valid", [], "NV8"], [[1376, 1376], "disallowed"], [[1377, 1414], "valid"], [[1415, 1415], "mapped", [1381, 1410]], [[1416, 1416], "disallowed"], [[1417, 1417], "valid", [], "NV8"], [[1418, 1418], "valid", [], "NV8"], [[1419, 1420], "disallowed"], [[1421, 1422], "valid", [], "NV8"], [[1423, 1423], "valid", [], "NV8"], [[1424, 1424], "disallowed"], [[1425, 1441], "valid"], [[1442, 1442], "valid"], [[1443, 1455], "valid"], [[1456, 1465], "valid"], [[1466, 1466], "valid"], [[1467, 1469], "valid"], [[1470, 1470], "valid", [], "NV8"], [[1471, 1471], "valid"], [[1472, 1472], "valid", [], "NV8"], [[1473, 1474], "valid"], [[1475, 1475], "valid", [], "NV8"], [[1476, 1476], "valid"], [[1477, 1477], "valid"], [[1478, 1478], "valid", [], "NV8"], [[1479, 1479], "valid"], [[1480, 1487], "disallowed"], [[1488, 1514], "valid"], [[1515, 1519], "disallowed"], [[1520, 1524], "valid"], [[1525, 1535], "disallowed"], [[1536, 1539], "disallowed"], [[1540, 1540], "disallowed"], [[1541, 1541], "disallowed"], [[1542, 1546], "valid", [], "NV8"], [[1547, 1547], "valid", [], "NV8"], [[1548, 1548], "valid", [], "NV8"], [[1549, 1551], "valid", [], "NV8"], [[1552, 1557], "valid"], [[1558, 1562], "valid"], [[1563, 1563], "valid", [], "NV8"], [[1564, 1564], "disallowed"], [[1565, 1565], "disallowed"], [[1566, 1566], "valid", [], "NV8"], [[1567, 1567], "valid", [], "NV8"], [[1568, 1568], "valid"], [[1569, 1594], "valid"], [[1595, 1599], "valid"], [[1600, 1600], "valid", [], "NV8"], [[1601, 1618], "valid"], [[1619, 1621], "valid"], [[1622, 1624], "valid"], [[1625, 1630], "valid"], [[1631, 1631], "valid"], [[1632, 1641], "valid"], [[1642, 1645], "valid", [], "NV8"], [[1646, 1647], "valid"], [[1648, 1652], "valid"], [[1653, 1653], "mapped", [1575, 1652]], [[1654, 1654], "mapped", [1608, 1652]], [[1655, 1655], "mapped", [1735, 1652]], [[1656, 1656], "mapped", [1610, 1652]], [[1657, 1719], "valid"], [[1720, 1721], "valid"], [[1722, 1726], "valid"], [[1727, 1727], "valid"], [[1728, 1742], "valid"], [[1743, 1743], "valid"], [[1744, 1747], "valid"], [[1748, 1748], "valid", [], "NV8"], [[1749, 1756], "valid"], [[1757, 1757], "disallowed"], [[1758, 1758], "valid", [], "NV8"], [[1759, 1768], "valid"], [[1769, 1769], "valid", [], "NV8"], [[1770, 1773], "valid"], [[1774, 1775], "valid"], [[1776, 1785], "valid"], [[1786, 1790], "valid"], [[1791, 1791], "valid"], [[1792, 1805], "valid", [], "NV8"], [[1806, 1806], "disallowed"], [[1807, 1807], "disallowed"], [[1808, 1836], "valid"], [[1837, 1839], "valid"], [[1840, 1866], "valid"], [[1867, 1868], "disallowed"], [[1869, 1871], "valid"], [[1872, 1901], "valid"], [[1902, 1919], "valid"], [[1920, 1968], "valid"], [[1969, 1969], "valid"], [[1970, 1983], "disallowed"], [[1984, 2037], "valid"], [[2038, 2042], "valid", [], "NV8"], [[2043, 2047], "disallowed"], [[2048, 2093], "valid"], [[2094, 2095], "disallowed"], [[2096, 2110], "valid", [], "NV8"], [[2111, 2111], "disallowed"], [[2112, 2139], "valid"], [[2140, 2141], "disallowed"], [[2142, 2142], "valid", [], "NV8"], [[2143, 2207], "disallowed"], [[2208, 2208], "valid"], [[2209, 2209], "valid"], [[2210, 2220], "valid"], [[2221, 2226], "valid"], [[2227, 2228], "valid"], [[2229, 2274], "disallowed"], [[2275, 2275], "valid"], [[2276, 2302], "valid"], [[2303, 2303], "valid"], [[2304, 2304], "valid"], [[2305, 2307], "valid"], [[2308, 2308], "valid"], [[2309, 2361], "valid"], [[2362, 2363], "valid"], [[2364, 2381], "valid"], [[2382, 2382], "valid"], [[2383, 2383], "valid"], [[2384, 2388], "valid"], [[2389, 2389], "valid"], [[2390, 2391], "valid"], [[2392, 2392], "mapped", [2325, 2364]], [[2393, 2393], "mapped", [2326, 2364]], [[2394, 2394], "mapped", [2327, 2364]], [[2395, 2395], "mapped", [2332, 2364]], [[2396, 2396], "mapped", [2337, 2364]], [[2397, 2397], "mapped", [2338, 2364]], [[2398, 2398], "mapped", [2347, 2364]], [[2399, 2399], "mapped", [2351, 2364]], [[2400, 2403], "valid"], [[2404, 2405], "valid", [], "NV8"], [[2406, 2415], "valid"], [[2416, 2416], "valid", [], "NV8"], [[2417, 2418], "valid"], [[2419, 2423], "valid"], [[2424, 2424], "valid"], [[2425, 2426], "valid"], [[2427, 2428], "valid"], [[2429, 2429], "valid"], [[2430, 2431], "valid"], [[2432, 2432], "valid"], [[2433, 2435], "valid"], [[2436, 2436], "disallowed"], [[2437, 2444], "valid"], [[2445, 2446], "disallowed"], [[2447, 2448], "valid"], [[2449, 2450], "disallowed"], [[2451, 2472], "valid"], [[2473, 2473], "disallowed"], [[2474, 2480], "valid"], [[2481, 2481], "disallowed"], [[2482, 2482], "valid"], [[2483, 2485], "disallowed"], [[2486, 2489], "valid"], [[2490, 2491], "disallowed"], [[2492, 2492], "valid"], [[2493, 2493], "valid"], [[2494, 2500], "valid"], [[2501, 2502], "disallowed"], [[2503, 2504], "valid"], [[2505, 2506], "disallowed"], [[2507, 2509], "valid"], [[2510, 2510], "valid"], [[2511, 2518], "disallowed"], [[2519, 2519], "valid"], [[2520, 2523], "disallowed"], [[2524, 2524], "mapped", [2465, 2492]], [[2525, 2525], "mapped", [2466, 2492]], [[2526, 2526], "disallowed"], [[2527, 2527], "mapped", [2479, 2492]], [[2528, 2531], "valid"], [[2532, 2533], "disallowed"], [[2534, 2545], "valid"], [[2546, 2554], "valid", [], "NV8"], [[2555, 2555], "valid", [], "NV8"], [[2556, 2560], "disallowed"], [[2561, 2561], "valid"], [[2562, 2562], "valid"], [[2563, 2563], "valid"], [[2564, 2564], "disallowed"], [[2565, 2570], "valid"], [[2571, 2574], "disallowed"], [[2575, 2576], "valid"], [[2577, 2578], "disallowed"], [[2579, 2600], "valid"], [[2601, 2601], "disallowed"], [[2602, 2608], "valid"], [[2609, 2609], "disallowed"], [[2610, 2610], "valid"], [[2611, 2611], "mapped", [2610, 2620]], [[2612, 2612], "disallowed"], [[2613, 2613], "valid"], [[2614, 2614], "mapped", [2616, 2620]], [[2615, 2615], "disallowed"], [[2616, 2617], "valid"], [[2618, 2619], "disallowed"], [[2620, 2620], "valid"], [[2621, 2621], "disallowed"], [[2622, 2626], "valid"], [[2627, 2630], "disallowed"], [[2631, 2632], "valid"], [[2633, 2634], "disallowed"], [[2635, 2637], "valid"], [[2638, 2640], "disallowed"], [[2641, 2641], "valid"], [[2642, 2648], "disallowed"], [[2649, 2649], "mapped", [2582, 2620]], [[2650, 2650], "mapped", [2583, 2620]], [[2651, 2651], "mapped", [2588, 2620]], [[2652, 2652], "valid"], [[2653, 2653], "disallowed"], [[2654, 2654], "mapped", [2603, 2620]], [[2655, 2661], "disallowed"], [[2662, 2676], "valid"], [[2677, 2677], "valid"], [[2678, 2688], "disallowed"], [[2689, 2691], "valid"], [[2692, 2692], "disallowed"], [[2693, 2699], "valid"], [[2700, 2700], "valid"], [[2701, 2701], "valid"], [[2702, 2702], "disallowed"], [[2703, 2705], "valid"], [[2706, 2706], "disallowed"], [[2707, 2728], "valid"], [[2729, 2729], "disallowed"], [[2730, 2736], "valid"], [[2737, 2737], "disallowed"], [[2738, 2739], "valid"], [[2740, 2740], "disallowed"], [[2741, 2745], "valid"], [[2746, 2747], "disallowed"], [[2748, 2757], "valid"], [[2758, 2758], "disallowed"], [[2759, 2761], "valid"], [[2762, 2762], "disallowed"], [[2763, 2765], "valid"], [[2766, 2767], "disallowed"], [[2768, 2768], "valid"], [[2769, 2783], "disallowed"], [[2784, 2784], "valid"], [[2785, 2787], "valid"], [[2788, 2789], "disallowed"], [[2790, 2799], "valid"], [[2800, 2800], "valid", [], "NV8"], [[2801, 2801], "valid", [], "NV8"], [[2802, 2808], "disallowed"], [[2809, 2809], "valid"], [[2810, 2816], "disallowed"], [[2817, 2819], "valid"], [[2820, 2820], "disallowed"], [[2821, 2828], "valid"], [[2829, 2830], "disallowed"], [[2831, 2832], "valid"], [[2833, 2834], "disallowed"], [[2835, 2856], "valid"], [[2857, 2857], "disallowed"], [[2858, 2864], "valid"], [[2865, 2865], "disallowed"], [[2866, 2867], "valid"], [[2868, 2868], "disallowed"], [[2869, 2869], "valid"], [[2870, 2873], "valid"], [[2874, 2875], "disallowed"], [[2876, 2883], "valid"], [[2884, 2884], "valid"], [[2885, 2886], "disallowed"], [[2887, 2888], "valid"], [[2889, 2890], "disallowed"], [[2891, 2893], "valid"], [[2894, 2901], "disallowed"], [[2902, 2903], "valid"], [[2904, 2907], "disallowed"], [[2908, 2908], "mapped", [2849, 2876]], [[2909, 2909], "mapped", [2850, 2876]], [[2910, 2910], "disallowed"], [[2911, 2913], "valid"], [[2914, 2915], "valid"], [[2916, 2917], "disallowed"], [[2918, 2927], "valid"], [[2928, 2928], "valid", [], "NV8"], [[2929, 2929], "valid"], [[2930, 2935], "valid", [], "NV8"], [[2936, 2945], "disallowed"], [[2946, 2947], "valid"], [[2948, 2948], "disallowed"], [[2949, 2954], "valid"], [[2955, 2957], "disallowed"], [[2958, 2960], "valid"], [[2961, 2961], "disallowed"], [[2962, 2965], "valid"], [[2966, 2968], "disallowed"], [[2969, 2970], "valid"], [[2971, 2971], "disallowed"], [[2972, 2972], "valid"], [[2973, 2973], "disallowed"], [[2974, 2975], "valid"], [[2976, 2978], "disallowed"], [[2979, 2980], "valid"], [[2981, 2983], "disallowed"], [[2984, 2986], "valid"], [[2987, 2989], "disallowed"], [[2990, 2997], "valid"], [[2998, 2998], "valid"], [[2999, 3001], "valid"], [[3002, 3005], "disallowed"], [[3006, 3010], "valid"], [[3011, 3013], "disallowed"], [[3014, 3016], "valid"], [[3017, 3017], "disallowed"], [[3018, 3021], "valid"], [[3022, 3023], "disallowed"], [[3024, 3024], "valid"], [[3025, 3030], "disallowed"], [[3031, 3031], "valid"], [[3032, 3045], "disallowed"], [[3046, 3046], "valid"], [[3047, 3055], "valid"], [[3056, 3058], "valid", [], "NV8"], [[3059, 3066], "valid", [], "NV8"], [[3067, 3071], "disallowed"], [[3072, 3072], "valid"], [[3073, 3075], "valid"], [[3076, 3076], "disallowed"], [[3077, 3084], "valid"], [[3085, 3085], "disallowed"], [[3086, 3088], "valid"], [[3089, 3089], "disallowed"], [[3090, 3112], "valid"], [[3113, 3113], "disallowed"], [[3114, 3123], "valid"], [[3124, 3124], "valid"], [[3125, 3129], "valid"], [[3130, 3132], "disallowed"], [[3133, 3133], "valid"], [[3134, 3140], "valid"], [[3141, 3141], "disallowed"], [[3142, 3144], "valid"], [[3145, 3145], "disallowed"], [[3146, 3149], "valid"], [[3150, 3156], "disallowed"], [[3157, 3158], "valid"], [[3159, 3159], "disallowed"], [[3160, 3161], "valid"], [[3162, 3162], "valid"], [[3163, 3167], "disallowed"], [[3168, 3169], "valid"], [[3170, 3171], "valid"], [[3172, 3173], "disallowed"], [[3174, 3183], "valid"], [[3184, 3191], "disallowed"], [[3192, 3199], "valid", [], "NV8"], [[3200, 3200], "disallowed"], [[3201, 3201], "valid"], [[3202, 3203], "valid"], [[3204, 3204], "disallowed"], [[3205, 3212], "valid"], [[3213, 3213], "disallowed"], [[3214, 3216], "valid"], [[3217, 3217], "disallowed"], [[3218, 3240], "valid"], [[3241, 3241], "disallowed"], [[3242, 3251], "valid"], [[3252, 3252], "disallowed"], [[3253, 3257], "valid"], [[3258, 3259], "disallowed"], [[3260, 3261], "valid"], [[3262, 3268], "valid"], [[3269, 3269], "disallowed"], [[3270, 3272], "valid"], [[3273, 3273], "disallowed"], [[3274, 3277], "valid"], [[3278, 3284], "disallowed"], [[3285, 3286], "valid"], [[3287, 3293], "disallowed"], [[3294, 3294], "valid"], [[3295, 3295], "disallowed"], [[3296, 3297], "valid"], [[3298, 3299], "valid"], [[3300, 3301], "disallowed"], [[3302, 3311], "valid"], [[3312, 3312], "disallowed"], [[3313, 3314], "valid"], [[3315, 3328], "disallowed"], [[3329, 3329], "valid"], [[3330, 3331], "valid"], [[3332, 3332], "disallowed"], [[3333, 3340], "valid"], [[3341, 3341], "disallowed"], [[3342, 3344], "valid"], [[3345, 3345], "disallowed"], [[3346, 3368], "valid"], [[3369, 3369], "valid"], [[3370, 3385], "valid"], [[3386, 3386], "valid"], [[3387, 3388], "disallowed"], [[3389, 3389], "valid"], [[3390, 3395], "valid"], [[3396, 3396], "valid"], [[3397, 3397], "disallowed"], [[3398, 3400], "valid"], [[3401, 3401], "disallowed"], [[3402, 3405], "valid"], [[3406, 3406], "valid"], [[3407, 3414], "disallowed"], [[3415, 3415], "valid"], [[3416, 3422], "disallowed"], [[3423, 3423], "valid"], [[3424, 3425], "valid"], [[3426, 3427], "valid"], [[3428, 3429], "disallowed"], [[3430, 3439], "valid"], [[3440, 3445], "valid", [], "NV8"], [[3446, 3448], "disallowed"], [[3449, 3449], "valid", [], "NV8"], [[3450, 3455], "valid"], [[3456, 3457], "disallowed"], [[3458, 3459], "valid"], [[3460, 3460], "disallowed"], [[3461, 3478], "valid"], [[3479, 3481], "disallowed"], [[3482, 3505], "valid"], [[3506, 3506], "disallowed"], [[3507, 3515], "valid"], [[3516, 3516], "disallowed"], [[3517, 3517], "valid"], [[3518, 3519], "disallowed"], [[3520, 3526], "valid"], [[3527, 3529], "disallowed"], [[3530, 3530], "valid"], [[3531, 3534], "disallowed"], [[3535, 3540], "valid"], [[3541, 3541], "disallowed"], [[3542, 3542], "valid"], [[3543, 3543], "disallowed"], [[3544, 3551], "valid"], [[3552, 3557], "disallowed"], [[3558, 3567], "valid"], [[3568, 3569], "disallowed"], [[3570, 3571], "valid"], [[3572, 3572], "valid", [], "NV8"], [[3573, 3584], "disallowed"], [[3585, 3634], "valid"], [[3635, 3635], "mapped", [3661, 3634]], [[3636, 3642], "valid"], [[3643, 3646], "disallowed"], [[3647, 3647], "valid", [], "NV8"], [[3648, 3662], "valid"], [[3663, 3663], "valid", [], "NV8"], [[3664, 3673], "valid"], [[3674, 3675], "valid", [], "NV8"], [[3676, 3712], "disallowed"], [[3713, 3714], "valid"], [[3715, 3715], "disallowed"], [[3716, 3716], "valid"], [[3717, 3718], "disallowed"], [[3719, 3720], "valid"], [[3721, 3721], "disallowed"], [[3722, 3722], "valid"], [[3723, 3724], "disallowed"], [[3725, 3725], "valid"], [[3726, 3731], "disallowed"], [[3732, 3735], "valid"], [[3736, 3736], "disallowed"], [[3737, 3743], "valid"], [[3744, 3744], "disallowed"], [[3745, 3747], "valid"], [[3748, 3748], "disallowed"], [[3749, 3749], "valid"], [[3750, 3750], "disallowed"], [[3751, 3751], "valid"], [[3752, 3753], "disallowed"], [[3754, 3755], "valid"], [[3756, 3756], "disallowed"], [[3757, 3762], "valid"], [[3763, 3763], "mapped", [3789, 3762]], [[3764, 3769], "valid"], [[3770, 3770], "disallowed"], [[3771, 3773], "valid"], [[3774, 3775], "disallowed"], [[3776, 3780], "valid"], [[3781, 3781], "disallowed"], [[3782, 3782], "valid"], [[3783, 3783], "disallowed"], [[3784, 3789], "valid"], [[3790, 3791], "disallowed"], [[3792, 3801], "valid"], [[3802, 3803], "disallowed"], [[3804, 3804], "mapped", [3755, 3737]], [[3805, 3805], "mapped", [3755, 3745]], [[3806, 3807], "valid"], [[3808, 3839], "disallowed"], [[3840, 3840], "valid"], [[3841, 3850], "valid", [], "NV8"], [[3851, 3851], "valid"], [[3852, 3852], "mapped", [3851]], [[3853, 3863], "valid", [], "NV8"], [[3864, 3865], "valid"], [[3866, 3871], "valid", [], "NV8"], [[3872, 3881], "valid"], [[3882, 3892], "valid", [], "NV8"], [[3893, 3893], "valid"], [[3894, 3894], "valid", [], "NV8"], [[3895, 3895], "valid"], [[3896, 3896], "valid", [], "NV8"], [[3897, 3897], "valid"], [[3898, 3901], "valid", [], "NV8"], [[3902, 3906], "valid"], [[3907, 3907], "mapped", [3906, 4023]], [[3908, 3911], "valid"], [[3912, 3912], "disallowed"], [[3913, 3916], "valid"], [[3917, 3917], "mapped", [3916, 4023]], [[3918, 3921], "valid"], [[3922, 3922], "mapped", [3921, 4023]], [[3923, 3926], "valid"], [[3927, 3927], "mapped", [3926, 4023]], [[3928, 3931], "valid"], [[3932, 3932], "mapped", [3931, 4023]], [[3933, 3944], "valid"], [[3945, 3945], "mapped", [3904, 4021]], [[3946, 3946], "valid"], [[3947, 3948], "valid"], [[3949, 3952], "disallowed"], [[3953, 3954], "valid"], [[3955, 3955], "mapped", [3953, 3954]], [[3956, 3956], "valid"], [[3957, 3957], "mapped", [3953, 3956]], [[3958, 3958], "mapped", [4018, 3968]], [[3959, 3959], "mapped", [4018, 3953, 3968]], [[3960, 3960], "mapped", [4019, 3968]], [[3961, 3961], "mapped", [4019, 3953, 3968]], [[3962, 3968], "valid"], [[3969, 3969], "mapped", [3953, 3968]], [[3970, 3972], "valid"], [[3973, 3973], "valid", [], "NV8"], [[3974, 3979], "valid"], [[3980, 3983], "valid"], [[3984, 3986], "valid"], [[3987, 3987], "mapped", [3986, 4023]], [[3988, 3989], "valid"], [[3990, 3990], "valid"], [[3991, 3991], "valid"], [[3992, 3992], "disallowed"], [[3993, 3996], "valid"], [[3997, 3997], "mapped", [3996, 4023]], [[3998, 4001], "valid"], [[4002, 4002], "mapped", [4001, 4023]], [[4003, 4006], "valid"], [[4007, 4007], "mapped", [4006, 4023]], [[4008, 4011], "valid"], [[4012, 4012], "mapped", [4011, 4023]], [[4013, 4013], "valid"], [[4014, 4016], "valid"], [[4017, 4023], "valid"], [[4024, 4024], "valid"], [[4025, 4025], "mapped", [3984, 4021]], [[4026, 4028], "valid"], [[4029, 4029], "disallowed"], [[4030, 4037], "valid", [], "NV8"], [[4038, 4038], "valid"], [[4039, 4044], "valid", [], "NV8"], [[4045, 4045], "disallowed"], [[4046, 4046], "valid", [], "NV8"], [[4047, 4047], "valid", [], "NV8"], [[4048, 4049], "valid", [], "NV8"], [[4050, 4052], "valid", [], "NV8"], [[4053, 4056], "valid", [], "NV8"], [[4057, 4058], "valid", [], "NV8"], [[4059, 4095], "disallowed"], [[4096, 4129], "valid"], [[4130, 4130], "valid"], [[4131, 4135], "valid"], [[4136, 4136], "valid"], [[4137, 4138], "valid"], [[4139, 4139], "valid"], [[4140, 4146], "valid"], [[4147, 4149], "valid"], [[4150, 4153], "valid"], [[4154, 4159], "valid"], [[4160, 4169], "valid"], [[4170, 4175], "valid", [], "NV8"], [[4176, 4185], "valid"], [[4186, 4249], "valid"], [[4250, 4253], "valid"], [[4254, 4255], "valid", [], "NV8"], [[4256, 4293], "disallowed"], [[4294, 4294], "disallowed"], [[4295, 4295], "mapped", [11559]], [[4296, 4300], "disallowed"], [[4301, 4301], "mapped", [11565]], [[4302, 4303], "disallowed"], [[4304, 4342], "valid"], [[4343, 4344], "valid"], [[4345, 4346], "valid"], [[4347, 4347], "valid", [], "NV8"], [[4348, 4348], "mapped", [4316]], [[4349, 4351], "valid"], [[4352, 4441], "valid", [], "NV8"], [[4442, 4446], "valid", [], "NV8"], [[4447, 4448], "disallowed"], [[4449, 4514], "valid", [], "NV8"], [[4515, 4519], "valid", [], "NV8"], [[4520, 4601], "valid", [], "NV8"], [[4602, 4607], "valid", [], "NV8"], [[4608, 4614], "valid"], [[4615, 4615], "valid"], [[4616, 4678], "valid"], [[4679, 4679], "valid"], [[4680, 4680], "valid"], [[4681, 4681], "disallowed"], [[4682, 4685], "valid"], [[4686, 4687], "disallowed"], [[4688, 4694], "valid"], [[4695, 4695], "disallowed"], [[4696, 4696], "valid"], [[4697, 4697], "disallowed"], [[4698, 4701], "valid"], [[4702, 4703], "disallowed"], [[4704, 4742], "valid"], [[4743, 4743], "valid"], [[4744, 4744], "valid"], [[4745, 4745], "disallowed"], [[4746, 4749], "valid"], [[4750, 4751], "disallowed"], [[4752, 4782], "valid"], [[4783, 4783], "valid"], [[4784, 4784], "valid"], [[4785, 4785], "disallowed"], [[4786, 4789], "valid"], [[4790, 4791], "disallowed"], [[4792, 4798], "valid"], [[4799, 4799], "disallowed"], [[4800, 4800], "valid"], [[4801, 4801], "disallowed"], [[4802, 4805], "valid"], [[4806, 4807], "disallowed"], [[4808, 4814], "valid"], [[4815, 4815], "valid"], [[4816, 4822], "valid"], [[4823, 4823], "disallowed"], [[4824, 4846], "valid"], [[4847, 4847], "valid"], [[4848, 4878], "valid"], [[4879, 4879], "valid"], [[4880, 4880], "valid"], [[4881, 4881], "disallowed"], [[4882, 4885], "valid"], [[4886, 4887], "disallowed"], [[4888, 4894], "valid"], [[4895, 4895], "valid"], [[4896, 4934], "valid"], [[4935, 4935], "valid"], [[4936, 4954], "valid"], [[4955, 4956], "disallowed"], [[4957, 4958], "valid"], [[4959, 4959], "valid"], [[4960, 4960], "valid", [], "NV8"], [[4961, 4988], "valid", [], "NV8"], [[4989, 4991], "disallowed"], [[4992, 5007], "valid"], [[5008, 5017], "valid", [], "NV8"], [[5018, 5023], "disallowed"], [[5024, 5108], "valid"], [[5109, 5109], "valid"], [[5110, 5111], "disallowed"], [[5112, 5112], "mapped", [5104]], [[5113, 5113], "mapped", [5105]], [[5114, 5114], "mapped", [5106]], [[5115, 5115], "mapped", [5107]], [[5116, 5116], "mapped", [5108]], [[5117, 5117], "mapped", [5109]], [[5118, 5119], "disallowed"], [[5120, 5120], "valid", [], "NV8"], [[5121, 5740], "valid"], [[5741, 5742], "valid", [], "NV8"], [[5743, 5750], "valid"], [[5751, 5759], "valid"], [[5760, 5760], "disallowed"], [[5761, 5786], "valid"], [[5787, 5788], "valid", [], "NV8"], [[5789, 5791], "disallowed"], [[5792, 5866], "valid"], [[5867, 5872], "valid", [], "NV8"], [[5873, 5880], "valid"], [[5881, 5887], "disallowed"], [[5888, 5900], "valid"], [[5901, 5901], "disallowed"], [[5902, 5908], "valid"], [[5909, 5919], "disallowed"], [[5920, 5940], "valid"], [[5941, 5942], "valid", [], "NV8"], [[5943, 5951], "disallowed"], [[5952, 5971], "valid"], [[5972, 5983], "disallowed"], [[5984, 5996], "valid"], [[5997, 5997], "disallowed"], [[5998, 6e3], "valid"], [[6001, 6001], "disallowed"], [[6002, 6003], "valid"], [[6004, 6015], "disallowed"], [[6016, 6067], "valid"], [[6068, 6069], "disallowed"], [[6070, 6099], "valid"], [[6100, 6102], "valid", [], "NV8"], [[6103, 6103], "valid"], [[6104, 6107], "valid", [], "NV8"], [[6108, 6108], "valid"], [[6109, 6109], "valid"], [[6110, 6111], "disallowed"], [[6112, 6121], "valid"], [[6122, 6127], "disallowed"], [[6128, 6137], "valid", [], "NV8"], [[6138, 6143], "disallowed"], [[6144, 6149], "valid", [], "NV8"], [[6150, 6150], "disallowed"], [[6151, 6154], "valid", [], "NV8"], [[6155, 6157], "ignored"], [[6158, 6158], "disallowed"], [[6159, 6159], "disallowed"], [[6160, 6169], "valid"], [[6170, 6175], "disallowed"], [[6176, 6263], "valid"], [[6264, 6271], "disallowed"], [[6272, 6313], "valid"], [[6314, 6314], "valid"], [[6315, 6319], "disallowed"], [[6320, 6389], "valid"], [[6390, 6399], "disallowed"], [[6400, 6428], "valid"], [[6429, 6430], "valid"], [[6431, 6431], "disallowed"], [[6432, 6443], "valid"], [[6444, 6447], "disallowed"], [[6448, 6459], "valid"], [[6460, 6463], "disallowed"], [[6464, 6464], "valid", [], "NV8"], [[6465, 6467], "disallowed"], [[6468, 6469], "valid", [], "NV8"], [[6470, 6509], "valid"], [[6510, 6511], "disallowed"], [[6512, 6516], "valid"], [[6517, 6527], "disallowed"], [[6528, 6569], "valid"], [[6570, 6571], "valid"], [[6572, 6575], "disallowed"], [[6576, 6601], "valid"], [[6602, 6607], "disallowed"], [[6608, 6617], "valid"], [[6618, 6618], "valid", [], "XV8"], [[6619, 6621], "disallowed"], [[6622, 6623], "valid", [], "NV8"], [[6624, 6655], "valid", [], "NV8"], [[6656, 6683], "valid"], [[6684, 6685], "disallowed"], [[6686, 6687], "valid", [], "NV8"], [[6688, 6750], "valid"], [[6751, 6751], "disallowed"], [[6752, 6780], "valid"], [[6781, 6782], "disallowed"], [[6783, 6793], "valid"], [[6794, 6799], "disallowed"], [[6800, 6809], "valid"], [[6810, 6815], "disallowed"], [[6816, 6822], "valid", [], "NV8"], [[6823, 6823], "valid"], [[6824, 6829], "valid", [], "NV8"], [[6830, 6831], "disallowed"], [[6832, 6845], "valid"], [[6846, 6846], "valid", [], "NV8"], [[6847, 6911], "disallowed"], [[6912, 6987], "valid"], [[6988, 6991], "disallowed"], [[6992, 7001], "valid"], [[7002, 7018], "valid", [], "NV8"], [[7019, 7027], "valid"], [[7028, 7036], "valid", [], "NV8"], [[7037, 7039], "disallowed"], [[7040, 7082], "valid"], [[7083, 7085], "valid"], [[7086, 7097], "valid"], [[7098, 7103], "valid"], [[7104, 7155], "valid"], [[7156, 7163], "disallowed"], [[7164, 7167], "valid", [], "NV8"], [[7168, 7223], "valid"], [[7224, 7226], "disallowed"], [[7227, 7231], "valid", [], "NV8"], [[7232, 7241], "valid"], [[7242, 7244], "disallowed"], [[7245, 7293], "valid"], [[7294, 7295], "valid", [], "NV8"], [[7296, 7359], "disallowed"], [[7360, 7367], "valid", [], "NV8"], [[7368, 7375], "disallowed"], [[7376, 7378], "valid"], [[7379, 7379], "valid", [], "NV8"], [[7380, 7410], "valid"], [[7411, 7414], "valid"], [[7415, 7415], "disallowed"], [[7416, 7417], "valid"], [[7418, 7423], "disallowed"], [[7424, 7467], "valid"], [[7468, 7468], "mapped", [97]], [[7469, 7469], "mapped", [230]], [[7470, 7470], "mapped", [98]], [[7471, 7471], "valid"], [[7472, 7472], "mapped", [100]], [[7473, 7473], "mapped", [101]], [[7474, 7474], "mapped", [477]], [[7475, 7475], "mapped", [103]], [[7476, 7476], "mapped", [104]], [[7477, 7477], "mapped", [105]], [[7478, 7478], "mapped", [106]], [[7479, 7479], "mapped", [107]], [[7480, 7480], "mapped", [108]], [[7481, 7481], "mapped", [109]], [[7482, 7482], "mapped", [110]], [[7483, 7483], "valid"], [[7484, 7484], "mapped", [111]], [[7485, 7485], "mapped", [547]], [[7486, 7486], "mapped", [112]], [[7487, 7487], "mapped", [114]], [[7488, 7488], "mapped", [116]], [[7489, 7489], "mapped", [117]], [[7490, 7490], "mapped", [119]], [[7491, 7491], "mapped", [97]], [[7492, 7492], "mapped", [592]], [[7493, 7493], "mapped", [593]], [[7494, 7494], "mapped", [7426]], [[7495, 7495], "mapped", [98]], [[7496, 7496], "mapped", [100]], [[7497, 7497], "mapped", [101]], [[7498, 7498], "mapped", [601]], [[7499, 7499], "mapped", [603]], [[7500, 7500], "mapped", [604]], [[7501, 7501], "mapped", [103]], [[7502, 7502], "valid"], [[7503, 7503], "mapped", [107]], [[7504, 7504], "mapped", [109]], [[7505, 7505], "mapped", [331]], [[7506, 7506], "mapped", [111]], [[7507, 7507], "mapped", [596]], [[7508, 7508], "mapped", [7446]], [[7509, 7509], "mapped", [7447]], [[7510, 7510], "mapped", [112]], [[7511, 7511], "mapped", [116]], [[7512, 7512], "mapped", [117]], [[7513, 7513], "mapped", [7453]], [[7514, 7514], "mapped", [623]], [[7515, 7515], "mapped", [118]], [[7516, 7516], "mapped", [7461]], [[7517, 7517], "mapped", [946]], [[7518, 7518], "mapped", [947]], [[7519, 7519], "mapped", [948]], [[7520, 7520], "mapped", [966]], [[7521, 7521], "mapped", [967]], [[7522, 7522], "mapped", [105]], [[7523, 7523], "mapped", [114]], [[7524, 7524], "mapped", [117]], [[7525, 7525], "mapped", [118]], [[7526, 7526], "mapped", [946]], [[7527, 7527], "mapped", [947]], [[7528, 7528], "mapped", [961]], [[7529, 7529], "mapped", [966]], [[7530, 7530], "mapped", [967]], [[7531, 7531], "valid"], [[7532, 7543], "valid"], [[7544, 7544], "mapped", [1085]], [[7545, 7578], "valid"], [[7579, 7579], "mapped", [594]], [[7580, 7580], "mapped", [99]], [[7581, 7581], "mapped", [597]], [[7582, 7582], "mapped", [240]], [[7583, 7583], "mapped", [604]], [[7584, 7584], "mapped", [102]], [[7585, 7585], "mapped", [607]], [[7586, 7586], "mapped", [609]], [[7587, 7587], "mapped", [613]], [[7588, 7588], "mapped", [616]], [[7589, 7589], "mapped", [617]], [[7590, 7590], "mapped", [618]], [[7591, 7591], "mapped", [7547]], [[7592, 7592], "mapped", [669]], [[7593, 7593], "mapped", [621]], [[7594, 7594], "mapped", [7557]], [[7595, 7595], "mapped", [671]], [[7596, 7596], "mapped", [625]], [[7597, 7597], "mapped", [624]], [[7598, 7598], "mapped", [626]], [[7599, 7599], "mapped", [627]], [[7600, 7600], "mapped", [628]], [[7601, 7601], "mapped", [629]], [[7602, 7602], "mapped", [632]], [[7603, 7603], "mapped", [642]], [[7604, 7604], "mapped", [643]], [[7605, 7605], "mapped", [427]], [[7606, 7606], "mapped", [649]], [[7607, 7607], "mapped", [650]], [[7608, 7608], "mapped", [7452]], [[7609, 7609], "mapped", [651]], [[7610, 7610], "mapped", [652]], [[7611, 7611], "mapped", [122]], [[7612, 7612], "mapped", [656]], [[7613, 7613], "mapped", [657]], [[7614, 7614], "mapped", [658]], [[7615, 7615], "mapped", [952]], [[7616, 7619], "valid"], [[7620, 7626], "valid"], [[7627, 7654], "valid"], [[7655, 7669], "valid"], [[7670, 7675], "disallowed"], [[7676, 7676], "valid"], [[7677, 7677], "valid"], [[7678, 7679], "valid"], [[7680, 7680], "mapped", [7681]], [[7681, 7681], "valid"], [[7682, 7682], "mapped", [7683]], [[7683, 7683], "valid"], [[7684, 7684], "mapped", [7685]], [[7685, 7685], "valid"], [[7686, 7686], "mapped", [7687]], [[7687, 7687], "valid"], [[7688, 7688], "mapped", [7689]], [[7689, 7689], "valid"], [[7690, 7690], "mapped", [7691]], [[7691, 7691], "valid"], [[7692, 7692], "mapped", [7693]], [[7693, 7693], "valid"], [[7694, 7694], "mapped", [7695]], [[7695, 7695], "valid"], [[7696, 7696], "mapped", [7697]], [[7697, 7697], "valid"], [[7698, 7698], "mapped", [7699]], [[7699, 7699], "valid"], [[7700, 7700], "mapped", [7701]], [[7701, 7701], "valid"], [[7702, 7702], "mapped", [7703]], [[7703, 7703], "valid"], [[7704, 7704], "mapped", [7705]], [[7705, 7705], "valid"], [[7706, 7706], "mapped", [7707]], [[7707, 7707], "valid"], [[7708, 7708], "mapped", [7709]], [[7709, 7709], "valid"], [[7710, 7710], "mapped", [7711]], [[7711, 7711], "valid"], [[7712, 7712], "mapped", [7713]], [[7713, 7713], "valid"], [[7714, 7714], "mapped", [7715]], [[7715, 7715], "valid"], [[7716, 7716], "mapped", [7717]], [[7717, 7717], "valid"], [[7718, 7718], "mapped", [7719]], [[7719, 7719], "valid"], [[7720, 7720], "mapped", [7721]], [[7721, 7721], "valid"], [[7722, 7722], "mapped", [7723]], [[7723, 7723], "valid"], [[7724, 7724], "mapped", [7725]], [[7725, 7725], "valid"], [[7726, 7726], "mapped", [7727]], [[7727, 7727], "valid"], [[7728, 7728], "mapped", [7729]], [[7729, 7729], "valid"], [[7730, 7730], "mapped", [7731]], [[7731, 7731], "valid"], [[7732, 7732], "mapped", [7733]], [[7733, 7733], "valid"], [[7734, 7734], "mapped", [7735]], [[7735, 7735], "valid"], [[7736, 7736], "mapped", [7737]], [[7737, 7737], "valid"], [[7738, 7738], "mapped", [7739]], [[7739, 7739], "valid"], [[7740, 7740], "mapped", [7741]], [[7741, 7741], "valid"], [[7742, 7742], "mapped", [7743]], [[7743, 7743], "valid"], [[7744, 7744], "mapped", [7745]], [[7745, 7745], "valid"], [[7746, 7746], "mapped", [7747]], [[7747, 7747], "valid"], [[7748, 7748], "mapped", [7749]], [[7749, 7749], "valid"], [[7750, 7750], "mapped", [7751]], [[7751, 7751], "valid"], [[7752, 7752], "mapped", [7753]], [[7753, 7753], "valid"], [[7754, 7754], "mapped", [7755]], [[7755, 7755], "valid"], [[7756, 7756], "mapped", [7757]], [[7757, 7757], "valid"], [[7758, 7758], "mapped", [7759]], [[7759, 7759], "valid"], [[7760, 7760], "mapped", [7761]], [[7761, 7761], "valid"], [[7762, 7762], "mapped", [7763]], [[7763, 7763], "valid"], [[7764, 7764], "mapped", [7765]], [[7765, 7765], "valid"], [[7766, 7766], "mapped", [7767]], [[7767, 7767], "valid"], [[7768, 7768], "mapped", [7769]], [[7769, 7769], "valid"], [[7770, 7770], "mapped", [7771]], [[7771, 7771], "valid"], [[7772, 7772], "mapped", [7773]], [[7773, 7773], "valid"], [[7774, 7774], "mapped", [7775]], [[7775, 7775], "valid"], [[7776, 7776], "mapped", [7777]], [[7777, 7777], "valid"], [[7778, 7778], "mapped", [7779]], [[7779, 7779], "valid"], [[7780, 7780], "mapped", [7781]], [[7781, 7781], "valid"], [[7782, 7782], "mapped", [7783]], [[7783, 7783], "valid"], [[7784, 7784], "mapped", [7785]], [[7785, 7785], "valid"], [[7786, 7786], "mapped", [7787]], [[7787, 7787], "valid"], [[7788, 7788], "mapped", [7789]], [[7789, 7789], "valid"], [[7790, 7790], "mapped", [7791]], [[7791, 7791], "valid"], [[7792, 7792], "mapped", [7793]], [[7793, 7793], "valid"], [[7794, 7794], "mapped", [7795]], [[7795, 7795], "valid"], [[7796, 7796], "mapped", [7797]], [[7797, 7797], "valid"], [[7798, 7798], "mapped", [7799]], [[7799, 7799], "valid"], [[7800, 7800], "mapped", [7801]], [[7801, 7801], "valid"], [[7802, 7802], "mapped", [7803]], [[7803, 7803], "valid"], [[7804, 7804], "mapped", [7805]], [[7805, 7805], "valid"], [[7806, 7806], "mapped", [7807]], [[7807, 7807], "valid"], [[7808, 7808], "mapped", [7809]], [[7809, 7809], "valid"], [[7810, 7810], "mapped", [7811]], [[7811, 7811], "valid"], [[7812, 7812], "mapped", [7813]], [[7813, 7813], "valid"], [[7814, 7814], "mapped", [7815]], [[7815, 7815], "valid"], [[7816, 7816], "mapped", [7817]], [[7817, 7817], "valid"], [[7818, 7818], "mapped", [7819]], [[7819, 7819], "valid"], [[7820, 7820], "mapped", [7821]], [[7821, 7821], "valid"], [[7822, 7822], "mapped", [7823]], [[7823, 7823], "valid"], [[7824, 7824], "mapped", [7825]], [[7825, 7825], "valid"], [[7826, 7826], "mapped", [7827]], [[7827, 7827], "valid"], [[7828, 7828], "mapped", [7829]], [[7829, 7833], "valid"], [[7834, 7834], "mapped", [97, 702]], [[7835, 7835], "mapped", [7777]], [[7836, 7837], "valid"], [[7838, 7838], "mapped", [115, 115]], [[7839, 7839], "valid"], [[7840, 7840], "mapped", [7841]], [[7841, 7841], "valid"], [[7842, 7842], "mapped", [7843]], [[7843, 7843], "valid"], [[7844, 7844], "mapped", [7845]], [[7845, 7845], "valid"], [[7846, 7846], "mapped", [7847]], [[7847, 7847], "valid"], [[7848, 7848], "mapped", [7849]], [[7849, 7849], "valid"], [[7850, 7850], "mapped", [7851]], [[7851, 7851], "valid"], [[7852, 7852], "mapped", [7853]], [[7853, 7853], "valid"], [[7854, 7854], "mapped", [7855]], [[7855, 7855], "valid"], [[7856, 7856], "mapped", [7857]], [[7857, 7857], "valid"], [[7858, 7858], "mapped", [7859]], [[7859, 7859], "valid"], [[7860, 7860], "mapped", [7861]], [[7861, 7861], "valid"], [[7862, 7862], "mapped", [7863]], [[7863, 7863], "valid"], [[7864, 7864], "mapped", [7865]], [[7865, 7865], "valid"], [[7866, 7866], "mapped", [7867]], [[7867, 7867], "valid"], [[7868, 7868], "mapped", [7869]], [[7869, 7869], "valid"], [[7870, 7870], "mapped", [7871]], [[7871, 7871], "valid"], [[7872, 7872], "mapped", [7873]], [[7873, 7873], "valid"], [[7874, 7874], "mapped", [7875]], [[7875, 7875], "valid"], [[7876, 7876], "mapped", [7877]], [[7877, 7877], "valid"], [[7878, 7878], "mapped", [7879]], [[7879, 7879], "valid"], [[7880, 7880], "mapped", [7881]], [[7881, 7881], "valid"], [[7882, 7882], "mapped", [7883]], [[7883, 7883], "valid"], [[7884, 7884], "mapped", [7885]], [[7885, 7885], "valid"], [[7886, 7886], "mapped", [7887]], [[7887, 7887], "valid"], [[7888, 7888], "mapped", [7889]], [[7889, 7889], "valid"], [[7890, 7890], "mapped", [7891]], [[7891, 7891], "valid"], [[7892, 7892], "mapped", [7893]], [[7893, 7893], "valid"], [[7894, 7894], "mapped", [7895]], [[7895, 7895], "valid"], [[7896, 7896], "mapped", [7897]], [[7897, 7897], "valid"], [[7898, 7898], "mapped", [7899]], [[7899, 7899], "valid"], [[7900, 7900], "mapped", [7901]], [[7901, 7901], "valid"], [[7902, 7902], "mapped", [7903]], [[7903, 7903], "valid"], [[7904, 7904], "mapped", [7905]], [[7905, 7905], "valid"], [[7906, 7906], "mapped", [7907]], [[7907, 7907], "valid"], [[7908, 7908], "mapped", [7909]], [[7909, 7909], "valid"], [[7910, 7910], "mapped", [7911]], [[7911, 7911], "valid"], [[7912, 7912], "mapped", [7913]], [[7913, 7913], "valid"], [[7914, 7914], "mapped", [7915]], [[7915, 7915], "valid"], [[7916, 7916], "mapped", [7917]], [[7917, 7917], "valid"], [[7918, 7918], "mapped", [7919]], [[7919, 7919], "valid"], [[7920, 7920], "mapped", [7921]], [[7921, 7921], "valid"], [[7922, 7922], "mapped", [7923]], [[7923, 7923], "valid"], [[7924, 7924], "mapped", [7925]], [[7925, 7925], "valid"], [[7926, 7926], "mapped", [7927]], [[7927, 7927], "valid"], [[7928, 7928], "mapped", [7929]], [[7929, 7929], "valid"], [[7930, 7930], "mapped", [7931]], [[7931, 7931], "valid"], [[7932, 7932], "mapped", [7933]], [[7933, 7933], "valid"], [[7934, 7934], "mapped", [7935]], [[7935, 7935], "valid"], [[7936, 7943], "valid"], [[7944, 7944], "mapped", [7936]], [[7945, 7945], "mapped", [7937]], [[7946, 7946], "mapped", [7938]], [[7947, 7947], "mapped", [7939]], [[7948, 7948], "mapped", [7940]], [[7949, 7949], "mapped", [7941]], [[7950, 7950], "mapped", [7942]], [[7951, 7951], "mapped", [7943]], [[7952, 7957], "valid"], [[7958, 7959], "disallowed"], [[7960, 7960], "mapped", [7952]], [[7961, 7961], "mapped", [7953]], [[7962, 7962], "mapped", [7954]], [[7963, 7963], "mapped", [7955]], [[7964, 7964], "mapped", [7956]], [[7965, 7965], "mapped", [7957]], [[7966, 7967], "disallowed"], [[7968, 7975], "valid"], [[7976, 7976], "mapped", [7968]], [[7977, 7977], "mapped", [7969]], [[7978, 7978], "mapped", [7970]], [[7979, 7979], "mapped", [7971]], [[7980, 7980], "mapped", [7972]], [[7981, 7981], "mapped", [7973]], [[7982, 7982], "mapped", [7974]], [[7983, 7983], "mapped", [7975]], [[7984, 7991], "valid"], [[7992, 7992], "mapped", [7984]], [[7993, 7993], "mapped", [7985]], [[7994, 7994], "mapped", [7986]], [[7995, 7995], "mapped", [7987]], [[7996, 7996], "mapped", [7988]], [[7997, 7997], "mapped", [7989]], [[7998, 7998], "mapped", [7990]], [[7999, 7999], "mapped", [7991]], [[8e3, 8005], "valid"], [[8006, 8007], "disallowed"], [[8008, 8008], "mapped", [8e3]], [[8009, 8009], "mapped", [8001]], [[8010, 8010], "mapped", [8002]], [[8011, 8011], "mapped", [8003]], [[8012, 8012], "mapped", [8004]], [[8013, 8013], "mapped", [8005]], [[8014, 8015], "disallowed"], [[8016, 8023], "valid"], [[8024, 8024], "disallowed"], [[8025, 8025], "mapped", [8017]], [[8026, 8026], "disallowed"], [[8027, 8027], "mapped", [8019]], [[8028, 8028], "disallowed"], [[8029, 8029], "mapped", [8021]], [[8030, 8030], "disallowed"], [[8031, 8031], "mapped", [8023]], [[8032, 8039], "valid"], [[8040, 8040], "mapped", [8032]], [[8041, 8041], "mapped", [8033]], [[8042, 8042], "mapped", [8034]], [[8043, 8043], "mapped", [8035]], [[8044, 8044], "mapped", [8036]], [[8045, 8045], "mapped", [8037]], [[8046, 8046], "mapped", [8038]], [[8047, 8047], "mapped", [8039]], [[8048, 8048], "valid"], [[8049, 8049], "mapped", [940]], [[8050, 8050], "valid"], [[8051, 8051], "mapped", [941]], [[8052, 8052], "valid"], [[8053, 8053], "mapped", [942]], [[8054, 8054], "valid"], [[8055, 8055], "mapped", [943]], [[8056, 8056], "valid"], [[8057, 8057], "mapped", [972]], [[8058, 8058], "valid"], [[8059, 8059], "mapped", [973]], [[8060, 8060], "valid"], [[8061, 8061], "mapped", [974]], [[8062, 8063], "disallowed"], [[8064, 8064], "mapped", [7936, 953]], [[8065, 8065], "mapped", [7937, 953]], [[8066, 8066], "mapped", [7938, 953]], [[8067, 8067], "mapped", [7939, 953]], [[8068, 8068], "mapped", [7940, 953]], [[8069, 8069], "mapped", [7941, 953]], [[8070, 8070], "mapped", [7942, 953]], [[8071, 8071], "mapped", [7943, 953]], [[8072, 8072], "mapped", [7936, 953]], [[8073, 8073], "mapped", [7937, 953]], [[8074, 8074], "mapped", [7938, 953]], [[8075, 8075], "mapped", [7939, 953]], [[8076, 8076], "mapped", [7940, 953]], [[8077, 8077], "mapped", [7941, 953]], [[8078, 8078], "mapped", [7942, 953]], [[8079, 8079], "mapped", [7943, 953]], [[8080, 8080], "mapped", [7968, 953]], [[8081, 8081], "mapped", [7969, 953]], [[8082, 8082], "mapped", [7970, 953]], [[8083, 8083], "mapped", [7971, 953]], [[8084, 8084], "mapped", [7972, 953]], [[8085, 8085], "mapped", [7973, 953]], [[8086, 8086], "mapped", [7974, 953]], [[8087, 8087], "mapped", [7975, 953]], [[8088, 8088], "mapped", [7968, 953]], [[8089, 8089], "mapped", [7969, 953]], [[8090, 8090], "mapped", [7970, 953]], [[8091, 8091], "mapped", [7971, 953]], [[8092, 8092], "mapped", [7972, 953]], [[8093, 8093], "mapped", [7973, 953]], [[8094, 8094], "mapped", [7974, 953]], [[8095, 8095], "mapped", [7975, 953]], [[8096, 8096], "mapped", [8032, 953]], [[8097, 8097], "mapped", [8033, 953]], [[8098, 8098], "mapped", [8034, 953]], [[8099, 8099], "mapped", [8035, 953]], [[8100, 8100], "mapped", [8036, 953]], [[8101, 8101], "mapped", [8037, 953]], [[8102, 8102], "mapped", [8038, 953]], [[8103, 8103], "mapped", [8039, 953]], [[8104, 8104], "mapped", [8032, 953]], [[8105, 8105], "mapped", [8033, 953]], [[8106, 8106], "mapped", [8034, 953]], [[8107, 8107], "mapped", [8035, 953]], [[8108, 8108], "mapped", [8036, 953]], [[8109, 8109], "mapped", [8037, 953]], [[8110, 8110], "mapped", [8038, 953]], [[8111, 8111], "mapped", [8039, 953]], [[8112, 8113], "valid"], [[8114, 8114], "mapped", [8048, 953]], [[8115, 8115], "mapped", [945, 953]], [[8116, 8116], "mapped", [940, 953]], [[8117, 8117], "disallowed"], [[8118, 8118], "valid"], [[8119, 8119], "mapped", [8118, 953]], [[8120, 8120], "mapped", [8112]], [[8121, 8121], "mapped", [8113]], [[8122, 8122], "mapped", [8048]], [[8123, 8123], "mapped", [940]], [[8124, 8124], "mapped", [945, 953]], [[8125, 8125], "disallowed_STD3_mapped", [32, 787]], [[8126, 8126], "mapped", [953]], [[8127, 8127], "disallowed_STD3_mapped", [32, 787]], [[8128, 8128], "disallowed_STD3_mapped", [32, 834]], [[8129, 8129], "disallowed_STD3_mapped", [32, 776, 834]], [[8130, 8130], "mapped", [8052, 953]], [[8131, 8131], "mapped", [951, 953]], [[8132, 8132], "mapped", [942, 953]], [[8133, 8133], "disallowed"], [[8134, 8134], "valid"], [[8135, 8135], "mapped", [8134, 953]], [[8136, 8136], "mapped", [8050]], [[8137, 8137], "mapped", [941]], [[8138, 8138], "mapped", [8052]], [[8139, 8139], "mapped", [942]], [[8140, 8140], "mapped", [951, 953]], [[8141, 8141], "disallowed_STD3_mapped", [32, 787, 768]], [[8142, 8142], "disallowed_STD3_mapped", [32, 787, 769]], [[8143, 8143], "disallowed_STD3_mapped", [32, 787, 834]], [[8144, 8146], "valid"], [[8147, 8147], "mapped", [912]], [[8148, 8149], "disallowed"], [[8150, 8151], "valid"], [[8152, 8152], "mapped", [8144]], [[8153, 8153], "mapped", [8145]], [[8154, 8154], "mapped", [8054]], [[8155, 8155], "mapped", [943]], [[8156, 8156], "disallowed"], [[8157, 8157], "disallowed_STD3_mapped", [32, 788, 768]], [[8158, 8158], "disallowed_STD3_mapped", [32, 788, 769]], [[8159, 8159], "disallowed_STD3_mapped", [32, 788, 834]], [[8160, 8162], "valid"], [[8163, 8163], "mapped", [944]], [[8164, 8167], "valid"], [[8168, 8168], "mapped", [8160]], [[8169, 8169], "mapped", [8161]], [[8170, 8170], "mapped", [8058]], [[8171, 8171], "mapped", [973]], [[8172, 8172], "mapped", [8165]], [[8173, 8173], "disallowed_STD3_mapped", [32, 776, 768]], [[8174, 8174], "disallowed_STD3_mapped", [32, 776, 769]], [[8175, 8175], "disallowed_STD3_mapped", [96]], [[8176, 8177], "disallowed"], [[8178, 8178], "mapped", [8060, 953]], [[8179, 8179], "mapped", [969, 953]], [[8180, 8180], "mapped", [974, 953]], [[8181, 8181], "disallowed"], [[8182, 8182], "valid"], [[8183, 8183], "mapped", [8182, 953]], [[8184, 8184], "mapped", [8056]], [[8185, 8185], "mapped", [972]], [[8186, 8186], "mapped", [8060]], [[8187, 8187], "mapped", [974]], [[8188, 8188], "mapped", [969, 953]], [[8189, 8189], "disallowed_STD3_mapped", [32, 769]], [[8190, 8190], "disallowed_STD3_mapped", [32, 788]], [[8191, 8191], "disallowed"], [[8192, 8202], "disallowed_STD3_mapped", [32]], [[8203, 8203], "ignored"], [[8204, 8205], "deviation", []], [[8206, 8207], "disallowed"], [[8208, 8208], "valid", [], "NV8"], [[8209, 8209], "mapped", [8208]], [[8210, 8214], "valid", [], "NV8"], [[8215, 8215], "disallowed_STD3_mapped", [32, 819]], [[8216, 8227], "valid", [], "NV8"], [[8228, 8230], "disallowed"], [[8231, 8231], "valid", [], "NV8"], [[8232, 8238], "disallowed"], [[8239, 8239], "disallowed_STD3_mapped", [32]], [[8240, 8242], "valid", [], "NV8"], [[8243, 8243], "mapped", [8242, 8242]], [[8244, 8244], "mapped", [8242, 8242, 8242]], [[8245, 8245], "valid", [], "NV8"], [[8246, 8246], "mapped", [8245, 8245]], [[8247, 8247], "mapped", [8245, 8245, 8245]], [[8248, 8251], "valid", [], "NV8"], [[8252, 8252], "disallowed_STD3_mapped", [33, 33]], [[8253, 8253], "valid", [], "NV8"], [[8254, 8254], "disallowed_STD3_mapped", [32, 773]], [[8255, 8262], "valid", [], "NV8"], [[8263, 8263], "disallowed_STD3_mapped", [63, 63]], [[8264, 8264], "disallowed_STD3_mapped", [63, 33]], [[8265, 8265], "disallowed_STD3_mapped", [33, 63]], [[8266, 8269], "valid", [], "NV8"], [[8270, 8274], "valid", [], "NV8"], [[8275, 8276], "valid", [], "NV8"], [[8277, 8278], "valid", [], "NV8"], [[8279, 8279], "mapped", [8242, 8242, 8242, 8242]], [[8280, 8286], "valid", [], "NV8"], [[8287, 8287], "disallowed_STD3_mapped", [32]], [[8288, 8288], "ignored"], [[8289, 8291], "disallowed"], [[8292, 8292], "ignored"], [[8293, 8293], "disallowed"], [[8294, 8297], "disallowed"], [[8298, 8303], "disallowed"], [[8304, 8304], "mapped", [48]], [[8305, 8305], "mapped", [105]], [[8306, 8307], "disallowed"], [[8308, 8308], "mapped", [52]], [[8309, 8309], "mapped", [53]], [[8310, 8310], "mapped", [54]], [[8311, 8311], "mapped", [55]], [[8312, 8312], "mapped", [56]], [[8313, 8313], "mapped", [57]], [[8314, 8314], "disallowed_STD3_mapped", [43]], [[8315, 8315], "mapped", [8722]], [[8316, 8316], "disallowed_STD3_mapped", [61]], [[8317, 8317], "disallowed_STD3_mapped", [40]], [[8318, 8318], "disallowed_STD3_mapped", [41]], [[8319, 8319], "mapped", [110]], [[8320, 8320], "mapped", [48]], [[8321, 8321], "mapped", [49]], [[8322, 8322], "mapped", [50]], [[8323, 8323], "mapped", [51]], [[8324, 8324], "mapped", [52]], [[8325, 8325], "mapped", [53]], [[8326, 8326], "mapped", [54]], [[8327, 8327], "mapped", [55]], [[8328, 8328], "mapped", [56]], [[8329, 8329], "mapped", [57]], [[8330, 8330], "disallowed_STD3_mapped", [43]], [[8331, 8331], "mapped", [8722]], [[8332, 8332], "disallowed_STD3_mapped", [61]], [[8333, 8333], "disallowed_STD3_mapped", [40]], [[8334, 8334], "disallowed_STD3_mapped", [41]], [[8335, 8335], "disallowed"], [[8336, 8336], "mapped", [97]], [[8337, 8337], "mapped", [101]], [[8338, 8338], "mapped", [111]], [[8339, 8339], "mapped", [120]], [[8340, 8340], "mapped", [601]], [[8341, 8341], "mapped", [104]], [[8342, 8342], "mapped", [107]], [[8343, 8343], "mapped", [108]], [[8344, 8344], "mapped", [109]], [[8345, 8345], "mapped", [110]], [[8346, 8346], "mapped", [112]], [[8347, 8347], "mapped", [115]], [[8348, 8348], "mapped", [116]], [[8349, 8351], "disallowed"], [[8352, 8359], "valid", [], "NV8"], [[8360, 8360], "mapped", [114, 115]], [[8361, 8362], "valid", [], "NV8"], [[8363, 8363], "valid", [], "NV8"], [[8364, 8364], "valid", [], "NV8"], [[8365, 8367], "valid", [], "NV8"], [[8368, 8369], "valid", [], "NV8"], [[8370, 8373], "valid", [], "NV8"], [[8374, 8376], "valid", [], "NV8"], [[8377, 8377], "valid", [], "NV8"], [[8378, 8378], "valid", [], "NV8"], [[8379, 8381], "valid", [], "NV8"], [[8382, 8382], "valid", [], "NV8"], [[8383, 8399], "disallowed"], [[8400, 8417], "valid", [], "NV8"], [[8418, 8419], "valid", [], "NV8"], [[8420, 8426], "valid", [], "NV8"], [[8427, 8427], "valid", [], "NV8"], [[8428, 8431], "valid", [], "NV8"], [[8432, 8432], "valid", [], "NV8"], [[8433, 8447], "disallowed"], [[8448, 8448], "disallowed_STD3_mapped", [97, 47, 99]], [[8449, 8449], "disallowed_STD3_mapped", [97, 47, 115]], [[8450, 8450], "mapped", [99]], [[8451, 8451], "mapped", [176, 99]], [[8452, 8452], "valid", [], "NV8"], [[8453, 8453], "disallowed_STD3_mapped", [99, 47, 111]], [[8454, 8454], "disallowed_STD3_mapped", [99, 47, 117]], [[8455, 8455], "mapped", [603]], [[8456, 8456], "valid", [], "NV8"], [[8457, 8457], "mapped", [176, 102]], [[8458, 8458], "mapped", [103]], [[8459, 8462], "mapped", [104]], [[8463, 8463], "mapped", [295]], [[8464, 8465], "mapped", [105]], [[8466, 8467], "mapped", [108]], [[8468, 8468], "valid", [], "NV8"], [[8469, 8469], "mapped", [110]], [[8470, 8470], "mapped", [110, 111]], [[8471, 8472], "valid", [], "NV8"], [[8473, 8473], "mapped", [112]], [[8474, 8474], "mapped", [113]], [[8475, 8477], "mapped", [114]], [[8478, 8479], "valid", [], "NV8"], [[8480, 8480], "mapped", [115, 109]], [[8481, 8481], "mapped", [116, 101, 108]], [[8482, 8482], "mapped", [116, 109]], [[8483, 8483], "valid", [], "NV8"], [[8484, 8484], "mapped", [122]], [[8485, 8485], "valid", [], "NV8"], [[8486, 8486], "mapped", [969]], [[8487, 8487], "valid", [], "NV8"], [[8488, 8488], "mapped", [122]], [[8489, 8489], "valid", [], "NV8"], [[8490, 8490], "mapped", [107]], [[8491, 8491], "mapped", [229]], [[8492, 8492], "mapped", [98]], [[8493, 8493], "mapped", [99]], [[8494, 8494], "valid", [], "NV8"], [[8495, 8496], "mapped", [101]], [[8497, 8497], "mapped", [102]], [[8498, 8498], "disallowed"], [[8499, 8499], "mapped", [109]], [[8500, 8500], "mapped", [111]], [[8501, 8501], "mapped", [1488]], [[8502, 8502], "mapped", [1489]], [[8503, 8503], "mapped", [1490]], [[8504, 8504], "mapped", [1491]], [[8505, 8505], "mapped", [105]], [[8506, 8506], "valid", [], "NV8"], [[8507, 8507], "mapped", [102, 97, 120]], [[8508, 8508], "mapped", [960]], [[8509, 8510], "mapped", [947]], [[8511, 8511], "mapped", [960]], [[8512, 8512], "mapped", [8721]], [[8513, 8516], "valid", [], "NV8"], [[8517, 8518], "mapped", [100]], [[8519, 8519], "mapped", [101]], [[8520, 8520], "mapped", [105]], [[8521, 8521], "mapped", [106]], [[8522, 8523], "valid", [], "NV8"], [[8524, 8524], "valid", [], "NV8"], [[8525, 8525], "valid", [], "NV8"], [[8526, 8526], "valid"], [[8527, 8527], "valid", [], "NV8"], [[8528, 8528], "mapped", [49, 8260, 55]], [[8529, 8529], "mapped", [49, 8260, 57]], [[8530, 8530], "mapped", [49, 8260, 49, 48]], [[8531, 8531], "mapped", [49, 8260, 51]], [[8532, 8532], "mapped", [50, 8260, 51]], [[8533, 8533], "mapped", [49, 8260, 53]], [[8534, 8534], "mapped", [50, 8260, 53]], [[8535, 8535], "mapped", [51, 8260, 53]], [[8536, 8536], "mapped", [52, 8260, 53]], [[8537, 8537], "mapped", [49, 8260, 54]], [[8538, 8538], "mapped", [53, 8260, 54]], [[8539, 8539], "mapped", [49, 8260, 56]], [[8540, 8540], "mapped", [51, 8260, 56]], [[8541, 8541], "mapped", [53, 8260, 56]], [[8542, 8542], "mapped", [55, 8260, 56]], [[8543, 8543], "mapped", [49, 8260]], [[8544, 8544], "mapped", [105]], [[8545, 8545], "mapped", [105, 105]], [[8546, 8546], "mapped", [105, 105, 105]], [[8547, 8547], "mapped", [105, 118]], [[8548, 8548], "mapped", [118]], [[8549, 8549], "mapped", [118, 105]], [[8550, 8550], "mapped", [118, 105, 105]], [[8551, 8551], "mapped", [118, 105, 105, 105]], [[8552, 8552], "mapped", [105, 120]], [[8553, 8553], "mapped", [120]], [[8554, 8554], "mapped", [120, 105]], [[8555, 8555], "mapped", [120, 105, 105]], [[8556, 8556], "mapped", [108]], [[8557, 8557], "mapped", [99]], [[8558, 8558], "mapped", [100]], [[8559, 8559], "mapped", [109]], [[8560, 8560], "mapped", [105]], [[8561, 8561], "mapped", [105, 105]], [[8562, 8562], "mapped", [105, 105, 105]], [[8563, 8563], "mapped", [105, 118]], [[8564, 8564], "mapped", [118]], [[8565, 8565], "mapped", [118, 105]], [[8566, 8566], "mapped", [118, 105, 105]], [[8567, 8567], "mapped", [118, 105, 105, 105]], [[8568, 8568], "mapped", [105, 120]], [[8569, 8569], "mapped", [120]], [[8570, 8570], "mapped", [120, 105]], [[8571, 8571], "mapped", [120, 105, 105]], [[8572, 8572], "mapped", [108]], [[8573, 8573], "mapped", [99]], [[8574, 8574], "mapped", [100]], [[8575, 8575], "mapped", [109]], [[8576, 8578], "valid", [], "NV8"], [[8579, 8579], "disallowed"], [[8580, 8580], "valid"], [[8581, 8584], "valid", [], "NV8"], [[8585, 8585], "mapped", [48, 8260, 51]], [[8586, 8587], "valid", [], "NV8"], [[8588, 8591], "disallowed"], [[8592, 8682], "valid", [], "NV8"], [[8683, 8691], "valid", [], "NV8"], [[8692, 8703], "valid", [], "NV8"], [[8704, 8747], "valid", [], "NV8"], [[8748, 8748], "mapped", [8747, 8747]], [[8749, 8749], "mapped", [8747, 8747, 8747]], [[8750, 8750], "valid", [], "NV8"], [[8751, 8751], "mapped", [8750, 8750]], [[8752, 8752], "mapped", [8750, 8750, 8750]], [[8753, 8799], "valid", [], "NV8"], [[8800, 8800], "disallowed_STD3_valid"], [[8801, 8813], "valid", [], "NV8"], [[8814, 8815], "disallowed_STD3_valid"], [[8816, 8945], "valid", [], "NV8"], [[8946, 8959], "valid", [], "NV8"], [[8960, 8960], "valid", [], "NV8"], [[8961, 8961], "valid", [], "NV8"], [[8962, 9e3], "valid", [], "NV8"], [[9001, 9001], "mapped", [12296]], [[9002, 9002], "mapped", [12297]], [[9003, 9082], "valid", [], "NV8"], [[9083, 9083], "valid", [], "NV8"], [[9084, 9084], "valid", [], "NV8"], [[9085, 9114], "valid", [], "NV8"], [[9115, 9166], "valid", [], "NV8"], [[9167, 9168], "valid", [], "NV8"], [[9169, 9179], "valid", [], "NV8"], [[9180, 9191], "valid", [], "NV8"], [[9192, 9192], "valid", [], "NV8"], [[9193, 9203], "valid", [], "NV8"], [[9204, 9210], "valid", [], "NV8"], [[9211, 9215], "disallowed"], [[9216, 9252], "valid", [], "NV8"], [[9253, 9254], "valid", [], "NV8"], [[9255, 9279], "disallowed"], [[9280, 9290], "valid", [], "NV8"], [[9291, 9311], "disallowed"], [[9312, 9312], "mapped", [49]], [[9313, 9313], "mapped", [50]], [[9314, 9314], "mapped", [51]], [[9315, 9315], "mapped", [52]], [[9316, 9316], "mapped", [53]], [[9317, 9317], "mapped", [54]], [[9318, 9318], "mapped", [55]], [[9319, 9319], "mapped", [56]], [[9320, 9320], "mapped", [57]], [[9321, 9321], "mapped", [49, 48]], [[9322, 9322], "mapped", [49, 49]], [[9323, 9323], "mapped", [49, 50]], [[9324, 9324], "mapped", [49, 51]], [[9325, 9325], "mapped", [49, 52]], [[9326, 9326], "mapped", [49, 53]], [[9327, 9327], "mapped", [49, 54]], [[9328, 9328], "mapped", [49, 55]], [[9329, 9329], "mapped", [49, 56]], [[9330, 9330], "mapped", [49, 57]], [[9331, 9331], "mapped", [50, 48]], [[9332, 9332], "disallowed_STD3_mapped", [40, 49, 41]], [[9333, 9333], "disallowed_STD3_mapped", [40, 50, 41]], [[9334, 9334], "disallowed_STD3_mapped", [40, 51, 41]], [[9335, 9335], "disallowed_STD3_mapped", [40, 52, 41]], [[9336, 9336], "disallowed_STD3_mapped", [40, 53, 41]], [[9337, 9337], "disallowed_STD3_mapped", [40, 54, 41]], [[9338, 9338], "disallowed_STD3_mapped", [40, 55, 41]], [[9339, 9339], "disallowed_STD3_mapped", [40, 56, 41]], [[9340, 9340], "disallowed_STD3_mapped", [40, 57, 41]], [[9341, 9341], "disallowed_STD3_mapped", [40, 49, 48, 41]], [[9342, 9342], "disallowed_STD3_mapped", [40, 49, 49, 41]], [[9343, 9343], "disallowed_STD3_mapped", [40, 49, 50, 41]], [[9344, 9344], "disallowed_STD3_mapped", [40, 49, 51, 41]], [[9345, 9345], "disallowed_STD3_mapped", [40, 49, 52, 41]], [[9346, 9346], "disallowed_STD3_mapped", [40, 49, 53, 41]], [[9347, 9347], "disallowed_STD3_mapped", [40, 49, 54, 41]], [[9348, 9348], "disallowed_STD3_mapped", [40, 49, 55, 41]], [[9349, 9349], "disallowed_STD3_mapped", [40, 49, 56, 41]], [[9350, 9350], "disallowed_STD3_mapped", [40, 49, 57, 41]], [[9351, 9351], "disallowed_STD3_mapped", [40, 50, 48, 41]], [[9352, 9371], "disallowed"], [[9372, 9372], "disallowed_STD3_mapped", [40, 97, 41]], [[9373, 9373], "disallowed_STD3_mapped", [40, 98, 41]], [[9374, 9374], "disallowed_STD3_mapped", [40, 99, 41]], [[9375, 9375], "disallowed_STD3_mapped", [40, 100, 41]], [[9376, 9376], "disallowed_STD3_mapped", [40, 101, 41]], [[9377, 9377], "disallowed_STD3_mapped", [40, 102, 41]], [[9378, 9378], "disallowed_STD3_mapped", [40, 103, 41]], [[9379, 9379], "disallowed_STD3_mapped", [40, 104, 41]], [[9380, 9380], "disallowed_STD3_mapped", [40, 105, 41]], [[9381, 9381], "disallowed_STD3_mapped", [40, 106, 41]], [[9382, 9382], "disallowed_STD3_mapped", [40, 107, 41]], [[9383, 9383], "disallowed_STD3_mapped", [40, 108, 41]], [[9384, 9384], "disallowed_STD3_mapped", [40, 109, 41]], [[9385, 9385], "disallowed_STD3_mapped", [40, 110, 41]], [[9386, 9386], "disallowed_STD3_mapped", [40, 111, 41]], [[9387, 9387], "disallowed_STD3_mapped", [40, 112, 41]], [[9388, 9388], "disallowed_STD3_mapped", [40, 113, 41]], [[9389, 9389], "disallowed_STD3_mapped", [40, 114, 41]], [[9390, 9390], "disallowed_STD3_mapped", [40, 115, 41]], [[9391, 9391], "disallowed_STD3_mapped", [40, 116, 41]], [[9392, 9392], "disallowed_STD3_mapped", [40, 117, 41]], [[9393, 9393], "disallowed_STD3_mapped", [40, 118, 41]], [[9394, 9394], "disallowed_STD3_mapped", [40, 119, 41]], [[9395, 9395], "disallowed_STD3_mapped", [40, 120, 41]], [[9396, 9396], "disallowed_STD3_mapped", [40, 121, 41]], [[9397, 9397], "disallowed_STD3_mapped", [40, 122, 41]], [[9398, 9398], "mapped", [97]], [[9399, 9399], "mapped", [98]], [[9400, 9400], "mapped", [99]], [[9401, 9401], "mapped", [100]], [[9402, 9402], "mapped", [101]], [[9403, 9403], "mapped", [102]], [[9404, 9404], "mapped", [103]], [[9405, 9405], "mapped", [104]], [[9406, 9406], "mapped", [105]], [[9407, 9407], "mapped", [106]], [[9408, 9408], "mapped", [107]], [[9409, 9409], "mapped", [108]], [[9410, 9410], "mapped", [109]], [[9411, 9411], "mapped", [110]], [[9412, 9412], "mapped", [111]], [[9413, 9413], "mapped", [112]], [[9414, 9414], "mapped", [113]], [[9415, 9415], "mapped", [114]], [[9416, 9416], "mapped", [115]], [[9417, 9417], "mapped", [116]], [[9418, 9418], "mapped", [117]], [[9419, 9419], "mapped", [118]], [[9420, 9420], "mapped", [119]], [[9421, 9421], "mapped", [120]], [[9422, 9422], "mapped", [121]], [[9423, 9423], "mapped", [122]], [[9424, 9424], "mapped", [97]], [[9425, 9425], "mapped", [98]], [[9426, 9426], "mapped", [99]], [[9427, 9427], "mapped", [100]], [[9428, 9428], "mapped", [101]], [[9429, 9429], "mapped", [102]], [[9430, 9430], "mapped", [103]], [[9431, 9431], "mapped", [104]], [[9432, 9432], "mapped", [105]], [[9433, 9433], "mapped", [106]], [[9434, 9434], "mapped", [107]], [[9435, 9435], "mapped", [108]], [[9436, 9436], "mapped", [109]], [[9437, 9437], "mapped", [110]], [[9438, 9438], "mapped", [111]], [[9439, 9439], "mapped", [112]], [[9440, 9440], "mapped", [113]], [[9441, 9441], "mapped", [114]], [[9442, 9442], "mapped", [115]], [[9443, 9443], "mapped", [116]], [[9444, 9444], "mapped", [117]], [[9445, 9445], "mapped", [118]], [[9446, 9446], "mapped", [119]], [[9447, 9447], "mapped", [120]], [[9448, 9448], "mapped", [121]], [[9449, 9449], "mapped", [122]], [[9450, 9450], "mapped", [48]], [[9451, 9470], "valid", [], "NV8"], [[9471, 9471], "valid", [], "NV8"], [[9472, 9621], "valid", [], "NV8"], [[9622, 9631], "valid", [], "NV8"], [[9632, 9711], "valid", [], "NV8"], [[9712, 9719], "valid", [], "NV8"], [[9720, 9727], "valid", [], "NV8"], [[9728, 9747], "valid", [], "NV8"], [[9748, 9749], "valid", [], "NV8"], [[9750, 9751], "valid", [], "NV8"], [[9752, 9752], "valid", [], "NV8"], [[9753, 9753], "valid", [], "NV8"], [[9754, 9839], "valid", [], "NV8"], [[9840, 9841], "valid", [], "NV8"], [[9842, 9853], "valid", [], "NV8"], [[9854, 9855], "valid", [], "NV8"], [[9856, 9865], "valid", [], "NV8"], [[9866, 9873], "valid", [], "NV8"], [[9874, 9884], "valid", [], "NV8"], [[9885, 9885], "valid", [], "NV8"], [[9886, 9887], "valid", [], "NV8"], [[9888, 9889], "valid", [], "NV8"], [[9890, 9905], "valid", [], "NV8"], [[9906, 9906], "valid", [], "NV8"], [[9907, 9916], "valid", [], "NV8"], [[9917, 9919], "valid", [], "NV8"], [[9920, 9923], "valid", [], "NV8"], [[9924, 9933], "valid", [], "NV8"], [[9934, 9934], "valid", [], "NV8"], [[9935, 9953], "valid", [], "NV8"], [[9954, 9954], "valid", [], "NV8"], [[9955, 9955], "valid", [], "NV8"], [[9956, 9959], "valid", [], "NV8"], [[9960, 9983], "valid", [], "NV8"], [[9984, 9984], "valid", [], "NV8"], [[9985, 9988], "valid", [], "NV8"], [[9989, 9989], "valid", [], "NV8"], [[9990, 9993], "valid", [], "NV8"], [[9994, 9995], "valid", [], "NV8"], [[9996, 10023], "valid", [], "NV8"], [[10024, 10024], "valid", [], "NV8"], [[10025, 10059], "valid", [], "NV8"], [[10060, 10060], "valid", [], "NV8"], [[10061, 10061], "valid", [], "NV8"], [[10062, 10062], "valid", [], "NV8"], [[10063, 10066], "valid", [], "NV8"], [[10067, 10069], "valid", [], "NV8"], [[10070, 10070], "valid", [], "NV8"], [[10071, 10071], "valid", [], "NV8"], [[10072, 10078], "valid", [], "NV8"], [[10079, 10080], "valid", [], "NV8"], [[10081, 10087], "valid", [], "NV8"], [[10088, 10101], "valid", [], "NV8"], [[10102, 10132], "valid", [], "NV8"], [[10133, 10135], "valid", [], "NV8"], [[10136, 10159], "valid", [], "NV8"], [[10160, 10160], "valid", [], "NV8"], [[10161, 10174], "valid", [], "NV8"], [[10175, 10175], "valid", [], "NV8"], [[10176, 10182], "valid", [], "NV8"], [[10183, 10186], "valid", [], "NV8"], [[10187, 10187], "valid", [], "NV8"], [[10188, 10188], "valid", [], "NV8"], [[10189, 10189], "valid", [], "NV8"], [[10190, 10191], "valid", [], "NV8"], [[10192, 10219], "valid", [], "NV8"], [[10220, 10223], "valid", [], "NV8"], [[10224, 10239], "valid", [], "NV8"], [[10240, 10495], "valid", [], "NV8"], [[10496, 10763], "valid", [], "NV8"], [[10764, 10764], "mapped", [8747, 8747, 8747, 8747]], [[10765, 10867], "valid", [], "NV8"], [[10868, 10868], "disallowed_STD3_mapped", [58, 58, 61]], [[10869, 10869], "disallowed_STD3_mapped", [61, 61]], [[10870, 10870], "disallowed_STD3_mapped", [61, 61, 61]], [[10871, 10971], "valid", [], "NV8"], [[10972, 10972], "mapped", [10973, 824]], [[10973, 11007], "valid", [], "NV8"], [[11008, 11021], "valid", [], "NV8"], [[11022, 11027], "valid", [], "NV8"], [[11028, 11034], "valid", [], "NV8"], [[11035, 11039], "valid", [], "NV8"], [[11040, 11043], "valid", [], "NV8"], [[11044, 11084], "valid", [], "NV8"], [[11085, 11087], "valid", [], "NV8"], [[11088, 11092], "valid", [], "NV8"], [[11093, 11097], "valid", [], "NV8"], [[11098, 11123], "valid", [], "NV8"], [[11124, 11125], "disallowed"], [[11126, 11157], "valid", [], "NV8"], [[11158, 11159], "disallowed"], [[11160, 11193], "valid", [], "NV8"], [[11194, 11196], "disallowed"], [[11197, 11208], "valid", [], "NV8"], [[11209, 11209], "disallowed"], [[11210, 11217], "valid", [], "NV8"], [[11218, 11243], "disallowed"], [[11244, 11247], "valid", [], "NV8"], [[11248, 11263], "disallowed"], [[11264, 11264], "mapped", [11312]], [[11265, 11265], "mapped", [11313]], [[11266, 11266], "mapped", [11314]], [[11267, 11267], "mapped", [11315]], [[11268, 11268], "mapped", [11316]], [[11269, 11269], "mapped", [11317]], [[11270, 11270], "mapped", [11318]], [[11271, 11271], "mapped", [11319]], [[11272, 11272], "mapped", [11320]], [[11273, 11273], "mapped", [11321]], [[11274, 11274], "mapped", [11322]], [[11275, 11275], "mapped", [11323]], [[11276, 11276], "mapped", [11324]], [[11277, 11277], "mapped", [11325]], [[11278, 11278], "mapped", [11326]], [[11279, 11279], "mapped", [11327]], [[11280, 11280], "mapped", [11328]], [[11281, 11281], "mapped", [11329]], [[11282, 11282], "mapped", [11330]], [[11283, 11283], "mapped", [11331]], [[11284, 11284], "mapped", [11332]], [[11285, 11285], "mapped", [11333]], [[11286, 11286], "mapped", [11334]], [[11287, 11287], "mapped", [11335]], [[11288, 11288], "mapped", [11336]], [[11289, 11289], "mapped", [11337]], [[11290, 11290], "mapped", [11338]], [[11291, 11291], "mapped", [11339]], [[11292, 11292], "mapped", [11340]], [[11293, 11293], "mapped", [11341]], [[11294, 11294], "mapped", [11342]], [[11295, 11295], "mapped", [11343]], [[11296, 11296], "mapped", [11344]], [[11297, 11297], "mapped", [11345]], [[11298, 11298], "mapped", [11346]], [[11299, 11299], "mapped", [11347]], [[11300, 11300], "mapped", [11348]], [[11301, 11301], "mapped", [11349]], [[11302, 11302], "mapped", [11350]], [[11303, 11303], "mapped", [11351]], [[11304, 11304], "mapped", [11352]], [[11305, 11305], "mapped", [11353]], [[11306, 11306], "mapped", [11354]], [[11307, 11307], "mapped", [11355]], [[11308, 11308], "mapped", [11356]], [[11309, 11309], "mapped", [11357]], [[11310, 11310], "mapped", [11358]], [[11311, 11311], "disallowed"], [[11312, 11358], "valid"], [[11359, 11359], "disallowed"], [[11360, 11360], "mapped", [11361]], [[11361, 11361], "valid"], [[11362, 11362], "mapped", [619]], [[11363, 11363], "mapped", [7549]], [[11364, 11364], "mapped", [637]], [[11365, 11366], "valid"], [[11367, 11367], "mapped", [11368]], [[11368, 11368], "valid"], [[11369, 11369], "mapped", [11370]], [[11370, 11370], "valid"], [[11371, 11371], "mapped", [11372]], [[11372, 11372], "valid"], [[11373, 11373], "mapped", [593]], [[11374, 11374], "mapped", [625]], [[11375, 11375], "mapped", [592]], [[11376, 11376], "mapped", [594]], [[11377, 11377], "valid"], [[11378, 11378], "mapped", [11379]], [[11379, 11379], "valid"], [[11380, 11380], "valid"], [[11381, 11381], "mapped", [11382]], [[11382, 11383], "valid"], [[11384, 11387], "valid"], [[11388, 11388], "mapped", [106]], [[11389, 11389], "mapped", [118]], [[11390, 11390], "mapped", [575]], [[11391, 11391], "mapped", [576]], [[11392, 11392], "mapped", [11393]], [[11393, 11393], "valid"], [[11394, 11394], "mapped", [11395]], [[11395, 11395], "valid"], [[11396, 11396], "mapped", [11397]], [[11397, 11397], "valid"], [[11398, 11398], "mapped", [11399]], [[11399, 11399], "valid"], [[11400, 11400], "mapped", [11401]], [[11401, 11401], "valid"], [[11402, 11402], "mapped", [11403]], [[11403, 11403], "valid"], [[11404, 11404], "mapped", [11405]], [[11405, 11405], "valid"], [[11406, 11406], "mapped", [11407]], [[11407, 11407], "valid"], [[11408, 11408], "mapped", [11409]], [[11409, 11409], "valid"], [[11410, 11410], "mapped", [11411]], [[11411, 11411], "valid"], [[11412, 11412], "mapped", [11413]], [[11413, 11413], "valid"], [[11414, 11414], "mapped", [11415]], [[11415, 11415], "valid"], [[11416, 11416], "mapped", [11417]], [[11417, 11417], "valid"], [[11418, 11418], "mapped", [11419]], [[11419, 11419], "valid"], [[11420, 11420], "mapped", [11421]], [[11421, 11421], "valid"], [[11422, 11422], "mapped", [11423]], [[11423, 11423], "valid"], [[11424, 11424], "mapped", [11425]], [[11425, 11425], "valid"], [[11426, 11426], "mapped", [11427]], [[11427, 11427], "valid"], [[11428, 11428], "mapped", [11429]], [[11429, 11429], "valid"], [[11430, 11430], "mapped", [11431]], [[11431, 11431], "valid"], [[11432, 11432], "mapped", [11433]], [[11433, 11433], "valid"], [[11434, 11434], "mapped", [11435]], [[11435, 11435], "valid"], [[11436, 11436], "mapped", [11437]], [[11437, 11437], "valid"], [[11438, 11438], "mapped", [11439]], [[11439, 11439], "valid"], [[11440, 11440], "mapped", [11441]], [[11441, 11441], "valid"], [[11442, 11442], "mapped", [11443]], [[11443, 11443], "valid"], [[11444, 11444], "mapped", [11445]], [[11445, 11445], "valid"], [[11446, 11446], "mapped", [11447]], [[11447, 11447], "valid"], [[11448, 11448], "mapped", [11449]], [[11449, 11449], "valid"], [[11450, 11450], "mapped", [11451]], [[11451, 11451], "valid"], [[11452, 11452], "mapped", [11453]], [[11453, 11453], "valid"], [[11454, 11454], "mapped", [11455]], [[11455, 11455], "valid"], [[11456, 11456], "mapped", [11457]], [[11457, 11457], "valid"], [[11458, 11458], "mapped", [11459]], [[11459, 11459], "valid"], [[11460, 11460], "mapped", [11461]], [[11461, 11461], "valid"], [[11462, 11462], "mapped", [11463]], [[11463, 11463], "valid"], [[11464, 11464], "mapped", [11465]], [[11465, 11465], "valid"], [[11466, 11466], "mapped", [11467]], [[11467, 11467], "valid"], [[11468, 11468], "mapped", [11469]], [[11469, 11469], "valid"], [[11470, 11470], "mapped", [11471]], [[11471, 11471], "valid"], [[11472, 11472], "mapped", [11473]], [[11473, 11473], "valid"], [[11474, 11474], "mapped", [11475]], [[11475, 11475], "valid"], [[11476, 11476], "mapped", [11477]], [[11477, 11477], "valid"], [[11478, 11478], "mapped", [11479]], [[11479, 11479], "valid"], [[11480, 11480], "mapped", [11481]], [[11481, 11481], "valid"], [[11482, 11482], "mapped", [11483]], [[11483, 11483], "valid"], [[11484, 11484], "mapped", [11485]], [[11485, 11485], "valid"], [[11486, 11486], "mapped", [11487]], [[11487, 11487], "valid"], [[11488, 11488], "mapped", [11489]], [[11489, 11489], "valid"], [[11490, 11490], "mapped", [11491]], [[11491, 11492], "valid"], [[11493, 11498], "valid", [], "NV8"], [[11499, 11499], "mapped", [11500]], [[11500, 11500], "valid"], [[11501, 11501], "mapped", [11502]], [[11502, 11505], "valid"], [[11506, 11506], "mapped", [11507]], [[11507, 11507], "valid"], [[11508, 11512], "disallowed"], [[11513, 11519], "valid", [], "NV8"], [[11520, 11557], "valid"], [[11558, 11558], "disallowed"], [[11559, 11559], "valid"], [[11560, 11564], "disallowed"], [[11565, 11565], "valid"], [[11566, 11567], "disallowed"], [[11568, 11621], "valid"], [[11622, 11623], "valid"], [[11624, 11630], "disallowed"], [[11631, 11631], "mapped", [11617]], [[11632, 11632], "valid", [], "NV8"], [[11633, 11646], "disallowed"], [[11647, 11647], "valid"], [[11648, 11670], "valid"], [[11671, 11679], "disallowed"], [[11680, 11686], "valid"], [[11687, 11687], "disallowed"], [[11688, 11694], "valid"], [[11695, 11695], "disallowed"], [[11696, 11702], "valid"], [[11703, 11703], "disallowed"], [[11704, 11710], "valid"], [[11711, 11711], "disallowed"], [[11712, 11718], "valid"], [[11719, 11719], "disallowed"], [[11720, 11726], "valid"], [[11727, 11727], "disallowed"], [[11728, 11734], "valid"], [[11735, 11735], "disallowed"], [[11736, 11742], "valid"], [[11743, 11743], "disallowed"], [[11744, 11775], "valid"], [[11776, 11799], "valid", [], "NV8"], [[11800, 11803], "valid", [], "NV8"], [[11804, 11805], "valid", [], "NV8"], [[11806, 11822], "valid", [], "NV8"], [[11823, 11823], "valid"], [[11824, 11824], "valid", [], "NV8"], [[11825, 11825], "valid", [], "NV8"], [[11826, 11835], "valid", [], "NV8"], [[11836, 11842], "valid", [], "NV8"], [[11843, 11903], "disallowed"], [[11904, 11929], "valid", [], "NV8"], [[11930, 11930], "disallowed"], [[11931, 11934], "valid", [], "NV8"], [[11935, 11935], "mapped", [27597]], [[11936, 12018], "valid", [], "NV8"], [[12019, 12019], "mapped", [40863]], [[12020, 12031], "disallowed"], [[12032, 12032], "mapped", [19968]], [[12033, 12033], "mapped", [20008]], [[12034, 12034], "mapped", [20022]], [[12035, 12035], "mapped", [20031]], [[12036, 12036], "mapped", [20057]], [[12037, 12037], "mapped", [20101]], [[12038, 12038], "mapped", [20108]], [[12039, 12039], "mapped", [20128]], [[12040, 12040], "mapped", [20154]], [[12041, 12041], "mapped", [20799]], [[12042, 12042], "mapped", [20837]], [[12043, 12043], "mapped", [20843]], [[12044, 12044], "mapped", [20866]], [[12045, 12045], "mapped", [20886]], [[12046, 12046], "mapped", [20907]], [[12047, 12047], "mapped", [20960]], [[12048, 12048], "mapped", [20981]], [[12049, 12049], "mapped", [20992]], [[12050, 12050], "mapped", [21147]], [[12051, 12051], "mapped", [21241]], [[12052, 12052], "mapped", [21269]], [[12053, 12053], "mapped", [21274]], [[12054, 12054], "mapped", [21304]], [[12055, 12055], "mapped", [21313]], [[12056, 12056], "mapped", [21340]], [[12057, 12057], "mapped", [21353]], [[12058, 12058], "mapped", [21378]], [[12059, 12059], "mapped", [21430]], [[12060, 12060], "mapped", [21448]], [[12061, 12061], "mapped", [21475]], [[12062, 12062], "mapped", [22231]], [[12063, 12063], "mapped", [22303]], [[12064, 12064], "mapped", [22763]], [[12065, 12065], "mapped", [22786]], [[12066, 12066], "mapped", [22794]], [[12067, 12067], "mapped", [22805]], [[12068, 12068], "mapped", [22823]], [[12069, 12069], "mapped", [22899]], [[12070, 12070], "mapped", [23376]], [[12071, 12071], "mapped", [23424]], [[12072, 12072], "mapped", [23544]], [[12073, 12073], "mapped", [23567]], [[12074, 12074], "mapped", [23586]], [[12075, 12075], "mapped", [23608]], [[12076, 12076], "mapped", [23662]], [[12077, 12077], "mapped", [23665]], [[12078, 12078], "mapped", [24027]], [[12079, 12079], "mapped", [24037]], [[12080, 12080], "mapped", [24049]], [[12081, 12081], "mapped", [24062]], [[12082, 12082], "mapped", [24178]], [[12083, 12083], "mapped", [24186]], [[12084, 12084], "mapped", [24191]], [[12085, 12085], "mapped", [24308]], [[12086, 12086], "mapped", [24318]], [[12087, 12087], "mapped", [24331]], [[12088, 12088], "mapped", [24339]], [[12089, 12089], "mapped", [24400]], [[12090, 12090], "mapped", [24417]], [[12091, 12091], "mapped", [24435]], [[12092, 12092], "mapped", [24515]], [[12093, 12093], "mapped", [25096]], [[12094, 12094], "mapped", [25142]], [[12095, 12095], "mapped", [25163]], [[12096, 12096], "mapped", [25903]], [[12097, 12097], "mapped", [25908]], [[12098, 12098], "mapped", [25991]], [[12099, 12099], "mapped", [26007]], [[12100, 12100], "mapped", [26020]], [[12101, 12101], "mapped", [26041]], [[12102, 12102], "mapped", [26080]], [[12103, 12103], "mapped", [26085]], [[12104, 12104], "mapped", [26352]], [[12105, 12105], "mapped", [26376]], [[12106, 12106], "mapped", [26408]], [[12107, 12107], "mapped", [27424]], [[12108, 12108], "mapped", [27490]], [[12109, 12109], "mapped", [27513]], [[12110, 12110], "mapped", [27571]], [[12111, 12111], "mapped", [27595]], [[12112, 12112], "mapped", [27604]], [[12113, 12113], "mapped", [27611]], [[12114, 12114], "mapped", [27663]], [[12115, 12115], "mapped", [27668]], [[12116, 12116], "mapped", [27700]], [[12117, 12117], "mapped", [28779]], [[12118, 12118], "mapped", [29226]], [[12119, 12119], "mapped", [29238]], [[12120, 12120], "mapped", [29243]], [[12121, 12121], "mapped", [29247]], [[12122, 12122], "mapped", [29255]], [[12123, 12123], "mapped", [29273]], [[12124, 12124], "mapped", [29275]], [[12125, 12125], "mapped", [29356]], [[12126, 12126], "mapped", [29572]], [[12127, 12127], "mapped", [29577]], [[12128, 12128], "mapped", [29916]], [[12129, 12129], "mapped", [29926]], [[12130, 12130], "mapped", [29976]], [[12131, 12131], "mapped", [29983]], [[12132, 12132], "mapped", [29992]], [[12133, 12133], "mapped", [3e4]], [[12134, 12134], "mapped", [30091]], [[12135, 12135], "mapped", [30098]], [[12136, 12136], "mapped", [30326]], [[12137, 12137], "mapped", [30333]], [[12138, 12138], "mapped", [30382]], [[12139, 12139], "mapped", [30399]], [[12140, 12140], "mapped", [30446]], [[12141, 12141], "mapped", [30683]], [[12142, 12142], "mapped", [30690]], [[12143, 12143], "mapped", [30707]], [[12144, 12144], "mapped", [31034]], [[12145, 12145], "mapped", [31160]], [[12146, 12146], "mapped", [31166]], [[12147, 12147], "mapped", [31348]], [[12148, 12148], "mapped", [31435]], [[12149, 12149], "mapped", [31481]], [[12150, 12150], "mapped", [31859]], [[12151, 12151], "mapped", [31992]], [[12152, 12152], "mapped", [32566]], [[12153, 12153], "mapped", [32593]], [[12154, 12154], "mapped", [32650]], [[12155, 12155], "mapped", [32701]], [[12156, 12156], "mapped", [32769]], [[12157, 12157], "mapped", [32780]], [[12158, 12158], "mapped", [32786]], [[12159, 12159], "mapped", [32819]], [[12160, 12160], "mapped", [32895]], [[12161, 12161], "mapped", [32905]], [[12162, 12162], "mapped", [33251]], [[12163, 12163], "mapped", [33258]], [[12164, 12164], "mapped", [33267]], [[12165, 12165], "mapped", [33276]], [[12166, 12166], "mapped", [33292]], [[12167, 12167], "mapped", [33307]], [[12168, 12168], "mapped", [33311]], [[12169, 12169], "mapped", [33390]], [[12170, 12170], "mapped", [33394]], [[12171, 12171], "mapped", [33400]], [[12172, 12172], "mapped", [34381]], [[12173, 12173], "mapped", [34411]], [[12174, 12174], "mapped", [34880]], [[12175, 12175], "mapped", [34892]], [[12176, 12176], "mapped", [34915]], [[12177, 12177], "mapped", [35198]], [[12178, 12178], "mapped", [35211]], [[12179, 12179], "mapped", [35282]], [[12180, 12180], "mapped", [35328]], [[12181, 12181], "mapped", [35895]], [[12182, 12182], "mapped", [35910]], [[12183, 12183], "mapped", [35925]], [[12184, 12184], "mapped", [35960]], [[12185, 12185], "mapped", [35997]], [[12186, 12186], "mapped", [36196]], [[12187, 12187], "mapped", [36208]], [[12188, 12188], "mapped", [36275]], [[12189, 12189], "mapped", [36523]], [[12190, 12190], "mapped", [36554]], [[12191, 12191], "mapped", [36763]], [[12192, 12192], "mapped", [36784]], [[12193, 12193], "mapped", [36789]], [[12194, 12194], "mapped", [37009]], [[12195, 12195], "mapped", [37193]], [[12196, 12196], "mapped", [37318]], [[12197, 12197], "mapped", [37324]], [[12198, 12198], "mapped", [37329]], [[12199, 12199], "mapped", [38263]], [[12200, 12200], "mapped", [38272]], [[12201, 12201], "mapped", [38428]], [[12202, 12202], "mapped", [38582]], [[12203, 12203], "mapped", [38585]], [[12204, 12204], "mapped", [38632]], [[12205, 12205], "mapped", [38737]], [[12206, 12206], "mapped", [38750]], [[12207, 12207], "mapped", [38754]], [[12208, 12208], "mapped", [38761]], [[12209, 12209], "mapped", [38859]], [[12210, 12210], "mapped", [38893]], [[12211, 12211], "mapped", [38899]], [[12212, 12212], "mapped", [38913]], [[12213, 12213], "mapped", [39080]], [[12214, 12214], "mapped", [39131]], [[12215, 12215], "mapped", [39135]], [[12216, 12216], "mapped", [39318]], [[12217, 12217], "mapped", [39321]], [[12218, 12218], "mapped", [39340]], [[12219, 12219], "mapped", [39592]], [[12220, 12220], "mapped", [39640]], [[12221, 12221], "mapped", [39647]], [[12222, 12222], "mapped", [39717]], [[12223, 12223], "mapped", [39727]], [[12224, 12224], "mapped", [39730]], [[12225, 12225], "mapped", [39740]], [[12226, 12226], "mapped", [39770]], [[12227, 12227], "mapped", [40165]], [[12228, 12228], "mapped", [40565]], [[12229, 12229], "mapped", [40575]], [[12230, 12230], "mapped", [40613]], [[12231, 12231], "mapped", [40635]], [[12232, 12232], "mapped", [40643]], [[12233, 12233], "mapped", [40653]], [[12234, 12234], "mapped", [40657]], [[12235, 12235], "mapped", [40697]], [[12236, 12236], "mapped", [40701]], [[12237, 12237], "mapped", [40718]], [[12238, 12238], "mapped", [40723]], [[12239, 12239], "mapped", [40736]], [[12240, 12240], "mapped", [40763]], [[12241, 12241], "mapped", [40778]], [[12242, 12242], "mapped", [40786]], [[12243, 12243], "mapped", [40845]], [[12244, 12244], "mapped", [40860]], [[12245, 12245], "mapped", [40864]], [[12246, 12271], "disallowed"], [[12272, 12283], "disallowed"], [[12284, 12287], "disallowed"], [[12288, 12288], "disallowed_STD3_mapped", [32]], [[12289, 12289], "valid", [], "NV8"], [[12290, 12290], "mapped", [46]], [[12291, 12292], "valid", [], "NV8"], [[12293, 12295], "valid"], [[12296, 12329], "valid", [], "NV8"], [[12330, 12333], "valid"], [[12334, 12341], "valid", [], "NV8"], [[12342, 12342], "mapped", [12306]], [[12343, 12343], "valid", [], "NV8"], [[12344, 12344], "mapped", [21313]], [[12345, 12345], "mapped", [21316]], [[12346, 12346], "mapped", [21317]], [[12347, 12347], "valid", [], "NV8"], [[12348, 12348], "valid"], [[12349, 12349], "valid", [], "NV8"], [[12350, 12350], "valid", [], "NV8"], [[12351, 12351], "valid", [], "NV8"], [[12352, 12352], "disallowed"], [[12353, 12436], "valid"], [[12437, 12438], "valid"], [[12439, 12440], "disallowed"], [[12441, 12442], "valid"], [[12443, 12443], "disallowed_STD3_mapped", [32, 12441]], [[12444, 12444], "disallowed_STD3_mapped", [32, 12442]], [[12445, 12446], "valid"], [[12447, 12447], "mapped", [12424, 12426]], [[12448, 12448], "valid", [], "NV8"], [[12449, 12542], "valid"], [[12543, 12543], "mapped", [12467, 12488]], [[12544, 12548], "disallowed"], [[12549, 12588], "valid"], [[12589, 12589], "valid"], [[12590, 12592], "disallowed"], [[12593, 12593], "mapped", [4352]], [[12594, 12594], "mapped", [4353]], [[12595, 12595], "mapped", [4522]], [[12596, 12596], "mapped", [4354]], [[12597, 12597], "mapped", [4524]], [[12598, 12598], "mapped", [4525]], [[12599, 12599], "mapped", [4355]], [[12600, 12600], "mapped", [4356]], [[12601, 12601], "mapped", [4357]], [[12602, 12602], "mapped", [4528]], [[12603, 12603], "mapped", [4529]], [[12604, 12604], "mapped", [4530]], [[12605, 12605], "mapped", [4531]], [[12606, 12606], "mapped", [4532]], [[12607, 12607], "mapped", [4533]], [[12608, 12608], "mapped", [4378]], [[12609, 12609], "mapped", [4358]], [[12610, 12610], "mapped", [4359]], [[12611, 12611], "mapped", [4360]], [[12612, 12612], "mapped", [4385]], [[12613, 12613], "mapped", [4361]], [[12614, 12614], "mapped", [4362]], [[12615, 12615], "mapped", [4363]], [[12616, 12616], "mapped", [4364]], [[12617, 12617], "mapped", [4365]], [[12618, 12618], "mapped", [4366]], [[12619, 12619], "mapped", [4367]], [[12620, 12620], "mapped", [4368]], [[12621, 12621], "mapped", [4369]], [[12622, 12622], "mapped", [4370]], [[12623, 12623], "mapped", [4449]], [[12624, 12624], "mapped", [4450]], [[12625, 12625], "mapped", [4451]], [[12626, 12626], "mapped", [4452]], [[12627, 12627], "mapped", [4453]], [[12628, 12628], "mapped", [4454]], [[12629, 12629], "mapped", [4455]], [[12630, 12630], "mapped", [4456]], [[12631, 12631], "mapped", [4457]], [[12632, 12632], "mapped", [4458]], [[12633, 12633], "mapped", [4459]], [[12634, 12634], "mapped", [4460]], [[12635, 12635], "mapped", [4461]], [[12636, 12636], "mapped", [4462]], [[12637, 12637], "mapped", [4463]], [[12638, 12638], "mapped", [4464]], [[12639, 12639], "mapped", [4465]], [[12640, 12640], "mapped", [4466]], [[12641, 12641], "mapped", [4467]], [[12642, 12642], "mapped", [4468]], [[12643, 12643], "mapped", [4469]], [[12644, 12644], "disallowed"], [[12645, 12645], "mapped", [4372]], [[12646, 12646], "mapped", [4373]], [[12647, 12647], "mapped", [4551]], [[12648, 12648], "mapped", [4552]], [[12649, 12649], "mapped", [4556]], [[12650, 12650], "mapped", [4558]], [[12651, 12651], "mapped", [4563]], [[12652, 12652], "mapped", [4567]], [[12653, 12653], "mapped", [4569]], [[12654, 12654], "mapped", [4380]], [[12655, 12655], "mapped", [4573]], [[12656, 12656], "mapped", [4575]], [[12657, 12657], "mapped", [4381]], [[12658, 12658], "mapped", [4382]], [[12659, 12659], "mapped", [4384]], [[12660, 12660], "mapped", [4386]], [[12661, 12661], "mapped", [4387]], [[12662, 12662], "mapped", [4391]], [[12663, 12663], "mapped", [4393]], [[12664, 12664], "mapped", [4395]], [[12665, 12665], "mapped", [4396]], [[12666, 12666], "mapped", [4397]], [[12667, 12667], "mapped", [4398]], [[12668, 12668], "mapped", [4399]], [[12669, 12669], "mapped", [4402]], [[12670, 12670], "mapped", [4406]], [[12671, 12671], "mapped", [4416]], [[12672, 12672], "mapped", [4423]], [[12673, 12673], "mapped", [4428]], [[12674, 12674], "mapped", [4593]], [[12675, 12675], "mapped", [4594]], [[12676, 12676], "mapped", [4439]], [[12677, 12677], "mapped", [4440]], [[12678, 12678], "mapped", [4441]], [[12679, 12679], "mapped", [4484]], [[12680, 12680], "mapped", [4485]], [[12681, 12681], "mapped", [4488]], [[12682, 12682], "mapped", [4497]], [[12683, 12683], "mapped", [4498]], [[12684, 12684], "mapped", [4500]], [[12685, 12685], "mapped", [4510]], [[12686, 12686], "mapped", [4513]], [[12687, 12687], "disallowed"], [[12688, 12689], "valid", [], "NV8"], [[12690, 12690], "mapped", [19968]], [[12691, 12691], "mapped", [20108]], [[12692, 12692], "mapped", [19977]], [[12693, 12693], "mapped", [22235]], [[12694, 12694], "mapped", [19978]], [[12695, 12695], "mapped", [20013]], [[12696, 12696], "mapped", [19979]], [[12697, 12697], "mapped", [30002]], [[12698, 12698], "mapped", [20057]], [[12699, 12699], "mapped", [19993]], [[12700, 12700], "mapped", [19969]], [[12701, 12701], "mapped", [22825]], [[12702, 12702], "mapped", [22320]], [[12703, 12703], "mapped", [20154]], [[12704, 12727], "valid"], [[12728, 12730], "valid"], [[12731, 12735], "disallowed"], [[12736, 12751], "valid", [], "NV8"], [[12752, 12771], "valid", [], "NV8"], [[12772, 12783], "disallowed"], [[12784, 12799], "valid"], [[12800, 12800], "disallowed_STD3_mapped", [40, 4352, 41]], [[12801, 12801], "disallowed_STD3_mapped", [40, 4354, 41]], [[12802, 12802], "disallowed_STD3_mapped", [40, 4355, 41]], [[12803, 12803], "disallowed_STD3_mapped", [40, 4357, 41]], [[12804, 12804], "disallowed_STD3_mapped", [40, 4358, 41]], [[12805, 12805], "disallowed_STD3_mapped", [40, 4359, 41]], [[12806, 12806], "disallowed_STD3_mapped", [40, 4361, 41]], [[12807, 12807], "disallowed_STD3_mapped", [40, 4363, 41]], [[12808, 12808], "disallowed_STD3_mapped", [40, 4364, 41]], [[12809, 12809], "disallowed_STD3_mapped", [40, 4366, 41]], [[12810, 12810], "disallowed_STD3_mapped", [40, 4367, 41]], [[12811, 12811], "disallowed_STD3_mapped", [40, 4368, 41]], [[12812, 12812], "disallowed_STD3_mapped", [40, 4369, 41]], [[12813, 12813], "disallowed_STD3_mapped", [40, 4370, 41]], [[12814, 12814], "disallowed_STD3_mapped", [40, 44032, 41]], [[12815, 12815], "disallowed_STD3_mapped", [40, 45208, 41]], [[12816, 12816], "disallowed_STD3_mapped", [40, 45796, 41]], [[12817, 12817], "disallowed_STD3_mapped", [40, 46972, 41]], [[12818, 12818], "disallowed_STD3_mapped", [40, 47560, 41]], [[12819, 12819], "disallowed_STD3_mapped", [40, 48148, 41]], [[12820, 12820], "disallowed_STD3_mapped", [40, 49324, 41]], [[12821, 12821], "disallowed_STD3_mapped", [40, 50500, 41]], [[12822, 12822], "disallowed_STD3_mapped", [40, 51088, 41]], [[12823, 12823], "disallowed_STD3_mapped", [40, 52264, 41]], [[12824, 12824], "disallowed_STD3_mapped", [40, 52852, 41]], [[12825, 12825], "disallowed_STD3_mapped", [40, 53440, 41]], [[12826, 12826], "disallowed_STD3_mapped", [40, 54028, 41]], [[12827, 12827], "disallowed_STD3_mapped", [40, 54616, 41]], [[12828, 12828], "disallowed_STD3_mapped", [40, 51452, 41]], [[12829, 12829], "disallowed_STD3_mapped", [40, 50724, 51204, 41]], [[12830, 12830], "disallowed_STD3_mapped", [40, 50724, 54980, 41]], [[12831, 12831], "disallowed"], [[12832, 12832], "disallowed_STD3_mapped", [40, 19968, 41]], [[12833, 12833], "disallowed_STD3_mapped", [40, 20108, 41]], [[12834, 12834], "disallowed_STD3_mapped", [40, 19977, 41]], [[12835, 12835], "disallowed_STD3_mapped", [40, 22235, 41]], [[12836, 12836], "disallowed_STD3_mapped", [40, 20116, 41]], [[12837, 12837], "disallowed_STD3_mapped", [40, 20845, 41]], [[12838, 12838], "disallowed_STD3_mapped", [40, 19971, 41]], [[12839, 12839], "disallowed_STD3_mapped", [40, 20843, 41]], [[12840, 12840], "disallowed_STD3_mapped", [40, 20061, 41]], [[12841, 12841], "disallowed_STD3_mapped", [40, 21313, 41]], [[12842, 12842], "disallowed_STD3_mapped", [40, 26376, 41]], [[12843, 12843], "disallowed_STD3_mapped", [40, 28779, 41]], [[12844, 12844], "disallowed_STD3_mapped", [40, 27700, 41]], [[12845, 12845], "disallowed_STD3_mapped", [40, 26408, 41]], [[12846, 12846], "disallowed_STD3_mapped", [40, 37329, 41]], [[12847, 12847], "disallowed_STD3_mapped", [40, 22303, 41]], [[12848, 12848], "disallowed_STD3_mapped", [40, 26085, 41]], [[12849, 12849], "disallowed_STD3_mapped", [40, 26666, 41]], [[12850, 12850], "disallowed_STD3_mapped", [40, 26377, 41]], [[12851, 12851], "disallowed_STD3_mapped", [40, 31038, 41]], [[12852, 12852], "disallowed_STD3_mapped", [40, 21517, 41]], [[12853, 12853], "disallowed_STD3_mapped", [40, 29305, 41]], [[12854, 12854], "disallowed_STD3_mapped", [40, 36001, 41]], [[12855, 12855], "disallowed_STD3_mapped", [40, 31069, 41]], [[12856, 12856], "disallowed_STD3_mapped", [40, 21172, 41]], [[12857, 12857], "disallowed_STD3_mapped", [40, 20195, 41]], [[12858, 12858], "disallowed_STD3_mapped", [40, 21628, 41]], [[12859, 12859], "disallowed_STD3_mapped", [40, 23398, 41]], [[12860, 12860], "disallowed_STD3_mapped", [40, 30435, 41]], [[12861, 12861], "disallowed_STD3_mapped", [40, 20225, 41]], [[12862, 12862], "disallowed_STD3_mapped", [40, 36039, 41]], [[12863, 12863], "disallowed_STD3_mapped", [40, 21332, 41]], [[12864, 12864], "disallowed_STD3_mapped", [40, 31085, 41]], [[12865, 12865], "disallowed_STD3_mapped", [40, 20241, 41]], [[12866, 12866], "disallowed_STD3_mapped", [40, 33258, 41]], [[12867, 12867], "disallowed_STD3_mapped", [40, 33267, 41]], [[12868, 12868], "mapped", [21839]], [[12869, 12869], "mapped", [24188]], [[12870, 12870], "mapped", [25991]], [[12871, 12871], "mapped", [31631]], [[12872, 12879], "valid", [], "NV8"], [[12880, 12880], "mapped", [112, 116, 101]], [[12881, 12881], "mapped", [50, 49]], [[12882, 12882], "mapped", [50, 50]], [[12883, 12883], "mapped", [50, 51]], [[12884, 12884], "mapped", [50, 52]], [[12885, 12885], "mapped", [50, 53]], [[12886, 12886], "mapped", [50, 54]], [[12887, 12887], "mapped", [50, 55]], [[12888, 12888], "mapped", [50, 56]], [[12889, 12889], "mapped", [50, 57]], [[12890, 12890], "mapped", [51, 48]], [[12891, 12891], "mapped", [51, 49]], [[12892, 12892], "mapped", [51, 50]], [[12893, 12893], "mapped", [51, 51]], [[12894, 12894], "mapped", [51, 52]], [[12895, 12895], "mapped", [51, 53]], [[12896, 12896], "mapped", [4352]], [[12897, 12897], "mapped", [4354]], [[12898, 12898], "mapped", [4355]], [[12899, 12899], "mapped", [4357]], [[12900, 12900], "mapped", [4358]], [[12901, 12901], "mapped", [4359]], [[12902, 12902], "mapped", [4361]], [[12903, 12903], "mapped", [4363]], [[12904, 12904], "mapped", [4364]], [[12905, 12905], "mapped", [4366]], [[12906, 12906], "mapped", [4367]], [[12907, 12907], "mapped", [4368]], [[12908, 12908], "mapped", [4369]], [[12909, 12909], "mapped", [4370]], [[12910, 12910], "mapped", [44032]], [[12911, 12911], "mapped", [45208]], [[12912, 12912], "mapped", [45796]], [[12913, 12913], "mapped", [46972]], [[12914, 12914], "mapped", [47560]], [[12915, 12915], "mapped", [48148]], [[12916, 12916], "mapped", [49324]], [[12917, 12917], "mapped", [50500]], [[12918, 12918], "mapped", [51088]], [[12919, 12919], "mapped", [52264]], [[12920, 12920], "mapped", [52852]], [[12921, 12921], "mapped", [53440]], [[12922, 12922], "mapped", [54028]], [[12923, 12923], "mapped", [54616]], [[12924, 12924], "mapped", [52280, 44256]], [[12925, 12925], "mapped", [51452, 51032]], [[12926, 12926], "mapped", [50864]], [[12927, 12927], "valid", [], "NV8"], [[12928, 12928], "mapped", [19968]], [[12929, 12929], "mapped", [20108]], [[12930, 12930], "mapped", [19977]], [[12931, 12931], "mapped", [22235]], [[12932, 12932], "mapped", [20116]], [[12933, 12933], "mapped", [20845]], [[12934, 12934], "mapped", [19971]], [[12935, 12935], "mapped", [20843]], [[12936, 12936], "mapped", [20061]], [[12937, 12937], "mapped", [21313]], [[12938, 12938], "mapped", [26376]], [[12939, 12939], "mapped", [28779]], [[12940, 12940], "mapped", [27700]], [[12941, 12941], "mapped", [26408]], [[12942, 12942], "mapped", [37329]], [[12943, 12943], "mapped", [22303]], [[12944, 12944], "mapped", [26085]], [[12945, 12945], "mapped", [26666]], [[12946, 12946], "mapped", [26377]], [[12947, 12947], "mapped", [31038]], [[12948, 12948], "mapped", [21517]], [[12949, 12949], "mapped", [29305]], [[12950, 12950], "mapped", [36001]], [[12951, 12951], "mapped", [31069]], [[12952, 12952], "mapped", [21172]], [[12953, 12953], "mapped", [31192]], [[12954, 12954], "mapped", [30007]], [[12955, 12955], "mapped", [22899]], [[12956, 12956], "mapped", [36969]], [[12957, 12957], "mapped", [20778]], [[12958, 12958], "mapped", [21360]], [[12959, 12959], "mapped", [27880]], [[12960, 12960], "mapped", [38917]], [[12961, 12961], "mapped", [20241]], [[12962, 12962], "mapped", [20889]], [[12963, 12963], "mapped", [27491]], [[12964, 12964], "mapped", [19978]], [[12965, 12965], "mapped", [20013]], [[12966, 12966], "mapped", [19979]], [[12967, 12967], "mapped", [24038]], [[12968, 12968], "mapped", [21491]], [[12969, 12969], "mapped", [21307]], [[12970, 12970], "mapped", [23447]], [[12971, 12971], "mapped", [23398]], [[12972, 12972], "mapped", [30435]], [[12973, 12973], "mapped", [20225]], [[12974, 12974], "mapped", [36039]], [[12975, 12975], "mapped", [21332]], [[12976, 12976], "mapped", [22812]], [[12977, 12977], "mapped", [51, 54]], [[12978, 12978], "mapped", [51, 55]], [[12979, 12979], "mapped", [51, 56]], [[12980, 12980], "mapped", [51, 57]], [[12981, 12981], "mapped", [52, 48]], [[12982, 12982], "mapped", [52, 49]], [[12983, 12983], "mapped", [52, 50]], [[12984, 12984], "mapped", [52, 51]], [[12985, 12985], "mapped", [52, 52]], [[12986, 12986], "mapped", [52, 53]], [[12987, 12987], "mapped", [52, 54]], [[12988, 12988], "mapped", [52, 55]], [[12989, 12989], "mapped", [52, 56]], [[12990, 12990], "mapped", [52, 57]], [[12991, 12991], "mapped", [53, 48]], [[12992, 12992], "mapped", [49, 26376]], [[12993, 12993], "mapped", [50, 26376]], [[12994, 12994], "mapped", [51, 26376]], [[12995, 12995], "mapped", [52, 26376]], [[12996, 12996], "mapped", [53, 26376]], [[12997, 12997], "mapped", [54, 26376]], [[12998, 12998], "mapped", [55, 26376]], [[12999, 12999], "mapped", [56, 26376]], [[13e3, 13e3], "mapped", [57, 26376]], [[13001, 13001], "mapped", [49, 48, 26376]], [[13002, 13002], "mapped", [49, 49, 26376]], [[13003, 13003], "mapped", [49, 50, 26376]], [[13004, 13004], "mapped", [104, 103]], [[13005, 13005], "mapped", [101, 114, 103]], [[13006, 13006], "mapped", [101, 118]], [[13007, 13007], "mapped", [108, 116, 100]], [[13008, 13008], "mapped", [12450]], [[13009, 13009], "mapped", [12452]], [[13010, 13010], "mapped", [12454]], [[13011, 13011], "mapped", [12456]], [[13012, 13012], "mapped", [12458]], [[13013, 13013], "mapped", [12459]], [[13014, 13014], "mapped", [12461]], [[13015, 13015], "mapped", [12463]], [[13016, 13016], "mapped", [12465]], [[13017, 13017], "mapped", [12467]], [[13018, 13018], "mapped", [12469]], [[13019, 13019], "mapped", [12471]], [[13020, 13020], "mapped", [12473]], [[13021, 13021], "mapped", [12475]], [[13022, 13022], "mapped", [12477]], [[13023, 13023], "mapped", [12479]], [[13024, 13024], "mapped", [12481]], [[13025, 13025], "mapped", [12484]], [[13026, 13026], "mapped", [12486]], [[13027, 13027], "mapped", [12488]], [[13028, 13028], "mapped", [12490]], [[13029, 13029], "mapped", [12491]], [[13030, 13030], "mapped", [12492]], [[13031, 13031], "mapped", [12493]], [[13032, 13032], "mapped", [12494]], [[13033, 13033], "mapped", [12495]], [[13034, 13034], "mapped", [12498]], [[13035, 13035], "mapped", [12501]], [[13036, 13036], "mapped", [12504]], [[13037, 13037], "mapped", [12507]], [[13038, 13038], "mapped", [12510]], [[13039, 13039], "mapped", [12511]], [[13040, 13040], "mapped", [12512]], [[13041, 13041], "mapped", [12513]], [[13042, 13042], "mapped", [12514]], [[13043, 13043], "mapped", [12516]], [[13044, 13044], "mapped", [12518]], [[13045, 13045], "mapped", [12520]], [[13046, 13046], "mapped", [12521]], [[13047, 13047], "mapped", [12522]], [[13048, 13048], "mapped", [12523]], [[13049, 13049], "mapped", [12524]], [[13050, 13050], "mapped", [12525]], [[13051, 13051], "mapped", [12527]], [[13052, 13052], "mapped", [12528]], [[13053, 13053], "mapped", [12529]], [[13054, 13054], "mapped", [12530]], [[13055, 13055], "disallowed"], [[13056, 13056], "mapped", [12450, 12497, 12540, 12488]], [[13057, 13057], "mapped", [12450, 12523, 12501, 12449]], [[13058, 13058], "mapped", [12450, 12531, 12506, 12450]], [[13059, 13059], "mapped", [12450, 12540, 12523]], [[13060, 13060], "mapped", [12452, 12491, 12531, 12464]], [[13061, 13061], "mapped", [12452, 12531, 12481]], [[13062, 13062], "mapped", [12454, 12457, 12531]], [[13063, 13063], "mapped", [12456, 12473, 12463, 12540, 12489]], [[13064, 13064], "mapped", [12456, 12540, 12459, 12540]], [[13065, 13065], "mapped", [12458, 12531, 12473]], [[13066, 13066], "mapped", [12458, 12540, 12512]], [[13067, 13067], "mapped", [12459, 12452, 12522]], [[13068, 13068], "mapped", [12459, 12521, 12483, 12488]], [[13069, 13069], "mapped", [12459, 12525, 12522, 12540]], [[13070, 13070], "mapped", [12460, 12525, 12531]], [[13071, 13071], "mapped", [12460, 12531, 12510]], [[13072, 13072], "mapped", [12462, 12460]], [[13073, 13073], "mapped", [12462, 12491, 12540]], [[13074, 13074], "mapped", [12461, 12517, 12522, 12540]], [[13075, 13075], "mapped", [12462, 12523, 12480, 12540]], [[13076, 13076], "mapped", [12461, 12525]], [[13077, 13077], "mapped", [12461, 12525, 12464, 12521, 12512]], [[13078, 13078], "mapped", [12461, 12525, 12513, 12540, 12488, 12523]], [[13079, 13079], "mapped", [12461, 12525, 12527, 12483, 12488]], [[13080, 13080], "mapped", [12464, 12521, 12512]], [[13081, 13081], "mapped", [12464, 12521, 12512, 12488, 12531]], [[13082, 13082], "mapped", [12463, 12523, 12476, 12452, 12525]], [[13083, 13083], "mapped", [12463, 12525, 12540, 12493]], [[13084, 13084], "mapped", [12465, 12540, 12473]], [[13085, 13085], "mapped", [12467, 12523, 12490]], [[13086, 13086], "mapped", [12467, 12540, 12509]], [[13087, 13087], "mapped", [12469, 12452, 12463, 12523]], [[13088, 13088], "mapped", [12469, 12531, 12481, 12540, 12512]], [[13089, 13089], "mapped", [12471, 12522, 12531, 12464]], [[13090, 13090], "mapped", [12475, 12531, 12481]], [[13091, 13091], "mapped", [12475, 12531, 12488]], [[13092, 13092], "mapped", [12480, 12540, 12473]], [[13093, 13093], "mapped", [12487, 12471]], [[13094, 13094], "mapped", [12489, 12523]], [[13095, 13095], "mapped", [12488, 12531]], [[13096, 13096], "mapped", [12490, 12494]], [[13097, 13097], "mapped", [12494, 12483, 12488]], [[13098, 13098], "mapped", [12495, 12452, 12484]], [[13099, 13099], "mapped", [12497, 12540, 12475, 12531, 12488]], [[13100, 13100], "mapped", [12497, 12540, 12484]], [[13101, 13101], "mapped", [12496, 12540, 12524, 12523]], [[13102, 13102], "mapped", [12500, 12450, 12473, 12488, 12523]], [[13103, 13103], "mapped", [12500, 12463, 12523]], [[13104, 13104], "mapped", [12500, 12467]], [[13105, 13105], "mapped", [12499, 12523]], [[13106, 13106], "mapped", [12501, 12449, 12521, 12483, 12489]], [[13107, 13107], "mapped", [12501, 12451, 12540, 12488]], [[13108, 13108], "mapped", [12502, 12483, 12471, 12455, 12523]], [[13109, 13109], "mapped", [12501, 12521, 12531]], [[13110, 13110], "mapped", [12504, 12463, 12479, 12540, 12523]], [[13111, 13111], "mapped", [12506, 12477]], [[13112, 13112], "mapped", [12506, 12491, 12498]], [[13113, 13113], "mapped", [12504, 12523, 12484]], [[13114, 13114], "mapped", [12506, 12531, 12473]], [[13115, 13115], "mapped", [12506, 12540, 12472]], [[13116, 13116], "mapped", [12505, 12540, 12479]], [[13117, 13117], "mapped", [12509, 12452, 12531, 12488]], [[13118, 13118], "mapped", [12508, 12523, 12488]], [[13119, 13119], "mapped", [12507, 12531]], [[13120, 13120], "mapped", [12509, 12531, 12489]], [[13121, 13121], "mapped", [12507, 12540, 12523]], [[13122, 13122], "mapped", [12507, 12540, 12531]], [[13123, 13123], "mapped", [12510, 12452, 12463, 12525]], [[13124, 13124], "mapped", [12510, 12452, 12523]], [[13125, 13125], "mapped", [12510, 12483, 12495]], [[13126, 13126], "mapped", [12510, 12523, 12463]], [[13127, 13127], "mapped", [12510, 12531, 12471, 12519, 12531]], [[13128, 13128], "mapped", [12511, 12463, 12525, 12531]], [[13129, 13129], "mapped", [12511, 12522]], [[13130, 13130], "mapped", [12511, 12522, 12496, 12540, 12523]], [[13131, 13131], "mapped", [12513, 12460]], [[13132, 13132], "mapped", [12513, 12460, 12488, 12531]], [[13133, 13133], "mapped", [12513, 12540, 12488, 12523]], [[13134, 13134], "mapped", [12516, 12540, 12489]], [[13135, 13135], "mapped", [12516, 12540, 12523]], [[13136, 13136], "mapped", [12518, 12450, 12531]], [[13137, 13137], "mapped", [12522, 12483, 12488, 12523]], [[13138, 13138], "mapped", [12522, 12521]], [[13139, 13139], "mapped", [12523, 12500, 12540]], [[13140, 13140], "mapped", [12523, 12540, 12502, 12523]], [[13141, 13141], "mapped", [12524, 12512]], [[13142, 13142], "mapped", [12524, 12531, 12488, 12466, 12531]], [[13143, 13143], "mapped", [12527, 12483, 12488]], [[13144, 13144], "mapped", [48, 28857]], [[13145, 13145], "mapped", [49, 28857]], [[13146, 13146], "mapped", [50, 28857]], [[13147, 13147], "mapped", [51, 28857]], [[13148, 13148], "mapped", [52, 28857]], [[13149, 13149], "mapped", [53, 28857]], [[13150, 13150], "mapped", [54, 28857]], [[13151, 13151], "mapped", [55, 28857]], [[13152, 13152], "mapped", [56, 28857]], [[13153, 13153], "mapped", [57, 28857]], [[13154, 13154], "mapped", [49, 48, 28857]], [[13155, 13155], "mapped", [49, 49, 28857]], [[13156, 13156], "mapped", [49, 50, 28857]], [[13157, 13157], "mapped", [49, 51, 28857]], [[13158, 13158], "mapped", [49, 52, 28857]], [[13159, 13159], "mapped", [49, 53, 28857]], [[13160, 13160], "mapped", [49, 54, 28857]], [[13161, 13161], "mapped", [49, 55, 28857]], [[13162, 13162], "mapped", [49, 56, 28857]], [[13163, 13163], "mapped", [49, 57, 28857]], [[13164, 13164], "mapped", [50, 48, 28857]], [[13165, 13165], "mapped", [50, 49, 28857]], [[13166, 13166], "mapped", [50, 50, 28857]], [[13167, 13167], "mapped", [50, 51, 28857]], [[13168, 13168], "mapped", [50, 52, 28857]], [[13169, 13169], "mapped", [104, 112, 97]], [[13170, 13170], "mapped", [100, 97]], [[13171, 13171], "mapped", [97, 117]], [[13172, 13172], "mapped", [98, 97, 114]], [[13173, 13173], "mapped", [111, 118]], [[13174, 13174], "mapped", [112, 99]], [[13175, 13175], "mapped", [100, 109]], [[13176, 13176], "mapped", [100, 109, 50]], [[13177, 13177], "mapped", [100, 109, 51]], [[13178, 13178], "mapped", [105, 117]], [[13179, 13179], "mapped", [24179, 25104]], [[13180, 13180], "mapped", [26157, 21644]], [[13181, 13181], "mapped", [22823, 27491]], [[13182, 13182], "mapped", [26126, 27835]], [[13183, 13183], "mapped", [26666, 24335, 20250, 31038]], [[13184, 13184], "mapped", [112, 97]], [[13185, 13185], "mapped", [110, 97]], [[13186, 13186], "mapped", [956, 97]], [[13187, 13187], "mapped", [109, 97]], [[13188, 13188], "mapped", [107, 97]], [[13189, 13189], "mapped", [107, 98]], [[13190, 13190], "mapped", [109, 98]], [[13191, 13191], "mapped", [103, 98]], [[13192, 13192], "mapped", [99, 97, 108]], [[13193, 13193], "mapped", [107, 99, 97, 108]], [[13194, 13194], "mapped", [112, 102]], [[13195, 13195], "mapped", [110, 102]], [[13196, 13196], "mapped", [956, 102]], [[13197, 13197], "mapped", [956, 103]], [[13198, 13198], "mapped", [109, 103]], [[13199, 13199], "mapped", [107, 103]], [[13200, 13200], "mapped", [104, 122]], [[13201, 13201], "mapped", [107, 104, 122]], [[13202, 13202], "mapped", [109, 104, 122]], [[13203, 13203], "mapped", [103, 104, 122]], [[13204, 13204], "mapped", [116, 104, 122]], [[13205, 13205], "mapped", [956, 108]], [[13206, 13206], "mapped", [109, 108]], [[13207, 13207], "mapped", [100, 108]], [[13208, 13208], "mapped", [107, 108]], [[13209, 13209], "mapped", [102, 109]], [[13210, 13210], "mapped", [110, 109]], [[13211, 13211], "mapped", [956, 109]], [[13212, 13212], "mapped", [109, 109]], [[13213, 13213], "mapped", [99, 109]], [[13214, 13214], "mapped", [107, 109]], [[13215, 13215], "mapped", [109, 109, 50]], [[13216, 13216], "mapped", [99, 109, 50]], [[13217, 13217], "mapped", [109, 50]], [[13218, 13218], "mapped", [107, 109, 50]], [[13219, 13219], "mapped", [109, 109, 51]], [[13220, 13220], "mapped", [99, 109, 51]], [[13221, 13221], "mapped", [109, 51]], [[13222, 13222], "mapped", [107, 109, 51]], [[13223, 13223], "mapped", [109, 8725, 115]], [[13224, 13224], "mapped", [109, 8725, 115, 50]], [[13225, 13225], "mapped", [112, 97]], [[13226, 13226], "mapped", [107, 112, 97]], [[13227, 13227], "mapped", [109, 112, 97]], [[13228, 13228], "mapped", [103, 112, 97]], [[13229, 13229], "mapped", [114, 97, 100]], [[13230, 13230], "mapped", [114, 97, 100, 8725, 115]], [[13231, 13231], "mapped", [114, 97, 100, 8725, 115, 50]], [[13232, 13232], "mapped", [112, 115]], [[13233, 13233], "mapped", [110, 115]], [[13234, 13234], "mapped", [956, 115]], [[13235, 13235], "mapped", [109, 115]], [[13236, 13236], "mapped", [112, 118]], [[13237, 13237], "mapped", [110, 118]], [[13238, 13238], "mapped", [956, 118]], [[13239, 13239], "mapped", [109, 118]], [[13240, 13240], "mapped", [107, 118]], [[13241, 13241], "mapped", [109, 118]], [[13242, 13242], "mapped", [112, 119]], [[13243, 13243], "mapped", [110, 119]], [[13244, 13244], "mapped", [956, 119]], [[13245, 13245], "mapped", [109, 119]], [[13246, 13246], "mapped", [107, 119]], [[13247, 13247], "mapped", [109, 119]], [[13248, 13248], "mapped", [107, 969]], [[13249, 13249], "mapped", [109, 969]], [[13250, 13250], "disallowed"], [[13251, 13251], "mapped", [98, 113]], [[13252, 13252], "mapped", [99, 99]], [[13253, 13253], "mapped", [99, 100]], [[13254, 13254], "mapped", [99, 8725, 107, 103]], [[13255, 13255], "disallowed"], [[13256, 13256], "mapped", [100, 98]], [[13257, 13257], "mapped", [103, 121]], [[13258, 13258], "mapped", [104, 97]], [[13259, 13259], "mapped", [104, 112]], [[13260, 13260], "mapped", [105, 110]], [[13261, 13261], "mapped", [107, 107]], [[13262, 13262], "mapped", [107, 109]], [[13263, 13263], "mapped", [107, 116]], [[13264, 13264], "mapped", [108, 109]], [[13265, 13265], "mapped", [108, 110]], [[13266, 13266], "mapped", [108, 111, 103]], [[13267, 13267], "mapped", [108, 120]], [[13268, 13268], "mapped", [109, 98]], [[13269, 13269], "mapped", [109, 105, 108]], [[13270, 13270], "mapped", [109, 111, 108]], [[13271, 13271], "mapped", [112, 104]], [[13272, 13272], "disallowed"], [[13273, 13273], "mapped", [112, 112, 109]], [[13274, 13274], "mapped", [112, 114]], [[13275, 13275], "mapped", [115, 114]], [[13276, 13276], "mapped", [115, 118]], [[13277, 13277], "mapped", [119, 98]], [[13278, 13278], "mapped", [118, 8725, 109]], [[13279, 13279], "mapped", [97, 8725, 109]], [[13280, 13280], "mapped", [49, 26085]], [[13281, 13281], "mapped", [50, 26085]], [[13282, 13282], "mapped", [51, 26085]], [[13283, 13283], "mapped", [52, 26085]], [[13284, 13284], "mapped", [53, 26085]], [[13285, 13285], "mapped", [54, 26085]], [[13286, 13286], "mapped", [55, 26085]], [[13287, 13287], "mapped", [56, 26085]], [[13288, 13288], "mapped", [57, 26085]], [[13289, 13289], "mapped", [49, 48, 26085]], [[13290, 13290], "mapped", [49, 49, 26085]], [[13291, 13291], "mapped", [49, 50, 26085]], [[13292, 13292], "mapped", [49, 51, 26085]], [[13293, 13293], "mapped", [49, 52, 26085]], [[13294, 13294], "mapped", [49, 53, 26085]], [[13295, 13295], "mapped", [49, 54, 26085]], [[13296, 13296], "mapped", [49, 55, 26085]], [[13297, 13297], "mapped", [49, 56, 26085]], [[13298, 13298], "mapped", [49, 57, 26085]], [[13299, 13299], "mapped", [50, 48, 26085]], [[13300, 13300], "mapped", [50, 49, 26085]], [[13301, 13301], "mapped", [50, 50, 26085]], [[13302, 13302], "mapped", [50, 51, 26085]], [[13303, 13303], "mapped", [50, 52, 26085]], [[13304, 13304], "mapped", [50, 53, 26085]], [[13305, 13305], "mapped", [50, 54, 26085]], [[13306, 13306], "mapped", [50, 55, 26085]], [[13307, 13307], "mapped", [50, 56, 26085]], [[13308, 13308], "mapped", [50, 57, 26085]], [[13309, 13309], "mapped", [51, 48, 26085]], [[13310, 13310], "mapped", [51, 49, 26085]], [[13311, 13311], "mapped", [103, 97, 108]], [[13312, 19893], "valid"], [[19894, 19903], "disallowed"], [[19904, 19967], "valid", [], "NV8"], [[19968, 40869], "valid"], [[40870, 40891], "valid"], [[40892, 40899], "valid"], [[40900, 40907], "valid"], [[40908, 40908], "valid"], [[40909, 40917], "valid"], [[40918, 40959], "disallowed"], [[40960, 42124], "valid"], [[42125, 42127], "disallowed"], [[42128, 42145], "valid", [], "NV8"], [[42146, 42147], "valid", [], "NV8"], [[42148, 42163], "valid", [], "NV8"], [[42164, 42164], "valid", [], "NV8"], [[42165, 42176], "valid", [], "NV8"], [[42177, 42177], "valid", [], "NV8"], [[42178, 42180], "valid", [], "NV8"], [[42181, 42181], "valid", [], "NV8"], [[42182, 42182], "valid", [], "NV8"], [[42183, 42191], "disallowed"], [[42192, 42237], "valid"], [[42238, 42239], "valid", [], "NV8"], [[42240, 42508], "valid"], [[42509, 42511], "valid", [], "NV8"], [[42512, 42539], "valid"], [[42540, 42559], "disallowed"], [[42560, 42560], "mapped", [42561]], [[42561, 42561], "valid"], [[42562, 42562], "mapped", [42563]], [[42563, 42563], "valid"], [[42564, 42564], "mapped", [42565]], [[42565, 42565], "valid"], [[42566, 42566], "mapped", [42567]], [[42567, 42567], "valid"], [[42568, 42568], "mapped", [42569]], [[42569, 42569], "valid"], [[42570, 42570], "mapped", [42571]], [[42571, 42571], "valid"], [[42572, 42572], "mapped", [42573]], [[42573, 42573], "valid"], [[42574, 42574], "mapped", [42575]], [[42575, 42575], "valid"], [[42576, 42576], "mapped", [42577]], [[42577, 42577], "valid"], [[42578, 42578], "mapped", [42579]], [[42579, 42579], "valid"], [[42580, 42580], "mapped", [42581]], [[42581, 42581], "valid"], [[42582, 42582], "mapped", [42583]], [[42583, 42583], "valid"], [[42584, 42584], "mapped", [42585]], [[42585, 42585], "valid"], [[42586, 42586], "mapped", [42587]], [[42587, 42587], "valid"], [[42588, 42588], "mapped", [42589]], [[42589, 42589], "valid"], [[42590, 42590], "mapped", [42591]], [[42591, 42591], "valid"], [[42592, 42592], "mapped", [42593]], [[42593, 42593], "valid"], [[42594, 42594], "mapped", [42595]], [[42595, 42595], "valid"], [[42596, 42596], "mapped", [42597]], [[42597, 42597], "valid"], [[42598, 42598], "mapped", [42599]], [[42599, 42599], "valid"], [[42600, 42600], "mapped", [42601]], [[42601, 42601], "valid"], [[42602, 42602], "mapped", [42603]], [[42603, 42603], "valid"], [[42604, 42604], "mapped", [42605]], [[42605, 42607], "valid"], [[42608, 42611], "valid", [], "NV8"], [[42612, 42619], "valid"], [[42620, 42621], "valid"], [[42622, 42622], "valid", [], "NV8"], [[42623, 42623], "valid"], [[42624, 42624], "mapped", [42625]], [[42625, 42625], "valid"], [[42626, 42626], "mapped", [42627]], [[42627, 42627], "valid"], [[42628, 42628], "mapped", [42629]], [[42629, 42629], "valid"], [[42630, 42630], "mapped", [42631]], [[42631, 42631], "valid"], [[42632, 42632], "mapped", [42633]], [[42633, 42633], "valid"], [[42634, 42634], "mapped", [42635]], [[42635, 42635], "valid"], [[42636, 42636], "mapped", [42637]], [[42637, 42637], "valid"], [[42638, 42638], "mapped", [42639]], [[42639, 42639], "valid"], [[42640, 42640], "mapped", [42641]], [[42641, 42641], "valid"], [[42642, 42642], "mapped", [42643]], [[42643, 42643], "valid"], [[42644, 42644], "mapped", [42645]], [[42645, 42645], "valid"], [[42646, 42646], "mapped", [42647]], [[42647, 42647], "valid"], [[42648, 42648], "mapped", [42649]], [[42649, 42649], "valid"], [[42650, 42650], "mapped", [42651]], [[42651, 42651], "valid"], [[42652, 42652], "mapped", [1098]], [[42653, 42653], "mapped", [1100]], [[42654, 42654], "valid"], [[42655, 42655], "valid"], [[42656, 42725], "valid"], [[42726, 42735], "valid", [], "NV8"], [[42736, 42737], "valid"], [[42738, 42743], "valid", [], "NV8"], [[42744, 42751], "disallowed"], [[42752, 42774], "valid", [], "NV8"], [[42775, 42778], "valid"], [[42779, 42783], "valid"], [[42784, 42785], "valid", [], "NV8"], [[42786, 42786], "mapped", [42787]], [[42787, 42787], "valid"], [[42788, 42788], "mapped", [42789]], [[42789, 42789], "valid"], [[42790, 42790], "mapped", [42791]], [[42791, 42791], "valid"], [[42792, 42792], "mapped", [42793]], [[42793, 42793], "valid"], [[42794, 42794], "mapped", [42795]], [[42795, 42795], "valid"], [[42796, 42796], "mapped", [42797]], [[42797, 42797], "valid"], [[42798, 42798], "mapped", [42799]], [[42799, 42801], "valid"], [[42802, 42802], "mapped", [42803]], [[42803, 42803], "valid"], [[42804, 42804], "mapped", [42805]], [[42805, 42805], "valid"], [[42806, 42806], "mapped", [42807]], [[42807, 42807], "valid"], [[42808, 42808], "mapped", [42809]], [[42809, 42809], "valid"], [[42810, 42810], "mapped", [42811]], [[42811, 42811], "valid"], [[42812, 42812], "mapped", [42813]], [[42813, 42813], "valid"], [[42814, 42814], "mapped", [42815]], [[42815, 42815], "valid"], [[42816, 42816], "mapped", [42817]], [[42817, 42817], "valid"], [[42818, 42818], "mapped", [42819]], [[42819, 42819], "valid"], [[42820, 42820], "mapped", [42821]], [[42821, 42821], "valid"], [[42822, 42822], "mapped", [42823]], [[42823, 42823], "valid"], [[42824, 42824], "mapped", [42825]], [[42825, 42825], "valid"], [[42826, 42826], "mapped", [42827]], [[42827, 42827], "valid"], [[42828, 42828], "mapped", [42829]], [[42829, 42829], "valid"], [[42830, 42830], "mapped", [42831]], [[42831, 42831], "valid"], [[42832, 42832], "mapped", [42833]], [[42833, 42833], "valid"], [[42834, 42834], "mapped", [42835]], [[42835, 42835], "valid"], [[42836, 42836], "mapped", [42837]], [[42837, 42837], "valid"], [[42838, 42838], "mapped", [42839]], [[42839, 42839], "valid"], [[42840, 42840], "mapped", [42841]], [[42841, 42841], "valid"], [[42842, 42842], "mapped", [42843]], [[42843, 42843], "valid"], [[42844, 42844], "mapped", [42845]], [[42845, 42845], "valid"], [[42846, 42846], "mapped", [42847]], [[42847, 42847], "valid"], [[42848, 42848], "mapped", [42849]], [[42849, 42849], "valid"], [[42850, 42850], "mapped", [42851]], [[42851, 42851], "valid"], [[42852, 42852], "mapped", [42853]], [[42853, 42853], "valid"], [[42854, 42854], "mapped", [42855]], [[42855, 42855], "valid"], [[42856, 42856], "mapped", [42857]], [[42857, 42857], "valid"], [[42858, 42858], "mapped", [42859]], [[42859, 42859], "valid"], [[42860, 42860], "mapped", [42861]], [[42861, 42861], "valid"], [[42862, 42862], "mapped", [42863]], [[42863, 42863], "valid"], [[42864, 42864], "mapped", [42863]], [[42865, 42872], "valid"], [[42873, 42873], "mapped", [42874]], [[42874, 42874], "valid"], [[42875, 42875], "mapped", [42876]], [[42876, 42876], "valid"], [[42877, 42877], "mapped", [7545]], [[42878, 42878], "mapped", [42879]], [[42879, 42879], "valid"], [[42880, 42880], "mapped", [42881]], [[42881, 42881], "valid"], [[42882, 42882], "mapped", [42883]], [[42883, 42883], "valid"], [[42884, 42884], "mapped", [42885]], [[42885, 42885], "valid"], [[42886, 42886], "mapped", [42887]], [[42887, 42888], "valid"], [[42889, 42890], "valid", [], "NV8"], [[42891, 42891], "mapped", [42892]], [[42892, 42892], "valid"], [[42893, 42893], "mapped", [613]], [[42894, 42894], "valid"], [[42895, 42895], "valid"], [[42896, 42896], "mapped", [42897]], [[42897, 42897], "valid"], [[42898, 42898], "mapped", [42899]], [[42899, 42899], "valid"], [[42900, 42901], "valid"], [[42902, 42902], "mapped", [42903]], [[42903, 42903], "valid"], [[42904, 42904], "mapped", [42905]], [[42905, 42905], "valid"], [[42906, 42906], "mapped", [42907]], [[42907, 42907], "valid"], [[42908, 42908], "mapped", [42909]], [[42909, 42909], "valid"], [[42910, 42910], "mapped", [42911]], [[42911, 42911], "valid"], [[42912, 42912], "mapped", [42913]], [[42913, 42913], "valid"], [[42914, 42914], "mapped", [42915]], [[42915, 42915], "valid"], [[42916, 42916], "mapped", [42917]], [[42917, 42917], "valid"], [[42918, 42918], "mapped", [42919]], [[42919, 42919], "valid"], [[42920, 42920], "mapped", [42921]], [[42921, 42921], "valid"], [[42922, 42922], "mapped", [614]], [[42923, 42923], "mapped", [604]], [[42924, 42924], "mapped", [609]], [[42925, 42925], "mapped", [620]], [[42926, 42927], "disallowed"], [[42928, 42928], "mapped", [670]], [[42929, 42929], "mapped", [647]], [[42930, 42930], "mapped", [669]], [[42931, 42931], "mapped", [43859]], [[42932, 42932], "mapped", [42933]], [[42933, 42933], "valid"], [[42934, 42934], "mapped", [42935]], [[42935, 42935], "valid"], [[42936, 42998], "disallowed"], [[42999, 42999], "valid"], [[43e3, 43e3], "mapped", [295]], [[43001, 43001], "mapped", [339]], [[43002, 43002], "valid"], [[43003, 43007], "valid"], [[43008, 43047], "valid"], [[43048, 43051], "valid", [], "NV8"], [[43052, 43055], "disallowed"], [[43056, 43065], "valid", [], "NV8"], [[43066, 43071], "disallowed"], [[43072, 43123], "valid"], [[43124, 43127], "valid", [], "NV8"], [[43128, 43135], "disallowed"], [[43136, 43204], "valid"], [[43205, 43213], "disallowed"], [[43214, 43215], "valid", [], "NV8"], [[43216, 43225], "valid"], [[43226, 43231], "disallowed"], [[43232, 43255], "valid"], [[43256, 43258], "valid", [], "NV8"], [[43259, 43259], "valid"], [[43260, 43260], "valid", [], "NV8"], [[43261, 43261], "valid"], [[43262, 43263], "disallowed"], [[43264, 43309], "valid"], [[43310, 43311], "valid", [], "NV8"], [[43312, 43347], "valid"], [[43348, 43358], "disallowed"], [[43359, 43359], "valid", [], "NV8"], [[43360, 43388], "valid", [], "NV8"], [[43389, 43391], "disallowed"], [[43392, 43456], "valid"], [[43457, 43469], "valid", [], "NV8"], [[43470, 43470], "disallowed"], [[43471, 43481], "valid"], [[43482, 43485], "disallowed"], [[43486, 43487], "valid", [], "NV8"], [[43488, 43518], "valid"], [[43519, 43519], "disallowed"], [[43520, 43574], "valid"], [[43575, 43583], "disallowed"], [[43584, 43597], "valid"], [[43598, 43599], "disallowed"], [[43600, 43609], "valid"], [[43610, 43611], "disallowed"], [[43612, 43615], "valid", [], "NV8"], [[43616, 43638], "valid"], [[43639, 43641], "valid", [], "NV8"], [[43642, 43643], "valid"], [[43644, 43647], "valid"], [[43648, 43714], "valid"], [[43715, 43738], "disallowed"], [[43739, 43741], "valid"], [[43742, 43743], "valid", [], "NV8"], [[43744, 43759], "valid"], [[43760, 43761], "valid", [], "NV8"], [[43762, 43766], "valid"], [[43767, 43776], "disallowed"], [[43777, 43782], "valid"], [[43783, 43784], "disallowed"], [[43785, 43790], "valid"], [[43791, 43792], "disallowed"], [[43793, 43798], "valid"], [[43799, 43807], "disallowed"], [[43808, 43814], "valid"], [[43815, 43815], "disallowed"], [[43816, 43822], "valid"], [[43823, 43823], "disallowed"], [[43824, 43866], "valid"], [[43867, 43867], "valid", [], "NV8"], [[43868, 43868], "mapped", [42791]], [[43869, 43869], "mapped", [43831]], [[43870, 43870], "mapped", [619]], [[43871, 43871], "mapped", [43858]], [[43872, 43875], "valid"], [[43876, 43877], "valid"], [[43878, 43887], "disallowed"], [[43888, 43888], "mapped", [5024]], [[43889, 43889], "mapped", [5025]], [[43890, 43890], "mapped", [5026]], [[43891, 43891], "mapped", [5027]], [[43892, 43892], "mapped", [5028]], [[43893, 43893], "mapped", [5029]], [[43894, 43894], "mapped", [5030]], [[43895, 43895], "mapped", [5031]], [[43896, 43896], "mapped", [5032]], [[43897, 43897], "mapped", [5033]], [[43898, 43898], "mapped", [5034]], [[43899, 43899], "mapped", [5035]], [[43900, 43900], "mapped", [5036]], [[43901, 43901], "mapped", [5037]], [[43902, 43902], "mapped", [5038]], [[43903, 43903], "mapped", [5039]], [[43904, 43904], "mapped", [5040]], [[43905, 43905], "mapped", [5041]], [[43906, 43906], "mapped", [5042]], [[43907, 43907], "mapped", [5043]], [[43908, 43908], "mapped", [5044]], [[43909, 43909], "mapped", [5045]], [[43910, 43910], "mapped", [5046]], [[43911, 43911], "mapped", [5047]], [[43912, 43912], "mapped", [5048]], [[43913, 43913], "mapped", [5049]], [[43914, 43914], "mapped", [5050]], [[43915, 43915], "mapped", [5051]], [[43916, 43916], "mapped", [5052]], [[43917, 43917], "mapped", [5053]], [[43918, 43918], "mapped", [5054]], [[43919, 43919], "mapped", [5055]], [[43920, 43920], "mapped", [5056]], [[43921, 43921], "mapped", [5057]], [[43922, 43922], "mapped", [5058]], [[43923, 43923], "mapped", [5059]], [[43924, 43924], "mapped", [5060]], [[43925, 43925], "mapped", [5061]], [[43926, 43926], "mapped", [5062]], [[43927, 43927], "mapped", [5063]], [[43928, 43928], "mapped", [5064]], [[43929, 43929], "mapped", [5065]], [[43930, 43930], "mapped", [5066]], [[43931, 43931], "mapped", [5067]], [[43932, 43932], "mapped", [5068]], [[43933, 43933], "mapped", [5069]], [[43934, 43934], "mapped", [5070]], [[43935, 43935], "mapped", [5071]], [[43936, 43936], "mapped", [5072]], [[43937, 43937], "mapped", [5073]], [[43938, 43938], "mapped", [5074]], [[43939, 43939], "mapped", [5075]], [[43940, 43940], "mapped", [5076]], [[43941, 43941], "mapped", [5077]], [[43942, 43942], "mapped", [5078]], [[43943, 43943], "mapped", [5079]], [[43944, 43944], "mapped", [5080]], [[43945, 43945], "mapped", [5081]], [[43946, 43946], "mapped", [5082]], [[43947, 43947], "mapped", [5083]], [[43948, 43948], "mapped", [5084]], [[43949, 43949], "mapped", [5085]], [[43950, 43950], "mapped", [5086]], [[43951, 43951], "mapped", [5087]], [[43952, 43952], "mapped", [5088]], [[43953, 43953], "mapped", [5089]], [[43954, 43954], "mapped", [5090]], [[43955, 43955], "mapped", [5091]], [[43956, 43956], "mapped", [5092]], [[43957, 43957], "mapped", [5093]], [[43958, 43958], "mapped", [5094]], [[43959, 43959], "mapped", [5095]], [[43960, 43960], "mapped", [5096]], [[43961, 43961], "mapped", [5097]], [[43962, 43962], "mapped", [5098]], [[43963, 43963], "mapped", [5099]], [[43964, 43964], "mapped", [5100]], [[43965, 43965], "mapped", [5101]], [[43966, 43966], "mapped", [5102]], [[43967, 43967], "mapped", [5103]], [[43968, 44010], "valid"], [[44011, 44011], "valid", [], "NV8"], [[44012, 44013], "valid"], [[44014, 44015], "disallowed"], [[44016, 44025], "valid"], [[44026, 44031], "disallowed"], [[44032, 55203], "valid"], [[55204, 55215], "disallowed"], [[55216, 55238], "valid", [], "NV8"], [[55239, 55242], "disallowed"], [[55243, 55291], "valid", [], "NV8"], [[55292, 55295], "disallowed"], [[55296, 57343], "disallowed"], [[57344, 63743], "disallowed"], [[63744, 63744], "mapped", [35912]], [[63745, 63745], "mapped", [26356]], [[63746, 63746], "mapped", [36554]], [[63747, 63747], "mapped", [36040]], [[63748, 63748], "mapped", [28369]], [[63749, 63749], "mapped", [20018]], [[63750, 63750], "mapped", [21477]], [[63751, 63752], "mapped", [40860]], [[63753, 63753], "mapped", [22865]], [[63754, 63754], "mapped", [37329]], [[63755, 63755], "mapped", [21895]], [[63756, 63756], "mapped", [22856]], [[63757, 63757], "mapped", [25078]], [[63758, 63758], "mapped", [30313]], [[63759, 63759], "mapped", [32645]], [[63760, 63760], "mapped", [34367]], [[63761, 63761], "mapped", [34746]], [[63762, 63762], "mapped", [35064]], [[63763, 63763], "mapped", [37007]], [[63764, 63764], "mapped", [27138]], [[63765, 63765], "mapped", [27931]], [[63766, 63766], "mapped", [28889]], [[63767, 63767], "mapped", [29662]], [[63768, 63768], "mapped", [33853]], [[63769, 63769], "mapped", [37226]], [[63770, 63770], "mapped", [39409]], [[63771, 63771], "mapped", [20098]], [[63772, 63772], "mapped", [21365]], [[63773, 63773], "mapped", [27396]], [[63774, 63774], "mapped", [29211]], [[63775, 63775], "mapped", [34349]], [[63776, 63776], "mapped", [40478]], [[63777, 63777], "mapped", [23888]], [[63778, 63778], "mapped", [28651]], [[63779, 63779], "mapped", [34253]], [[63780, 63780], "mapped", [35172]], [[63781, 63781], "mapped", [25289]], [[63782, 63782], "mapped", [33240]], [[63783, 63783], "mapped", [34847]], [[63784, 63784], "mapped", [24266]], [[63785, 63785], "mapped", [26391]], [[63786, 63786], "mapped", [28010]], [[63787, 63787], "mapped", [29436]], [[63788, 63788], "mapped", [37070]], [[63789, 63789], "mapped", [20358]], [[63790, 63790], "mapped", [20919]], [[63791, 63791], "mapped", [21214]], [[63792, 63792], "mapped", [25796]], [[63793, 63793], "mapped", [27347]], [[63794, 63794], "mapped", [29200]], [[63795, 63795], "mapped", [30439]], [[63796, 63796], "mapped", [32769]], [[63797, 63797], "mapped", [34310]], [[63798, 63798], "mapped", [34396]], [[63799, 63799], "mapped", [36335]], [[63800, 63800], "mapped", [38706]], [[63801, 63801], "mapped", [39791]], [[63802, 63802], "mapped", [40442]], [[63803, 63803], "mapped", [30860]], [[63804, 63804], "mapped", [31103]], [[63805, 63805], "mapped", [32160]], [[63806, 63806], "mapped", [33737]], [[63807, 63807], "mapped", [37636]], [[63808, 63808], "mapped", [40575]], [[63809, 63809], "mapped", [35542]], [[63810, 63810], "mapped", [22751]], [[63811, 63811], "mapped", [24324]], [[63812, 63812], "mapped", [31840]], [[63813, 63813], "mapped", [32894]], [[63814, 63814], "mapped", [29282]], [[63815, 63815], "mapped", [30922]], [[63816, 63816], "mapped", [36034]], [[63817, 63817], "mapped", [38647]], [[63818, 63818], "mapped", [22744]], [[63819, 63819], "mapped", [23650]], [[63820, 63820], "mapped", [27155]], [[63821, 63821], "mapped", [28122]], [[63822, 63822], "mapped", [28431]], [[63823, 63823], "mapped", [32047]], [[63824, 63824], "mapped", [32311]], [[63825, 63825], "mapped", [38475]], [[63826, 63826], "mapped", [21202]], [[63827, 63827], "mapped", [32907]], [[63828, 63828], "mapped", [20956]], [[63829, 63829], "mapped", [20940]], [[63830, 63830], "mapped", [31260]], [[63831, 63831], "mapped", [32190]], [[63832, 63832], "mapped", [33777]], [[63833, 63833], "mapped", [38517]], [[63834, 63834], "mapped", [35712]], [[63835, 63835], "mapped", [25295]], [[63836, 63836], "mapped", [27138]], [[63837, 63837], "mapped", [35582]], [[63838, 63838], "mapped", [20025]], [[63839, 63839], "mapped", [23527]], [[63840, 63840], "mapped", [24594]], [[63841, 63841], "mapped", [29575]], [[63842, 63842], "mapped", [30064]], [[63843, 63843], "mapped", [21271]], [[63844, 63844], "mapped", [30971]], [[63845, 63845], "mapped", [20415]], [[63846, 63846], "mapped", [24489]], [[63847, 63847], "mapped", [19981]], [[63848, 63848], "mapped", [27852]], [[63849, 63849], "mapped", [25976]], [[63850, 63850], "mapped", [32034]], [[63851, 63851], "mapped", [21443]], [[63852, 63852], "mapped", [22622]], [[63853, 63853], "mapped", [30465]], [[63854, 63854], "mapped", [33865]], [[63855, 63855], "mapped", [35498]], [[63856, 63856], "mapped", [27578]], [[63857, 63857], "mapped", [36784]], [[63858, 63858], "mapped", [27784]], [[63859, 63859], "mapped", [25342]], [[63860, 63860], "mapped", [33509]], [[63861, 63861], "mapped", [25504]], [[63862, 63862], "mapped", [30053]], [[63863, 63863], "mapped", [20142]], [[63864, 63864], "mapped", [20841]], [[63865, 63865], "mapped", [20937]], [[63866, 63866], "mapped", [26753]], [[63867, 63867], "mapped", [31975]], [[63868, 63868], "mapped", [33391]], [[63869, 63869], "mapped", [35538]], [[63870, 63870], "mapped", [37327]], [[63871, 63871], "mapped", [21237]], [[63872, 63872], "mapped", [21570]], [[63873, 63873], "mapped", [22899]], [[63874, 63874], "mapped", [24300]], [[63875, 63875], "mapped", [26053]], [[63876, 63876], "mapped", [28670]], [[63877, 63877], "mapped", [31018]], [[63878, 63878], "mapped", [38317]], [[63879, 63879], "mapped", [39530]], [[63880, 63880], "mapped", [40599]], [[63881, 63881], "mapped", [40654]], [[63882, 63882], "mapped", [21147]], [[63883, 63883], "mapped", [26310]], [[63884, 63884], "mapped", [27511]], [[63885, 63885], "mapped", [36706]], [[63886, 63886], "mapped", [24180]], [[63887, 63887], "mapped", [24976]], [[63888, 63888], "mapped", [25088]], [[63889, 63889], "mapped", [25754]], [[63890, 63890], "mapped", [28451]], [[63891, 63891], "mapped", [29001]], [[63892, 63892], "mapped", [29833]], [[63893, 63893], "mapped", [31178]], [[63894, 63894], "mapped", [32244]], [[63895, 63895], "mapped", [32879]], [[63896, 63896], "mapped", [36646]], [[63897, 63897], "mapped", [34030]], [[63898, 63898], "mapped", [36899]], [[63899, 63899], "mapped", [37706]], [[63900, 63900], "mapped", [21015]], [[63901, 63901], "mapped", [21155]], [[63902, 63902], "mapped", [21693]], [[63903, 63903], "mapped", [28872]], [[63904, 63904], "mapped", [35010]], [[63905, 63905], "mapped", [35498]], [[63906, 63906], "mapped", [24265]], [[63907, 63907], "mapped", [24565]], [[63908, 63908], "mapped", [25467]], [[63909, 63909], "mapped", [27566]], [[63910, 63910], "mapped", [31806]], [[63911, 63911], "mapped", [29557]], [[63912, 63912], "mapped", [20196]], [[63913, 63913], "mapped", [22265]], [[63914, 63914], "mapped", [23527]], [[63915, 63915], "mapped", [23994]], [[63916, 63916], "mapped", [24604]], [[63917, 63917], "mapped", [29618]], [[63918, 63918], "mapped", [29801]], [[63919, 63919], "mapped", [32666]], [[63920, 63920], "mapped", [32838]], [[63921, 63921], "mapped", [37428]], [[63922, 63922], "mapped", [38646]], [[63923, 63923], "mapped", [38728]], [[63924, 63924], "mapped", [38936]], [[63925, 63925], "mapped", [20363]], [[63926, 63926], "mapped", [31150]], [[63927, 63927], "mapped", [37300]], [[63928, 63928], "mapped", [38584]], [[63929, 63929], "mapped", [24801]], [[63930, 63930], "mapped", [20102]], [[63931, 63931], "mapped", [20698]], [[63932, 63932], "mapped", [23534]], [[63933, 63933], "mapped", [23615]], [[63934, 63934], "mapped", [26009]], [[63935, 63935], "mapped", [27138]], [[63936, 63936], "mapped", [29134]], [[63937, 63937], "mapped", [30274]], [[63938, 63938], "mapped", [34044]], [[63939, 63939], "mapped", [36988]], [[63940, 63940], "mapped", [40845]], [[63941, 63941], "mapped", [26248]], [[63942, 63942], "mapped", [38446]], [[63943, 63943], "mapped", [21129]], [[63944, 63944], "mapped", [26491]], [[63945, 63945], "mapped", [26611]], [[63946, 63946], "mapped", [27969]], [[63947, 63947], "mapped", [28316]], [[63948, 63948], "mapped", [29705]], [[63949, 63949], "mapped", [30041]], [[63950, 63950], "mapped", [30827]], [[63951, 63951], "mapped", [32016]], [[63952, 63952], "mapped", [39006]], [[63953, 63953], "mapped", [20845]], [[63954, 63954], "mapped", [25134]], [[63955, 63955], "mapped", [38520]], [[63956, 63956], "mapped", [20523]], [[63957, 63957], "mapped", [23833]], [[63958, 63958], "mapped", [28138]], [[63959, 63959], "mapped", [36650]], [[63960, 63960], "mapped", [24459]], [[63961, 63961], "mapped", [24900]], [[63962, 63962], "mapped", [26647]], [[63963, 63963], "mapped", [29575]], [[63964, 63964], "mapped", [38534]], [[63965, 63965], "mapped", [21033]], [[63966, 63966], "mapped", [21519]], [[63967, 63967], "mapped", [23653]], [[63968, 63968], "mapped", [26131]], [[63969, 63969], "mapped", [26446]], [[63970, 63970], "mapped", [26792]], [[63971, 63971], "mapped", [27877]], [[63972, 63972], "mapped", [29702]], [[63973, 63973], "mapped", [30178]], [[63974, 63974], "mapped", [32633]], [[63975, 63975], "mapped", [35023]], [[63976, 63976], "mapped", [35041]], [[63977, 63977], "mapped", [37324]], [[63978, 63978], "mapped", [38626]], [[63979, 63979], "mapped", [21311]], [[63980, 63980], "mapped", [28346]], [[63981, 63981], "mapped", [21533]], [[63982, 63982], "mapped", [29136]], [[63983, 63983], "mapped", [29848]], [[63984, 63984], "mapped", [34298]], [[63985, 63985], "mapped", [38563]], [[63986, 63986], "mapped", [40023]], [[63987, 63987], "mapped", [40607]], [[63988, 63988], "mapped", [26519]], [[63989, 63989], "mapped", [28107]], [[63990, 63990], "mapped", [33256]], [[63991, 63991], "mapped", [31435]], [[63992, 63992], "mapped", [31520]], [[63993, 63993], "mapped", [31890]], [[63994, 63994], "mapped", [29376]], [[63995, 63995], "mapped", [28825]], [[63996, 63996], "mapped", [35672]], [[63997, 63997], "mapped", [20160]], [[63998, 63998], "mapped", [33590]], [[63999, 63999], "mapped", [21050]], [[64e3, 64e3], "mapped", [20999]], [[64001, 64001], "mapped", [24230]], [[64002, 64002], "mapped", [25299]], [[64003, 64003], "mapped", [31958]], [[64004, 64004], "mapped", [23429]], [[64005, 64005], "mapped", [27934]], [[64006, 64006], "mapped", [26292]], [[64007, 64007], "mapped", [36667]], [[64008, 64008], "mapped", [34892]], [[64009, 64009], "mapped", [38477]], [[64010, 64010], "mapped", [35211]], [[64011, 64011], "mapped", [24275]], [[64012, 64012], "mapped", [20800]], [[64013, 64013], "mapped", [21952]], [[64014, 64015], "valid"], [[64016, 64016], "mapped", [22618]], [[64017, 64017], "valid"], [[64018, 64018], "mapped", [26228]], [[64019, 64020], "valid"], [[64021, 64021], "mapped", [20958]], [[64022, 64022], "mapped", [29482]], [[64023, 64023], "mapped", [30410]], [[64024, 64024], "mapped", [31036]], [[64025, 64025], "mapped", [31070]], [[64026, 64026], "mapped", [31077]], [[64027, 64027], "mapped", [31119]], [[64028, 64028], "mapped", [38742]], [[64029, 64029], "mapped", [31934]], [[64030, 64030], "mapped", [32701]], [[64031, 64031], "valid"], [[64032, 64032], "mapped", [34322]], [[64033, 64033], "valid"], [[64034, 64034], "mapped", [35576]], [[64035, 64036], "valid"], [[64037, 64037], "mapped", [36920]], [[64038, 64038], "mapped", [37117]], [[64039, 64041], "valid"], [[64042, 64042], "mapped", [39151]], [[64043, 64043], "mapped", [39164]], [[64044, 64044], "mapped", [39208]], [[64045, 64045], "mapped", [40372]], [[64046, 64046], "mapped", [37086]], [[64047, 64047], "mapped", [38583]], [[64048, 64048], "mapped", [20398]], [[64049, 64049], "mapped", [20711]], [[64050, 64050], "mapped", [20813]], [[64051, 64051], "mapped", [21193]], [[64052, 64052], "mapped", [21220]], [[64053, 64053], "mapped", [21329]], [[64054, 64054], "mapped", [21917]], [[64055, 64055], "mapped", [22022]], [[64056, 64056], "mapped", [22120]], [[64057, 64057], "mapped", [22592]], [[64058, 64058], "mapped", [22696]], [[64059, 64059], "mapped", [23652]], [[64060, 64060], "mapped", [23662]], [[64061, 64061], "mapped", [24724]], [[64062, 64062], "mapped", [24936]], [[64063, 64063], "mapped", [24974]], [[64064, 64064], "mapped", [25074]], [[64065, 64065], "mapped", [25935]], [[64066, 64066], "mapped", [26082]], [[64067, 64067], "mapped", [26257]], [[64068, 64068], "mapped", [26757]], [[64069, 64069], "mapped", [28023]], [[64070, 64070], "mapped", [28186]], [[64071, 64071], "mapped", [28450]], [[64072, 64072], "mapped", [29038]], [[64073, 64073], "mapped", [29227]], [[64074, 64074], "mapped", [29730]], [[64075, 64075], "mapped", [30865]], [[64076, 64076], "mapped", [31038]], [[64077, 64077], "mapped", [31049]], [[64078, 64078], "mapped", [31048]], [[64079, 64079], "mapped", [31056]], [[64080, 64080], "mapped", [31062]], [[64081, 64081], "mapped", [31069]], [[64082, 64082], "mapped", [31117]], [[64083, 64083], "mapped", [31118]], [[64084, 64084], "mapped", [31296]], [[64085, 64085], "mapped", [31361]], [[64086, 64086], "mapped", [31680]], [[64087, 64087], "mapped", [32244]], [[64088, 64088], "mapped", [32265]], [[64089, 64089], "mapped", [32321]], [[64090, 64090], "mapped", [32626]], [[64091, 64091], "mapped", [32773]], [[64092, 64092], "mapped", [33261]], [[64093, 64094], "mapped", [33401]], [[64095, 64095], "mapped", [33879]], [[64096, 64096], "mapped", [35088]], [[64097, 64097], "mapped", [35222]], [[64098, 64098], "mapped", [35585]], [[64099, 64099], "mapped", [35641]], [[64100, 64100], "mapped", [36051]], [[64101, 64101], "mapped", [36104]], [[64102, 64102], "mapped", [36790]], [[64103, 64103], "mapped", [36920]], [[64104, 64104], "mapped", [38627]], [[64105, 64105], "mapped", [38911]], [[64106, 64106], "mapped", [38971]], [[64107, 64107], "mapped", [24693]], [[64108, 64108], "mapped", [148206]], [[64109, 64109], "mapped", [33304]], [[64110, 64111], "disallowed"], [[64112, 64112], "mapped", [20006]], [[64113, 64113], "mapped", [20917]], [[64114, 64114], "mapped", [20840]], [[64115, 64115], "mapped", [20352]], [[64116, 64116], "mapped", [20805]], [[64117, 64117], "mapped", [20864]], [[64118, 64118], "mapped", [21191]], [[64119, 64119], "mapped", [21242]], [[64120, 64120], "mapped", [21917]], [[64121, 64121], "mapped", [21845]], [[64122, 64122], "mapped", [21913]], [[64123, 64123], "mapped", [21986]], [[64124, 64124], "mapped", [22618]], [[64125, 64125], "mapped", [22707]], [[64126, 64126], "mapped", [22852]], [[64127, 64127], "mapped", [22868]], [[64128, 64128], "mapped", [23138]], [[64129, 64129], "mapped", [23336]], [[64130, 64130], "mapped", [24274]], [[64131, 64131], "mapped", [24281]], [[64132, 64132], "mapped", [24425]], [[64133, 64133], "mapped", [24493]], [[64134, 64134], "mapped", [24792]], [[64135, 64135], "mapped", [24910]], [[64136, 64136], "mapped", [24840]], [[64137, 64137], "mapped", [24974]], [[64138, 64138], "mapped", [24928]], [[64139, 64139], "mapped", [25074]], [[64140, 64140], "mapped", [25140]], [[64141, 64141], "mapped", [25540]], [[64142, 64142], "mapped", [25628]], [[64143, 64143], "mapped", [25682]], [[64144, 64144], "mapped", [25942]], [[64145, 64145], "mapped", [26228]], [[64146, 64146], "mapped", [26391]], [[64147, 64147], "mapped", [26395]], [[64148, 64148], "mapped", [26454]], [[64149, 64149], "mapped", [27513]], [[64150, 64150], "mapped", [27578]], [[64151, 64151], "mapped", [27969]], [[64152, 64152], "mapped", [28379]], [[64153, 64153], "mapped", [28363]], [[64154, 64154], "mapped", [28450]], [[64155, 64155], "mapped", [28702]], [[64156, 64156], "mapped", [29038]], [[64157, 64157], "mapped", [30631]], [[64158, 64158], "mapped", [29237]], [[64159, 64159], "mapped", [29359]], [[64160, 64160], "mapped", [29482]], [[64161, 64161], "mapped", [29809]], [[64162, 64162], "mapped", [29958]], [[64163, 64163], "mapped", [30011]], [[64164, 64164], "mapped", [30237]], [[64165, 64165], "mapped", [30239]], [[64166, 64166], "mapped", [30410]], [[64167, 64167], "mapped", [30427]], [[64168, 64168], "mapped", [30452]], [[64169, 64169], "mapped", [30538]], [[64170, 64170], "mapped", [30528]], [[64171, 64171], "mapped", [30924]], [[64172, 64172], "mapped", [31409]], [[64173, 64173], "mapped", [31680]], [[64174, 64174], "mapped", [31867]], [[64175, 64175], "mapped", [32091]], [[64176, 64176], "mapped", [32244]], [[64177, 64177], "mapped", [32574]], [[64178, 64178], "mapped", [32773]], [[64179, 64179], "mapped", [33618]], [[64180, 64180], "mapped", [33775]], [[64181, 64181], "mapped", [34681]], [[64182, 64182], "mapped", [35137]], [[64183, 64183], "mapped", [35206]], [[64184, 64184], "mapped", [35222]], [[64185, 64185], "mapped", [35519]], [[64186, 64186], "mapped", [35576]], [[64187, 64187], "mapped", [35531]], [[64188, 64188], "mapped", [35585]], [[64189, 64189], "mapped", [35582]], [[64190, 64190], "mapped", [35565]], [[64191, 64191], "mapped", [35641]], [[64192, 64192], "mapped", [35722]], [[64193, 64193], "mapped", [36104]], [[64194, 64194], "mapped", [36664]], [[64195, 64195], "mapped", [36978]], [[64196, 64196], "mapped", [37273]], [[64197, 64197], "mapped", [37494]], [[64198, 64198], "mapped", [38524]], [[64199, 64199], "mapped", [38627]], [[64200, 64200], "mapped", [38742]], [[64201, 64201], "mapped", [38875]], [[64202, 64202], "mapped", [38911]], [[64203, 64203], "mapped", [38923]], [[64204, 64204], "mapped", [38971]], [[64205, 64205], "mapped", [39698]], [[64206, 64206], "mapped", [40860]], [[64207, 64207], "mapped", [141386]], [[64208, 64208], "mapped", [141380]], [[64209, 64209], "mapped", [144341]], [[64210, 64210], "mapped", [15261]], [[64211, 64211], "mapped", [16408]], [[64212, 64212], "mapped", [16441]], [[64213, 64213], "mapped", [152137]], [[64214, 64214], "mapped", [154832]], [[64215, 64215], "mapped", [163539]], [[64216, 64216], "mapped", [40771]], [[64217, 64217], "mapped", [40846]], [[64218, 64255], "disallowed"], [[64256, 64256], "mapped", [102, 102]], [[64257, 64257], "mapped", [102, 105]], [[64258, 64258], "mapped", [102, 108]], [[64259, 64259], "mapped", [102, 102, 105]], [[64260, 64260], "mapped", [102, 102, 108]], [[64261, 64262], "mapped", [115, 116]], [[64263, 64274], "disallowed"], [[64275, 64275], "mapped", [1396, 1398]], [[64276, 64276], "mapped", [1396, 1381]], [[64277, 64277], "mapped", [1396, 1387]], [[64278, 64278], "mapped", [1406, 1398]], [[64279, 64279], "mapped", [1396, 1389]], [[64280, 64284], "disallowed"], [[64285, 64285], "mapped", [1497, 1460]], [[64286, 64286], "valid"], [[64287, 64287], "mapped", [1522, 1463]], [[64288, 64288], "mapped", [1506]], [[64289, 64289], "mapped", [1488]], [[64290, 64290], "mapped", [1491]], [[64291, 64291], "mapped", [1492]], [[64292, 64292], "mapped", [1499]], [[64293, 64293], "mapped", [1500]], [[64294, 64294], "mapped", [1501]], [[64295, 64295], "mapped", [1512]], [[64296, 64296], "mapped", [1514]], [[64297, 64297], "disallowed_STD3_mapped", [43]], [[64298, 64298], "mapped", [1513, 1473]], [[64299, 64299], "mapped", [1513, 1474]], [[64300, 64300], "mapped", [1513, 1468, 1473]], [[64301, 64301], "mapped", [1513, 1468, 1474]], [[64302, 64302], "mapped", [1488, 1463]], [[64303, 64303], "mapped", [1488, 1464]], [[64304, 64304], "mapped", [1488, 1468]], [[64305, 64305], "mapped", [1489, 1468]], [[64306, 64306], "mapped", [1490, 1468]], [[64307, 64307], "mapped", [1491, 1468]], [[64308, 64308], "mapped", [1492, 1468]], [[64309, 64309], "mapped", [1493, 1468]], [[64310, 64310], "mapped", [1494, 1468]], [[64311, 64311], "disallowed"], [[64312, 64312], "mapped", [1496, 1468]], [[64313, 64313], "mapped", [1497, 1468]], [[64314, 64314], "mapped", [1498, 1468]], [[64315, 64315], "mapped", [1499, 1468]], [[64316, 64316], "mapped", [1500, 1468]], [[64317, 64317], "disallowed"], [[64318, 64318], "mapped", [1502, 1468]], [[64319, 64319], "disallowed"], [[64320, 64320], "mapped", [1504, 1468]], [[64321, 64321], "mapped", [1505, 1468]], [[64322, 64322], "disallowed"], [[64323, 64323], "mapped", [1507, 1468]], [[64324, 64324], "mapped", [1508, 1468]], [[64325, 64325], "disallowed"], [[64326, 64326], "mapped", [1510, 1468]], [[64327, 64327], "mapped", [1511, 1468]], [[64328, 64328], "mapped", [1512, 1468]], [[64329, 64329], "mapped", [1513, 1468]], [[64330, 64330], "mapped", [1514, 1468]], [[64331, 64331], "mapped", [1493, 1465]], [[64332, 64332], "mapped", [1489, 1471]], [[64333, 64333], "mapped", [1499, 1471]], [[64334, 64334], "mapped", [1508, 1471]], [[64335, 64335], "mapped", [1488, 1500]], [[64336, 64337], "mapped", [1649]], [[64338, 64341], "mapped", [1659]], [[64342, 64345], "mapped", [1662]], [[64346, 64349], "mapped", [1664]], [[64350, 64353], "mapped", [1658]], [[64354, 64357], "mapped", [1663]], [[64358, 64361], "mapped", [1657]], [[64362, 64365], "mapped", [1700]], [[64366, 64369], "mapped", [1702]], [[64370, 64373], "mapped", [1668]], [[64374, 64377], "mapped", [1667]], [[64378, 64381], "mapped", [1670]], [[64382, 64385], "mapped", [1671]], [[64386, 64387], "mapped", [1677]], [[64388, 64389], "mapped", [1676]], [[64390, 64391], "mapped", [1678]], [[64392, 64393], "mapped", [1672]], [[64394, 64395], "mapped", [1688]], [[64396, 64397], "mapped", [1681]], [[64398, 64401], "mapped", [1705]], [[64402, 64405], "mapped", [1711]], [[64406, 64409], "mapped", [1715]], [[64410, 64413], "mapped", [1713]], [[64414, 64415], "mapped", [1722]], [[64416, 64419], "mapped", [1723]], [[64420, 64421], "mapped", [1728]], [[64422, 64425], "mapped", [1729]], [[64426, 64429], "mapped", [1726]], [[64430, 64431], "mapped", [1746]], [[64432, 64433], "mapped", [1747]], [[64434, 64449], "valid", [], "NV8"], [[64450, 64466], "disallowed"], [[64467, 64470], "mapped", [1709]], [[64471, 64472], "mapped", [1735]], [[64473, 64474], "mapped", [1734]], [[64475, 64476], "mapped", [1736]], [[64477, 64477], "mapped", [1735, 1652]], [[64478, 64479], "mapped", [1739]], [[64480, 64481], "mapped", [1733]], [[64482, 64483], "mapped", [1737]], [[64484, 64487], "mapped", [1744]], [[64488, 64489], "mapped", [1609]], [[64490, 64491], "mapped", [1574, 1575]], [[64492, 64493], "mapped", [1574, 1749]], [[64494, 64495], "mapped", [1574, 1608]], [[64496, 64497], "mapped", [1574, 1735]], [[64498, 64499], "mapped", [1574, 1734]], [[64500, 64501], "mapped", [1574, 1736]], [[64502, 64504], "mapped", [1574, 1744]], [[64505, 64507], "mapped", [1574, 1609]], [[64508, 64511], "mapped", [1740]], [[64512, 64512], "mapped", [1574, 1580]], [[64513, 64513], "mapped", [1574, 1581]], [[64514, 64514], "mapped", [1574, 1605]], [[64515, 64515], "mapped", [1574, 1609]], [[64516, 64516], "mapped", [1574, 1610]], [[64517, 64517], "mapped", [1576, 1580]], [[64518, 64518], "mapped", [1576, 1581]], [[64519, 64519], "mapped", [1576, 1582]], [[64520, 64520], "mapped", [1576, 1605]], [[64521, 64521], "mapped", [1576, 1609]], [[64522, 64522], "mapped", [1576, 1610]], [[64523, 64523], "mapped", [1578, 1580]], [[64524, 64524], "mapped", [1578, 1581]], [[64525, 64525], "mapped", [1578, 1582]], [[64526, 64526], "mapped", [1578, 1605]], [[64527, 64527], "mapped", [1578, 1609]], [[64528, 64528], "mapped", [1578, 1610]], [[64529, 64529], "mapped", [1579, 1580]], [[64530, 64530], "mapped", [1579, 1605]], [[64531, 64531], "mapped", [1579, 1609]], [[64532, 64532], "mapped", [1579, 1610]], [[64533, 64533], "mapped", [1580, 1581]], [[64534, 64534], "mapped", [1580, 1605]], [[64535, 64535], "mapped", [1581, 1580]], [[64536, 64536], "mapped", [1581, 1605]], [[64537, 64537], "mapped", [1582, 1580]], [[64538, 64538], "mapped", [1582, 1581]], [[64539, 64539], "mapped", [1582, 1605]], [[64540, 64540], "mapped", [1587, 1580]], [[64541, 64541], "mapped", [1587, 1581]], [[64542, 64542], "mapped", [1587, 1582]], [[64543, 64543], "mapped", [1587, 1605]], [[64544, 64544], "mapped", [1589, 1581]], [[64545, 64545], "mapped", [1589, 1605]], [[64546, 64546], "mapped", [1590, 1580]], [[64547, 64547], "mapped", [1590, 1581]], [[64548, 64548], "mapped", [1590, 1582]], [[64549, 64549], "mapped", [1590, 1605]], [[64550, 64550], "mapped", [1591, 1581]], [[64551, 64551], "mapped", [1591, 1605]], [[64552, 64552], "mapped", [1592, 1605]], [[64553, 64553], "mapped", [1593, 1580]], [[64554, 64554], "mapped", [1593, 1605]], [[64555, 64555], "mapped", [1594, 1580]], [[64556, 64556], "mapped", [1594, 1605]], [[64557, 64557], "mapped", [1601, 1580]], [[64558, 64558], "mapped", [1601, 1581]], [[64559, 64559], "mapped", [1601, 1582]], [[64560, 64560], "mapped", [1601, 1605]], [[64561, 64561], "mapped", [1601, 1609]], [[64562, 64562], "mapped", [1601, 1610]], [[64563, 64563], "mapped", [1602, 1581]], [[64564, 64564], "mapped", [1602, 1605]], [[64565, 64565], "mapped", [1602, 1609]], [[64566, 64566], "mapped", [1602, 1610]], [[64567, 64567], "mapped", [1603, 1575]], [[64568, 64568], "mapped", [1603, 1580]], [[64569, 64569], "mapped", [1603, 1581]], [[64570, 64570], "mapped", [1603, 1582]], [[64571, 64571], "mapped", [1603, 1604]], [[64572, 64572], "mapped", [1603, 1605]], [[64573, 64573], "mapped", [1603, 1609]], [[64574, 64574], "mapped", [1603, 1610]], [[64575, 64575], "mapped", [1604, 1580]], [[64576, 64576], "mapped", [1604, 1581]], [[64577, 64577], "mapped", [1604, 1582]], [[64578, 64578], "mapped", [1604, 1605]], [[64579, 64579], "mapped", [1604, 1609]], [[64580, 64580], "mapped", [1604, 1610]], [[64581, 64581], "mapped", [1605, 1580]], [[64582, 64582], "mapped", [1605, 1581]], [[64583, 64583], "mapped", [1605, 1582]], [[64584, 64584], "mapped", [1605, 1605]], [[64585, 64585], "mapped", [1605, 1609]], [[64586, 64586], "mapped", [1605, 1610]], [[64587, 64587], "mapped", [1606, 1580]], [[64588, 64588], "mapped", [1606, 1581]], [[64589, 64589], "mapped", [1606, 1582]], [[64590, 64590], "mapped", [1606, 1605]], [[64591, 64591], "mapped", [1606, 1609]], [[64592, 64592], "mapped", [1606, 1610]], [[64593, 64593], "mapped", [1607, 1580]], [[64594, 64594], "mapped", [1607, 1605]], [[64595, 64595], "mapped", [1607, 1609]], [[64596, 64596], "mapped", [1607, 1610]], [[64597, 64597], "mapped", [1610, 1580]], [[64598, 64598], "mapped", [1610, 1581]], [[64599, 64599], "mapped", [1610, 1582]], [[64600, 64600], "mapped", [1610, 1605]], [[64601, 64601], "mapped", [1610, 1609]], [[64602, 64602], "mapped", [1610, 1610]], [[64603, 64603], "mapped", [1584, 1648]], [[64604, 64604], "mapped", [1585, 1648]], [[64605, 64605], "mapped", [1609, 1648]], [[64606, 64606], "disallowed_STD3_mapped", [32, 1612, 1617]], [[64607, 64607], "disallowed_STD3_mapped", [32, 1613, 1617]], [[64608, 64608], "disallowed_STD3_mapped", [32, 1614, 1617]], [[64609, 64609], "disallowed_STD3_mapped", [32, 1615, 1617]], [[64610, 64610], "disallowed_STD3_mapped", [32, 1616, 1617]], [[64611, 64611], "disallowed_STD3_mapped", [32, 1617, 1648]], [[64612, 64612], "mapped", [1574, 1585]], [[64613, 64613], "mapped", [1574, 1586]], [[64614, 64614], "mapped", [1574, 1605]], [[64615, 64615], "mapped", [1574, 1606]], [[64616, 64616], "mapped", [1574, 1609]], [[64617, 64617], "mapped", [1574, 1610]], [[64618, 64618], "mapped", [1576, 1585]], [[64619, 64619], "mapped", [1576, 1586]], [[64620, 64620], "mapped", [1576, 1605]], [[64621, 64621], "mapped", [1576, 1606]], [[64622, 64622], "mapped", [1576, 1609]], [[64623, 64623], "mapped", [1576, 1610]], [[64624, 64624], "mapped", [1578, 1585]], [[64625, 64625], "mapped", [1578, 1586]], [[64626, 64626], "mapped", [1578, 1605]], [[64627, 64627], "mapped", [1578, 1606]], [[64628, 64628], "mapped", [1578, 1609]], [[64629, 64629], "mapped", [1578, 1610]], [[64630, 64630], "mapped", [1579, 1585]], [[64631, 64631], "mapped", [1579, 1586]], [[64632, 64632], "mapped", [1579, 1605]], [[64633, 64633], "mapped", [1579, 1606]], [[64634, 64634], "mapped", [1579, 1609]], [[64635, 64635], "mapped", [1579, 1610]], [[64636, 64636], "mapped", [1601, 1609]], [[64637, 64637], "mapped", [1601, 1610]], [[64638, 64638], "mapped", [1602, 1609]], [[64639, 64639], "mapped", [1602, 1610]], [[64640, 64640], "mapped", [1603, 1575]], [[64641, 64641], "mapped", [1603, 1604]], [[64642, 64642], "mapped", [1603, 1605]], [[64643, 64643], "mapped", [1603, 1609]], [[64644, 64644], "mapped", [1603, 1610]], [[64645, 64645], "mapped", [1604, 1605]], [[64646, 64646], "mapped", [1604, 1609]], [[64647, 64647], "mapped", [1604, 1610]], [[64648, 64648], "mapped", [1605, 1575]], [[64649, 64649], "mapped", [1605, 1605]], [[64650, 64650], "mapped", [1606, 1585]], [[64651, 64651], "mapped", [1606, 1586]], [[64652, 64652], "mapped", [1606, 1605]], [[64653, 64653], "mapped", [1606, 1606]], [[64654, 64654], "mapped", [1606, 1609]], [[64655, 64655], "mapped", [1606, 1610]], [[64656, 64656], "mapped", [1609, 1648]], [[64657, 64657], "mapped", [1610, 1585]], [[64658, 64658], "mapped", [1610, 1586]], [[64659, 64659], "mapped", [1610, 1605]], [[64660, 64660], "mapped", [1610, 1606]], [[64661, 64661], "mapped", [1610, 1609]], [[64662, 64662], "mapped", [1610, 1610]], [[64663, 64663], "mapped", [1574, 1580]], [[64664, 64664], "mapped", [1574, 1581]], [[64665, 64665], "mapped", [1574, 1582]], [[64666, 64666], "mapped", [1574, 1605]], [[64667, 64667], "mapped", [1574, 1607]], [[64668, 64668], "mapped", [1576, 1580]], [[64669, 64669], "mapped", [1576, 1581]], [[64670, 64670], "mapped", [1576, 1582]], [[64671, 64671], "mapped", [1576, 1605]], [[64672, 64672], "mapped", [1576, 1607]], [[64673, 64673], "mapped", [1578, 1580]], [[64674, 64674], "mapped", [1578, 1581]], [[64675, 64675], "mapped", [1578, 1582]], [[64676, 64676], "mapped", [1578, 1605]], [[64677, 64677], "mapped", [1578, 1607]], [[64678, 64678], "mapped", [1579, 1605]], [[64679, 64679], "mapped", [1580, 1581]], [[64680, 64680], "mapped", [1580, 1605]], [[64681, 64681], "mapped", [1581, 1580]], [[64682, 64682], "mapped", [1581, 1605]], [[64683, 64683], "mapped", [1582, 1580]], [[64684, 64684], "mapped", [1582, 1605]], [[64685, 64685], "mapped", [1587, 1580]], [[64686, 64686], "mapped", [1587, 1581]], [[64687, 64687], "mapped", [1587, 1582]], [[64688, 64688], "mapped", [1587, 1605]], [[64689, 64689], "mapped", [1589, 1581]], [[64690, 64690], "mapped", [1589, 1582]], [[64691, 64691], "mapped", [1589, 1605]], [[64692, 64692], "mapped", [1590, 1580]], [[64693, 64693], "mapped", [1590, 1581]], [[64694, 64694], "mapped", [1590, 1582]], [[64695, 64695], "mapped", [1590, 1605]], [[64696, 64696], "mapped", [1591, 1581]], [[64697, 64697], "mapped", [1592, 1605]], [[64698, 64698], "mapped", [1593, 1580]], [[64699, 64699], "mapped", [1593, 1605]], [[64700, 64700], "mapped", [1594, 1580]], [[64701, 64701], "mapped", [1594, 1605]], [[64702, 64702], "mapped", [1601, 1580]], [[64703, 64703], "mapped", [1601, 1581]], [[64704, 64704], "mapped", [1601, 1582]], [[64705, 64705], "mapped", [1601, 1605]], [[64706, 64706], "mapped", [1602, 1581]], [[64707, 64707], "mapped", [1602, 1605]], [[64708, 64708], "mapped", [1603, 1580]], [[64709, 64709], "mapped", [1603, 1581]], [[64710, 64710], "mapped", [1603, 1582]], [[64711, 64711], "mapped", [1603, 1604]], [[64712, 64712], "mapped", [1603, 1605]], [[64713, 64713], "mapped", [1604, 1580]], [[64714, 64714], "mapped", [1604, 1581]], [[64715, 64715], "mapped", [1604, 1582]], [[64716, 64716], "mapped", [1604, 1605]], [[64717, 64717], "mapped", [1604, 1607]], [[64718, 64718], "mapped", [1605, 1580]], [[64719, 64719], "mapped", [1605, 1581]], [[64720, 64720], "mapped", [1605, 1582]], [[64721, 64721], "mapped", [1605, 1605]], [[64722, 64722], "mapped", [1606, 1580]], [[64723, 64723], "mapped", [1606, 1581]], [[64724, 64724], "mapped", [1606, 1582]], [[64725, 64725], "mapped", [1606, 1605]], [[64726, 64726], "mapped", [1606, 1607]], [[64727, 64727], "mapped", [1607, 1580]], [[64728, 64728], "mapped", [1607, 1605]], [[64729, 64729], "mapped", [1607, 1648]], [[64730, 64730], "mapped", [1610, 1580]], [[64731, 64731], "mapped", [1610, 1581]], [[64732, 64732], "mapped", [1610, 1582]], [[64733, 64733], "mapped", [1610, 1605]], [[64734, 64734], "mapped", [1610, 1607]], [[64735, 64735], "mapped", [1574, 1605]], [[64736, 64736], "mapped", [1574, 1607]], [[64737, 64737], "mapped", [1576, 1605]], [[64738, 64738], "mapped", [1576, 1607]], [[64739, 64739], "mapped", [1578, 1605]], [[64740, 64740], "mapped", [1578, 1607]], [[64741, 64741], "mapped", [1579, 1605]], [[64742, 64742], "mapped", [1579, 1607]], [[64743, 64743], "mapped", [1587, 1605]], [[64744, 64744], "mapped", [1587, 1607]], [[64745, 64745], "mapped", [1588, 1605]], [[64746, 64746], "mapped", [1588, 1607]], [[64747, 64747], "mapped", [1603, 1604]], [[64748, 64748], "mapped", [1603, 1605]], [[64749, 64749], "mapped", [1604, 1605]], [[64750, 64750], "mapped", [1606, 1605]], [[64751, 64751], "mapped", [1606, 1607]], [[64752, 64752], "mapped", [1610, 1605]], [[64753, 64753], "mapped", [1610, 1607]], [[64754, 64754], "mapped", [1600, 1614, 1617]], [[64755, 64755], "mapped", [1600, 1615, 1617]], [[64756, 64756], "mapped", [1600, 1616, 1617]], [[64757, 64757], "mapped", [1591, 1609]], [[64758, 64758], "mapped", [1591, 1610]], [[64759, 64759], "mapped", [1593, 1609]], [[64760, 64760], "mapped", [1593, 1610]], [[64761, 64761], "mapped", [1594, 1609]], [[64762, 64762], "mapped", [1594, 1610]], [[64763, 64763], "mapped", [1587, 1609]], [[64764, 64764], "mapped", [1587, 1610]], [[64765, 64765], "mapped", [1588, 1609]], [[64766, 64766], "mapped", [1588, 1610]], [[64767, 64767], "mapped", [1581, 1609]], [[64768, 64768], "mapped", [1581, 1610]], [[64769, 64769], "mapped", [1580, 1609]], [[64770, 64770], "mapped", [1580, 1610]], [[64771, 64771], "mapped", [1582, 1609]], [[64772, 64772], "mapped", [1582, 1610]], [[64773, 64773], "mapped", [1589, 1609]], [[64774, 64774], "mapped", [1589, 1610]], [[64775, 64775], "mapped", [1590, 1609]], [[64776, 64776], "mapped", [1590, 1610]], [[64777, 64777], "mapped", [1588, 1580]], [[64778, 64778], "mapped", [1588, 1581]], [[64779, 64779], "mapped", [1588, 1582]], [[64780, 64780], "mapped", [1588, 1605]], [[64781, 64781], "mapped", [1588, 1585]], [[64782, 64782], "mapped", [1587, 1585]], [[64783, 64783], "mapped", [1589, 1585]], [[64784, 64784], "mapped", [1590, 1585]], [[64785, 64785], "mapped", [1591, 1609]], [[64786, 64786], "mapped", [1591, 1610]], [[64787, 64787], "mapped", [1593, 1609]], [[64788, 64788], "mapped", [1593, 1610]], [[64789, 64789], "mapped", [1594, 1609]], [[64790, 64790], "mapped", [1594, 1610]], [[64791, 64791], "mapped", [1587, 1609]], [[64792, 64792], "mapped", [1587, 1610]], [[64793, 64793], "mapped", [1588, 1609]], [[64794, 64794], "mapped", [1588, 1610]], [[64795, 64795], "mapped", [1581, 1609]], [[64796, 64796], "mapped", [1581, 1610]], [[64797, 64797], "mapped", [1580, 1609]], [[64798, 64798], "mapped", [1580, 1610]], [[64799, 64799], "mapped", [1582, 1609]], [[64800, 64800], "mapped", [1582, 1610]], [[64801, 64801], "mapped", [1589, 1609]], [[64802, 64802], "mapped", [1589, 1610]], [[64803, 64803], "mapped", [1590, 1609]], [[64804, 64804], "mapped", [1590, 1610]], [[64805, 64805], "mapped", [1588, 1580]], [[64806, 64806], "mapped", [1588, 1581]], [[64807, 64807], "mapped", [1588, 1582]], [[64808, 64808], "mapped", [1588, 1605]], [[64809, 64809], "mapped", [1588, 1585]], [[64810, 64810], "mapped", [1587, 1585]], [[64811, 64811], "mapped", [1589, 1585]], [[64812, 64812], "mapped", [1590, 1585]], [[64813, 64813], "mapped", [1588, 1580]], [[64814, 64814], "mapped", [1588, 1581]], [[64815, 64815], "mapped", [1588, 1582]], [[64816, 64816], "mapped", [1588, 1605]], [[64817, 64817], "mapped", [1587, 1607]], [[64818, 64818], "mapped", [1588, 1607]], [[64819, 64819], "mapped", [1591, 1605]], [[64820, 64820], "mapped", [1587, 1580]], [[64821, 64821], "mapped", [1587, 1581]], [[64822, 64822], "mapped", [1587, 1582]], [[64823, 64823], "mapped", [1588, 1580]], [[64824, 64824], "mapped", [1588, 1581]], [[64825, 64825], "mapped", [1588, 1582]], [[64826, 64826], "mapped", [1591, 1605]], [[64827, 64827], "mapped", [1592, 1605]], [[64828, 64829], "mapped", [1575, 1611]], [[64830, 64831], "valid", [], "NV8"], [[64832, 64847], "disallowed"], [[64848, 64848], "mapped", [1578, 1580, 1605]], [[64849, 64850], "mapped", [1578, 1581, 1580]], [[64851, 64851], "mapped", [1578, 1581, 1605]], [[64852, 64852], "mapped", [1578, 1582, 1605]], [[64853, 64853], "mapped", [1578, 1605, 1580]], [[64854, 64854], "mapped", [1578, 1605, 1581]], [[64855, 64855], "mapped", [1578, 1605, 1582]], [[64856, 64857], "mapped", [1580, 1605, 1581]], [[64858, 64858], "mapped", [1581, 1605, 1610]], [[64859, 64859], "mapped", [1581, 1605, 1609]], [[64860, 64860], "mapped", [1587, 1581, 1580]], [[64861, 64861], "mapped", [1587, 1580, 1581]], [[64862, 64862], "mapped", [1587, 1580, 1609]], [[64863, 64864], "mapped", [1587, 1605, 1581]], [[64865, 64865], "mapped", [1587, 1605, 1580]], [[64866, 64867], "mapped", [1587, 1605, 1605]], [[64868, 64869], "mapped", [1589, 1581, 1581]], [[64870, 64870], "mapped", [1589, 1605, 1605]], [[64871, 64872], "mapped", [1588, 1581, 1605]], [[64873, 64873], "mapped", [1588, 1580, 1610]], [[64874, 64875], "mapped", [1588, 1605, 1582]], [[64876, 64877], "mapped", [1588, 1605, 1605]], [[64878, 64878], "mapped", [1590, 1581, 1609]], [[64879, 64880], "mapped", [1590, 1582, 1605]], [[64881, 64882], "mapped", [1591, 1605, 1581]], [[64883, 64883], "mapped", [1591, 1605, 1605]], [[64884, 64884], "mapped", [1591, 1605, 1610]], [[64885, 64885], "mapped", [1593, 1580, 1605]], [[64886, 64887], "mapped", [1593, 1605, 1605]], [[64888, 64888], "mapped", [1593, 1605, 1609]], [[64889, 64889], "mapped", [1594, 1605, 1605]], [[64890, 64890], "mapped", [1594, 1605, 1610]], [[64891, 64891], "mapped", [1594, 1605, 1609]], [[64892, 64893], "mapped", [1601, 1582, 1605]], [[64894, 64894], "mapped", [1602, 1605, 1581]], [[64895, 64895], "mapped", [1602, 1605, 1605]], [[64896, 64896], "mapped", [1604, 1581, 1605]], [[64897, 64897], "mapped", [1604, 1581, 1610]], [[64898, 64898], "mapped", [1604, 1581, 1609]], [[64899, 64900], "mapped", [1604, 1580, 1580]], [[64901, 64902], "mapped", [1604, 1582, 1605]], [[64903, 64904], "mapped", [1604, 1605, 1581]], [[64905, 64905], "mapped", [1605, 1581, 1580]], [[64906, 64906], "mapped", [1605, 1581, 1605]], [[64907, 64907], "mapped", [1605, 1581, 1610]], [[64908, 64908], "mapped", [1605, 1580, 1581]], [[64909, 64909], "mapped", [1605, 1580, 1605]], [[64910, 64910], "mapped", [1605, 1582, 1580]], [[64911, 64911], "mapped", [1605, 1582, 1605]], [[64912, 64913], "disallowed"], [[64914, 64914], "mapped", [1605, 1580, 1582]], [[64915, 64915], "mapped", [1607, 1605, 1580]], [[64916, 64916], "mapped", [1607, 1605, 1605]], [[64917, 64917], "mapped", [1606, 1581, 1605]], [[64918, 64918], "mapped", [1606, 1581, 1609]], [[64919, 64920], "mapped", [1606, 1580, 1605]], [[64921, 64921], "mapped", [1606, 1580, 1609]], [[64922, 64922], "mapped", [1606, 1605, 1610]], [[64923, 64923], "mapped", [1606, 1605, 1609]], [[64924, 64925], "mapped", [1610, 1605, 1605]], [[64926, 64926], "mapped", [1576, 1582, 1610]], [[64927, 64927], "mapped", [1578, 1580, 1610]], [[64928, 64928], "mapped", [1578, 1580, 1609]], [[64929, 64929], "mapped", [1578, 1582, 1610]], [[64930, 64930], "mapped", [1578, 1582, 1609]], [[64931, 64931], "mapped", [1578, 1605, 1610]], [[64932, 64932], "mapped", [1578, 1605, 1609]], [[64933, 64933], "mapped", [1580, 1605, 1610]], [[64934, 64934], "mapped", [1580, 1581, 1609]], [[64935, 64935], "mapped", [1580, 1605, 1609]], [[64936, 64936], "mapped", [1587, 1582, 1609]], [[64937, 64937], "mapped", [1589, 1581, 1610]], [[64938, 64938], "mapped", [1588, 1581, 1610]], [[64939, 64939], "mapped", [1590, 1581, 1610]], [[64940, 64940], "mapped", [1604, 1580, 1610]], [[64941, 64941], "mapped", [1604, 1605, 1610]], [[64942, 64942], "mapped", [1610, 1581, 1610]], [[64943, 64943], "mapped", [1610, 1580, 1610]], [[64944, 64944], "mapped", [1610, 1605, 1610]], [[64945, 64945], "mapped", [1605, 1605, 1610]], [[64946, 64946], "mapped", [1602, 1605, 1610]], [[64947, 64947], "mapped", [1606, 1581, 1610]], [[64948, 64948], "mapped", [1602, 1605, 1581]], [[64949, 64949], "mapped", [1604, 1581, 1605]], [[64950, 64950], "mapped", [1593, 1605, 1610]], [[64951, 64951], "mapped", [1603, 1605, 1610]], [[64952, 64952], "mapped", [1606, 1580, 1581]], [[64953, 64953], "mapped", [1605, 1582, 1610]], [[64954, 64954], "mapped", [1604, 1580, 1605]], [[64955, 64955], "mapped", [1603, 1605, 1605]], [[64956, 64956], "mapped", [1604, 1580, 1605]], [[64957, 64957], "mapped", [1606, 1580, 1581]], [[64958, 64958], "mapped", [1580, 1581, 1610]], [[64959, 64959], "mapped", [1581, 1580, 1610]], [[64960, 64960], "mapped", [1605, 1580, 1610]], [[64961, 64961], "mapped", [1601, 1605, 1610]], [[64962, 64962], "mapped", [1576, 1581, 1610]], [[64963, 64963], "mapped", [1603, 1605, 1605]], [[64964, 64964], "mapped", [1593, 1580, 1605]], [[64965, 64965], "mapped", [1589, 1605, 1605]], [[64966, 64966], "mapped", [1587, 1582, 1610]], [[64967, 64967], "mapped", [1606, 1580, 1610]], [[64968, 64975], "disallowed"], [[64976, 65007], "disallowed"], [[65008, 65008], "mapped", [1589, 1604, 1746]], [[65009, 65009], "mapped", [1602, 1604, 1746]], [[65010, 65010], "mapped", [1575, 1604, 1604, 1607]], [[65011, 65011], "mapped", [1575, 1603, 1576, 1585]], [[65012, 65012], "mapped", [1605, 1581, 1605, 1583]], [[65013, 65013], "mapped", [1589, 1604, 1593, 1605]], [[65014, 65014], "mapped", [1585, 1587, 1608, 1604]], [[65015, 65015], "mapped", [1593, 1604, 1610, 1607]], [[65016, 65016], "mapped", [1608, 1587, 1604, 1605]], [[65017, 65017], "mapped", [1589, 1604, 1609]], [[65018, 65018], "disallowed_STD3_mapped", [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605]], [[65019, 65019], "disallowed_STD3_mapped", [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], [[65020, 65020], "mapped", [1585, 1740, 1575, 1604]], [[65021, 65021], "valid", [], "NV8"], [[65022, 65023], "disallowed"], [[65024, 65039], "ignored"], [[65040, 65040], "disallowed_STD3_mapped", [44]], [[65041, 65041], "mapped", [12289]], [[65042, 65042], "disallowed"], [[65043, 65043], "disallowed_STD3_mapped", [58]], [[65044, 65044], "disallowed_STD3_mapped", [59]], [[65045, 65045], "disallowed_STD3_mapped", [33]], [[65046, 65046], "disallowed_STD3_mapped", [63]], [[65047, 65047], "mapped", [12310]], [[65048, 65048], "mapped", [12311]], [[65049, 65049], "disallowed"], [[65050, 65055], "disallowed"], [[65056, 65059], "valid"], [[65060, 65062], "valid"], [[65063, 65069], "valid"], [[65070, 65071], "valid"], [[65072, 65072], "disallowed"], [[65073, 65073], "mapped", [8212]], [[65074, 65074], "mapped", [8211]], [[65075, 65076], "disallowed_STD3_mapped", [95]], [[65077, 65077], "disallowed_STD3_mapped", [40]], [[65078, 65078], "disallowed_STD3_mapped", [41]], [[65079, 65079], "disallowed_STD3_mapped", [123]], [[65080, 65080], "disallowed_STD3_mapped", [125]], [[65081, 65081], "mapped", [12308]], [[65082, 65082], "mapped", [12309]], [[65083, 65083], "mapped", [12304]], [[65084, 65084], "mapped", [12305]], [[65085, 65085], "mapped", [12298]], [[65086, 65086], "mapped", [12299]], [[65087, 65087], "mapped", [12296]], [[65088, 65088], "mapped", [12297]], [[65089, 65089], "mapped", [12300]], [[65090, 65090], "mapped", [12301]], [[65091, 65091], "mapped", [12302]], [[65092, 65092], "mapped", [12303]], [[65093, 65094], "valid", [], "NV8"], [[65095, 65095], "disallowed_STD3_mapped", [91]], [[65096, 65096], "disallowed_STD3_mapped", [93]], [[65097, 65100], "disallowed_STD3_mapped", [32, 773]], [[65101, 65103], "disallowed_STD3_mapped", [95]], [[65104, 65104], "disallowed_STD3_mapped", [44]], [[65105, 65105], "mapped", [12289]], [[65106, 65106], "disallowed"], [[65107, 65107], "disallowed"], [[65108, 65108], "disallowed_STD3_mapped", [59]], [[65109, 65109], "disallowed_STD3_mapped", [58]], [[65110, 65110], "disallowed_STD3_mapped", [63]], [[65111, 65111], "disallowed_STD3_mapped", [33]], [[65112, 65112], "mapped", [8212]], [[65113, 65113], "disallowed_STD3_mapped", [40]], [[65114, 65114], "disallowed_STD3_mapped", [41]], [[65115, 65115], "disallowed_STD3_mapped", [123]], [[65116, 65116], "disallowed_STD3_mapped", [125]], [[65117, 65117], "mapped", [12308]], [[65118, 65118], "mapped", [12309]], [[65119, 65119], "disallowed_STD3_mapped", [35]], [[65120, 65120], "disallowed_STD3_mapped", [38]], [[65121, 65121], "disallowed_STD3_mapped", [42]], [[65122, 65122], "disallowed_STD3_mapped", [43]], [[65123, 65123], "mapped", [45]], [[65124, 65124], "disallowed_STD3_mapped", [60]], [[65125, 65125], "disallowed_STD3_mapped", [62]], [[65126, 65126], "disallowed_STD3_mapped", [61]], [[65127, 65127], "disallowed"], [[65128, 65128], "disallowed_STD3_mapped", [92]], [[65129, 65129], "disallowed_STD3_mapped", [36]], [[65130, 65130], "disallowed_STD3_mapped", [37]], [[65131, 65131], "disallowed_STD3_mapped", [64]], [[65132, 65135], "disallowed"], [[65136, 65136], "disallowed_STD3_mapped", [32, 1611]], [[65137, 65137], "mapped", [1600, 1611]], [[65138, 65138], "disallowed_STD3_mapped", [32, 1612]], [[65139, 65139], "valid"], [[65140, 65140], "disallowed_STD3_mapped", [32, 1613]], [[65141, 65141], "disallowed"], [[65142, 65142], "disallowed_STD3_mapped", [32, 1614]], [[65143, 65143], "mapped", [1600, 1614]], [[65144, 65144], "disallowed_STD3_mapped", [32, 1615]], [[65145, 65145], "mapped", [1600, 1615]], [[65146, 65146], "disallowed_STD3_mapped", [32, 1616]], [[65147, 65147], "mapped", [1600, 1616]], [[65148, 65148], "disallowed_STD3_mapped", [32, 1617]], [[65149, 65149], "mapped", [1600, 1617]], [[65150, 65150], "disallowed_STD3_mapped", [32, 1618]], [[65151, 65151], "mapped", [1600, 1618]], [[65152, 65152], "mapped", [1569]], [[65153, 65154], "mapped", [1570]], [[65155, 65156], "mapped", [1571]], [[65157, 65158], "mapped", [1572]], [[65159, 65160], "mapped", [1573]], [[65161, 65164], "mapped", [1574]], [[65165, 65166], "mapped", [1575]], [[65167, 65170], "mapped", [1576]], [[65171, 65172], "mapped", [1577]], [[65173, 65176], "mapped", [1578]], [[65177, 65180], "mapped", [1579]], [[65181, 65184], "mapped", [1580]], [[65185, 65188], "mapped", [1581]], [[65189, 65192], "mapped", [1582]], [[65193, 65194], "mapped", [1583]], [[65195, 65196], "mapped", [1584]], [[65197, 65198], "mapped", [1585]], [[65199, 65200], "mapped", [1586]], [[65201, 65204], "mapped", [1587]], [[65205, 65208], "mapped", [1588]], [[65209, 65212], "mapped", [1589]], [[65213, 65216], "mapped", [1590]], [[65217, 65220], "mapped", [1591]], [[65221, 65224], "mapped", [1592]], [[65225, 65228], "mapped", [1593]], [[65229, 65232], "mapped", [1594]], [[65233, 65236], "mapped", [1601]], [[65237, 65240], "mapped", [1602]], [[65241, 65244], "mapped", [1603]], [[65245, 65248], "mapped", [1604]], [[65249, 65252], "mapped", [1605]], [[65253, 65256], "mapped", [1606]], [[65257, 65260], "mapped", [1607]], [[65261, 65262], "mapped", [1608]], [[65263, 65264], "mapped", [1609]], [[65265, 65268], "mapped", [1610]], [[65269, 65270], "mapped", [1604, 1570]], [[65271, 65272], "mapped", [1604, 1571]], [[65273, 65274], "mapped", [1604, 1573]], [[65275, 65276], "mapped", [1604, 1575]], [[65277, 65278], "disallowed"], [[65279, 65279], "ignored"], [[65280, 65280], "disallowed"], [[65281, 65281], "disallowed_STD3_mapped", [33]], [[65282, 65282], "disallowed_STD3_mapped", [34]], [[65283, 65283], "disallowed_STD3_mapped", [35]], [[65284, 65284], "disallowed_STD3_mapped", [36]], [[65285, 65285], "disallowed_STD3_mapped", [37]], [[65286, 65286], "disallowed_STD3_mapped", [38]], [[65287, 65287], "disallowed_STD3_mapped", [39]], [[65288, 65288], "disallowed_STD3_mapped", [40]], [[65289, 65289], "disallowed_STD3_mapped", [41]], [[65290, 65290], "disallowed_STD3_mapped", [42]], [[65291, 65291], "disallowed_STD3_mapped", [43]], [[65292, 65292], "disallowed_STD3_mapped", [44]], [[65293, 65293], "mapped", [45]], [[65294, 65294], "mapped", [46]], [[65295, 65295], "disallowed_STD3_mapped", [47]], [[65296, 65296], "mapped", [48]], [[65297, 65297], "mapped", [49]], [[65298, 65298], "mapped", [50]], [[65299, 65299], "mapped", [51]], [[65300, 65300], "mapped", [52]], [[65301, 65301], "mapped", [53]], [[65302, 65302], "mapped", [54]], [[65303, 65303], "mapped", [55]], [[65304, 65304], "mapped", [56]], [[65305, 65305], "mapped", [57]], [[65306, 65306], "disallowed_STD3_mapped", [58]], [[65307, 65307], "disallowed_STD3_mapped", [59]], [[65308, 65308], "disallowed_STD3_mapped", [60]], [[65309, 65309], "disallowed_STD3_mapped", [61]], [[65310, 65310], "disallowed_STD3_mapped", [62]], [[65311, 65311], "disallowed_STD3_mapped", [63]], [[65312, 65312], "disallowed_STD3_mapped", [64]], [[65313, 65313], "mapped", [97]], [[65314, 65314], "mapped", [98]], [[65315, 65315], "mapped", [99]], [[65316, 65316], "mapped", [100]], [[65317, 65317], "mapped", [101]], [[65318, 65318], "mapped", [102]], [[65319, 65319], "mapped", [103]], [[65320, 65320], "mapped", [104]], [[65321, 65321], "mapped", [105]], [[65322, 65322], "mapped", [106]], [[65323, 65323], "mapped", [107]], [[65324, 65324], "mapped", [108]], [[65325, 65325], "mapped", [109]], [[65326, 65326], "mapped", [110]], [[65327, 65327], "mapped", [111]], [[65328, 65328], "mapped", [112]], [[65329, 65329], "mapped", [113]], [[65330, 65330], "mapped", [114]], [[65331, 65331], "mapped", [115]], [[65332, 65332], "mapped", [116]], [[65333, 65333], "mapped", [117]], [[65334, 65334], "mapped", [118]], [[65335, 65335], "mapped", [119]], [[65336, 65336], "mapped", [120]], [[65337, 65337], "mapped", [121]], [[65338, 65338], "mapped", [122]], [[65339, 65339], "disallowed_STD3_mapped", [91]], [[65340, 65340], "disallowed_STD3_mapped", [92]], [[65341, 65341], "disallowed_STD3_mapped", [93]], [[65342, 65342], "disallowed_STD3_mapped", [94]], [[65343, 65343], "disallowed_STD3_mapped", [95]], [[65344, 65344], "disallowed_STD3_mapped", [96]], [[65345, 65345], "mapped", [97]], [[65346, 65346], "mapped", [98]], [[65347, 65347], "mapped", [99]], [[65348, 65348], "mapped", [100]], [[65349, 65349], "mapped", [101]], [[65350, 65350], "mapped", [102]], [[65351, 65351], "mapped", [103]], [[65352, 65352], "mapped", [104]], [[65353, 65353], "mapped", [105]], [[65354, 65354], "mapped", [106]], [[65355, 65355], "mapped", [107]], [[65356, 65356], "mapped", [108]], [[65357, 65357], "mapped", [109]], [[65358, 65358], "mapped", [110]], [[65359, 65359], "mapped", [111]], [[65360, 65360], "mapped", [112]], [[65361, 65361], "mapped", [113]], [[65362, 65362], "mapped", [114]], [[65363, 65363], "mapped", [115]], [[65364, 65364], "mapped", [116]], [[65365, 65365], "mapped", [117]], [[65366, 65366], "mapped", [118]], [[65367, 65367], "mapped", [119]], [[65368, 65368], "mapped", [120]], [[65369, 65369], "mapped", [121]], [[65370, 65370], "mapped", [122]], [[65371, 65371], "disallowed_STD3_mapped", [123]], [[65372, 65372], "disallowed_STD3_mapped", [124]], [[65373, 65373], "disallowed_STD3_mapped", [125]], [[65374, 65374], "disallowed_STD3_mapped", [126]], [[65375, 65375], "mapped", [10629]], [[65376, 65376], "mapped", [10630]], [[65377, 65377], "mapped", [46]], [[65378, 65378], "mapped", [12300]], [[65379, 65379], "mapped", [12301]], [[65380, 65380], "mapped", [12289]], [[65381, 65381], "mapped", [12539]], [[65382, 65382], "mapped", [12530]], [[65383, 65383], "mapped", [12449]], [[65384, 65384], "mapped", [12451]], [[65385, 65385], "mapped", [12453]], [[65386, 65386], "mapped", [12455]], [[65387, 65387], "mapped", [12457]], [[65388, 65388], "mapped", [12515]], [[65389, 65389], "mapped", [12517]], [[65390, 65390], "mapped", [12519]], [[65391, 65391], "mapped", [12483]], [[65392, 65392], "mapped", [12540]], [[65393, 65393], "mapped", [12450]], [[65394, 65394], "mapped", [12452]], [[65395, 65395], "mapped", [12454]], [[65396, 65396], "mapped", [12456]], [[65397, 65397], "mapped", [12458]], [[65398, 65398], "mapped", [12459]], [[65399, 65399], "mapped", [12461]], [[65400, 65400], "mapped", [12463]], [[65401, 65401], "mapped", [12465]], [[65402, 65402], "mapped", [12467]], [[65403, 65403], "mapped", [12469]], [[65404, 65404], "mapped", [12471]], [[65405, 65405], "mapped", [12473]], [[65406, 65406], "mapped", [12475]], [[65407, 65407], "mapped", [12477]], [[65408, 65408], "mapped", [12479]], [[65409, 65409], "mapped", [12481]], [[65410, 65410], "mapped", [12484]], [[65411, 65411], "mapped", [12486]], [[65412, 65412], "mapped", [12488]], [[65413, 65413], "mapped", [12490]], [[65414, 65414], "mapped", [12491]], [[65415, 65415], "mapped", [12492]], [[65416, 65416], "mapped", [12493]], [[65417, 65417], "mapped", [12494]], [[65418, 65418], "mapped", [12495]], [[65419, 65419], "mapped", [12498]], [[65420, 65420], "mapped", [12501]], [[65421, 65421], "mapped", [12504]], [[65422, 65422], "mapped", [12507]], [[65423, 65423], "mapped", [12510]], [[65424, 65424], "mapped", [12511]], [[65425, 65425], "mapped", [12512]], [[65426, 65426], "mapped", [12513]], [[65427, 65427], "mapped", [12514]], [[65428, 65428], "mapped", [12516]], [[65429, 65429], "mapped", [12518]], [[65430, 65430], "mapped", [12520]], [[65431, 65431], "mapped", [12521]], [[65432, 65432], "mapped", [12522]], [[65433, 65433], "mapped", [12523]], [[65434, 65434], "mapped", [12524]], [[65435, 65435], "mapped", [12525]], [[65436, 65436], "mapped", [12527]], [[65437, 65437], "mapped", [12531]], [[65438, 65438], "mapped", [12441]], [[65439, 65439], "mapped", [12442]], [[65440, 65440], "disallowed"], [[65441, 65441], "mapped", [4352]], [[65442, 65442], "mapped", [4353]], [[65443, 65443], "mapped", [4522]], [[65444, 65444], "mapped", [4354]], [[65445, 65445], "mapped", [4524]], [[65446, 65446], "mapped", [4525]], [[65447, 65447], "mapped", [4355]], [[65448, 65448], "mapped", [4356]], [[65449, 65449], "mapped", [4357]], [[65450, 65450], "mapped", [4528]], [[65451, 65451], "mapped", [4529]], [[65452, 65452], "mapped", [4530]], [[65453, 65453], "mapped", [4531]], [[65454, 65454], "mapped", [4532]], [[65455, 65455], "mapped", [4533]], [[65456, 65456], "mapped", [4378]], [[65457, 65457], "mapped", [4358]], [[65458, 65458], "mapped", [4359]], [[65459, 65459], "mapped", [4360]], [[65460, 65460], "mapped", [4385]], [[65461, 65461], "mapped", [4361]], [[65462, 65462], "mapped", [4362]], [[65463, 65463], "mapped", [4363]], [[65464, 65464], "mapped", [4364]], [[65465, 65465], "mapped", [4365]], [[65466, 65466], "mapped", [4366]], [[65467, 65467], "mapped", [4367]], [[65468, 65468], "mapped", [4368]], [[65469, 65469], "mapped", [4369]], [[65470, 65470], "mapped", [4370]], [[65471, 65473], "disallowed"], [[65474, 65474], "mapped", [4449]], [[65475, 65475], "mapped", [4450]], [[65476, 65476], "mapped", [4451]], [[65477, 65477], "mapped", [4452]], [[65478, 65478], "mapped", [4453]], [[65479, 65479], "mapped", [4454]], [[65480, 65481], "disallowed"], [[65482, 65482], "mapped", [4455]], [[65483, 65483], "mapped", [4456]], [[65484, 65484], "mapped", [4457]], [[65485, 65485], "mapped", [4458]], [[65486, 65486], "mapped", [4459]], [[65487, 65487], "mapped", [4460]], [[65488, 65489], "disallowed"], [[65490, 65490], "mapped", [4461]], [[65491, 65491], "mapped", [4462]], [[65492, 65492], "mapped", [4463]], [[65493, 65493], "mapped", [4464]], [[65494, 65494], "mapped", [4465]], [[65495, 65495], "mapped", [4466]], [[65496, 65497], "disallowed"], [[65498, 65498], "mapped", [4467]], [[65499, 65499], "mapped", [4468]], [[65500, 65500], "mapped", [4469]], [[65501, 65503], "disallowed"], [[65504, 65504], "mapped", [162]], [[65505, 65505], "mapped", [163]], [[65506, 65506], "mapped", [172]], [[65507, 65507], "disallowed_STD3_mapped", [32, 772]], [[65508, 65508], "mapped", [166]], [[65509, 65509], "mapped", [165]], [[65510, 65510], "mapped", [8361]], [[65511, 65511], "disallowed"], [[65512, 65512], "mapped", [9474]], [[65513, 65513], "mapped", [8592]], [[65514, 65514], "mapped", [8593]], [[65515, 65515], "mapped", [8594]], [[65516, 65516], "mapped", [8595]], [[65517, 65517], "mapped", [9632]], [[65518, 65518], "mapped", [9675]], [[65519, 65528], "disallowed"], [[65529, 65531], "disallowed"], [[65532, 65532], "disallowed"], [[65533, 65533], "disallowed"], [[65534, 65535], "disallowed"], [[65536, 65547], "valid"], [[65548, 65548], "disallowed"], [[65549, 65574], "valid"], [[65575, 65575], "disallowed"], [[65576, 65594], "valid"], [[65595, 65595], "disallowed"], [[65596, 65597], "valid"], [[65598, 65598], "disallowed"], [[65599, 65613], "valid"], [[65614, 65615], "disallowed"], [[65616, 65629], "valid"], [[65630, 65663], "disallowed"], [[65664, 65786], "valid"], [[65787, 65791], "disallowed"], [[65792, 65794], "valid", [], "NV8"], [[65795, 65798], "disallowed"], [[65799, 65843], "valid", [], "NV8"], [[65844, 65846], "disallowed"], [[65847, 65855], "valid", [], "NV8"], [[65856, 65930], "valid", [], "NV8"], [[65931, 65932], "valid", [], "NV8"], [[65933, 65935], "disallowed"], [[65936, 65947], "valid", [], "NV8"], [[65948, 65951], "disallowed"], [[65952, 65952], "valid", [], "NV8"], [[65953, 65999], "disallowed"], [[66e3, 66044], "valid", [], "NV8"], [[66045, 66045], "valid"], [[66046, 66175], "disallowed"], [[66176, 66204], "valid"], [[66205, 66207], "disallowed"], [[66208, 66256], "valid"], [[66257, 66271], "disallowed"], [[66272, 66272], "valid"], [[66273, 66299], "valid", [], "NV8"], [[66300, 66303], "disallowed"], [[66304, 66334], "valid"], [[66335, 66335], "valid"], [[66336, 66339], "valid", [], "NV8"], [[66340, 66351], "disallowed"], [[66352, 66368], "valid"], [[66369, 66369], "valid", [], "NV8"], [[66370, 66377], "valid"], [[66378, 66378], "valid", [], "NV8"], [[66379, 66383], "disallowed"], [[66384, 66426], "valid"], [[66427, 66431], "disallowed"], [[66432, 66461], "valid"], [[66462, 66462], "disallowed"], [[66463, 66463], "valid", [], "NV8"], [[66464, 66499], "valid"], [[66500, 66503], "disallowed"], [[66504, 66511], "valid"], [[66512, 66517], "valid", [], "NV8"], [[66518, 66559], "disallowed"], [[66560, 66560], "mapped", [66600]], [[66561, 66561], "mapped", [66601]], [[66562, 66562], "mapped", [66602]], [[66563, 66563], "mapped", [66603]], [[66564, 66564], "mapped", [66604]], [[66565, 66565], "mapped", [66605]], [[66566, 66566], "mapped", [66606]], [[66567, 66567], "mapped", [66607]], [[66568, 66568], "mapped", [66608]], [[66569, 66569], "mapped", [66609]], [[66570, 66570], "mapped", [66610]], [[66571, 66571], "mapped", [66611]], [[66572, 66572], "mapped", [66612]], [[66573, 66573], "mapped", [66613]], [[66574, 66574], "mapped", [66614]], [[66575, 66575], "mapped", [66615]], [[66576, 66576], "mapped", [66616]], [[66577, 66577], "mapped", [66617]], [[66578, 66578], "mapped", [66618]], [[66579, 66579], "mapped", [66619]], [[66580, 66580], "mapped", [66620]], [[66581, 66581], "mapped", [66621]], [[66582, 66582], "mapped", [66622]], [[66583, 66583], "mapped", [66623]], [[66584, 66584], "mapped", [66624]], [[66585, 66585], "mapped", [66625]], [[66586, 66586], "mapped", [66626]], [[66587, 66587], "mapped", [66627]], [[66588, 66588], "mapped", [66628]], [[66589, 66589], "mapped", [66629]], [[66590, 66590], "mapped", [66630]], [[66591, 66591], "mapped", [66631]], [[66592, 66592], "mapped", [66632]], [[66593, 66593], "mapped", [66633]], [[66594, 66594], "mapped", [66634]], [[66595, 66595], "mapped", [66635]], [[66596, 66596], "mapped", [66636]], [[66597, 66597], "mapped", [66637]], [[66598, 66598], "mapped", [66638]], [[66599, 66599], "mapped", [66639]], [[66600, 66637], "valid"], [[66638, 66717], "valid"], [[66718, 66719], "disallowed"], [[66720, 66729], "valid"], [[66730, 66815], "disallowed"], [[66816, 66855], "valid"], [[66856, 66863], "disallowed"], [[66864, 66915], "valid"], [[66916, 66926], "disallowed"], [[66927, 66927], "valid", [], "NV8"], [[66928, 67071], "disallowed"], [[67072, 67382], "valid"], [[67383, 67391], "disallowed"], [[67392, 67413], "valid"], [[67414, 67423], "disallowed"], [[67424, 67431], "valid"], [[67432, 67583], "disallowed"], [[67584, 67589], "valid"], [[67590, 67591], "disallowed"], [[67592, 67592], "valid"], [[67593, 67593], "disallowed"], [[67594, 67637], "valid"], [[67638, 67638], "disallowed"], [[67639, 67640], "valid"], [[67641, 67643], "disallowed"], [[67644, 67644], "valid"], [[67645, 67646], "disallowed"], [[67647, 67647], "valid"], [[67648, 67669], "valid"], [[67670, 67670], "disallowed"], [[67671, 67679], "valid", [], "NV8"], [[67680, 67702], "valid"], [[67703, 67711], "valid", [], "NV8"], [[67712, 67742], "valid"], [[67743, 67750], "disallowed"], [[67751, 67759], "valid", [], "NV8"], [[67760, 67807], "disallowed"], [[67808, 67826], "valid"], [[67827, 67827], "disallowed"], [[67828, 67829], "valid"], [[67830, 67834], "disallowed"], [[67835, 67839], "valid", [], "NV8"], [[67840, 67861], "valid"], [[67862, 67865], "valid", [], "NV8"], [[67866, 67867], "valid", [], "NV8"], [[67868, 67870], "disallowed"], [[67871, 67871], "valid", [], "NV8"], [[67872, 67897], "valid"], [[67898, 67902], "disallowed"], [[67903, 67903], "valid", [], "NV8"], [[67904, 67967], "disallowed"], [[67968, 68023], "valid"], [[68024, 68027], "disallowed"], [[68028, 68029], "valid", [], "NV8"], [[68030, 68031], "valid"], [[68032, 68047], "valid", [], "NV8"], [[68048, 68049], "disallowed"], [[68050, 68095], "valid", [], "NV8"], [[68096, 68099], "valid"], [[68100, 68100], "disallowed"], [[68101, 68102], "valid"], [[68103, 68107], "disallowed"], [[68108, 68115], "valid"], [[68116, 68116], "disallowed"], [[68117, 68119], "valid"], [[68120, 68120], "disallowed"], [[68121, 68147], "valid"], [[68148, 68151], "disallowed"], [[68152, 68154], "valid"], [[68155, 68158], "disallowed"], [[68159, 68159], "valid"], [[68160, 68167], "valid", [], "NV8"], [[68168, 68175], "disallowed"], [[68176, 68184], "valid", [], "NV8"], [[68185, 68191], "disallowed"], [[68192, 68220], "valid"], [[68221, 68223], "valid", [], "NV8"], [[68224, 68252], "valid"], [[68253, 68255], "valid", [], "NV8"], [[68256, 68287], "disallowed"], [[68288, 68295], "valid"], [[68296, 68296], "valid", [], "NV8"], [[68297, 68326], "valid"], [[68327, 68330], "disallowed"], [[68331, 68342], "valid", [], "NV8"], [[68343, 68351], "disallowed"], [[68352, 68405], "valid"], [[68406, 68408], "disallowed"], [[68409, 68415], "valid", [], "NV8"], [[68416, 68437], "valid"], [[68438, 68439], "disallowed"], [[68440, 68447], "valid", [], "NV8"], [[68448, 68466], "valid"], [[68467, 68471], "disallowed"], [[68472, 68479], "valid", [], "NV8"], [[68480, 68497], "valid"], [[68498, 68504], "disallowed"], [[68505, 68508], "valid", [], "NV8"], [[68509, 68520], "disallowed"], [[68521, 68527], "valid", [], "NV8"], [[68528, 68607], "disallowed"], [[68608, 68680], "valid"], [[68681, 68735], "disallowed"], [[68736, 68736], "mapped", [68800]], [[68737, 68737], "mapped", [68801]], [[68738, 68738], "mapped", [68802]], [[68739, 68739], "mapped", [68803]], [[68740, 68740], "mapped", [68804]], [[68741, 68741], "mapped", [68805]], [[68742, 68742], "mapped", [68806]], [[68743, 68743], "mapped", [68807]], [[68744, 68744], "mapped", [68808]], [[68745, 68745], "mapped", [68809]], [[68746, 68746], "mapped", [68810]], [[68747, 68747], "mapped", [68811]], [[68748, 68748], "mapped", [68812]], [[68749, 68749], "mapped", [68813]], [[68750, 68750], "mapped", [68814]], [[68751, 68751], "mapped", [68815]], [[68752, 68752], "mapped", [68816]], [[68753, 68753], "mapped", [68817]], [[68754, 68754], "mapped", [68818]], [[68755, 68755], "mapped", [68819]], [[68756, 68756], "mapped", [68820]], [[68757, 68757], "mapped", [68821]], [[68758, 68758], "mapped", [68822]], [[68759, 68759], "mapped", [68823]], [[68760, 68760], "mapped", [68824]], [[68761, 68761], "mapped", [68825]], [[68762, 68762], "mapped", [68826]], [[68763, 68763], "mapped", [68827]], [[68764, 68764], "mapped", [68828]], [[68765, 68765], "mapped", [68829]], [[68766, 68766], "mapped", [68830]], [[68767, 68767], "mapped", [68831]], [[68768, 68768], "mapped", [68832]], [[68769, 68769], "mapped", [68833]], [[68770, 68770], "mapped", [68834]], [[68771, 68771], "mapped", [68835]], [[68772, 68772], "mapped", [68836]], [[68773, 68773], "mapped", [68837]], [[68774, 68774], "mapped", [68838]], [[68775, 68775], "mapped", [68839]], [[68776, 68776], "mapped", [68840]], [[68777, 68777], "mapped", [68841]], [[68778, 68778], "mapped", [68842]], [[68779, 68779], "mapped", [68843]], [[68780, 68780], "mapped", [68844]], [[68781, 68781], "mapped", [68845]], [[68782, 68782], "mapped", [68846]], [[68783, 68783], "mapped", [68847]], [[68784, 68784], "mapped", [68848]], [[68785, 68785], "mapped", [68849]], [[68786, 68786], "mapped", [68850]], [[68787, 68799], "disallowed"], [[68800, 68850], "valid"], [[68851, 68857], "disallowed"], [[68858, 68863], "valid", [], "NV8"], [[68864, 69215], "disallowed"], [[69216, 69246], "valid", [], "NV8"], [[69247, 69631], "disallowed"], [[69632, 69702], "valid"], [[69703, 69709], "valid", [], "NV8"], [[69710, 69713], "disallowed"], [[69714, 69733], "valid", [], "NV8"], [[69734, 69743], "valid"], [[69744, 69758], "disallowed"], [[69759, 69759], "valid"], [[69760, 69818], "valid"], [[69819, 69820], "valid", [], "NV8"], [[69821, 69821], "disallowed"], [[69822, 69825], "valid", [], "NV8"], [[69826, 69839], "disallowed"], [[69840, 69864], "valid"], [[69865, 69871], "disallowed"], [[69872, 69881], "valid"], [[69882, 69887], "disallowed"], [[69888, 69940], "valid"], [[69941, 69941], "disallowed"], [[69942, 69951], "valid"], [[69952, 69955], "valid", [], "NV8"], [[69956, 69967], "disallowed"], [[69968, 70003], "valid"], [[70004, 70005], "valid", [], "NV8"], [[70006, 70006], "valid"], [[70007, 70015], "disallowed"], [[70016, 70084], "valid"], [[70085, 70088], "valid", [], "NV8"], [[70089, 70089], "valid", [], "NV8"], [[70090, 70092], "valid"], [[70093, 70093], "valid", [], "NV8"], [[70094, 70095], "disallowed"], [[70096, 70105], "valid"], [[70106, 70106], "valid"], [[70107, 70107], "valid", [], "NV8"], [[70108, 70108], "valid"], [[70109, 70111], "valid", [], "NV8"], [[70112, 70112], "disallowed"], [[70113, 70132], "valid", [], "NV8"], [[70133, 70143], "disallowed"], [[70144, 70161], "valid"], [[70162, 70162], "disallowed"], [[70163, 70199], "valid"], [[70200, 70205], "valid", [], "NV8"], [[70206, 70271], "disallowed"], [[70272, 70278], "valid"], [[70279, 70279], "disallowed"], [[70280, 70280], "valid"], [[70281, 70281], "disallowed"], [[70282, 70285], "valid"], [[70286, 70286], "disallowed"], [[70287, 70301], "valid"], [[70302, 70302], "disallowed"], [[70303, 70312], "valid"], [[70313, 70313], "valid", [], "NV8"], [[70314, 70319], "disallowed"], [[70320, 70378], "valid"], [[70379, 70383], "disallowed"], [[70384, 70393], "valid"], [[70394, 70399], "disallowed"], [[70400, 70400], "valid"], [[70401, 70403], "valid"], [[70404, 70404], "disallowed"], [[70405, 70412], "valid"], [[70413, 70414], "disallowed"], [[70415, 70416], "valid"], [[70417, 70418], "disallowed"], [[70419, 70440], "valid"], [[70441, 70441], "disallowed"], [[70442, 70448], "valid"], [[70449, 70449], "disallowed"], [[70450, 70451], "valid"], [[70452, 70452], "disallowed"], [[70453, 70457], "valid"], [[70458, 70459], "disallowed"], [[70460, 70468], "valid"], [[70469, 70470], "disallowed"], [[70471, 70472], "valid"], [[70473, 70474], "disallowed"], [[70475, 70477], "valid"], [[70478, 70479], "disallowed"], [[70480, 70480], "valid"], [[70481, 70486], "disallowed"], [[70487, 70487], "valid"], [[70488, 70492], "disallowed"], [[70493, 70499], "valid"], [[70500, 70501], "disallowed"], [[70502, 70508], "valid"], [[70509, 70511], "disallowed"], [[70512, 70516], "valid"], [[70517, 70783], "disallowed"], [[70784, 70853], "valid"], [[70854, 70854], "valid", [], "NV8"], [[70855, 70855], "valid"], [[70856, 70863], "disallowed"], [[70864, 70873], "valid"], [[70874, 71039], "disallowed"], [[71040, 71093], "valid"], [[71094, 71095], "disallowed"], [[71096, 71104], "valid"], [[71105, 71113], "valid", [], "NV8"], [[71114, 71127], "valid", [], "NV8"], [[71128, 71133], "valid"], [[71134, 71167], "disallowed"], [[71168, 71232], "valid"], [[71233, 71235], "valid", [], "NV8"], [[71236, 71236], "valid"], [[71237, 71247], "disallowed"], [[71248, 71257], "valid"], [[71258, 71295], "disallowed"], [[71296, 71351], "valid"], [[71352, 71359], "disallowed"], [[71360, 71369], "valid"], [[71370, 71423], "disallowed"], [[71424, 71449], "valid"], [[71450, 71452], "disallowed"], [[71453, 71467], "valid"], [[71468, 71471], "disallowed"], [[71472, 71481], "valid"], [[71482, 71487], "valid", [], "NV8"], [[71488, 71839], "disallowed"], [[71840, 71840], "mapped", [71872]], [[71841, 71841], "mapped", [71873]], [[71842, 71842], "mapped", [71874]], [[71843, 71843], "mapped", [71875]], [[71844, 71844], "mapped", [71876]], [[71845, 71845], "mapped", [71877]], [[71846, 71846], "mapped", [71878]], [[71847, 71847], "mapped", [71879]], [[71848, 71848], "mapped", [71880]], [[71849, 71849], "mapped", [71881]], [[71850, 71850], "mapped", [71882]], [[71851, 71851], "mapped", [71883]], [[71852, 71852], "mapped", [71884]], [[71853, 71853], "mapped", [71885]], [[71854, 71854], "mapped", [71886]], [[71855, 71855], "mapped", [71887]], [[71856, 71856], "mapped", [71888]], [[71857, 71857], "mapped", [71889]], [[71858, 71858], "mapped", [71890]], [[71859, 71859], "mapped", [71891]], [[71860, 71860], "mapped", [71892]], [[71861, 71861], "mapped", [71893]], [[71862, 71862], "mapped", [71894]], [[71863, 71863], "mapped", [71895]], [[71864, 71864], "mapped", [71896]], [[71865, 71865], "mapped", [71897]], [[71866, 71866], "mapped", [71898]], [[71867, 71867], "mapped", [71899]], [[71868, 71868], "mapped", [71900]], [[71869, 71869], "mapped", [71901]], [[71870, 71870], "mapped", [71902]], [[71871, 71871], "mapped", [71903]], [[71872, 71913], "valid"], [[71914, 71922], "valid", [], "NV8"], [[71923, 71934], "disallowed"], [[71935, 71935], "valid"], [[71936, 72383], "disallowed"], [[72384, 72440], "valid"], [[72441, 73727], "disallowed"], [[73728, 74606], "valid"], [[74607, 74648], "valid"], [[74649, 74649], "valid"], [[74650, 74751], "disallowed"], [[74752, 74850], "valid", [], "NV8"], [[74851, 74862], "valid", [], "NV8"], [[74863, 74863], "disallowed"], [[74864, 74867], "valid", [], "NV8"], [[74868, 74868], "valid", [], "NV8"], [[74869, 74879], "disallowed"], [[74880, 75075], "valid"], [[75076, 77823], "disallowed"], [[77824, 78894], "valid"], [[78895, 82943], "disallowed"], [[82944, 83526], "valid"], [[83527, 92159], "disallowed"], [[92160, 92728], "valid"], [[92729, 92735], "disallowed"], [[92736, 92766], "valid"], [[92767, 92767], "disallowed"], [[92768, 92777], "valid"], [[92778, 92781], "disallowed"], [[92782, 92783], "valid", [], "NV8"], [[92784, 92879], "disallowed"], [[92880, 92909], "valid"], [[92910, 92911], "disallowed"], [[92912, 92916], "valid"], [[92917, 92917], "valid", [], "NV8"], [[92918, 92927], "disallowed"], [[92928, 92982], "valid"], [[92983, 92991], "valid", [], "NV8"], [[92992, 92995], "valid"], [[92996, 92997], "valid", [], "NV8"], [[92998, 93007], "disallowed"], [[93008, 93017], "valid"], [[93018, 93018], "disallowed"], [[93019, 93025], "valid", [], "NV8"], [[93026, 93026], "disallowed"], [[93027, 93047], "valid"], [[93048, 93052], "disallowed"], [[93053, 93071], "valid"], [[93072, 93951], "disallowed"], [[93952, 94020], "valid"], [[94021, 94031], "disallowed"], [[94032, 94078], "valid"], [[94079, 94094], "disallowed"], [[94095, 94111], "valid"], [[94112, 110591], "disallowed"], [[110592, 110593], "valid"], [[110594, 113663], "disallowed"], [[113664, 113770], "valid"], [[113771, 113775], "disallowed"], [[113776, 113788], "valid"], [[113789, 113791], "disallowed"], [[113792, 113800], "valid"], [[113801, 113807], "disallowed"], [[113808, 113817], "valid"], [[113818, 113819], "disallowed"], [[113820, 113820], "valid", [], "NV8"], [[113821, 113822], "valid"], [[113823, 113823], "valid", [], "NV8"], [[113824, 113827], "ignored"], [[113828, 118783], "disallowed"], [[118784, 119029], "valid", [], "NV8"], [[119030, 119039], "disallowed"], [[119040, 119078], "valid", [], "NV8"], [[119079, 119080], "disallowed"], [[119081, 119081], "valid", [], "NV8"], [[119082, 119133], "valid", [], "NV8"], [[119134, 119134], "mapped", [119127, 119141]], [[119135, 119135], "mapped", [119128, 119141]], [[119136, 119136], "mapped", [119128, 119141, 119150]], [[119137, 119137], "mapped", [119128, 119141, 119151]], [[119138, 119138], "mapped", [119128, 119141, 119152]], [[119139, 119139], "mapped", [119128, 119141, 119153]], [[119140, 119140], "mapped", [119128, 119141, 119154]], [[119141, 119154], "valid", [], "NV8"], [[119155, 119162], "disallowed"], [[119163, 119226], "valid", [], "NV8"], [[119227, 119227], "mapped", [119225, 119141]], [[119228, 119228], "mapped", [119226, 119141]], [[119229, 119229], "mapped", [119225, 119141, 119150]], [[119230, 119230], "mapped", [119226, 119141, 119150]], [[119231, 119231], "mapped", [119225, 119141, 119151]], [[119232, 119232], "mapped", [119226, 119141, 119151]], [[119233, 119261], "valid", [], "NV8"], [[119262, 119272], "valid", [], "NV8"], [[119273, 119295], "disallowed"], [[119296, 119365], "valid", [], "NV8"], [[119366, 119551], "disallowed"], [[119552, 119638], "valid", [], "NV8"], [[119639, 119647], "disallowed"], [[119648, 119665], "valid", [], "NV8"], [[119666, 119807], "disallowed"], [[119808, 119808], "mapped", [97]], [[119809, 119809], "mapped", [98]], [[119810, 119810], "mapped", [99]], [[119811, 119811], "mapped", [100]], [[119812, 119812], "mapped", [101]], [[119813, 119813], "mapped", [102]], [[119814, 119814], "mapped", [103]], [[119815, 119815], "mapped", [104]], [[119816, 119816], "mapped", [105]], [[119817, 119817], "mapped", [106]], [[119818, 119818], "mapped", [107]], [[119819, 119819], "mapped", [108]], [[119820, 119820], "mapped", [109]], [[119821, 119821], "mapped", [110]], [[119822, 119822], "mapped", [111]], [[119823, 119823], "mapped", [112]], [[119824, 119824], "mapped", [113]], [[119825, 119825], "mapped", [114]], [[119826, 119826], "mapped", [115]], [[119827, 119827], "mapped", [116]], [[119828, 119828], "mapped", [117]], [[119829, 119829], "mapped", [118]], [[119830, 119830], "mapped", [119]], [[119831, 119831], "mapped", [120]], [[119832, 119832], "mapped", [121]], [[119833, 119833], "mapped", [122]], [[119834, 119834], "mapped", [97]], [[119835, 119835], "mapped", [98]], [[119836, 119836], "mapped", [99]], [[119837, 119837], "mapped", [100]], [[119838, 119838], "mapped", [101]], [[119839, 119839], "mapped", [102]], [[119840, 119840], "mapped", [103]], [[119841, 119841], "mapped", [104]], [[119842, 119842], "mapped", [105]], [[119843, 119843], "mapped", [106]], [[119844, 119844], "mapped", [107]], [[119845, 119845], "mapped", [108]], [[119846, 119846], "mapped", [109]], [[119847, 119847], "mapped", [110]], [[119848, 119848], "mapped", [111]], [[119849, 119849], "mapped", [112]], [[119850, 119850], "mapped", [113]], [[119851, 119851], "mapped", [114]], [[119852, 119852], "mapped", [115]], [[119853, 119853], "mapped", [116]], [[119854, 119854], "mapped", [117]], [[119855, 119855], "mapped", [118]], [[119856, 119856], "mapped", [119]], [[119857, 119857], "mapped", [120]], [[119858, 119858], "mapped", [121]], [[119859, 119859], "mapped", [122]], [[119860, 119860], "mapped", [97]], [[119861, 119861], "mapped", [98]], [[119862, 119862], "mapped", [99]], [[119863, 119863], "mapped", [100]], [[119864, 119864], "mapped", [101]], [[119865, 119865], "mapped", [102]], [[119866, 119866], "mapped", [103]], [[119867, 119867], "mapped", [104]], [[119868, 119868], "mapped", [105]], [[119869, 119869], "mapped", [106]], [[119870, 119870], "mapped", [107]], [[119871, 119871], "mapped", [108]], [[119872, 119872], "mapped", [109]], [[119873, 119873], "mapped", [110]], [[119874, 119874], "mapped", [111]], [[119875, 119875], "mapped", [112]], [[119876, 119876], "mapped", [113]], [[119877, 119877], "mapped", [114]], [[119878, 119878], "mapped", [115]], [[119879, 119879], "mapped", [116]], [[119880, 119880], "mapped", [117]], [[119881, 119881], "mapped", [118]], [[119882, 119882], "mapped", [119]], [[119883, 119883], "mapped", [120]], [[119884, 119884], "mapped", [121]], [[119885, 119885], "mapped", [122]], [[119886, 119886], "mapped", [97]], [[119887, 119887], "mapped", [98]], [[119888, 119888], "mapped", [99]], [[119889, 119889], "mapped", [100]], [[119890, 119890], "mapped", [101]], [[119891, 119891], "mapped", [102]], [[119892, 119892], "mapped", [103]], [[119893, 119893], "disallowed"], [[119894, 119894], "mapped", [105]], [[119895, 119895], "mapped", [106]], [[119896, 119896], "mapped", [107]], [[119897, 119897], "mapped", [108]], [[119898, 119898], "mapped", [109]], [[119899, 119899], "mapped", [110]], [[119900, 119900], "mapped", [111]], [[119901, 119901], "mapped", [112]], [[119902, 119902], "mapped", [113]], [[119903, 119903], "mapped", [114]], [[119904, 119904], "mapped", [115]], [[119905, 119905], "mapped", [116]], [[119906, 119906], "mapped", [117]], [[119907, 119907], "mapped", [118]], [[119908, 119908], "mapped", [119]], [[119909, 119909], "mapped", [120]], [[119910, 119910], "mapped", [121]], [[119911, 119911], "mapped", [122]], [[119912, 119912], "mapped", [97]], [[119913, 119913], "mapped", [98]], [[119914, 119914], "mapped", [99]], [[119915, 119915], "mapped", [100]], [[119916, 119916], "mapped", [101]], [[119917, 119917], "mapped", [102]], [[119918, 119918], "mapped", [103]], [[119919, 119919], "mapped", [104]], [[119920, 119920], "mapped", [105]], [[119921, 119921], "mapped", [106]], [[119922, 119922], "mapped", [107]], [[119923, 119923], "mapped", [108]], [[119924, 119924], "mapped", [109]], [[119925, 119925], "mapped", [110]], [[119926, 119926], "mapped", [111]], [[119927, 119927], "mapped", [112]], [[119928, 119928], "mapped", [113]], [[119929, 119929], "mapped", [114]], [[119930, 119930], "mapped", [115]], [[119931, 119931], "mapped", [116]], [[119932, 119932], "mapped", [117]], [[119933, 119933], "mapped", [118]], [[119934, 119934], "mapped", [119]], [[119935, 119935], "mapped", [120]], [[119936, 119936], "mapped", [121]], [[119937, 119937], "mapped", [122]], [[119938, 119938], "mapped", [97]], [[119939, 119939], "mapped", [98]], [[119940, 119940], "mapped", [99]], [[119941, 119941], "mapped", [100]], [[119942, 119942], "mapped", [101]], [[119943, 119943], "mapped", [102]], [[119944, 119944], "mapped", [103]], [[119945, 119945], "mapped", [104]], [[119946, 119946], "mapped", [105]], [[119947, 119947], "mapped", [106]], [[119948, 119948], "mapped", [107]], [[119949, 119949], "mapped", [108]], [[119950, 119950], "mapped", [109]], [[119951, 119951], "mapped", [110]], [[119952, 119952], "mapped", [111]], [[119953, 119953], "mapped", [112]], [[119954, 119954], "mapped", [113]], [[119955, 119955], "mapped", [114]], [[119956, 119956], "mapped", [115]], [[119957, 119957], "mapped", [116]], [[119958, 119958], "mapped", [117]], [[119959, 119959], "mapped", [118]], [[119960, 119960], "mapped", [119]], [[119961, 119961], "mapped", [120]], [[119962, 119962], "mapped", [121]], [[119963, 119963], "mapped", [122]], [[119964, 119964], "mapped", [97]], [[119965, 119965], "disallowed"], [[119966, 119966], "mapped", [99]], [[119967, 119967], "mapped", [100]], [[119968, 119969], "disallowed"], [[119970, 119970], "mapped", [103]], [[119971, 119972], "disallowed"], [[119973, 119973], "mapped", [106]], [[119974, 119974], "mapped", [107]], [[119975, 119976], "disallowed"], [[119977, 119977], "mapped", [110]], [[119978, 119978], "mapped", [111]], [[119979, 119979], "mapped", [112]], [[119980, 119980], "mapped", [113]], [[119981, 119981], "disallowed"], [[119982, 119982], "mapped", [115]], [[119983, 119983], "mapped", [116]], [[119984, 119984], "mapped", [117]], [[119985, 119985], "mapped", [118]], [[119986, 119986], "mapped", [119]], [[119987, 119987], "mapped", [120]], [[119988, 119988], "mapped", [121]], [[119989, 119989], "mapped", [122]], [[119990, 119990], "mapped", [97]], [[119991, 119991], "mapped", [98]], [[119992, 119992], "mapped", [99]], [[119993, 119993], "mapped", [100]], [[119994, 119994], "disallowed"], [[119995, 119995], "mapped", [102]], [[119996, 119996], "disallowed"], [[119997, 119997], "mapped", [104]], [[119998, 119998], "mapped", [105]], [[119999, 119999], "mapped", [106]], [[12e4, 12e4], "mapped", [107]], [[120001, 120001], "mapped", [108]], [[120002, 120002], "mapped", [109]], [[120003, 120003], "mapped", [110]], [[120004, 120004], "disallowed"], [[120005, 120005], "mapped", [112]], [[120006, 120006], "mapped", [113]], [[120007, 120007], "mapped", [114]], [[120008, 120008], "mapped", [115]], [[120009, 120009], "mapped", [116]], [[120010, 120010], "mapped", [117]], [[120011, 120011], "mapped", [118]], [[120012, 120012], "mapped", [119]], [[120013, 120013], "mapped", [120]], [[120014, 120014], "mapped", [121]], [[120015, 120015], "mapped", [122]], [[120016, 120016], "mapped", [97]], [[120017, 120017], "mapped", [98]], [[120018, 120018], "mapped", [99]], [[120019, 120019], "mapped", [100]], [[120020, 120020], "mapped", [101]], [[120021, 120021], "mapped", [102]], [[120022, 120022], "mapped", [103]], [[120023, 120023], "mapped", [104]], [[120024, 120024], "mapped", [105]], [[120025, 120025], "mapped", [106]], [[120026, 120026], "mapped", [107]], [[120027, 120027], "mapped", [108]], [[120028, 120028], "mapped", [109]], [[120029, 120029], "mapped", [110]], [[120030, 120030], "mapped", [111]], [[120031, 120031], "mapped", [112]], [[120032, 120032], "mapped", [113]], [[120033, 120033], "mapped", [114]], [[120034, 120034], "mapped", [115]], [[120035, 120035], "mapped", [116]], [[120036, 120036], "mapped", [117]], [[120037, 120037], "mapped", [118]], [[120038, 120038], "mapped", [119]], [[120039, 120039], "mapped", [120]], [[120040, 120040], "mapped", [121]], [[120041, 120041], "mapped", [122]], [[120042, 120042], "mapped", [97]], [[120043, 120043], "mapped", [98]], [[120044, 120044], "mapped", [99]], [[120045, 120045], "mapped", [100]], [[120046, 120046], "mapped", [101]], [[120047, 120047], "mapped", [102]], [[120048, 120048], "mapped", [103]], [[120049, 120049], "mapped", [104]], [[120050, 120050], "mapped", [105]], [[120051, 120051], "mapped", [106]], [[120052, 120052], "mapped", [107]], [[120053, 120053], "mapped", [108]], [[120054, 120054], "mapped", [109]], [[120055, 120055], "mapped", [110]], [[120056, 120056], "mapped", [111]], [[120057, 120057], "mapped", [112]], [[120058, 120058], "mapped", [113]], [[120059, 120059], "mapped", [114]], [[120060, 120060], "mapped", [115]], [[120061, 120061], "mapped", [116]], [[120062, 120062], "mapped", [117]], [[120063, 120063], "mapped", [118]], [[120064, 120064], "mapped", [119]], [[120065, 120065], "mapped", [120]], [[120066, 120066], "mapped", [121]], [[120067, 120067], "mapped", [122]], [[120068, 120068], "mapped", [97]], [[120069, 120069], "mapped", [98]], [[120070, 120070], "disallowed"], [[120071, 120071], "mapped", [100]], [[120072, 120072], "mapped", [101]], [[120073, 120073], "mapped", [102]], [[120074, 120074], "mapped", [103]], [[120075, 120076], "disallowed"], [[120077, 120077], "mapped", [106]], [[120078, 120078], "mapped", [107]], [[120079, 120079], "mapped", [108]], [[120080, 120080], "mapped", [109]], [[120081, 120081], "mapped", [110]], [[120082, 120082], "mapped", [111]], [[120083, 120083], "mapped", [112]], [[120084, 120084], "mapped", [113]], [[120085, 120085], "disallowed"], [[120086, 120086], "mapped", [115]], [[120087, 120087], "mapped", [116]], [[120088, 120088], "mapped", [117]], [[120089, 120089], "mapped", [118]], [[120090, 120090], "mapped", [119]], [[120091, 120091], "mapped", [120]], [[120092, 120092], "mapped", [121]], [[120093, 120093], "disallowed"], [[120094, 120094], "mapped", [97]], [[120095, 120095], "mapped", [98]], [[120096, 120096], "mapped", [99]], [[120097, 120097], "mapped", [100]], [[120098, 120098], "mapped", [101]], [[120099, 120099], "mapped", [102]], [[120100, 120100], "mapped", [103]], [[120101, 120101], "mapped", [104]], [[120102, 120102], "mapped", [105]], [[120103, 120103], "mapped", [106]], [[120104, 120104], "mapped", [107]], [[120105, 120105], "mapped", [108]], [[120106, 120106], "mapped", [109]], [[120107, 120107], "mapped", [110]], [[120108, 120108], "mapped", [111]], [[120109, 120109], "mapped", [112]], [[120110, 120110], "mapped", [113]], [[120111, 120111], "mapped", [114]], [[120112, 120112], "mapped", [115]], [[120113, 120113], "mapped", [116]], [[120114, 120114], "mapped", [117]], [[120115, 120115], "mapped", [118]], [[120116, 120116], "mapped", [119]], [[120117, 120117], "mapped", [120]], [[120118, 120118], "mapped", [121]], [[120119, 120119], "mapped", [122]], [[120120, 120120], "mapped", [97]], [[120121, 120121], "mapped", [98]], [[120122, 120122], "disallowed"], [[120123, 120123], "mapped", [100]], [[120124, 120124], "mapped", [101]], [[120125, 120125], "mapped", [102]], [[120126, 120126], "mapped", [103]], [[120127, 120127], "disallowed"], [[120128, 120128], "mapped", [105]], [[120129, 120129], "mapped", [106]], [[120130, 120130], "mapped", [107]], [[120131, 120131], "mapped", [108]], [[120132, 120132], "mapped", [109]], [[120133, 120133], "disallowed"], [[120134, 120134], "mapped", [111]], [[120135, 120137], "disallowed"], [[120138, 120138], "mapped", [115]], [[120139, 120139], "mapped", [116]], [[120140, 120140], "mapped", [117]], [[120141, 120141], "mapped", [118]], [[120142, 120142], "mapped", [119]], [[120143, 120143], "mapped", [120]], [[120144, 120144], "mapped", [121]], [[120145, 120145], "disallowed"], [[120146, 120146], "mapped", [97]], [[120147, 120147], "mapped", [98]], [[120148, 120148], "mapped", [99]], [[120149, 120149], "mapped", [100]], [[120150, 120150], "mapped", [101]], [[120151, 120151], "mapped", [102]], [[120152, 120152], "mapped", [103]], [[120153, 120153], "mapped", [104]], [[120154, 120154], "mapped", [105]], [[120155, 120155], "mapped", [106]], [[120156, 120156], "mapped", [107]], [[120157, 120157], "mapped", [108]], [[120158, 120158], "mapped", [109]], [[120159, 120159], "mapped", [110]], [[120160, 120160], "mapped", [111]], [[120161, 120161], "mapped", [112]], [[120162, 120162], "mapped", [113]], [[120163, 120163], "mapped", [114]], [[120164, 120164], "mapped", [115]], [[120165, 120165], "mapped", [116]], [[120166, 120166], "mapped", [117]], [[120167, 120167], "mapped", [118]], [[120168, 120168], "mapped", [119]], [[120169, 120169], "mapped", [120]], [[120170, 120170], "mapped", [121]], [[120171, 120171], "mapped", [122]], [[120172, 120172], "mapped", [97]], [[120173, 120173], "mapped", [98]], [[120174, 120174], "mapped", [99]], [[120175, 120175], "mapped", [100]], [[120176, 120176], "mapped", [101]], [[120177, 120177], "mapped", [102]], [[120178, 120178], "mapped", [103]], [[120179, 120179], "mapped", [104]], [[120180, 120180], "mapped", [105]], [[120181, 120181], "mapped", [106]], [[120182, 120182], "mapped", [107]], [[120183, 120183], "mapped", [108]], [[120184, 120184], "mapped", [109]], [[120185, 120185], "mapped", [110]], [[120186, 120186], "mapped", [111]], [[120187, 120187], "mapped", [112]], [[120188, 120188], "mapped", [113]], [[120189, 120189], "mapped", [114]], [[120190, 120190], "mapped", [115]], [[120191, 120191], "mapped", [116]], [[120192, 120192], "mapped", [117]], [[120193, 120193], "mapped", [118]], [[120194, 120194], "mapped", [119]], [[120195, 120195], "mapped", [120]], [[120196, 120196], "mapped", [121]], [[120197, 120197], "mapped", [122]], [[120198, 120198], "mapped", [97]], [[120199, 120199], "mapped", [98]], [[120200, 120200], "mapped", [99]], [[120201, 120201], "mapped", [100]], [[120202, 120202], "mapped", [101]], [[120203, 120203], "mapped", [102]], [[120204, 120204], "mapped", [103]], [[120205, 120205], "mapped", [104]], [[120206, 120206], "mapped", [105]], [[120207, 120207], "mapped", [106]], [[120208, 120208], "mapped", [107]], [[120209, 120209], "mapped", [108]], [[120210, 120210], "mapped", [109]], [[120211, 120211], "mapped", [110]], [[120212, 120212], "mapped", [111]], [[120213, 120213], "mapped", [112]], [[120214, 120214], "mapped", [113]], [[120215, 120215], "mapped", [114]], [[120216, 120216], "mapped", [115]], [[120217, 120217], "mapped", [116]], [[120218, 120218], "mapped", [117]], [[120219, 120219], "mapped", [118]], [[120220, 120220], "mapped", [119]], [[120221, 120221], "mapped", [120]], [[120222, 120222], "mapped", [121]], [[120223, 120223], "mapped", [122]], [[120224, 120224], "mapped", [97]], [[120225, 120225], "mapped", [98]], [[120226, 120226], "mapped", [99]], [[120227, 120227], "mapped", [100]], [[120228, 120228], "mapped", [101]], [[120229, 120229], "mapped", [102]], [[120230, 120230], "mapped", [103]], [[120231, 120231], "mapped", [104]], [[120232, 120232], "mapped", [105]], [[120233, 120233], "mapped", [106]], [[120234, 120234], "mapped", [107]], [[120235, 120235], "mapped", [108]], [[120236, 120236], "mapped", [109]], [[120237, 120237], "mapped", [110]], [[120238, 120238], "mapped", [111]], [[120239, 120239], "mapped", [112]], [[120240, 120240], "mapped", [113]], [[120241, 120241], "mapped", [114]], [[120242, 120242], "mapped", [115]], [[120243, 120243], "mapped", [116]], [[120244, 120244], "mapped", [117]], [[120245, 120245], "mapped", [118]], [[120246, 120246], "mapped", [119]], [[120247, 120247], "mapped", [120]], [[120248, 120248], "mapped", [121]], [[120249, 120249], "mapped", [122]], [[120250, 120250], "mapped", [97]], [[120251, 120251], "mapped", [98]], [[120252, 120252], "mapped", [99]], [[120253, 120253], "mapped", [100]], [[120254, 120254], "mapped", [101]], [[120255, 120255], "mapped", [102]], [[120256, 120256], "mapped", [103]], [[120257, 120257], "mapped", [104]], [[120258, 120258], "mapped", [105]], [[120259, 120259], "mapped", [106]], [[120260, 120260], "mapped", [107]], [[120261, 120261], "mapped", [108]], [[120262, 120262], "mapped", [109]], [[120263, 120263], "mapped", [110]], [[120264, 120264], "mapped", [111]], [[120265, 120265], "mapped", [112]], [[120266, 120266], "mapped", [113]], [[120267, 120267], "mapped", [114]], [[120268, 120268], "mapped", [115]], [[120269, 120269], "mapped", [116]], [[120270, 120270], "mapped", [117]], [[120271, 120271], "mapped", [118]], [[120272, 120272], "mapped", [119]], [[120273, 120273], "mapped", [120]], [[120274, 120274], "mapped", [121]], [[120275, 120275], "mapped", [122]], [[120276, 120276], "mapped", [97]], [[120277, 120277], "mapped", [98]], [[120278, 120278], "mapped", [99]], [[120279, 120279], "mapped", [100]], [[120280, 120280], "mapped", [101]], [[120281, 120281], "mapped", [102]], [[120282, 120282], "mapped", [103]], [[120283, 120283], "mapped", [104]], [[120284, 120284], "mapped", [105]], [[120285, 120285], "mapped", [106]], [[120286, 120286], "mapped", [107]], [[120287, 120287], "mapped", [108]], [[120288, 120288], "mapped", [109]], [[120289, 120289], "mapped", [110]], [[120290, 120290], "mapped", [111]], [[120291, 120291], "mapped", [112]], [[120292, 120292], "mapped", [113]], [[120293, 120293], "mapped", [114]], [[120294, 120294], "mapped", [115]], [[120295, 120295], "mapped", [116]], [[120296, 120296], "mapped", [117]], [[120297, 120297], "mapped", [118]], [[120298, 120298], "mapped", [119]], [[120299, 120299], "mapped", [120]], [[120300, 120300], "mapped", [121]], [[120301, 120301], "mapped", [122]], [[120302, 120302], "mapped", [97]], [[120303, 120303], "mapped", [98]], [[120304, 120304], "mapped", [99]], [[120305, 120305], "mapped", [100]], [[120306, 120306], "mapped", [101]], [[120307, 120307], "mapped", [102]], [[120308, 120308], "mapped", [103]], [[120309, 120309], "mapped", [104]], [[120310, 120310], "mapped", [105]], [[120311, 120311], "mapped", [106]], [[120312, 120312], "mapped", [107]], [[120313, 120313], "mapped", [108]], [[120314, 120314], "mapped", [109]], [[120315, 120315], "mapped", [110]], [[120316, 120316], "mapped", [111]], [[120317, 120317], "mapped", [112]], [[120318, 120318], "mapped", [113]], [[120319, 120319], "mapped", [114]], [[120320, 120320], "mapped", [115]], [[120321, 120321], "mapped", [116]], [[120322, 120322], "mapped", [117]], [[120323, 120323], "mapped", [118]], [[120324, 120324], "mapped", [119]], [[120325, 120325], "mapped", [120]], [[120326, 120326], "mapped", [121]], [[120327, 120327], "mapped", [122]], [[120328, 120328], "mapped", [97]], [[120329, 120329], "mapped", [98]], [[120330, 120330], "mapped", [99]], [[120331, 120331], "mapped", [100]], [[120332, 120332], "mapped", [101]], [[120333, 120333], "mapped", [102]], [[120334, 120334], "mapped", [103]], [[120335, 120335], "mapped", [104]], [[120336, 120336], "mapped", [105]], [[120337, 120337], "mapped", [106]], [[120338, 120338], "mapped", [107]], [[120339, 120339], "mapped", [108]], [[120340, 120340], "mapped", [109]], [[120341, 120341], "mapped", [110]], [[120342, 120342], "mapped", [111]], [[120343, 120343], "mapped", [112]], [[120344, 120344], "mapped", [113]], [[120345, 120345], "mapped", [114]], [[120346, 120346], "mapped", [115]], [[120347, 120347], "mapped", [116]], [[120348, 120348], "mapped", [117]], [[120349, 120349], "mapped", [118]], [[120350, 120350], "mapped", [119]], [[120351, 120351], "mapped", [120]], [[120352, 120352], "mapped", [121]], [[120353, 120353], "mapped", [122]], [[120354, 120354], "mapped", [97]], [[120355, 120355], "mapped", [98]], [[120356, 120356], "mapped", [99]], [[120357, 120357], "mapped", [100]], [[120358, 120358], "mapped", [101]], [[120359, 120359], "mapped", [102]], [[120360, 120360], "mapped", [103]], [[120361, 120361], "mapped", [104]], [[120362, 120362], "mapped", [105]], [[120363, 120363], "mapped", [106]], [[120364, 120364], "mapped", [107]], [[120365, 120365], "mapped", [108]], [[120366, 120366], "mapped", [109]], [[120367, 120367], "mapped", [110]], [[120368, 120368], "mapped", [111]], [[120369, 120369], "mapped", [112]], [[120370, 120370], "mapped", [113]], [[120371, 120371], "mapped", [114]], [[120372, 120372], "mapped", [115]], [[120373, 120373], "mapped", [116]], [[120374, 120374], "mapped", [117]], [[120375, 120375], "mapped", [118]], [[120376, 120376], "mapped", [119]], [[120377, 120377], "mapped", [120]], [[120378, 120378], "mapped", [121]], [[120379, 120379], "mapped", [122]], [[120380, 120380], "mapped", [97]], [[120381, 120381], "mapped", [98]], [[120382, 120382], "mapped", [99]], [[120383, 120383], "mapped", [100]], [[120384, 120384], "mapped", [101]], [[120385, 120385], "mapped", [102]], [[120386, 120386], "mapped", [103]], [[120387, 120387], "mapped", [104]], [[120388, 120388], "mapped", [105]], [[120389, 120389], "mapped", [106]], [[120390, 120390], "mapped", [107]], [[120391, 120391], "mapped", [108]], [[120392, 120392], "mapped", [109]], [[120393, 120393], "mapped", [110]], [[120394, 120394], "mapped", [111]], [[120395, 120395], "mapped", [112]], [[120396, 120396], "mapped", [113]], [[120397, 120397], "mapped", [114]], [[120398, 120398], "mapped", [115]], [[120399, 120399], "mapped", [116]], [[120400, 120400], "mapped", [117]], [[120401, 120401], "mapped", [118]], [[120402, 120402], "mapped", [119]], [[120403, 120403], "mapped", [120]], [[120404, 120404], "mapped", [121]], [[120405, 120405], "mapped", [122]], [[120406, 120406], "mapped", [97]], [[120407, 120407], "mapped", [98]], [[120408, 120408], "mapped", [99]], [[120409, 120409], "mapped", [100]], [[120410, 120410], "mapped", [101]], [[120411, 120411], "mapped", [102]], [[120412, 120412], "mapped", [103]], [[120413, 120413], "mapped", [104]], [[120414, 120414], "mapped", [105]], [[120415, 120415], "mapped", [106]], [[120416, 120416], "mapped", [107]], [[120417, 120417], "mapped", [108]], [[120418, 120418], "mapped", [109]], [[120419, 120419], "mapped", [110]], [[120420, 120420], "mapped", [111]], [[120421, 120421], "mapped", [112]], [[120422, 120422], "mapped", [113]], [[120423, 120423], "mapped", [114]], [[120424, 120424], "mapped", [115]], [[120425, 120425], "mapped", [116]], [[120426, 120426], "mapped", [117]], [[120427, 120427], "mapped", [118]], [[120428, 120428], "mapped", [119]], [[120429, 120429], "mapped", [120]], [[120430, 120430], "mapped", [121]], [[120431, 120431], "mapped", [122]], [[120432, 120432], "mapped", [97]], [[120433, 120433], "mapped", [98]], [[120434, 120434], "mapped", [99]], [[120435, 120435], "mapped", [100]], [[120436, 120436], "mapped", [101]], [[120437, 120437], "mapped", [102]], [[120438, 120438], "mapped", [103]], [[120439, 120439], "mapped", [104]], [[120440, 120440], "mapped", [105]], [[120441, 120441], "mapped", [106]], [[120442, 120442], "mapped", [107]], [[120443, 120443], "mapped", [108]], [[120444, 120444], "mapped", [109]], [[120445, 120445], "mapped", [110]], [[120446, 120446], "mapped", [111]], [[120447, 120447], "mapped", [112]], [[120448, 120448], "mapped", [113]], [[120449, 120449], "mapped", [114]], [[120450, 120450], "mapped", [115]], [[120451, 120451], "mapped", [116]], [[120452, 120452], "mapped", [117]], [[120453, 120453], "mapped", [118]], [[120454, 120454], "mapped", [119]], [[120455, 120455], "mapped", [120]], [[120456, 120456], "mapped", [121]], [[120457, 120457], "mapped", [122]], [[120458, 120458], "mapped", [97]], [[120459, 120459], "mapped", [98]], [[120460, 120460], "mapped", [99]], [[120461, 120461], "mapped", [100]], [[120462, 120462], "mapped", [101]], [[120463, 120463], "mapped", [102]], [[120464, 120464], "mapped", [103]], [[120465, 120465], "mapped", [104]], [[120466, 120466], "mapped", [105]], [[120467, 120467], "mapped", [106]], [[120468, 120468], "mapped", [107]], [[120469, 120469], "mapped", [108]], [[120470, 120470], "mapped", [109]], [[120471, 120471], "mapped", [110]], [[120472, 120472], "mapped", [111]], [[120473, 120473], "mapped", [112]], [[120474, 120474], "mapped", [113]], [[120475, 120475], "mapped", [114]], [[120476, 120476], "mapped", [115]], [[120477, 120477], "mapped", [116]], [[120478, 120478], "mapped", [117]], [[120479, 120479], "mapped", [118]], [[120480, 120480], "mapped", [119]], [[120481, 120481], "mapped", [120]], [[120482, 120482], "mapped", [121]], [[120483, 120483], "mapped", [122]], [[120484, 120484], "mapped", [305]], [[120485, 120485], "mapped", [567]], [[120486, 120487], "disallowed"], [[120488, 120488], "mapped", [945]], [[120489, 120489], "mapped", [946]], [[120490, 120490], "mapped", [947]], [[120491, 120491], "mapped", [948]], [[120492, 120492], "mapped", [949]], [[120493, 120493], "mapped", [950]], [[120494, 120494], "mapped", [951]], [[120495, 120495], "mapped", [952]], [[120496, 120496], "mapped", [953]], [[120497, 120497], "mapped", [954]], [[120498, 120498], "mapped", [955]], [[120499, 120499], "mapped", [956]], [[120500, 120500], "mapped", [957]], [[120501, 120501], "mapped", [958]], [[120502, 120502], "mapped", [959]], [[120503, 120503], "mapped", [960]], [[120504, 120504], "mapped", [961]], [[120505, 120505], "mapped", [952]], [[120506, 120506], "mapped", [963]], [[120507, 120507], "mapped", [964]], [[120508, 120508], "mapped", [965]], [[120509, 120509], "mapped", [966]], [[120510, 120510], "mapped", [967]], [[120511, 120511], "mapped", [968]], [[120512, 120512], "mapped", [969]], [[120513, 120513], "mapped", [8711]], [[120514, 120514], "mapped", [945]], [[120515, 120515], "mapped", [946]], [[120516, 120516], "mapped", [947]], [[120517, 120517], "mapped", [948]], [[120518, 120518], "mapped", [949]], [[120519, 120519], "mapped", [950]], [[120520, 120520], "mapped", [951]], [[120521, 120521], "mapped", [952]], [[120522, 120522], "mapped", [953]], [[120523, 120523], "mapped", [954]], [[120524, 120524], "mapped", [955]], [[120525, 120525], "mapped", [956]], [[120526, 120526], "mapped", [957]], [[120527, 120527], "mapped", [958]], [[120528, 120528], "mapped", [959]], [[120529, 120529], "mapped", [960]], [[120530, 120530], "mapped", [961]], [[120531, 120532], "mapped", [963]], [[120533, 120533], "mapped", [964]], [[120534, 120534], "mapped", [965]], [[120535, 120535], "mapped", [966]], [[120536, 120536], "mapped", [967]], [[120537, 120537], "mapped", [968]], [[120538, 120538], "mapped", [969]], [[120539, 120539], "mapped", [8706]], [[120540, 120540], "mapped", [949]], [[120541, 120541], "mapped", [952]], [[120542, 120542], "mapped", [954]], [[120543, 120543], "mapped", [966]], [[120544, 120544], "mapped", [961]], [[120545, 120545], "mapped", [960]], [[120546, 120546], "mapped", [945]], [[120547, 120547], "mapped", [946]], [[120548, 120548], "mapped", [947]], [[120549, 120549], "mapped", [948]], [[120550, 120550], "mapped", [949]], [[120551, 120551], "mapped", [950]], [[120552, 120552], "mapped", [951]], [[120553, 120553], "mapped", [952]], [[120554, 120554], "mapped", [953]], [[120555, 120555], "mapped", [954]], [[120556, 120556], "mapped", [955]], [[120557, 120557], "mapped", [956]], [[120558, 120558], "mapped", [957]], [[120559, 120559], "mapped", [958]], [[120560, 120560], "mapped", [959]], [[120561, 120561], "mapped", [960]], [[120562, 120562], "mapped", [961]], [[120563, 120563], "mapped", [952]], [[120564, 120564], "mapped", [963]], [[120565, 120565], "mapped", [964]], [[120566, 120566], "mapped", [965]], [[120567, 120567], "mapped", [966]], [[120568, 120568], "mapped", [967]], [[120569, 120569], "mapped", [968]], [[120570, 120570], "mapped", [969]], [[120571, 120571], "mapped", [8711]], [[120572, 120572], "mapped", [945]], [[120573, 120573], "mapped", [946]], [[120574, 120574], "mapped", [947]], [[120575, 120575], "mapped", [948]], [[120576, 120576], "mapped", [949]], [[120577, 120577], "mapped", [950]], [[120578, 120578], "mapped", [951]], [[120579, 120579], "mapped", [952]], [[120580, 120580], "mapped", [953]], [[120581, 120581], "mapped", [954]], [[120582, 120582], "mapped", [955]], [[120583, 120583], "mapped", [956]], [[120584, 120584], "mapped", [957]], [[120585, 120585], "mapped", [958]], [[120586, 120586], "mapped", [959]], [[120587, 120587], "mapped", [960]], [[120588, 120588], "mapped", [961]], [[120589, 120590], "mapped", [963]], [[120591, 120591], "mapped", [964]], [[120592, 120592], "mapped", [965]], [[120593, 120593], "mapped", [966]], [[120594, 120594], "mapped", [967]], [[120595, 120595], "mapped", [968]], [[120596, 120596], "mapped", [969]], [[120597, 120597], "mapped", [8706]], [[120598, 120598], "mapped", [949]], [[120599, 120599], "mapped", [952]], [[120600, 120600], "mapped", [954]], [[120601, 120601], "mapped", [966]], [[120602, 120602], "mapped", [961]], [[120603, 120603], "mapped", [960]], [[120604, 120604], "mapped", [945]], [[120605, 120605], "mapped", [946]], [[120606, 120606], "mapped", [947]], [[120607, 120607], "mapped", [948]], [[120608, 120608], "mapped", [949]], [[120609, 120609], "mapped", [950]], [[120610, 120610], "mapped", [951]], [[120611, 120611], "mapped", [952]], [[120612, 120612], "mapped", [953]], [[120613, 120613], "mapped", [954]], [[120614, 120614], "mapped", [955]], [[120615, 120615], "mapped", [956]], [[120616, 120616], "mapped", [957]], [[120617, 120617], "mapped", [958]], [[120618, 120618], "mapped", [959]], [[120619, 120619], "mapped", [960]], [[120620, 120620], "mapped", [961]], [[120621, 120621], "mapped", [952]], [[120622, 120622], "mapped", [963]], [[120623, 120623], "mapped", [964]], [[120624, 120624], "mapped", [965]], [[120625, 120625], "mapped", [966]], [[120626, 120626], "mapped", [967]], [[120627, 120627], "mapped", [968]], [[120628, 120628], "mapped", [969]], [[120629, 120629], "mapped", [8711]], [[120630, 120630], "mapped", [945]], [[120631, 120631], "mapped", [946]], [[120632, 120632], "mapped", [947]], [[120633, 120633], "mapped", [948]], [[120634, 120634], "mapped", [949]], [[120635, 120635], "mapped", [950]], [[120636, 120636], "mapped", [951]], [[120637, 120637], "mapped", [952]], [[120638, 120638], "mapped", [953]], [[120639, 120639], "mapped", [954]], [[120640, 120640], "mapped", [955]], [[120641, 120641], "mapped", [956]], [[120642, 120642], "mapped", [957]], [[120643, 120643], "mapped", [958]], [[120644, 120644], "mapped", [959]], [[120645, 120645], "mapped", [960]], [[120646, 120646], "mapped", [961]], [[120647, 120648], "mapped", [963]], [[120649, 120649], "mapped", [964]], [[120650, 120650], "mapped", [965]], [[120651, 120651], "mapped", [966]], [[120652, 120652], "mapped", [967]], [[120653, 120653], "mapped", [968]], [[120654, 120654], "mapped", [969]], [[120655, 120655], "mapped", [8706]], [[120656, 120656], "mapped", [949]], [[120657, 120657], "mapped", [952]], [[120658, 120658], "mapped", [954]], [[120659, 120659], "mapped", [966]], [[120660, 120660], "mapped", [961]], [[120661, 120661], "mapped", [960]], [[120662, 120662], "mapped", [945]], [[120663, 120663], "mapped", [946]], [[120664, 120664], "mapped", [947]], [[120665, 120665], "mapped", [948]], [[120666, 120666], "mapped", [949]], [[120667, 120667], "mapped", [950]], [[120668, 120668], "mapped", [951]], [[120669, 120669], "mapped", [952]], [[120670, 120670], "mapped", [953]], [[120671, 120671], "mapped", [954]], [[120672, 120672], "mapped", [955]], [[120673, 120673], "mapped", [956]], [[120674, 120674], "mapped", [957]], [[120675, 120675], "mapped", [958]], [[120676, 120676], "mapped", [959]], [[120677, 120677], "mapped", [960]], [[120678, 120678], "mapped", [961]], [[120679, 120679], "mapped", [952]], [[120680, 120680], "mapped", [963]], [[120681, 120681], "mapped", [964]], [[120682, 120682], "mapped", [965]], [[120683, 120683], "mapped", [966]], [[120684, 120684], "mapped", [967]], [[120685, 120685], "mapped", [968]], [[120686, 120686], "mapped", [969]], [[120687, 120687], "mapped", [8711]], [[120688, 120688], "mapped", [945]], [[120689, 120689], "mapped", [946]], [[120690, 120690], "mapped", [947]], [[120691, 120691], "mapped", [948]], [[120692, 120692], "mapped", [949]], [[120693, 120693], "mapped", [950]], [[120694, 120694], "mapped", [951]], [[120695, 120695], "mapped", [952]], [[120696, 120696], "mapped", [953]], [[120697, 120697], "mapped", [954]], [[120698, 120698], "mapped", [955]], [[120699, 120699], "mapped", [956]], [[120700, 120700], "mapped", [957]], [[120701, 120701], "mapped", [958]], [[120702, 120702], "mapped", [959]], [[120703, 120703], "mapped", [960]], [[120704, 120704], "mapped", [961]], [[120705, 120706], "mapped", [963]], [[120707, 120707], "mapped", [964]], [[120708, 120708], "mapped", [965]], [[120709, 120709], "mapped", [966]], [[120710, 120710], "mapped", [967]], [[120711, 120711], "mapped", [968]], [[120712, 120712], "mapped", [969]], [[120713, 120713], "mapped", [8706]], [[120714, 120714], "mapped", [949]], [[120715, 120715], "mapped", [952]], [[120716, 120716], "mapped", [954]], [[120717, 120717], "mapped", [966]], [[120718, 120718], "mapped", [961]], [[120719, 120719], "mapped", [960]], [[120720, 120720], "mapped", [945]], [[120721, 120721], "mapped", [946]], [[120722, 120722], "mapped", [947]], [[120723, 120723], "mapped", [948]], [[120724, 120724], "mapped", [949]], [[120725, 120725], "mapped", [950]], [[120726, 120726], "mapped", [951]], [[120727, 120727], "mapped", [952]], [[120728, 120728], "mapped", [953]], [[120729, 120729], "mapped", [954]], [[120730, 120730], "mapped", [955]], [[120731, 120731], "mapped", [956]], [[120732, 120732], "mapped", [957]], [[120733, 120733], "mapped", [958]], [[120734, 120734], "mapped", [959]], [[120735, 120735], "mapped", [960]], [[120736, 120736], "mapped", [961]], [[120737, 120737], "mapped", [952]], [[120738, 120738], "mapped", [963]], [[120739, 120739], "mapped", [964]], [[120740, 120740], "mapped", [965]], [[120741, 120741], "mapped", [966]], [[120742, 120742], "mapped", [967]], [[120743, 120743], "mapped", [968]], [[120744, 120744], "mapped", [969]], [[120745, 120745], "mapped", [8711]], [[120746, 120746], "mapped", [945]], [[120747, 120747], "mapped", [946]], [[120748, 120748], "mapped", [947]], [[120749, 120749], "mapped", [948]], [[120750, 120750], "mapped", [949]], [[120751, 120751], "mapped", [950]], [[120752, 120752], "mapped", [951]], [[120753, 120753], "mapped", [952]], [[120754, 120754], "mapped", [953]], [[120755, 120755], "mapped", [954]], [[120756, 120756], "mapped", [955]], [[120757, 120757], "mapped", [956]], [[120758, 120758], "mapped", [957]], [[120759, 120759], "mapped", [958]], [[120760, 120760], "mapped", [959]], [[120761, 120761], "mapped", [960]], [[120762, 120762], "mapped", [961]], [[120763, 120764], "mapped", [963]], [[120765, 120765], "mapped", [964]], [[120766, 120766], "mapped", [965]], [[120767, 120767], "mapped", [966]], [[120768, 120768], "mapped", [967]], [[120769, 120769], "mapped", [968]], [[120770, 120770], "mapped", [969]], [[120771, 120771], "mapped", [8706]], [[120772, 120772], "mapped", [949]], [[120773, 120773], "mapped", [952]], [[120774, 120774], "mapped", [954]], [[120775, 120775], "mapped", [966]], [[120776, 120776], "mapped", [961]], [[120777, 120777], "mapped", [960]], [[120778, 120779], "mapped", [989]], [[120780, 120781], "disallowed"], [[120782, 120782], "mapped", [48]], [[120783, 120783], "mapped", [49]], [[120784, 120784], "mapped", [50]], [[120785, 120785], "mapped", [51]], [[120786, 120786], "mapped", [52]], [[120787, 120787], "mapped", [53]], [[120788, 120788], "mapped", [54]], [[120789, 120789], "mapped", [55]], [[120790, 120790], "mapped", [56]], [[120791, 120791], "mapped", [57]], [[120792, 120792], "mapped", [48]], [[120793, 120793], "mapped", [49]], [[120794, 120794], "mapped", [50]], [[120795, 120795], "mapped", [51]], [[120796, 120796], "mapped", [52]], [[120797, 120797], "mapped", [53]], [[120798, 120798], "mapped", [54]], [[120799, 120799], "mapped", [55]], [[120800, 120800], "mapped", [56]], [[120801, 120801], "mapped", [57]], [[120802, 120802], "mapped", [48]], [[120803, 120803], "mapped", [49]], [[120804, 120804], "mapped", [50]], [[120805, 120805], "mapped", [51]], [[120806, 120806], "mapped", [52]], [[120807, 120807], "mapped", [53]], [[120808, 120808], "mapped", [54]], [[120809, 120809], "mapped", [55]], [[120810, 120810], "mapped", [56]], [[120811, 120811], "mapped", [57]], [[120812, 120812], "mapped", [48]], [[120813, 120813], "mapped", [49]], [[120814, 120814], "mapped", [50]], [[120815, 120815], "mapped", [51]], [[120816, 120816], "mapped", [52]], [[120817, 120817], "mapped", [53]], [[120818, 120818], "mapped", [54]], [[120819, 120819], "mapped", [55]], [[120820, 120820], "mapped", [56]], [[120821, 120821], "mapped", [57]], [[120822, 120822], "mapped", [48]], [[120823, 120823], "mapped", [49]], [[120824, 120824], "mapped", [50]], [[120825, 120825], "mapped", [51]], [[120826, 120826], "mapped", [52]], [[120827, 120827], "mapped", [53]], [[120828, 120828], "mapped", [54]], [[120829, 120829], "mapped", [55]], [[120830, 120830], "mapped", [56]], [[120831, 120831], "mapped", [57]], [[120832, 121343], "valid", [], "NV8"], [[121344, 121398], "valid"], [[121399, 121402], "valid", [], "NV8"], [[121403, 121452], "valid"], [[121453, 121460], "valid", [], "NV8"], [[121461, 121461], "valid"], [[121462, 121475], "valid", [], "NV8"], [[121476, 121476], "valid"], [[121477, 121483], "valid", [], "NV8"], [[121484, 121498], "disallowed"], [[121499, 121503], "valid"], [[121504, 121504], "disallowed"], [[121505, 121519], "valid"], [[121520, 124927], "disallowed"], [[124928, 125124], "valid"], [[125125, 125126], "disallowed"], [[125127, 125135], "valid", [], "NV8"], [[125136, 125142], "valid"], [[125143, 126463], "disallowed"], [[126464, 126464], "mapped", [1575]], [[126465, 126465], "mapped", [1576]], [[126466, 126466], "mapped", [1580]], [[126467, 126467], "mapped", [1583]], [[126468, 126468], "disallowed"], [[126469, 126469], "mapped", [1608]], [[126470, 126470], "mapped", [1586]], [[126471, 126471], "mapped", [1581]], [[126472, 126472], "mapped", [1591]], [[126473, 126473], "mapped", [1610]], [[126474, 126474], "mapped", [1603]], [[126475, 126475], "mapped", [1604]], [[126476, 126476], "mapped", [1605]], [[126477, 126477], "mapped", [1606]], [[126478, 126478], "mapped", [1587]], [[126479, 126479], "mapped", [1593]], [[126480, 126480], "mapped", [1601]], [[126481, 126481], "mapped", [1589]], [[126482, 126482], "mapped", [1602]], [[126483, 126483], "mapped", [1585]], [[126484, 126484], "mapped", [1588]], [[126485, 126485], "mapped", [1578]], [[126486, 126486], "mapped", [1579]], [[126487, 126487], "mapped", [1582]], [[126488, 126488], "mapped", [1584]], [[126489, 126489], "mapped", [1590]], [[126490, 126490], "mapped", [1592]], [[126491, 126491], "mapped", [1594]], [[126492, 126492], "mapped", [1646]], [[126493, 126493], "mapped", [1722]], [[126494, 126494], "mapped", [1697]], [[126495, 126495], "mapped", [1647]], [[126496, 126496], "disallowed"], [[126497, 126497], "mapped", [1576]], [[126498, 126498], "mapped", [1580]], [[126499, 126499], "disallowed"], [[126500, 126500], "mapped", [1607]], [[126501, 126502], "disallowed"], [[126503, 126503], "mapped", [1581]], [[126504, 126504], "disallowed"], [[126505, 126505], "mapped", [1610]], [[126506, 126506], "mapped", [1603]], [[126507, 126507], "mapped", [1604]], [[126508, 126508], "mapped", [1605]], [[126509, 126509], "mapped", [1606]], [[126510, 126510], "mapped", [1587]], [[126511, 126511], "mapped", [1593]], [[126512, 126512], "mapped", [1601]], [[126513, 126513], "mapped", [1589]], [[126514, 126514], "mapped", [1602]], [[126515, 126515], "disallowed"], [[126516, 126516], "mapped", [1588]], [[126517, 126517], "mapped", [1578]], [[126518, 126518], "mapped", [1579]], [[126519, 126519], "mapped", [1582]], [[126520, 126520], "disallowed"], [[126521, 126521], "mapped", [1590]], [[126522, 126522], "disallowed"], [[126523, 126523], "mapped", [1594]], [[126524, 126529], "disallowed"], [[126530, 126530], "mapped", [1580]], [[126531, 126534], "disallowed"], [[126535, 126535], "mapped", [1581]], [[126536, 126536], "disallowed"], [[126537, 126537], "mapped", [1610]], [[126538, 126538], "disallowed"], [[126539, 126539], "mapped", [1604]], [[126540, 126540], "disallowed"], [[126541, 126541], "mapped", [1606]], [[126542, 126542], "mapped", [1587]], [[126543, 126543], "mapped", [1593]], [[126544, 126544], "disallowed"], [[126545, 126545], "mapped", [1589]], [[126546, 126546], "mapped", [1602]], [[126547, 126547], "disallowed"], [[126548, 126548], "mapped", [1588]], [[126549, 126550], "disallowed"], [[126551, 126551], "mapped", [1582]], [[126552, 126552], "disallowed"], [[126553, 126553], "mapped", [1590]], [[126554, 126554], "disallowed"], [[126555, 126555], "mapped", [1594]], [[126556, 126556], "disallowed"], [[126557, 126557], "mapped", [1722]], [[126558, 126558], "disallowed"], [[126559, 126559], "mapped", [1647]], [[126560, 126560], "disallowed"], [[126561, 126561], "mapped", [1576]], [[126562, 126562], "mapped", [1580]], [[126563, 126563], "disallowed"], [[126564, 126564], "mapped", [1607]], [[126565, 126566], "disallowed"], [[126567, 126567], "mapped", [1581]], [[126568, 126568], "mapped", [1591]], [[126569, 126569], "mapped", [1610]], [[126570, 126570], "mapped", [1603]], [[126571, 126571], "disallowed"], [[126572, 126572], "mapped", [1605]], [[126573, 126573], "mapped", [1606]], [[126574, 126574], "mapped", [1587]], [[126575, 126575], "mapped", [1593]], [[126576, 126576], "mapped", [1601]], [[126577, 126577], "mapped", [1589]], [[126578, 126578], "mapped", [1602]], [[126579, 126579], "disallowed"], [[126580, 126580], "mapped", [1588]], [[126581, 126581], "mapped", [1578]], [[126582, 126582], "mapped", [1579]], [[126583, 126583], "mapped", [1582]], [[126584, 126584], "disallowed"], [[126585, 126585], "mapped", [1590]], [[126586, 126586], "mapped", [1592]], [[126587, 126587], "mapped", [1594]], [[126588, 126588], "mapped", [1646]], [[126589, 126589], "disallowed"], [[126590, 126590], "mapped", [1697]], [[126591, 126591], "disallowed"], [[126592, 126592], "mapped", [1575]], [[126593, 126593], "mapped", [1576]], [[126594, 126594], "mapped", [1580]], [[126595, 126595], "mapped", [1583]], [[126596, 126596], "mapped", [1607]], [[126597, 126597], "mapped", [1608]], [[126598, 126598], "mapped", [1586]], [[126599, 126599], "mapped", [1581]], [[126600, 126600], "mapped", [1591]], [[126601, 126601], "mapped", [1610]], [[126602, 126602], "disallowed"], [[126603, 126603], "mapped", [1604]], [[126604, 126604], "mapped", [1605]], [[126605, 126605], "mapped", [1606]], [[126606, 126606], "mapped", [1587]], [[126607, 126607], "mapped", [1593]], [[126608, 126608], "mapped", [1601]], [[126609, 126609], "mapped", [1589]], [[126610, 126610], "mapped", [1602]], [[126611, 126611], "mapped", [1585]], [[126612, 126612], "mapped", [1588]], [[126613, 126613], "mapped", [1578]], [[126614, 126614], "mapped", [1579]], [[126615, 126615], "mapped", [1582]], [[126616, 126616], "mapped", [1584]], [[126617, 126617], "mapped", [1590]], [[126618, 126618], "mapped", [1592]], [[126619, 126619], "mapped", [1594]], [[126620, 126624], "disallowed"], [[126625, 126625], "mapped", [1576]], [[126626, 126626], "mapped", [1580]], [[126627, 126627], "mapped", [1583]], [[126628, 126628], "disallowed"], [[126629, 126629], "mapped", [1608]], [[126630, 126630], "mapped", [1586]], [[126631, 126631], "mapped", [1581]], [[126632, 126632], "mapped", [1591]], [[126633, 126633], "mapped", [1610]], [[126634, 126634], "disallowed"], [[126635, 126635], "mapped", [1604]], [[126636, 126636], "mapped", [1605]], [[126637, 126637], "mapped", [1606]], [[126638, 126638], "mapped", [1587]], [[126639, 126639], "mapped", [1593]], [[126640, 126640], "mapped", [1601]], [[126641, 126641], "mapped", [1589]], [[126642, 126642], "mapped", [1602]], [[126643, 126643], "mapped", [1585]], [[126644, 126644], "mapped", [1588]], [[126645, 126645], "mapped", [1578]], [[126646, 126646], "mapped", [1579]], [[126647, 126647], "mapped", [1582]], [[126648, 126648], "mapped", [1584]], [[126649, 126649], "mapped", [1590]], [[126650, 126650], "mapped", [1592]], [[126651, 126651], "mapped", [1594]], [[126652, 126703], "disallowed"], [[126704, 126705], "valid", [], "NV8"], [[126706, 126975], "disallowed"], [[126976, 127019], "valid", [], "NV8"], [[127020, 127023], "disallowed"], [[127024, 127123], "valid", [], "NV8"], [[127124, 127135], "disallowed"], [[127136, 127150], "valid", [], "NV8"], [[127151, 127152], "disallowed"], [[127153, 127166], "valid", [], "NV8"], [[127167, 127167], "valid", [], "NV8"], [[127168, 127168], "disallowed"], [[127169, 127183], "valid", [], "NV8"], [[127184, 127184], "disallowed"], [[127185, 127199], "valid", [], "NV8"], [[127200, 127221], "valid", [], "NV8"], [[127222, 127231], "disallowed"], [[127232, 127232], "disallowed"], [[127233, 127233], "disallowed_STD3_mapped", [48, 44]], [[127234, 127234], "disallowed_STD3_mapped", [49, 44]], [[127235, 127235], "disallowed_STD3_mapped", [50, 44]], [[127236, 127236], "disallowed_STD3_mapped", [51, 44]], [[127237, 127237], "disallowed_STD3_mapped", [52, 44]], [[127238, 127238], "disallowed_STD3_mapped", [53, 44]], [[127239, 127239], "disallowed_STD3_mapped", [54, 44]], [[127240, 127240], "disallowed_STD3_mapped", [55, 44]], [[127241, 127241], "disallowed_STD3_mapped", [56, 44]], [[127242, 127242], "disallowed_STD3_mapped", [57, 44]], [[127243, 127244], "valid", [], "NV8"], [[127245, 127247], "disallowed"], [[127248, 127248], "disallowed_STD3_mapped", [40, 97, 41]], [[127249, 127249], "disallowed_STD3_mapped", [40, 98, 41]], [[127250, 127250], "disallowed_STD3_mapped", [40, 99, 41]], [[127251, 127251], "disallowed_STD3_mapped", [40, 100, 41]], [[127252, 127252], "disallowed_STD3_mapped", [40, 101, 41]], [[127253, 127253], "disallowed_STD3_mapped", [40, 102, 41]], [[127254, 127254], "disallowed_STD3_mapped", [40, 103, 41]], [[127255, 127255], "disallowed_STD3_mapped", [40, 104, 41]], [[127256, 127256], "disallowed_STD3_mapped", [40, 105, 41]], [[127257, 127257], "disallowed_STD3_mapped", [40, 106, 41]], [[127258, 127258], "disallowed_STD3_mapped", [40, 107, 41]], [[127259, 127259], "disallowed_STD3_mapped", [40, 108, 41]], [[127260, 127260], "disallowed_STD3_mapped", [40, 109, 41]], [[127261, 127261], "disallowed_STD3_mapped", [40, 110, 41]], [[127262, 127262], "disallowed_STD3_mapped", [40, 111, 41]], [[127263, 127263], "disallowed_STD3_mapped", [40, 112, 41]], [[127264, 127264], "disallowed_STD3_mapped", [40, 113, 41]], [[127265, 127265], "disallowed_STD3_mapped", [40, 114, 41]], [[127266, 127266], "disallowed_STD3_mapped", [40, 115, 41]], [[127267, 127267], "disallowed_STD3_mapped", [40, 116, 41]], [[127268, 127268], "disallowed_STD3_mapped", [40, 117, 41]], [[127269, 127269], "disallowed_STD3_mapped", [40, 118, 41]], [[127270, 127270], "disallowed_STD3_mapped", [40, 119, 41]], [[127271, 127271], "disallowed_STD3_mapped", [40, 120, 41]], [[127272, 127272], "disallowed_STD3_mapped", [40, 121, 41]], [[127273, 127273], "disallowed_STD3_mapped", [40, 122, 41]], [[127274, 127274], "mapped", [12308, 115, 12309]], [[127275, 127275], "mapped", [99]], [[127276, 127276], "mapped", [114]], [[127277, 127277], "mapped", [99, 100]], [[127278, 127278], "mapped", [119, 122]], [[127279, 127279], "disallowed"], [[127280, 127280], "mapped", [97]], [[127281, 127281], "mapped", [98]], [[127282, 127282], "mapped", [99]], [[127283, 127283], "mapped", [100]], [[127284, 127284], "mapped", [101]], [[127285, 127285], "mapped", [102]], [[127286, 127286], "mapped", [103]], [[127287, 127287], "mapped", [104]], [[127288, 127288], "mapped", [105]], [[127289, 127289], "mapped", [106]], [[127290, 127290], "mapped", [107]], [[127291, 127291], "mapped", [108]], [[127292, 127292], "mapped", [109]], [[127293, 127293], "mapped", [110]], [[127294, 127294], "mapped", [111]], [[127295, 127295], "mapped", [112]], [[127296, 127296], "mapped", [113]], [[127297, 127297], "mapped", [114]], [[127298, 127298], "mapped", [115]], [[127299, 127299], "mapped", [116]], [[127300, 127300], "mapped", [117]], [[127301, 127301], "mapped", [118]], [[127302, 127302], "mapped", [119]], [[127303, 127303], "mapped", [120]], [[127304, 127304], "mapped", [121]], [[127305, 127305], "mapped", [122]], [[127306, 127306], "mapped", [104, 118]], [[127307, 127307], "mapped", [109, 118]], [[127308, 127308], "mapped", [115, 100]], [[127309, 127309], "mapped", [115, 115]], [[127310, 127310], "mapped", [112, 112, 118]], [[127311, 127311], "mapped", [119, 99]], [[127312, 127318], "valid", [], "NV8"], [[127319, 127319], "valid", [], "NV8"], [[127320, 127326], "valid", [], "NV8"], [[127327, 127327], "valid", [], "NV8"], [[127328, 127337], "valid", [], "NV8"], [[127338, 127338], "mapped", [109, 99]], [[127339, 127339], "mapped", [109, 100]], [[127340, 127343], "disallowed"], [[127344, 127352], "valid", [], "NV8"], [[127353, 127353], "valid", [], "NV8"], [[127354, 127354], "valid", [], "NV8"], [[127355, 127356], "valid", [], "NV8"], [[127357, 127358], "valid", [], "NV8"], [[127359, 127359], "valid", [], "NV8"], [[127360, 127369], "valid", [], "NV8"], [[127370, 127373], "valid", [], "NV8"], [[127374, 127375], "valid", [], "NV8"], [[127376, 127376], "mapped", [100, 106]], [[127377, 127386], "valid", [], "NV8"], [[127387, 127461], "disallowed"], [[127462, 127487], "valid", [], "NV8"], [[127488, 127488], "mapped", [12411, 12363]], [[127489, 127489], "mapped", [12467, 12467]], [[127490, 127490], "mapped", [12469]], [[127491, 127503], "disallowed"], [[127504, 127504], "mapped", [25163]], [[127505, 127505], "mapped", [23383]], [[127506, 127506], "mapped", [21452]], [[127507, 127507], "mapped", [12487]], [[127508, 127508], "mapped", [20108]], [[127509, 127509], "mapped", [22810]], [[127510, 127510], "mapped", [35299]], [[127511, 127511], "mapped", [22825]], [[127512, 127512], "mapped", [20132]], [[127513, 127513], "mapped", [26144]], [[127514, 127514], "mapped", [28961]], [[127515, 127515], "mapped", [26009]], [[127516, 127516], "mapped", [21069]], [[127517, 127517], "mapped", [24460]], [[127518, 127518], "mapped", [20877]], [[127519, 127519], "mapped", [26032]], [[127520, 127520], "mapped", [21021]], [[127521, 127521], "mapped", [32066]], [[127522, 127522], "mapped", [29983]], [[127523, 127523], "mapped", [36009]], [[127524, 127524], "mapped", [22768]], [[127525, 127525], "mapped", [21561]], [[127526, 127526], "mapped", [28436]], [[127527, 127527], "mapped", [25237]], [[127528, 127528], "mapped", [25429]], [[127529, 127529], "mapped", [19968]], [[127530, 127530], "mapped", [19977]], [[127531, 127531], "mapped", [36938]], [[127532, 127532], "mapped", [24038]], [[127533, 127533], "mapped", [20013]], [[127534, 127534], "mapped", [21491]], [[127535, 127535], "mapped", [25351]], [[127536, 127536], "mapped", [36208]], [[127537, 127537], "mapped", [25171]], [[127538, 127538], "mapped", [31105]], [[127539, 127539], "mapped", [31354]], [[127540, 127540], "mapped", [21512]], [[127541, 127541], "mapped", [28288]], [[127542, 127542], "mapped", [26377]], [[127543, 127543], "mapped", [26376]], [[127544, 127544], "mapped", [30003]], [[127545, 127545], "mapped", [21106]], [[127546, 127546], "mapped", [21942]], [[127547, 127551], "disallowed"], [[127552, 127552], "mapped", [12308, 26412, 12309]], [[127553, 127553], "mapped", [12308, 19977, 12309]], [[127554, 127554], "mapped", [12308, 20108, 12309]], [[127555, 127555], "mapped", [12308, 23433, 12309]], [[127556, 127556], "mapped", [12308, 28857, 12309]], [[127557, 127557], "mapped", [12308, 25171, 12309]], [[127558, 127558], "mapped", [12308, 30423, 12309]], [[127559, 127559], "mapped", [12308, 21213, 12309]], [[127560, 127560], "mapped", [12308, 25943, 12309]], [[127561, 127567], "disallowed"], [[127568, 127568], "mapped", [24471]], [[127569, 127569], "mapped", [21487]], [[127570, 127743], "disallowed"], [[127744, 127776], "valid", [], "NV8"], [[127777, 127788], "valid", [], "NV8"], [[127789, 127791], "valid", [], "NV8"], [[127792, 127797], "valid", [], "NV8"], [[127798, 127798], "valid", [], "NV8"], [[127799, 127868], "valid", [], "NV8"], [[127869, 127869], "valid", [], "NV8"], [[127870, 127871], "valid", [], "NV8"], [[127872, 127891], "valid", [], "NV8"], [[127892, 127903], "valid", [], "NV8"], [[127904, 127940], "valid", [], "NV8"], [[127941, 127941], "valid", [], "NV8"], [[127942, 127946], "valid", [], "NV8"], [[127947, 127950], "valid", [], "NV8"], [[127951, 127955], "valid", [], "NV8"], [[127956, 127967], "valid", [], "NV8"], [[127968, 127984], "valid", [], "NV8"], [[127985, 127991], "valid", [], "NV8"], [[127992, 127999], "valid", [], "NV8"], [[128e3, 128062], "valid", [], "NV8"], [[128063, 128063], "valid", [], "NV8"], [[128064, 128064], "valid", [], "NV8"], [[128065, 128065], "valid", [], "NV8"], [[128066, 128247], "valid", [], "NV8"], [[128248, 128248], "valid", [], "NV8"], [[128249, 128252], "valid", [], "NV8"], [[128253, 128254], "valid", [], "NV8"], [[128255, 128255], "valid", [], "NV8"], [[128256, 128317], "valid", [], "NV8"], [[128318, 128319], "valid", [], "NV8"], [[128320, 128323], "valid", [], "NV8"], [[128324, 128330], "valid", [], "NV8"], [[128331, 128335], "valid", [], "NV8"], [[128336, 128359], "valid", [], "NV8"], [[128360, 128377], "valid", [], "NV8"], [[128378, 128378], "disallowed"], [[128379, 128419], "valid", [], "NV8"], [[128420, 128420], "disallowed"], [[128421, 128506], "valid", [], "NV8"], [[128507, 128511], "valid", [], "NV8"], [[128512, 128512], "valid", [], "NV8"], [[128513, 128528], "valid", [], "NV8"], [[128529, 128529], "valid", [], "NV8"], [[128530, 128532], "valid", [], "NV8"], [[128533, 128533], "valid", [], "NV8"], [[128534, 128534], "valid", [], "NV8"], [[128535, 128535], "valid", [], "NV8"], [[128536, 128536], "valid", [], "NV8"], [[128537, 128537], "valid", [], "NV8"], [[128538, 128538], "valid", [], "NV8"], [[128539, 128539], "valid", [], "NV8"], [[128540, 128542], "valid", [], "NV8"], [[128543, 128543], "valid", [], "NV8"], [[128544, 128549], "valid", [], "NV8"], [[128550, 128551], "valid", [], "NV8"], [[128552, 128555], "valid", [], "NV8"], [[128556, 128556], "valid", [], "NV8"], [[128557, 128557], "valid", [], "NV8"], [[128558, 128559], "valid", [], "NV8"], [[128560, 128563], "valid", [], "NV8"], [[128564, 128564], "valid", [], "NV8"], [[128565, 128576], "valid", [], "NV8"], [[128577, 128578], "valid", [], "NV8"], [[128579, 128580], "valid", [], "NV8"], [[128581, 128591], "valid", [], "NV8"], [[128592, 128639], "valid", [], "NV8"], [[128640, 128709], "valid", [], "NV8"], [[128710, 128719], "valid", [], "NV8"], [[128720, 128720], "valid", [], "NV8"], [[128721, 128735], "disallowed"], [[128736, 128748], "valid", [], "NV8"], [[128749, 128751], "disallowed"], [[128752, 128755], "valid", [], "NV8"], [[128756, 128767], "disallowed"], [[128768, 128883], "valid", [], "NV8"], [[128884, 128895], "disallowed"], [[128896, 128980], "valid", [], "NV8"], [[128981, 129023], "disallowed"], [[129024, 129035], "valid", [], "NV8"], [[129036, 129039], "disallowed"], [[129040, 129095], "valid", [], "NV8"], [[129096, 129103], "disallowed"], [[129104, 129113], "valid", [], "NV8"], [[129114, 129119], "disallowed"], [[129120, 129159], "valid", [], "NV8"], [[129160, 129167], "disallowed"], [[129168, 129197], "valid", [], "NV8"], [[129198, 129295], "disallowed"], [[129296, 129304], "valid", [], "NV8"], [[129305, 129407], "disallowed"], [[129408, 129412], "valid", [], "NV8"], [[129413, 129471], "disallowed"], [[129472, 129472], "valid", [], "NV8"], [[129473, 131069], "disallowed"], [[131070, 131071], "disallowed"], [[131072, 173782], "valid"], [[173783, 173823], "disallowed"], [[173824, 177972], "valid"], [[177973, 177983], "disallowed"], [[177984, 178205], "valid"], [[178206, 178207], "disallowed"], [[178208, 183969], "valid"], [[183970, 194559], "disallowed"], [[194560, 194560], "mapped", [20029]], [[194561, 194561], "mapped", [20024]], [[194562, 194562], "mapped", [20033]], [[194563, 194563], "mapped", [131362]], [[194564, 194564], "mapped", [20320]], [[194565, 194565], "mapped", [20398]], [[194566, 194566], "mapped", [20411]], [[194567, 194567], "mapped", [20482]], [[194568, 194568], "mapped", [20602]], [[194569, 194569], "mapped", [20633]], [[194570, 194570], "mapped", [20711]], [[194571, 194571], "mapped", [20687]], [[194572, 194572], "mapped", [13470]], [[194573, 194573], "mapped", [132666]], [[194574, 194574], "mapped", [20813]], [[194575, 194575], "mapped", [20820]], [[194576, 194576], "mapped", [20836]], [[194577, 194577], "mapped", [20855]], [[194578, 194578], "mapped", [132380]], [[194579, 194579], "mapped", [13497]], [[194580, 194580], "mapped", [20839]], [[194581, 194581], "mapped", [20877]], [[194582, 194582], "mapped", [132427]], [[194583, 194583], "mapped", [20887]], [[194584, 194584], "mapped", [20900]], [[194585, 194585], "mapped", [20172]], [[194586, 194586], "mapped", [20908]], [[194587, 194587], "mapped", [20917]], [[194588, 194588], "mapped", [168415]], [[194589, 194589], "mapped", [20981]], [[194590, 194590], "mapped", [20995]], [[194591, 194591], "mapped", [13535]], [[194592, 194592], "mapped", [21051]], [[194593, 194593], "mapped", [21062]], [[194594, 194594], "mapped", [21106]], [[194595, 194595], "mapped", [21111]], [[194596, 194596], "mapped", [13589]], [[194597, 194597], "mapped", [21191]], [[194598, 194598], "mapped", [21193]], [[194599, 194599], "mapped", [21220]], [[194600, 194600], "mapped", [21242]], [[194601, 194601], "mapped", [21253]], [[194602, 194602], "mapped", [21254]], [[194603, 194603], "mapped", [21271]], [[194604, 194604], "mapped", [21321]], [[194605, 194605], "mapped", [21329]], [[194606, 194606], "mapped", [21338]], [[194607, 194607], "mapped", [21363]], [[194608, 194608], "mapped", [21373]], [[194609, 194611], "mapped", [21375]], [[194612, 194612], "mapped", [133676]], [[194613, 194613], "mapped", [28784]], [[194614, 194614], "mapped", [21450]], [[194615, 194615], "mapped", [21471]], [[194616, 194616], "mapped", [133987]], [[194617, 194617], "mapped", [21483]], [[194618, 194618], "mapped", [21489]], [[194619, 194619], "mapped", [21510]], [[194620, 194620], "mapped", [21662]], [[194621, 194621], "mapped", [21560]], [[194622, 194622], "mapped", [21576]], [[194623, 194623], "mapped", [21608]], [[194624, 194624], "mapped", [21666]], [[194625, 194625], "mapped", [21750]], [[194626, 194626], "mapped", [21776]], [[194627, 194627], "mapped", [21843]], [[194628, 194628], "mapped", [21859]], [[194629, 194630], "mapped", [21892]], [[194631, 194631], "mapped", [21913]], [[194632, 194632], "mapped", [21931]], [[194633, 194633], "mapped", [21939]], [[194634, 194634], "mapped", [21954]], [[194635, 194635], "mapped", [22294]], [[194636, 194636], "mapped", [22022]], [[194637, 194637], "mapped", [22295]], [[194638, 194638], "mapped", [22097]], [[194639, 194639], "mapped", [22132]], [[194640, 194640], "mapped", [20999]], [[194641, 194641], "mapped", [22766]], [[194642, 194642], "mapped", [22478]], [[194643, 194643], "mapped", [22516]], [[194644, 194644], "mapped", [22541]], [[194645, 194645], "mapped", [22411]], [[194646, 194646], "mapped", [22578]], [[194647, 194647], "mapped", [22577]], [[194648, 194648], "mapped", [22700]], [[194649, 194649], "mapped", [136420]], [[194650, 194650], "mapped", [22770]], [[194651, 194651], "mapped", [22775]], [[194652, 194652], "mapped", [22790]], [[194653, 194653], "mapped", [22810]], [[194654, 194654], "mapped", [22818]], [[194655, 194655], "mapped", [22882]], [[194656, 194656], "mapped", [136872]], [[194657, 194657], "mapped", [136938]], [[194658, 194658], "mapped", [23020]], [[194659, 194659], "mapped", [23067]], [[194660, 194660], "mapped", [23079]], [[194661, 194661], "mapped", [23e3]], [[194662, 194662], "mapped", [23142]], [[194663, 194663], "mapped", [14062]], [[194664, 194664], "disallowed"], [[194665, 194665], "mapped", [23304]], [[194666, 194667], "mapped", [23358]], [[194668, 194668], "mapped", [137672]], [[194669, 194669], "mapped", [23491]], [[194670, 194670], "mapped", [23512]], [[194671, 194671], "mapped", [23527]], [[194672, 194672], "mapped", [23539]], [[194673, 194673], "mapped", [138008]], [[194674, 194674], "mapped", [23551]], [[194675, 194675], "mapped", [23558]], [[194676, 194676], "disallowed"], [[194677, 194677], "mapped", [23586]], [[194678, 194678], "mapped", [14209]], [[194679, 194679], "mapped", [23648]], [[194680, 194680], "mapped", [23662]], [[194681, 194681], "mapped", [23744]], [[194682, 194682], "mapped", [23693]], [[194683, 194683], "mapped", [138724]], [[194684, 194684], "mapped", [23875]], [[194685, 194685], "mapped", [138726]], [[194686, 194686], "mapped", [23918]], [[194687, 194687], "mapped", [23915]], [[194688, 194688], "mapped", [23932]], [[194689, 194689], "mapped", [24033]], [[194690, 194690], "mapped", [24034]], [[194691, 194691], "mapped", [14383]], [[194692, 194692], "mapped", [24061]], [[194693, 194693], "mapped", [24104]], [[194694, 194694], "mapped", [24125]], [[194695, 194695], "mapped", [24169]], [[194696, 194696], "mapped", [14434]], [[194697, 194697], "mapped", [139651]], [[194698, 194698], "mapped", [14460]], [[194699, 194699], "mapped", [24240]], [[194700, 194700], "mapped", [24243]], [[194701, 194701], "mapped", [24246]], [[194702, 194702], "mapped", [24266]], [[194703, 194703], "mapped", [172946]], [[194704, 194704], "mapped", [24318]], [[194705, 194706], "mapped", [140081]], [[194707, 194707], "mapped", [33281]], [[194708, 194709], "mapped", [24354]], [[194710, 194710], "mapped", [14535]], [[194711, 194711], "mapped", [144056]], [[194712, 194712], "mapped", [156122]], [[194713, 194713], "mapped", [24418]], [[194714, 194714], "mapped", [24427]], [[194715, 194715], "mapped", [14563]], [[194716, 194716], "mapped", [24474]], [[194717, 194717], "mapped", [24525]], [[194718, 194718], "mapped", [24535]], [[194719, 194719], "mapped", [24569]], [[194720, 194720], "mapped", [24705]], [[194721, 194721], "mapped", [14650]], [[194722, 194722], "mapped", [14620]], [[194723, 194723], "mapped", [24724]], [[194724, 194724], "mapped", [141012]], [[194725, 194725], "mapped", [24775]], [[194726, 194726], "mapped", [24904]], [[194727, 194727], "mapped", [24908]], [[194728, 194728], "mapped", [24910]], [[194729, 194729], "mapped", [24908]], [[194730, 194730], "mapped", [24954]], [[194731, 194731], "mapped", [24974]], [[194732, 194732], "mapped", [25010]], [[194733, 194733], "mapped", [24996]], [[194734, 194734], "mapped", [25007]], [[194735, 194735], "mapped", [25054]], [[194736, 194736], "mapped", [25074]], [[194737, 194737], "mapped", [25078]], [[194738, 194738], "mapped", [25104]], [[194739, 194739], "mapped", [25115]], [[194740, 194740], "mapped", [25181]], [[194741, 194741], "mapped", [25265]], [[194742, 194742], "mapped", [25300]], [[194743, 194743], "mapped", [25424]], [[194744, 194744], "mapped", [142092]], [[194745, 194745], "mapped", [25405]], [[194746, 194746], "mapped", [25340]], [[194747, 194747], "mapped", [25448]], [[194748, 194748], "mapped", [25475]], [[194749, 194749], "mapped", [25572]], [[194750, 194750], "mapped", [142321]], [[194751, 194751], "mapped", [25634]], [[194752, 194752], "mapped", [25541]], [[194753, 194753], "mapped", [25513]], [[194754, 194754], "mapped", [14894]], [[194755, 194755], "mapped", [25705]], [[194756, 194756], "mapped", [25726]], [[194757, 194757], "mapped", [25757]], [[194758, 194758], "mapped", [25719]], [[194759, 194759], "mapped", [14956]], [[194760, 194760], "mapped", [25935]], [[194761, 194761], "mapped", [25964]], [[194762, 194762], "mapped", [143370]], [[194763, 194763], "mapped", [26083]], [[194764, 194764], "mapped", [26360]], [[194765, 194765], "mapped", [26185]], [[194766, 194766], "mapped", [15129]], [[194767, 194767], "mapped", [26257]], [[194768, 194768], "mapped", [15112]], [[194769, 194769], "mapped", [15076]], [[194770, 194770], "mapped", [20882]], [[194771, 194771], "mapped", [20885]], [[194772, 194772], "mapped", [26368]], [[194773, 194773], "mapped", [26268]], [[194774, 194774], "mapped", [32941]], [[194775, 194775], "mapped", [17369]], [[194776, 194776], "mapped", [26391]], [[194777, 194777], "mapped", [26395]], [[194778, 194778], "mapped", [26401]], [[194779, 194779], "mapped", [26462]], [[194780, 194780], "mapped", [26451]], [[194781, 194781], "mapped", [144323]], [[194782, 194782], "mapped", [15177]], [[194783, 194783], "mapped", [26618]], [[194784, 194784], "mapped", [26501]], [[194785, 194785], "mapped", [26706]], [[194786, 194786], "mapped", [26757]], [[194787, 194787], "mapped", [144493]], [[194788, 194788], "mapped", [26766]], [[194789, 194789], "mapped", [26655]], [[194790, 194790], "mapped", [26900]], [[194791, 194791], "mapped", [15261]], [[194792, 194792], "mapped", [26946]], [[194793, 194793], "mapped", [27043]], [[194794, 194794], "mapped", [27114]], [[194795, 194795], "mapped", [27304]], [[194796, 194796], "mapped", [145059]], [[194797, 194797], "mapped", [27355]], [[194798, 194798], "mapped", [15384]], [[194799, 194799], "mapped", [27425]], [[194800, 194800], "mapped", [145575]], [[194801, 194801], "mapped", [27476]], [[194802, 194802], "mapped", [15438]], [[194803, 194803], "mapped", [27506]], [[194804, 194804], "mapped", [27551]], [[194805, 194805], "mapped", [27578]], [[194806, 194806], "mapped", [27579]], [[194807, 194807], "mapped", [146061]], [[194808, 194808], "mapped", [138507]], [[194809, 194809], "mapped", [146170]], [[194810, 194810], "mapped", [27726]], [[194811, 194811], "mapped", [146620]], [[194812, 194812], "mapped", [27839]], [[194813, 194813], "mapped", [27853]], [[194814, 194814], "mapped", [27751]], [[194815, 194815], "mapped", [27926]], [[194816, 194816], "mapped", [27966]], [[194817, 194817], "mapped", [28023]], [[194818, 194818], "mapped", [27969]], [[194819, 194819], "mapped", [28009]], [[194820, 194820], "mapped", [28024]], [[194821, 194821], "mapped", [28037]], [[194822, 194822], "mapped", [146718]], [[194823, 194823], "mapped", [27956]], [[194824, 194824], "mapped", [28207]], [[194825, 194825], "mapped", [28270]], [[194826, 194826], "mapped", [15667]], [[194827, 194827], "mapped", [28363]], [[194828, 194828], "mapped", [28359]], [[194829, 194829], "mapped", [147153]], [[194830, 194830], "mapped", [28153]], [[194831, 194831], "mapped", [28526]], [[194832, 194832], "mapped", [147294]], [[194833, 194833], "mapped", [147342]], [[194834, 194834], "mapped", [28614]], [[194835, 194835], "mapped", [28729]], [[194836, 194836], "mapped", [28702]], [[194837, 194837], "mapped", [28699]], [[194838, 194838], "mapped", [15766]], [[194839, 194839], "mapped", [28746]], [[194840, 194840], "mapped", [28797]], [[194841, 194841], "mapped", [28791]], [[194842, 194842], "mapped", [28845]], [[194843, 194843], "mapped", [132389]], [[194844, 194844], "mapped", [28997]], [[194845, 194845], "mapped", [148067]], [[194846, 194846], "mapped", [29084]], [[194847, 194847], "disallowed"], [[194848, 194848], "mapped", [29224]], [[194849, 194849], "mapped", [29237]], [[194850, 194850], "mapped", [29264]], [[194851, 194851], "mapped", [149e3]], [[194852, 194852], "mapped", [29312]], [[194853, 194853], "mapped", [29333]], [[194854, 194854], "mapped", [149301]], [[194855, 194855], "mapped", [149524]], [[194856, 194856], "mapped", [29562]], [[194857, 194857], "mapped", [29579]], [[194858, 194858], "mapped", [16044]], [[194859, 194859], "mapped", [29605]], [[194860, 194861], "mapped", [16056]], [[194862, 194862], "mapped", [29767]], [[194863, 194863], "mapped", [29788]], [[194864, 194864], "mapped", [29809]], [[194865, 194865], "mapped", [29829]], [[194866, 194866], "mapped", [29898]], [[194867, 194867], "mapped", [16155]], [[194868, 194868], "mapped", [29988]], [[194869, 194869], "mapped", [150582]], [[194870, 194870], "mapped", [30014]], [[194871, 194871], "mapped", [150674]], [[194872, 194872], "mapped", [30064]], [[194873, 194873], "mapped", [139679]], [[194874, 194874], "mapped", [30224]], [[194875, 194875], "mapped", [151457]], [[194876, 194876], "mapped", [151480]], [[194877, 194877], "mapped", [151620]], [[194878, 194878], "mapped", [16380]], [[194879, 194879], "mapped", [16392]], [[194880, 194880], "mapped", [30452]], [[194881, 194881], "mapped", [151795]], [[194882, 194882], "mapped", [151794]], [[194883, 194883], "mapped", [151833]], [[194884, 194884], "mapped", [151859]], [[194885, 194885], "mapped", [30494]], [[194886, 194887], "mapped", [30495]], [[194888, 194888], "mapped", [30538]], [[194889, 194889], "mapped", [16441]], [[194890, 194890], "mapped", [30603]], [[194891, 194891], "mapped", [16454]], [[194892, 194892], "mapped", [16534]], [[194893, 194893], "mapped", [152605]], [[194894, 194894], "mapped", [30798]], [[194895, 194895], "mapped", [30860]], [[194896, 194896], "mapped", [30924]], [[194897, 194897], "mapped", [16611]], [[194898, 194898], "mapped", [153126]], [[194899, 194899], "mapped", [31062]], [[194900, 194900], "mapped", [153242]], [[194901, 194901], "mapped", [153285]], [[194902, 194902], "mapped", [31119]], [[194903, 194903], "mapped", [31211]], [[194904, 194904], "mapped", [16687]], [[194905, 194905], "mapped", [31296]], [[194906, 194906], "mapped", [31306]], [[194907, 194907], "mapped", [31311]], [[194908, 194908], "mapped", [153980]], [[194909, 194910], "mapped", [154279]], [[194911, 194911], "disallowed"], [[194912, 194912], "mapped", [16898]], [[194913, 194913], "mapped", [154539]], [[194914, 194914], "mapped", [31686]], [[194915, 194915], "mapped", [31689]], [[194916, 194916], "mapped", [16935]], [[194917, 194917], "mapped", [154752]], [[194918, 194918], "mapped", [31954]], [[194919, 194919], "mapped", [17056]], [[194920, 194920], "mapped", [31976]], [[194921, 194921], "mapped", [31971]], [[194922, 194922], "mapped", [32e3]], [[194923, 194923], "mapped", [155526]], [[194924, 194924], "mapped", [32099]], [[194925, 194925], "mapped", [17153]], [[194926, 194926], "mapped", [32199]], [[194927, 194927], "mapped", [32258]], [[194928, 194928], "mapped", [32325]], [[194929, 194929], "mapped", [17204]], [[194930, 194930], "mapped", [156200]], [[194931, 194931], "mapped", [156231]], [[194932, 194932], "mapped", [17241]], [[194933, 194933], "mapped", [156377]], [[194934, 194934], "mapped", [32634]], [[194935, 194935], "mapped", [156478]], [[194936, 194936], "mapped", [32661]], [[194937, 194937], "mapped", [32762]], [[194938, 194938], "mapped", [32773]], [[194939, 194939], "mapped", [156890]], [[194940, 194940], "mapped", [156963]], [[194941, 194941], "mapped", [32864]], [[194942, 194942], "mapped", [157096]], [[194943, 194943], "mapped", [32880]], [[194944, 194944], "mapped", [144223]], [[194945, 194945], "mapped", [17365]], [[194946, 194946], "mapped", [32946]], [[194947, 194947], "mapped", [33027]], [[194948, 194948], "mapped", [17419]], [[194949, 194949], "mapped", [33086]], [[194950, 194950], "mapped", [23221]], [[194951, 194951], "mapped", [157607]], [[194952, 194952], "mapped", [157621]], [[194953, 194953], "mapped", [144275]], [[194954, 194954], "mapped", [144284]], [[194955, 194955], "mapped", [33281]], [[194956, 194956], "mapped", [33284]], [[194957, 194957], "mapped", [36766]], [[194958, 194958], "mapped", [17515]], [[194959, 194959], "mapped", [33425]], [[194960, 194960], "mapped", [33419]], [[194961, 194961], "mapped", [33437]], [[194962, 194962], "mapped", [21171]], [[194963, 194963], "mapped", [33457]], [[194964, 194964], "mapped", [33459]], [[194965, 194965], "mapped", [33469]], [[194966, 194966], "mapped", [33510]], [[194967, 194967], "mapped", [158524]], [[194968, 194968], "mapped", [33509]], [[194969, 194969], "mapped", [33565]], [[194970, 194970], "mapped", [33635]], [[194971, 194971], "mapped", [33709]], [[194972, 194972], "mapped", [33571]], [[194973, 194973], "mapped", [33725]], [[194974, 194974], "mapped", [33767]], [[194975, 194975], "mapped", [33879]], [[194976, 194976], "mapped", [33619]], [[194977, 194977], "mapped", [33738]], [[194978, 194978], "mapped", [33740]], [[194979, 194979], "mapped", [33756]], [[194980, 194980], "mapped", [158774]], [[194981, 194981], "mapped", [159083]], [[194982, 194982], "mapped", [158933]], [[194983, 194983], "mapped", [17707]], [[194984, 194984], "mapped", [34033]], [[194985, 194985], "mapped", [34035]], [[194986, 194986], "mapped", [34070]], [[194987, 194987], "mapped", [160714]], [[194988, 194988], "mapped", [34148]], [[194989, 194989], "mapped", [159532]], [[194990, 194990], "mapped", [17757]], [[194991, 194991], "mapped", [17761]], [[194992, 194992], "mapped", [159665]], [[194993, 194993], "mapped", [159954]], [[194994, 194994], "mapped", [17771]], [[194995, 194995], "mapped", [34384]], [[194996, 194996], "mapped", [34396]], [[194997, 194997], "mapped", [34407]], [[194998, 194998], "mapped", [34409]], [[194999, 194999], "mapped", [34473]], [[195e3, 195e3], "mapped", [34440]], [[195001, 195001], "mapped", [34574]], [[195002, 195002], "mapped", [34530]], [[195003, 195003], "mapped", [34681]], [[195004, 195004], "mapped", [34600]], [[195005, 195005], "mapped", [34667]], [[195006, 195006], "mapped", [34694]], [[195007, 195007], "disallowed"], [[195008, 195008], "mapped", [34785]], [[195009, 195009], "mapped", [34817]], [[195010, 195010], "mapped", [17913]], [[195011, 195011], "mapped", [34912]], [[195012, 195012], "mapped", [34915]], [[195013, 195013], "mapped", [161383]], [[195014, 195014], "mapped", [35031]], [[195015, 195015], "mapped", [35038]], [[195016, 195016], "mapped", [17973]], [[195017, 195017], "mapped", [35066]], [[195018, 195018], "mapped", [13499]], [[195019, 195019], "mapped", [161966]], [[195020, 195020], "mapped", [162150]], [[195021, 195021], "mapped", [18110]], [[195022, 195022], "mapped", [18119]], [[195023, 195023], "mapped", [35488]], [[195024, 195024], "mapped", [35565]], [[195025, 195025], "mapped", [35722]], [[195026, 195026], "mapped", [35925]], [[195027, 195027], "mapped", [162984]], [[195028, 195028], "mapped", [36011]], [[195029, 195029], "mapped", [36033]], [[195030, 195030], "mapped", [36123]], [[195031, 195031], "mapped", [36215]], [[195032, 195032], "mapped", [163631]], [[195033, 195033], "mapped", [133124]], [[195034, 195034], "mapped", [36299]], [[195035, 195035], "mapped", [36284]], [[195036, 195036], "mapped", [36336]], [[195037, 195037], "mapped", [133342]], [[195038, 195038], "mapped", [36564]], [[195039, 195039], "mapped", [36664]], [[195040, 195040], "mapped", [165330]], [[195041, 195041], "mapped", [165357]], [[195042, 195042], "mapped", [37012]], [[195043, 195043], "mapped", [37105]], [[195044, 195044], "mapped", [37137]], [[195045, 195045], "mapped", [165678]], [[195046, 195046], "mapped", [37147]], [[195047, 195047], "mapped", [37432]], [[195048, 195048], "mapped", [37591]], [[195049, 195049], "mapped", [37592]], [[195050, 195050], "mapped", [37500]], [[195051, 195051], "mapped", [37881]], [[195052, 195052], "mapped", [37909]], [[195053, 195053], "mapped", [166906]], [[195054, 195054], "mapped", [38283]], [[195055, 195055], "mapped", [18837]], [[195056, 195056], "mapped", [38327]], [[195057, 195057], "mapped", [167287]], [[195058, 195058], "mapped", [18918]], [[195059, 195059], "mapped", [38595]], [[195060, 195060], "mapped", [23986]], [[195061, 195061], "mapped", [38691]], [[195062, 195062], "mapped", [168261]], [[195063, 195063], "mapped", [168474]], [[195064, 195064], "mapped", [19054]], [[195065, 195065], "mapped", [19062]], [[195066, 195066], "mapped", [38880]], [[195067, 195067], "mapped", [168970]], [[195068, 195068], "mapped", [19122]], [[195069, 195069], "mapped", [169110]], [[195070, 195071], "mapped", [38923]], [[195072, 195072], "mapped", [38953]], [[195073, 195073], "mapped", [169398]], [[195074, 195074], "mapped", [39138]], [[195075, 195075], "mapped", [19251]], [[195076, 195076], "mapped", [39209]], [[195077, 195077], "mapped", [39335]], [[195078, 195078], "mapped", [39362]], [[195079, 195079], "mapped", [39422]], [[195080, 195080], "mapped", [19406]], [[195081, 195081], "mapped", [170800]], [[195082, 195082], "mapped", [39698]], [[195083, 195083], "mapped", [4e4]], [[195084, 195084], "mapped", [40189]], [[195085, 195085], "mapped", [19662]], [[195086, 195086], "mapped", [19693]], [[195087, 195087], "mapped", [40295]], [[195088, 195088], "mapped", [172238]], [[195089, 195089], "mapped", [19704]], [[195090, 195090], "mapped", [172293]], [[195091, 195091], "mapped", [172558]], [[195092, 195092], "mapped", [172689]], [[195093, 195093], "mapped", [40635]], [[195094, 195094], "mapped", [19798]], [[195095, 195095], "mapped", [40697]], [[195096, 195096], "mapped", [40702]], [[195097, 195097], "mapped", [40709]], [[195098, 195098], "mapped", [40719]], [[195099, 195099], "mapped", [40726]], [[195100, 195100], "mapped", [40763]], [[195101, 195101], "mapped", [173568]], [[195102, 196605], "disallowed"], [[196606, 196607], "disallowed"], [[196608, 262141], "disallowed"], [[262142, 262143], "disallowed"], [[262144, 327677], "disallowed"], [[327678, 327679], "disallowed"], [[327680, 393213], "disallowed"], [[393214, 393215], "disallowed"], [[393216, 458749], "disallowed"], [[458750, 458751], "disallowed"], [[458752, 524285], "disallowed"], [[524286, 524287], "disallowed"], [[524288, 589821], "disallowed"], [[589822, 589823], "disallowed"], [[589824, 655357], "disallowed"], [[655358, 655359], "disallowed"], [[655360, 720893], "disallowed"], [[720894, 720895], "disallowed"], [[720896, 786429], "disallowed"], [[786430, 786431], "disallowed"], [[786432, 851965], "disallowed"], [[851966, 851967], "disallowed"], [[851968, 917501], "disallowed"], [[917502, 917503], "disallowed"], [[917504, 917504], "disallowed"], [[917505, 917505], "disallowed"], [[917506, 917535], "disallowed"], [[917536, 917631], "disallowed"], [[917632, 917759], "disallowed"], [[917760, 917999], "ignored"], [[918e3, 983037], "disallowed"], [[983038, 983039], "disallowed"], [[983040, 1048573], "disallowed"], [[1048574, 1048575], "disallowed"], [[1048576, 1114109], "disallowed"], [[1114110, 1114111], "disallowed"]]; + } +}); + +// node_modules/tr46/index.js +var require_tr46 = __commonJS({ + "node_modules/tr46/index.js"(exports2, module2) { + "use strict"; + var punycode = require("punycode"); + var mappingTable = require_mappingTable(); + var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 + }; + function normalize(str) { + return str.split("\0").map(function(s) { + return s.normalize("NFC"); + }).join("\0"); + } + function findStatus(val) { + var start = 0; + var end = mappingTable.length - 1; + while (start <= end) { + var mid = Math.floor((start + end) / 2); + var target = mappingTable[mid]; + if (target[0][0] <= val && target[0][1] >= val) { + return target; + } else if (target[0][0] > val) { + end = mid - 1; + } else { + start = mid + 1; + } + } + return null; + } + var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + function countSymbols(string) { + return string.replace(regexAstralSymbols, "_").length; + } + function mapChars(domain_name, useSTD3, processing_option) { + var hasError = false; + var processed = ""; + var len = countSymbols(domain_name); + for (var i = 0; i < len; ++i) { + var codePoint = domain_name.codePointAt(i); + var status = findStatus(codePoint); + switch (status[1]) { + case "disallowed": + hasError = true; + processed += String.fromCodePoint(codePoint); + break; + case "ignored": + break; + case "mapped": + processed += String.fromCodePoint.apply(String, status[2]); + break; + case "deviation": + if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { + processed += String.fromCodePoint.apply(String, status[2]); + } else { + processed += String.fromCodePoint(codePoint); + } + break; + case "valid": + processed += String.fromCodePoint(codePoint); + break; + case "disallowed_STD3_mapped": + if (useSTD3) { + hasError = true; + processed += String.fromCodePoint(codePoint); + } else { + processed += String.fromCodePoint.apply(String, status[2]); + } + break; + case "disallowed_STD3_valid": + if (useSTD3) { + hasError = true; + } + processed += String.fromCodePoint(codePoint); + break; + } + } + return { + string: processed, + error: hasError + }; + } + var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; + function validateLabel(label, processing_option) { + if (label.substr(0, 4) === "xn--") { + label = punycode.toUnicode(label); + processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; + } + var error = false; + if (normalize(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) { + error = true; + } + var len = countSymbols(label); + for (var i = 0; i < len; ++i) { + var status = findStatus(label.codePointAt(i)); + if (processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid" || processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status[1] !== "valid" && status[1] !== "deviation") { + error = true; + break; + } + } + return { + label, + error + }; + } + function processing(domain_name, useSTD3, processing_option) { + var result = mapChars(domain_name, useSTD3, processing_option); + result.string = normalize(result.string); + var labels = result.string.split("."); + for (var i = 0; i < labels.length; ++i) { + try { + var validation = validateLabel(labels[i]); + labels[i] = validation.label; + result.error = result.error || validation.error; + } catch (e) { + result.error = true; + } + } + return { + string: labels.join("."), + error: result.error + }; + } + module2.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { + var result = processing(domain_name, useSTD3, processing_option); + var labels = result.string.split("."); + labels = labels.map(function(l) { + try { + return punycode.toASCII(l); + } catch (e) { + result.error = true; + return l; + } + }); + if (verifyDnsLength) { + var total = labels.slice(0, labels.length - 1).join(".").length; + if (total.length > 253 || total.length === 0) { + result.error = true; + } + for (var i = 0; i < labels.length; ++i) { + if (labels.length > 63 || labels.length === 0) { + result.error = true; + break; + } + } + } + if (result.error) return null; + return labels.join("."); + }; + module2.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + return { + domain: result.string, + error: result.error + }; + }; + module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + } +}); + +// node_modules/whatwg-url/lib/url-state-machine.js +var require_url_state_machine = __commonJS({ + "node_modules/whatwg-url/lib/url-state-machine.js"(exports2, module2) { + "use strict"; + var punycode = require("punycode"); + var tr46 = require_tr46(); + var specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + var failure = Symbol("failure"); + function countSymbols(str) { + return punycode.ucs2.decode(str).length; + } + function at(input, idx) { + const c = input[idx]; + return isNaN(c) ? void 0 : String.fromCodePoint(c); + } + function isASCIIDigit(c) { + return c >= 48 && c <= 57; + } + function isASCIIAlpha(c) { + return c >= 65 && c <= 90 || c >= 97 && c <= 122; + } + function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); + } + function isASCIIHex(c) { + return isASCIIDigit(c) || c >= 65 && c <= 70 || c >= 97 && c <= 102; + } + function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; + } + function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; + } + function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); + } + function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); + } + function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; + } + function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== void 0; + } + function isSpecial(url) { + return isSpecialScheme(url.scheme); + } + function defaultPort(scheme) { + return specialSchemes[scheme]; + } + function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + return "%" + hex; + } + function utf8PercentEncode(c) { + const buf = new Buffer(c); + let str = ""; + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + return str; + } + function utf8PercentDecode(str) { + const input = new Buffer(str); + const output = []; + for (let i = 0; i < input.length; ++i) { + if (input[i] !== 37) { + output.push(input[i]); + } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { + output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); + i += 2; + } else { + output.push(input[i]); + } + } + return new Buffer(output).toString(); + } + function isC0ControlPercentEncode(c) { + return c <= 31 || c > 126; + } + var extraPathPercentEncodeSet = /* @__PURE__ */ new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); + function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); + } + var extraUserinfoPercentEncodeSet = /* @__PURE__ */ new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); + function isUserinfoPercentEncode(c) { + return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); + } + function percentEncodeChar(c, encodeSetPredicate) { + const cStr = String.fromCodePoint(c); + if (encodeSetPredicate(c)) { + return utf8PercentEncode(cStr); + } + return cStr; + } + function parseIPv4Number(input) { + let R = 10; + if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { + input = input.substring(2); + R = 16; + } else if (input.length >= 2 && input.charAt(0) === "0") { + input = input.substring(1); + R = 8; + } + if (input === "") { + return 0; + } + const regex = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/; + if (regex.test(input)) { + return failure; + } + return parseInt(input, R); + } + function parseIPv4(input) { + const parts = input.split("."); + if (parts[parts.length - 1] === "") { + if (parts.length > 1) { + parts.pop(); + } + } + if (parts.length > 4) { + return input; + } + const numbers = []; + for (const part of parts) { + if (part === "") { + return input; + } + const n = parseIPv4Number(part); + if (n === failure) { + return input; + } + numbers.push(n); + } + for (let i = 0; i < numbers.length - 1; ++i) { + if (numbers[i] > 255) { + return failure; + } + } + if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { + return failure; + } + let ipv4 = numbers.pop(); + let counter = 0; + for (const n of numbers) { + ipv4 += n * Math.pow(256, 3 - counter); + ++counter; + } + return ipv4; + } + function serializeIPv4(address) { + let output = ""; + let n = address; + for (let i = 1; i <= 4; ++i) { + output = String(n % 256) + output; + if (i !== 4) { + output = "." + output; + } + n = Math.floor(n / 256); + } + return output; + } + function parseIPv6(input) { + const address = [0, 0, 0, 0, 0, 0, 0, 0]; + let pieceIndex = 0; + let compress = null; + let pointer = 0; + input = punycode.ucs2.decode(input); + if (input[pointer] === 58) { + if (input[pointer + 1] !== 58) { + return failure; + } + pointer += 2; + ++pieceIndex; + compress = pieceIndex; + } + while (pointer < input.length) { + if (pieceIndex === 8) { + return failure; + } + if (input[pointer] === 58) { + if (compress !== null) { + return failure; + } + ++pointer; + ++pieceIndex; + compress = pieceIndex; + continue; + } + let value = 0; + let length = 0; + while (length < 4 && isASCIIHex(input[pointer])) { + value = value * 16 + parseInt(at(input, pointer), 16); + ++pointer; + ++length; + } + if (input[pointer] === 46) { + if (length === 0) { + return failure; + } + pointer -= length; + if (pieceIndex > 6) { + return failure; + } + let numbersSeen = 0; + while (input[pointer] !== void 0) { + let ipv4Piece = null; + if (numbersSeen > 0) { + if (input[pointer] === 46 && numbersSeen < 4) { + ++pointer; + } else { + return failure; + } + } + if (!isASCIIDigit(input[pointer])) { + return failure; + } + while (isASCIIDigit(input[pointer])) { + const number = parseInt(at(input, pointer)); + if (ipv4Piece === null) { + ipv4Piece = number; + } else if (ipv4Piece === 0) { + return failure; + } else { + ipv4Piece = ipv4Piece * 10 + number; + } + if (ipv4Piece > 255) { + return failure; + } + ++pointer; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + ++numbersSeen; + if (numbersSeen === 2 || numbersSeen === 4) { + ++pieceIndex; + } + } + if (numbersSeen !== 4) { + return failure; + } + break; + } else if (input[pointer] === 58) { + ++pointer; + if (input[pointer] === void 0) { + return failure; + } + } else if (input[pointer] !== void 0) { + return failure; + } + address[pieceIndex] = value; + ++pieceIndex; + } + if (compress !== null) { + let swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + const temp = address[compress + swaps - 1]; + address[compress + swaps - 1] = address[pieceIndex]; + address[pieceIndex] = temp; + --pieceIndex; + --swaps; + } + } else if (compress === null && pieceIndex !== 8) { + return failure; + } + return address; + } + function serializeIPv6(address) { + let output = ""; + const seqResult = findLongestZeroSequence(address); + const compress = seqResult.idx; + let ignore0 = false; + for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { + if (ignore0 && address[pieceIndex] === 0) { + continue; + } else if (ignore0) { + ignore0 = false; + } + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + output += address[pieceIndex].toString(16); + if (pieceIndex !== 7) { + output += ":"; + } + } + return output; + } + function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + return parseIPv6(input.substring(1, input.length - 1)); + } + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + return asciiDomain; + } + function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; + } + function findLongestZeroSequence(arr) { + let maxIdx = null; + let maxLen = 1; + let currStart = null; + let currLen = 0; + for (let i = 0; i < arr.length; ++i) { + if (arr[i] !== 0) { + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + currStart = null; + currLen = 0; + } else { + if (currStart === null) { + currStart = i; + } + ++currLen; + } + } + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + return { + idx: maxIdx, + len: maxLen + }; + } + function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + return host; + } + function trimControlChars(url) { + return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); + } + function trimTabAndNewline(url) { + return url.replace(/\u0009|\u000A|\u000D/g, ""); + } + function shortenPath(url) { + const path = url.path; + if (path.length === 0) { + return; + } + if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) { + return; + } + path.pop(); + } + function includesCredentials(url) { + return url.username !== "" || url.password !== ""; + } + function cannotHaveAUsernamePasswordPort(url) { + return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; + } + function isNormalizedWindowsDriveLetter(string) { + return /^[A-Za-z]:$/.test(string); + } + function URLStateMachine(input, base, encodingOverride, url, stateOverride) { + this.pointer = 0; + this.input = input; + this.base = base || null; + this.encodingOverride = encodingOverride || "utf-8"; + this.stateOverride = stateOverride; + this.url = url; + this.failure = false; + this.parseError = false; + if (!this.url) { + this.url = { + scheme: "", + username: "", + password: "", + host: null, + port: null, + path: [], + query: null, + fragment: null, + cannotBeABaseURL: false + }; + const res2 = trimControlChars(this.input); + if (res2 !== this.input) { + this.parseError = true; + } + this.input = res2; + } + const res = trimTabAndNewline(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + this.state = stateOverride || "scheme start"; + this.buffer = ""; + this.atFlag = false; + this.arrFlag = false; + this.passwordTokenSeenFlag = false; + this.input = punycode.ucs2.decode(this.input); + for (; this.pointer <= this.input.length; ++this.pointer) { + const c = this.input[this.pointer]; + const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c); + const ret = this["parse " + this.state](c, cStr); + if (!ret) { + break; + } else if (ret === failure) { + this.failure = true; + break; + } + } + } + URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { + if (isASCIIAlpha(c)) { + this.buffer += cStr.toLowerCase(); + this.state = "scheme"; + } else if (!this.stateOverride) { + this.state = "no scheme"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { + if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { + this.buffer += cStr.toLowerCase(); + } else if (c === 58) { + if (this.stateOverride) { + if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { + return false; + } + if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { + return false; + } + if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { + return false; + } + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + if (this.url.scheme === "file") { + if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { + this.parseError = true; + } + this.state = "file"; + } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { + this.state = "special relative or authority"; + } else if (isSpecial(this.url)) { + this.state = "special authority slashes"; + } else if (this.input[this.pointer + 1] === 47) { + this.state = "path or authority"; + ++this.pointer; + } else { + this.url.cannotBeABaseURL = true; + this.url.path.push(""); + this.state = "cannot-be-a-base-URL path"; + } + } else if (!this.stateOverride) { + this.buffer = ""; + this.state = "no scheme"; + this.pointer = -1; + } else { + this.parseError = true; + return failure; + } + return true; + }; + URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { + if (this.base === null || this.base.cannotBeABaseURL && c !== 35) { + return failure; + } else if (this.base.cannotBeABaseURL && c === 35) { + this.url.scheme = this.base.scheme; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.url.cannotBeABaseURL = true; + this.state = "fragment"; + } else if (this.base.scheme === "file") { + this.state = "file"; + --this.pointer; + } else { + this.state = "relative"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "relative"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse relative"] = function parseRelative(c) { + this.url.scheme = this.base.scheme; + if (isNaN(c)) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 47) { + this.state = "relative slash"; + } else if (c === 63) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else if (isSpecial(this.url) && c === 92) { + this.parseError = true; + this.state = "relative slash"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(0, this.base.path.length - 1); + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { + if (isSpecial(this.url) && (c === 47 || c === 92)) { + if (c === 92) { + this.parseError = true; + } + this.state = "special authority ignore slashes"; + } else if (c === 47) { + this.state = "authority"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "special authority ignore slashes"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { + if (c !== 47 && c !== 92) { + this.state = "authority"; + --this.pointer; + } else { + this.parseError = true; + } + return true; + }; + URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { + if (c === 64) { + this.parseError = true; + if (this.atFlag) { + this.buffer = "%40" + this.buffer; + } + this.atFlag = true; + const len = countSymbols(this.buffer); + for (let pointer = 0; pointer < len; ++pointer) { + const codePoint = this.buffer.codePointAt(pointer); + if (codePoint === 58 && !this.passwordTokenSeenFlag) { + this.passwordTokenSeenFlag = true; + continue; + } + const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); + if (this.passwordTokenSeenFlag) { + this.url.password += encodedCodePoints; + } else { + this.url.username += encodedCodePoints; + } + } + this.buffer = ""; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { + if (this.atFlag && this.buffer === "") { + this.parseError = true; + return failure; + } + this.pointer -= countSymbols(this.buffer) + 1; + this.buffer = ""; + this.state = "host"; + } else { + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse hostname"] = URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { + if (this.stateOverride && this.url.scheme === "file") { + --this.pointer; + this.state = "file host"; + } else if (c === 58 && !this.arrFlag) { + if (this.buffer === "") { + this.parseError = true; + return failure; + } + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + this.url.host = host; + this.buffer = ""; + this.state = "port"; + if (this.stateOverride === "hostname") { + return false; + } + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { + --this.pointer; + if (isSpecial(this.url) && this.buffer === "") { + this.parseError = true; + return failure; + } else if (this.stateOverride && this.buffer === "" && (includesCredentials(this.url) || this.url.port !== null)) { + this.parseError = true; + return false; + } + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + this.url.host = host; + this.buffer = ""; + this.state = "path start"; + if (this.stateOverride) { + return false; + } + } else { + if (c === 91) { + this.arrFlag = true; + } else if (c === 93) { + this.arrFlag = false; + } + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { + if (isASCIIDigit(c)) { + this.buffer += cStr; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92 || this.stateOverride) { + if (this.buffer !== "") { + const port = parseInt(this.buffer); + if (port > Math.pow(2, 16) - 1) { + this.parseError = true; + return failure; + } + this.url.port = port === defaultPort(this.url.scheme) ? null : port; + this.buffer = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + var fileOtherwiseCodePoints = /* @__PURE__ */ new Set([47, 92, 63, 35]); + URLStateMachine.prototype["parse file"] = function parseFile(c) { + this.url.scheme = "file"; + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file slash"; + } else if (this.base !== null && this.base.scheme === "file") { + if (isNaN(c)) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 63) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file host"; + } else { + if (this.base !== null && this.base.scheme === "file") { + if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { + this.url.path.push(this.base.path[0]); + } else { + this.url.host = this.base.host; + } + } + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { + if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { + --this.pointer; + if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { + this.parseError = true; + this.state = "path"; + } else if (this.buffer === "") { + this.url.host = ""; + if (this.stateOverride) { + return false; + } + this.state = "path start"; + } else { + let host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + if (host === "localhost") { + host = ""; + } + this.url.host = host; + if (this.stateOverride) { + return false; + } + this.buffer = ""; + this.state = "path start"; + } + } else { + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { + if (isSpecial(this.url)) { + if (c === 92) { + this.parseError = true; + } + this.state = "path"; + if (c !== 47 && c !== 92) { + --this.pointer; + } + } else if (!this.stateOverride && c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (!this.stateOverride && c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else if (c !== void 0) { + this.state = "path"; + if (c !== 47) { + --this.pointer; + } + } + return true; + }; + URLStateMachine.prototype["parse path"] = function parsePath(c) { + if (isNaN(c) || c === 47 || isSpecial(this.url) && c === 92 || !this.stateOverride && (c === 63 || c === 35)) { + if (isSpecial(this.url) && c === 92) { + this.parseError = true; + } + if (isDoubleDot(this.buffer)) { + shortenPath(this.url); + if (c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } + } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } else if (!isSingleDot(this.buffer)) { + if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { + if (this.url.host !== "" && this.url.host !== null) { + this.parseError = true; + this.url.host = ""; + } + this.buffer = this.buffer[0] + ":"; + } + this.url.path.push(this.buffer); + } + this.buffer = ""; + if (this.url.scheme === "file" && (c === void 0 || c === 63 || c === 35)) { + while (this.url.path.length > 1 && this.url.path[0] === "") { + this.parseError = true; + this.url.path.shift(); + } + } + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + return true; + }; + URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + if (!isNaN(c)) { + this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + } + } + return true; + }; + URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { + if (isNaN(c) || !this.stateOverride && c === 35) { + if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { + this.encodingOverride = "utf-8"; + } + const buffer = new Buffer(this.buffer); + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] < 33 || buffer[i] > 126 || buffer[i] === 34 || buffer[i] === 35 || buffer[i] === 60 || buffer[i] === 62) { + this.url.query += percentEncode(buffer[i]); + } else { + this.url.query += String.fromCodePoint(buffer[i]); + } + } + this.buffer = ""; + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { + if (isNaN(c)) { + } else if (c === 0) { + this.parseError = true; + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); + } + return true; + }; + function serializeURL(url, excludeFragment) { + let output = url.scheme + ":"; + if (url.host !== null) { + output += "//"; + if (url.username !== "" || url.password !== "") { + output += url.username; + if (url.password !== "") { + output += ":" + url.password; + } + output += "@"; + } + output += serializeHost(url.host); + if (url.port !== null) { + output += ":" + url.port; + } + } else if (url.host === null && url.scheme === "file") { + output += "//"; + } + if (url.cannotBeABaseURL) { + output += url.path[0]; + } else { + for (const string of url.path) { + output += "/" + string; + } + } + if (url.query !== null) { + output += "?" + url.query; + } + if (!excludeFragment && url.fragment !== null) { + output += "#" + url.fragment; + } + return output; + } + function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + if (tuple.port !== null) { + result += ":" + tuple.port; + } + return result; + } + module2.exports.serializeURL = serializeURL; + module2.exports.serializeURLOrigin = function(url) { + switch (url.scheme) { + case "blob": + try { + return module2.exports.serializeURLOrigin(module2.exports.parseURL(url.path[0])); + } catch (e) { + return "null"; + } + case "ftp": + case "gopher": + case "http": + case "https": + case "ws": + case "wss": + return serializeOrigin({ + scheme: url.scheme, + host: url.host, + port: url.port + }); + case "file": + return "file://"; + default: + return "null"; + } + }; + module2.exports.basicURLParse = function(input, options) { + if (options === void 0) { + options = {}; + } + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + return usm.url; + }; + module2.exports.setTheUsername = function(url, username) { + url.username = ""; + const decoded = punycode.ucs2.decode(username); + for (let i = 0; i < decoded.length; ++i) { + url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } + }; + module2.exports.setThePassword = function(url, password) { + url.password = ""; + const decoded = punycode.ucs2.decode(password); + for (let i = 0; i < decoded.length; ++i) { + url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } + }; + module2.exports.serializeHost = serializeHost; + module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; + module2.exports.serializeInteger = function(integer) { + return String(integer); + }; + module2.exports.parseURL = function(input, options) { + if (options === void 0) { + options = {}; + } + return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); + }; + } +}); + +// node_modules/whatwg-url/lib/URL-impl.js +var require_URL_impl = __commonJS({ + "node_modules/whatwg-url/lib/URL-impl.js"(exports2) { + "use strict"; + var usm = require_url_state_machine(); + exports2.implementation = class URLImpl { + constructor(constructorArgs) { + const url = constructorArgs[0]; + const base = constructorArgs[1]; + let parsedBase = null; + if (base !== void 0) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; + } + get href() { + return usm.serializeURL(this._url); + } + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; + } + get origin() { + return usm.serializeURLOrigin(this._url); + } + get protocol() { + return this._url.scheme + ":"; + } + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + get username() { + return this._url.username; + } + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setTheUsername(this._url, v); + } + get password() { + return this._url.password; + } + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setThePassword(this._url, v); + } + get host() { + const url = this._url; + if (url.host === null) { + return ""; + } + if (url.port === null) { + return usm.serializeHost(url.host); + } + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); + } + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + get hostname() { + if (this._url.host === null) { + return ""; + } + return usm.serializeHost(this._url.host); + } + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + get port() { + if (this._url.port === null) { + return ""; + } + return usm.serializeInteger(this._url.port); + } + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + if (this._url.path.length === 0) { + return ""; + } + return "/" + this._url.path.join("/"); + } + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + return "?" + this._url.query; + } + set search(v) { + const url = this._url; + if (v === "") { + url.query = null; + return; + } + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + return "#" + this._url.fragment; + } + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + toJSON() { + return this.href; + } + }; + } +}); + +// node_modules/whatwg-url/lib/URL.js +var require_URL = __commonJS({ + "node_modules/whatwg-url/lib/URL.js"(exports2, module2) { + "use strict"; + var conversions = require_lib(); + var utils = require_utils(); + var Impl = require_URL_impl(); + var impl = utils.implSymbol; + function URL2(url) { + if (!this || this[impl] || !(this instanceof URL2)) { + throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); + } + if (arguments.length < 1) { + throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); + } + const args = []; + for (let i = 0; i < arguments.length && i < 2; ++i) { + args[i] = arguments[i]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== void 0) { + args[1] = conversions["USVString"](args[1]); + } + module2.exports.setup(this, args); + } + URL2.prototype.toJSON = function toJSON() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); + }; + Object.defineProperty(URL2.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true + }); + URL2.prototype.toString = function() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; + }; + Object.defineProperty(URL2.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true + }); + module2.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL2.prototype); + this.setup(obj, constructorArgs, privateData); + return obj; + }, + setup(obj, constructorArgs, privateData) { + if (!privateData) privateData = {}; + privateData.wrapper = obj; + obj[impl] = new Impl.implementation(constructorArgs, privateData); + obj[impl][utils.wrapperSymbol] = obj; + }, + interface: URL2, + expose: { + Window: { URL: URL2 }, + Worker: { URL: URL2 } + } + }; + } +}); + +// node_modules/whatwg-url/lib/public-api.js +var require_public_api = __commonJS({ + "node_modules/whatwg-url/lib/public-api.js"(exports2) { + "use strict"; + exports2.URL = require_URL().interface; + exports2.serializeURL = require_url_state_machine().serializeURL; + exports2.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; + exports2.basicURLParse = require_url_state_machine().basicURLParse; + exports2.setTheUsername = require_url_state_machine().setTheUsername; + exports2.setThePassword = require_url_state_machine().setThePassword; + exports2.serializeHost = require_url_state_machine().serializeHost; + exports2.serializeInteger = require_url_state_machine().serializeInteger; + exports2.parseURL = require_url_state_machine().parseURL; + } +}); + +// node_modules/@supabase/node-fetch/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/@supabase/node-fetch/lib/index.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + function _interopDefault(ex) { + return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; + } + var Stream = _interopDefault(require("stream")); + var http = _interopDefault(require("http")); + var Url = _interopDefault(require("url")); + var whatwgUrl = _interopDefault(require_public_api()); + var https = _interopDefault(require("https")); + var zlib = _interopDefault(require("zlib")); + var Readable = Stream.Readable; + var BUFFER = Symbol("buffer"); + var TYPE = Symbol("type"); + var Blob2 = class _Blob { + constructor() { + this[TYPE] = ""; + const blobParts = arguments[0]; + const options = arguments[1]; + const buffers = []; + let size = 0; + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof _Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === "string" ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + this[BUFFER] = Buffer.concat(buffers); + let type = options && options.type !== void 0 && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function() { + }; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return "[object Blob]"; + } + slice() { + const size = this.size; + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === void 0) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === void 0) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new _Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } + }; + Object.defineProperties(Blob2.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } + }); + Object.defineProperty(Blob2.prototype, Symbol.toStringTag, { + value: "Blob", + writable: false, + enumerable: false, + configurable: true + }); + function FetchError(message, type, systemError) { + Error.call(this, message); + this.message = message; + this.type = type; + if (systemError) { + this.code = this.errno = systemError.code; + } + Error.captureStackTrace(this, this.constructor); + } + FetchError.prototype = Object.create(Error.prototype); + FetchError.prototype.constructor = FetchError; + FetchError.prototype.name = "FetchError"; + var convert; + var INTERNALS = Symbol("Body internals"); + var PassThrough = Stream.PassThrough; + function Body(body) { + var _this = this; + var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$size = _ref.size; + let size = _ref$size === void 0 ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout; + if (body == null) { + body = null; + } else if (isURLSearchParams(body)) { + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; + else if (Buffer.isBuffer(body)) ; + else if (Object.prototype.toString.call(body) === "[object ArrayBuffer]") { + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; + else { + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + if (body instanceof Stream) { + body.on("error", function(err) { + const error = err.name === "AbortError" ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, "system", err); + _this[INTERNALS].error = error; + }); + } + } + Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function(buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get("content-type") || ""; + return consumeBody.call(this).then(function(buf) { + return Object.assign( + // Prevent copying + new Blob2([], { + type: ct.toLowerCase() + }), + { + [BUFFER]: buf + } + ); + }); + }, + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + return consumeBody.call(this).then(function(buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, "invalid-json")); + } + }); + }, + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function(buffer) { + return buffer.toString(); + }); + }, + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + return consumeBody.call(this).then(function(buffer) { + return convertBody(buffer, _this3.headers); + }); + } + }; + Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } + }); + Body.mixIn = function(proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } + }; + function consumeBody() { + var _this4 = this; + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + this[INTERNALS].disturbed = true; + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + let body = this.body; + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + if (isBlob(body)) { + body = body.stream(); + } + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + let accum = []; + let accumBytes = 0; + let abort = false; + return new Body.Promise(function(resolve, reject) { + let resTimeout; + if (_this4.timeout) { + resTimeout = setTimeout(function() { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, "body-timeout")); + }, _this4.timeout); + } + body.on("error", function(err) { + if (err.name === "AbortError") { + abort = true; + reject(err); + } else { + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, "system", err)); + } + }); + body.on("data", function(chunk) { + if (abort || chunk === null) { + return; + } + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, "max-size")); + return; + } + accumBytes += chunk.length; + accum.push(chunk); + }); + body.on("end", function() { + if (abort) { + return; + } + clearTimeout(resTimeout); + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, "system", err)); + } + }); + }); + } + function convertBody(buffer, headers) { + { + throw new Error("The package `encoding` must be installed to use the textConverted() function"); + } + const ct = headers.get("content-type"); + let charset = "utf-8"; + let res, str; + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + str = buffer.slice(0, 1024).toString(); + if (!res && str) { + res = / 0 && arguments[0] !== void 0 ? arguments[0] : void 0; + this[MAP] = /* @__PURE__ */ Object.create(null); + if (init instanceof _Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + return; + } + if (init == null) ; + else if (typeof init === "object") { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== "function") { + throw new TypeError("Header pairs must be iterable"); + } + const pairs = []; + for (const pair of init) { + if (typeof pair !== "object" || typeof pair[Symbol.iterator] !== "function") { + throw new TypeError("Each header pair must be iterable"); + } + pairs.push(Array.from(pair)); + } + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError("Each header pair must be a name/value tuple"); + } + this.append(pair[0], pair[1]); + } + } else { + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError("Provided initializer must be an object"); + } + } + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === void 0) { + return null; + } + return this[MAP][key].join(", "); + } + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], value = _pairs$i[1]; + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== void 0 ? key : name] = [value]; + } + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== void 0) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== void 0; + } + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== void 0) { + delete this[MAP][key]; + } + } + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, "key"); + } + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, "value"); + } + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, "key+value"); + } + }; + Headers2.prototype.entries = Headers2.prototype[Symbol.iterator]; + Object.defineProperty(Headers2.prototype, Symbol.toStringTag, { + value: "Headers", + writable: false, + enumerable: false, + configurable: true + }); + Object.defineProperties(Headers2.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } + }); + function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key+value"; + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === "key" ? function(k) { + return k.toLowerCase(); + } : kind === "value" ? function(k) { + return headers[MAP][k].join(", "); + } : function(k) { + return [k.toLowerCase(), headers[MAP][k].join(", ")]; + }); + } + var INTERNAL = Symbol("internal"); + function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; + } + var HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError("Value of `this` is not a HeadersIterator"); + } + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, kind = _INTERNAL.kind, index = _INTERNAL.index; + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: void 0, + done: true + }; + } + this[INTERNAL].index = index + 1; + return { + value: values[index], + done: false + }; + } + }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: "HeadersIterator", + writable: false, + enumerable: false, + configurable: true + }); + function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + const hostHeaderKey = find(headers[MAP], "Host"); + if (hostHeaderKey !== void 0) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + return obj; + } + function createHeadersLenient(obj) { + const headers = new Headers2(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === void 0) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; + } + var INTERNALS$1 = Symbol("Response internals"); + var STATUS_CODES = http.STATUS_CODES; + var Response2 = class _Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + Body.call(this, body, opts); + const status = opts.status || 200; + const headers = new Headers2(opts.headers); + if (body != null && !headers.has("Content-Type")) { + const contentType = extractContentType(body); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + get url() { + return this[INTERNALS$1].url || ""; + } + get status() { + return this[INTERNALS$1].status; + } + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + get redirected() { + return this[INTERNALS$1].counter > 0; + } + get statusText() { + return this[INTERNALS$1].statusText; + } + get headers() { + return this[INTERNALS$1].headers; + } + /** + * Clone this response + * + * @return Response + */ + clone() { + return new _Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } + }; + Body.mixIn(Response2.prototype); + Object.defineProperties(Response2.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } + }); + Object.defineProperty(Response2.prototype, Symbol.toStringTag, { + value: "Response", + writable: false, + enumerable: false, + configurable: true + }); + var INTERNALS$2 = Symbol("Request internals"); + var URL2 = Url.URL || whatwgUrl.URL; + var parse_url = Url.parse; + var format_url = Url.format; + function parseURL(urlStr) { + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL2(urlStr).toString(); + } + return parse_url(urlStr); + } + var streamDestructionSupported = "destroy" in Stream.Readable.prototype; + function isRequest(input) { + return typeof input === "object" && typeof input[INTERNALS$2] === "object"; + } + function isAbortSignal(signal) { + const proto = signal && typeof signal === "object" && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === "AbortSignal"); + } + var Request = class _Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + let parsedURL; + if (!isRequest(input)) { + if (input && input.href) { + parsedURL = parseURL(input.href); + } else { + parsedURL = parseURL(`${input}`); + } + input = {}; + } else { + parsedURL = parseURL(input.url); + } + let method = init.method || input.method || "GET"; + method = method.toUpperCase(); + if ((init.body != null || isRequest(input) && input.body !== null) && (method === "GET" || method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body"); + } + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + const headers = new Headers2(init.headers || input.headers || {}); + if (inputBody != null && !headers.has("Content-Type")) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + let signal = isRequest(input) ? input.signal : null; + if ("signal" in init) signal = init.signal; + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError("Expected signal to be an instanceof AbortSignal"); + } + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || "follow", + headers, + parsedURL, + signal + }; + this.follow = init.follow !== void 0 ? init.follow : input.follow !== void 0 ? input.follow : 20; + this.compress = init.compress !== void 0 ? init.compress : input.compress !== void 0 ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + get method() { + return this[INTERNALS$2].method; + } + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + get headers() { + return this[INTERNALS$2].headers; + } + get redirect() { + return this[INTERNALS$2].redirect; + } + get signal() { + return this[INTERNALS$2].signal; + } + /** + * Clone this request + * + * @return Request + */ + clone() { + return new _Request(this); + } + }; + Body.mixIn(Request.prototype); + Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: "Request", + writable: false, + enumerable: false, + configurable: true + }); + Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } + }); + function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers2(request[INTERNALS$2].headers); + if (!headers.has("Accept")) { + headers.set("Accept", "*/*"); + } + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError("Only absolute URLs are supported"); + } + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError("Only HTTP(S) protocols are supported"); + } + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8"); + } + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = "0"; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === "number") { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set("Content-Length", contentLengthValue); + } + if (!headers.has("User-Agent")) { + headers.set("User-Agent", "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"); + } + if (request.compress && !headers.has("Accept-Encoding")) { + headers.set("Accept-Encoding", "gzip,deflate"); + } + let agent = request.agent; + if (typeof agent === "function") { + agent = agent(parsedURL); + } + if (!headers.has("Connection") && !agent) { + headers.set("Connection", "close"); + } + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); + } + function AbortError(message) { + Error.call(this, message); + this.type = "aborted"; + this.message = message; + Error.captureStackTrace(this, this.constructor); + } + AbortError.prototype = Object.create(Error.prototype); + AbortError.prototype.constructor = AbortError; + AbortError.prototype.name = "AbortError"; + var URL$1 = Url.URL || whatwgUrl.URL; + var PassThrough$1 = Stream.PassThrough; + var isDomainOrSubdomain = function isDomainOrSubdomain2(destination, original) { + const orig = new URL$1(original).hostname; + const dest = new URL$1(destination).hostname; + return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest); + }; + var isSameProtocol = function isSameProtocol2(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + return orig === dest; + }; + function fetch2(url, opts) { + if (!fetch2.Promise) { + throw new Error("native promise missing, set fetch.Promise to your favorite alternative"); + } + Body.Promise = fetch2.Promise; + return new fetch2.Promise(function(resolve, reject) { + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + const send = (options.protocol === "https:" ? https : http).request; + const signal = request.signal; + let response = null; + const abort = function abort2() { + let error = new AbortError("The user aborted a request."); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error); + } + if (!response || !response.body) return; + response.body.emit("error", error); + }; + if (signal && signal.aborted) { + abort(); + return; + } + const abortAndFinalize = function abortAndFinalize2() { + abort(); + finalize(); + }; + const req = send(options); + let reqTimeout; + if (signal) { + signal.addEventListener("abort", abortAndFinalize); + } + function finalize() { + req.abort(); + if (signal) signal.removeEventListener("abort", abortAndFinalize); + clearTimeout(reqTimeout); + } + if (request.timeout) { + req.once("socket", function(socket) { + reqTimeout = setTimeout(function() { + reject(new FetchError(`network timeout at: ${request.url}`, "request-timeout")); + finalize(); + }, request.timeout); + }); + } + req.on("error", function(err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, "system", err)); + if (response && response.body) { + destroyStream(response.body, err); + } + finalize(); + }); + fixResponseChunkedTransferBadEnding(req, function(err) { + if (signal && signal.aborted) { + return; + } + if (response && response.body) { + destroyStream(response.body, err); + } + }); + if (parseInt(process.version.substring(1)) < 14) { + req.on("socket", function(s) { + s.addListener("close", function(hadError) { + const hasDataListener = s.listenerCount("data") > 0; + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err = new Error("Premature close"); + err.code = "ERR_STREAM_PREMATURE_CLOSE"; + response.body.emit("error", err); + } + }); + }); + } + req.on("response", function(res) { + clearTimeout(reqTimeout); + const headers = createHeadersLenient(res.headers); + if (fetch2.isRedirect(res.statusCode)) { + const location = headers.get("Location"); + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + if (request.redirect !== "manual") { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, "invalid-redirect")); + finalize(); + return; + } + } + switch (request.redirect) { + case "error": + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, "no-redirect")); + finalize(); + return; + case "manual": + if (locationURL !== null) { + try { + headers.set("Location", locationURL); + } catch (err) { + reject(err); + } + } + break; + case "follow": + if (locationURL === null) { + break; + } + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, "max-redirect")); + finalize(); + return; + } + const requestOpts = { + headers: new Headers2(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; + if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) { + for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) { + requestOpts.headers.delete(name); + } + } + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError("Cannot follow redirect with body being a readable stream", "unsupported-redirect")); + finalize(); + return; + } + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === "POST") { + requestOpts.method = "GET"; + requestOpts.body = void 0; + requestOpts.headers.delete("content-length"); + } + resolve(fetch2(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + res.once("end", function() { + if (signal) signal.removeEventListener("abort", abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + const codings = headers.get("Content-Encoding"); + if (!request.compress || request.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response2(body, response_options); + resolve(response); + return; + } + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + if (codings == "gzip" || codings == "x-gzip") { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response2(body, response_options); + resolve(response); + return; + } + if (codings == "deflate" || codings == "x-deflate") { + const raw = res.pipe(new PassThrough$1()); + raw.once("data", function(chunk) { + if ((chunk[0] & 15) === 8) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response2(body, response_options); + resolve(response); + }); + raw.on("end", function() { + if (!response) { + response = new Response2(body, response_options); + resolve(response); + } + }); + return; + } + if (codings == "br" && typeof zlib.createBrotliDecompress === "function") { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response2(body, response_options); + resolve(response); + return; + } + response = new Response2(body, response_options); + resolve(response); + }); + writeToStream(req, request); + }); + } + function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + request.on("socket", function(s) { + socket = s; + }); + request.on("response", function(response) { + const headers = response.headers; + if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) { + response.once("close", function(hadError) { + const hasDataListener = socket && socket.listenerCount("data") > 0; + if (hasDataListener && !hadError) { + const err = new Error("Premature close"); + err.code = "ERR_STREAM_PREMATURE_CLOSE"; + errorCallback(err); + } + }); + } + }); + } + function destroyStream(stream, err) { + if (stream.destroy) { + stream.destroy(err); + } else { + stream.emit("error", err); + stream.end(); + } + } + fetch2.isRedirect = function(code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; + }; + fetch2.Promise = global.Promise; + module2.exports = exports2 = fetch2; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.default = exports2; + exports2.Headers = Headers2; + exports2.Request = Request; + exports2.Response = Response2; + exports2.FetchError = FetchError; + } +}); + +// node_modules/@supabase/functions-js/dist/main/helper.js +var require_helper = __commonJS({ + "node_modules/@supabase/functions-js/dist/main/helper.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.resolveFetch = void 0; + var resolveFetch = (customFetch) => { + let _fetch; + if (customFetch) { + _fetch = customFetch; + } else if (typeof fetch === "undefined") { + _fetch = (...args) => Promise.resolve().then(() => __importStar(require_lib2())).then(({ default: fetch2 }) => fetch2(...args)); + } else { + _fetch = fetch; + } + return (...args) => _fetch(...args); + }; + exports2.resolveFetch = resolveFetch; + } +}); + +// node_modules/@supabase/functions-js/dist/main/types.js +var require_types = __commonJS({ + "node_modules/@supabase/functions-js/dist/main/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.FunctionRegion = exports2.FunctionsHttpError = exports2.FunctionsRelayError = exports2.FunctionsFetchError = exports2.FunctionsError = void 0; + var FunctionsError = class extends Error { + constructor(message, name = "FunctionsError", context) { + super(message); + this.name = name; + this.context = context; + } + }; + exports2.FunctionsError = FunctionsError; + var FunctionsFetchError = class extends FunctionsError { + constructor(context) { + super("Failed to send a request to the Edge Function", "FunctionsFetchError", context); + } + }; + exports2.FunctionsFetchError = FunctionsFetchError; + var FunctionsRelayError = class extends FunctionsError { + constructor(context) { + super("Relay Error invoking the Edge Function", "FunctionsRelayError", context); + } + }; + exports2.FunctionsRelayError = FunctionsRelayError; + var FunctionsHttpError = class extends FunctionsError { + constructor(context) { + super("Edge Function returned a non-2xx status code", "FunctionsHttpError", context); + } + }; + exports2.FunctionsHttpError = FunctionsHttpError; + var FunctionRegion; + (function(FunctionRegion2) { + FunctionRegion2["Any"] = "any"; + FunctionRegion2["ApNortheast1"] = "ap-northeast-1"; + FunctionRegion2["ApNortheast2"] = "ap-northeast-2"; + FunctionRegion2["ApSouth1"] = "ap-south-1"; + FunctionRegion2["ApSoutheast1"] = "ap-southeast-1"; + FunctionRegion2["ApSoutheast2"] = "ap-southeast-2"; + FunctionRegion2["CaCentral1"] = "ca-central-1"; + FunctionRegion2["EuCentral1"] = "eu-central-1"; + FunctionRegion2["EuWest1"] = "eu-west-1"; + FunctionRegion2["EuWest2"] = "eu-west-2"; + FunctionRegion2["EuWest3"] = "eu-west-3"; + FunctionRegion2["SaEast1"] = "sa-east-1"; + FunctionRegion2["UsEast1"] = "us-east-1"; + FunctionRegion2["UsWest1"] = "us-west-1"; + FunctionRegion2["UsWest2"] = "us-west-2"; + })(FunctionRegion = exports2.FunctionRegion || (exports2.FunctionRegion = {})); + } +}); + +// node_modules/@supabase/functions-js/dist/main/FunctionsClient.js +var require_FunctionsClient = __commonJS({ + "node_modules/@supabase/functions-js/dist/main/FunctionsClient.js"(exports2) { + "use strict"; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.FunctionsClient = void 0; + var helper_1 = require_helper(); + var types_1 = require_types(); + var FunctionsClient = class { + constructor(url, { headers = {}, customFetch, region = types_1.FunctionRegion.Any } = {}) { + this.url = url; + this.headers = headers; + this.region = region; + this.fetch = (0, helper_1.resolveFetch)(customFetch); + } + /** + * Updates the authorization header + * @param token - the new jwt token sent in the authorisation header + */ + setAuth(token) { + this.headers.Authorization = `Bearer ${token}`; + } + /** + * Invokes a function + * @param functionName - The name of the Function to invoke. + * @param options - Options for invoking the Function. + */ + invoke(functionName, options = {}) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + try { + const { headers, method, body: functionArgs } = options; + let _headers = {}; + let { region } = options; + if (!region) { + region = this.region; + } + if (region && region !== "any") { + _headers["x-region"] = region; + } + let body; + if (functionArgs && (headers && !Object.prototype.hasOwnProperty.call(headers, "Content-Type") || !headers)) { + if (typeof Blob !== "undefined" && functionArgs instanceof Blob || functionArgs instanceof ArrayBuffer) { + _headers["Content-Type"] = "application/octet-stream"; + body = functionArgs; + } else if (typeof functionArgs === "string") { + _headers["Content-Type"] = "text/plain"; + body = functionArgs; + } else if (typeof FormData !== "undefined" && functionArgs instanceof FormData) { + body = functionArgs; + } else { + _headers["Content-Type"] = "application/json"; + body = JSON.stringify(functionArgs); + } + } + const response = yield this.fetch(`${this.url}/${functionName}`, { + method: method || "POST", + // headers priority is (high to low): + // 1. invoke-level headers + // 2. client-level headers + // 3. default Content-Type header + headers: Object.assign(Object.assign(Object.assign({}, _headers), this.headers), headers), + body + }).catch((fetchError) => { + throw new types_1.FunctionsFetchError(fetchError); + }); + const isRelayError = response.headers.get("x-relay-error"); + if (isRelayError && isRelayError === "true") { + throw new types_1.FunctionsRelayError(response); + } + if (!response.ok) { + throw new types_1.FunctionsHttpError(response); + } + let responseType = ((_a = response.headers.get("Content-Type")) !== null && _a !== void 0 ? _a : "text/plain").split(";")[0].trim(); + let data; + if (responseType === "application/json") { + data = yield response.json(); + } else if (responseType === "application/octet-stream") { + data = yield response.blob(); + } else if (responseType === "text/event-stream") { + data = response; + } else if (responseType === "multipart/form-data") { + data = yield response.formData(); + } else { + data = yield response.text(); + } + return { data, error: null }; + } catch (error) { + return { data: null, error }; + } + }); + } + }; + exports2.FunctionsClient = FunctionsClient; + } +}); + +// node_modules/@supabase/functions-js/dist/main/index.js +var require_main = __commonJS({ + "node_modules/@supabase/functions-js/dist/main/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.FunctionRegion = exports2.FunctionsRelayError = exports2.FunctionsHttpError = exports2.FunctionsFetchError = exports2.FunctionsError = exports2.FunctionsClient = void 0; + var FunctionsClient_1 = require_FunctionsClient(); + Object.defineProperty(exports2, "FunctionsClient", { enumerable: true, get: function() { + return FunctionsClient_1.FunctionsClient; + } }); + var types_1 = require_types(); + Object.defineProperty(exports2, "FunctionsError", { enumerable: true, get: function() { + return types_1.FunctionsError; + } }); + Object.defineProperty(exports2, "FunctionsFetchError", { enumerable: true, get: function() { + return types_1.FunctionsFetchError; + } }); + Object.defineProperty(exports2, "FunctionsHttpError", { enumerable: true, get: function() { + return types_1.FunctionsHttpError; + } }); + Object.defineProperty(exports2, "FunctionsRelayError", { enumerable: true, get: function() { + return types_1.FunctionsRelayError; + } }); + Object.defineProperty(exports2, "FunctionRegion", { enumerable: true, get: function() { + return types_1.FunctionRegion; + } }); + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.js +var require_PostgrestError = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var PostgrestError = class extends Error { + constructor(context) { + super(context.message); + this.name = "PostgrestError"; + this.details = context.details; + this.hint = context.hint; + this.code = context.code; + } + }; + exports2.default = PostgrestError; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.js +var require_PostgrestBuilder = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var node_fetch_1 = __importDefault(require_lib2()); + var PostgrestError_1 = __importDefault(require_PostgrestError()); + var PostgrestBuilder = class { + constructor(builder) { + this.shouldThrowOnError = false; + this.method = builder.method; + this.url = builder.url; + this.headers = builder.headers; + this.schema = builder.schema; + this.body = builder.body; + this.shouldThrowOnError = builder.shouldThrowOnError; + this.signal = builder.signal; + this.isMaybeSingle = builder.isMaybeSingle; + if (builder.fetch) { + this.fetch = builder.fetch; + } else if (typeof fetch === "undefined") { + this.fetch = node_fetch_1.default; + } else { + this.fetch = fetch; + } + } + /** + * If there's an error with the query, throwOnError will reject the promise by + * throwing the error instead of returning it as part of a successful response. + * + * {@link https://github.com/supabase/supabase-js/issues/92} + */ + throwOnError() { + this.shouldThrowOnError = true; + return this; + } + /** + * Set an HTTP header for the request. + */ + setHeader(name, value) { + this.headers = Object.assign({}, this.headers); + this.headers[name] = value; + return this; + } + then(onfulfilled, onrejected) { + if (this.schema === void 0) { + } else if (["GET", "HEAD"].includes(this.method)) { + this.headers["Accept-Profile"] = this.schema; + } else { + this.headers["Content-Profile"] = this.schema; + } + if (this.method !== "GET" && this.method !== "HEAD") { + this.headers["Content-Type"] = "application/json"; + } + const _fetch = this.fetch; + let res = _fetch(this.url.toString(), { + method: this.method, + headers: this.headers, + body: JSON.stringify(this.body), + signal: this.signal + }).then(async (res2) => { + var _a, _b, _c; + let error = null; + let data = null; + let count = null; + let status = res2.status; + let statusText = res2.statusText; + if (res2.ok) { + if (this.method !== "HEAD") { + const body = await res2.text(); + if (body === "") { + } else if (this.headers["Accept"] === "text/csv") { + data = body; + } else if (this.headers["Accept"] && this.headers["Accept"].includes("application/vnd.pgrst.plan+text")) { + data = body; + } else { + data = JSON.parse(body); + } + } + const countHeader = (_a = this.headers["Prefer"]) === null || _a === void 0 ? void 0 : _a.match(/count=(exact|planned|estimated)/); + const contentRange = (_b = res2.headers.get("content-range")) === null || _b === void 0 ? void 0 : _b.split("/"); + if (countHeader && contentRange && contentRange.length > 1) { + count = parseInt(contentRange[1]); + } + if (this.isMaybeSingle && this.method === "GET" && Array.isArray(data)) { + if (data.length > 1) { + error = { + // https://github.com/PostgREST/postgrest/blob/a867d79c42419af16c18c3fb019eba8df992626f/src/PostgREST/Error.hs#L553 + code: "PGRST116", + details: `Results contain ${data.length} rows, application/vnd.pgrst.object+json requires 1 row`, + hint: null, + message: "JSON object requested, multiple (or no) rows returned" + }; + data = null; + count = null; + status = 406; + statusText = "Not Acceptable"; + } else if (data.length === 1) { + data = data[0]; + } else { + data = null; + } + } + } else { + const body = await res2.text(); + try { + error = JSON.parse(body); + if (Array.isArray(error) && res2.status === 404) { + data = []; + error = null; + status = 200; + statusText = "OK"; + } + } catch (_d) { + if (res2.status === 404 && body === "") { + status = 204; + statusText = "No Content"; + } else { + error = { + message: body + }; + } + } + if (error && this.isMaybeSingle && ((_c = error === null || error === void 0 ? void 0 : error.details) === null || _c === void 0 ? void 0 : _c.includes("0 rows"))) { + error = null; + status = 200; + statusText = "OK"; + } + if (error && this.shouldThrowOnError) { + throw new PostgrestError_1.default(error); + } + } + const postgrestResponse = { + error, + data, + count, + status, + statusText + }; + return postgrestResponse; + }); + if (!this.shouldThrowOnError) { + res = res.catch((fetchError) => { + var _a, _b, _c; + return { + error: { + message: `${(_a = fetchError === null || fetchError === void 0 ? void 0 : fetchError.name) !== null && _a !== void 0 ? _a : "FetchError"}: ${fetchError === null || fetchError === void 0 ? void 0 : fetchError.message}`, + details: `${(_b = fetchError === null || fetchError === void 0 ? void 0 : fetchError.stack) !== null && _b !== void 0 ? _b : ""}`, + hint: "", + code: `${(_c = fetchError === null || fetchError === void 0 ? void 0 : fetchError.code) !== null && _c !== void 0 ? _c : ""}` + }, + data: null, + count: null, + status: 0, + statusText: "" + }; + }); + } + return res.then(onfulfilled, onrejected); + } + /** + * Override the type of the returned `data`. + * + * @typeParam NewResult - The new result type to override with + * @deprecated Use overrideTypes() method at the end of your call chain instead + */ + returns() { + return this; + } + /** + * Override the type of the returned `data` field in the response. + * + * @typeParam NewResult - The new type to cast the response data to + * @typeParam Options - Optional type configuration (defaults to { merge: true }) + * @typeParam Options.merge - When true, merges the new type with existing return type. When false, replaces the existing types entirely (defaults to true) + * @example + * ```typescript + * // Merge with existing types (default behavior) + * const query = supabase + * .from('users') + * .select() + * .overrideTypes<{ custom_field: string }>() + * + * // Replace existing types completely + * const replaceQuery = supabase + * .from('users') + * .select() + * .overrideTypes<{ id: number; name: string }, { merge: false }>() + * ``` + * @returns A PostgrestBuilder instance with the new type + */ + overrideTypes() { + return this; + } + }; + exports2.default = PostgrestBuilder; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.js +var require_PostgrestTransformBuilder = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var PostgrestBuilder_1 = __importDefault(require_PostgrestBuilder()); + var PostgrestTransformBuilder = class extends PostgrestBuilder_1.default { + /** + * Perform a SELECT on the query result. + * + * By default, `.insert()`, `.update()`, `.upsert()`, and `.delete()` do not + * return modified rows. By calling this method, modified rows are returned in + * `data`. + * + * @param columns - The columns to retrieve, separated by commas + */ + select(columns) { + let quoted = false; + const cleanedColumns = (columns !== null && columns !== void 0 ? columns : "*").split("").map((c) => { + if (/\s/.test(c) && !quoted) { + return ""; + } + if (c === '"') { + quoted = !quoted; + } + return c; + }).join(""); + this.url.searchParams.set("select", cleanedColumns); + if (this.headers["Prefer"]) { + this.headers["Prefer"] += ","; + } + this.headers["Prefer"] += "return=representation"; + return this; + } + /** + * Order the query result by `column`. + * + * You can call this method multiple times to order by multiple columns. + * + * You can order referenced tables, but it only affects the ordering of the + * parent table if you use `!inner` in the query. + * + * @param column - The column to order by + * @param options - Named parameters + * @param options.ascending - If `true`, the result will be in ascending order + * @param options.nullsFirst - If `true`, `null`s appear first. If `false`, + * `null`s appear last. + * @param options.referencedTable - Set this to order a referenced table by + * its columns + * @param options.foreignTable - Deprecated, use `options.referencedTable` + * instead + */ + order(column, { ascending = true, nullsFirst, foreignTable, referencedTable = foreignTable } = {}) { + const key = referencedTable ? `${referencedTable}.order` : "order"; + const existingOrder = this.url.searchParams.get(key); + this.url.searchParams.set(key, `${existingOrder ? `${existingOrder},` : ""}${column}.${ascending ? "asc" : "desc"}${nullsFirst === void 0 ? "" : nullsFirst ? ".nullsfirst" : ".nullslast"}`); + return this; + } + /** + * Limit the query result by `count`. + * + * @param count - The maximum number of rows to return + * @param options - Named parameters + * @param options.referencedTable - Set this to limit rows of referenced + * tables instead of the parent table + * @param options.foreignTable - Deprecated, use `options.referencedTable` + * instead + */ + limit(count, { foreignTable, referencedTable = foreignTable } = {}) { + const key = typeof referencedTable === "undefined" ? "limit" : `${referencedTable}.limit`; + this.url.searchParams.set(key, `${count}`); + return this; + } + /** + * Limit the query result by starting at an offset `from` and ending at the offset `to`. + * Only records within this range are returned. + * This respects the query order and if there is no order clause the range could behave unexpectedly. + * The `from` and `to` values are 0-based and inclusive: `range(1, 3)` will include the second, third + * and fourth rows of the query. + * + * @param from - The starting index from which to limit the result + * @param to - The last index to which to limit the result + * @param options - Named parameters + * @param options.referencedTable - Set this to limit rows of referenced + * tables instead of the parent table + * @param options.foreignTable - Deprecated, use `options.referencedTable` + * instead + */ + range(from, to, { foreignTable, referencedTable = foreignTable } = {}) { + const keyOffset = typeof referencedTable === "undefined" ? "offset" : `${referencedTable}.offset`; + const keyLimit = typeof referencedTable === "undefined" ? "limit" : `${referencedTable}.limit`; + this.url.searchParams.set(keyOffset, `${from}`); + this.url.searchParams.set(keyLimit, `${to - from + 1}`); + return this; + } + /** + * Set the AbortSignal for the fetch request. + * + * @param signal - The AbortSignal to use for the fetch request + */ + abortSignal(signal) { + this.signal = signal; + return this; + } + /** + * Return `data` as a single object instead of an array of objects. + * + * Query result must be one row (e.g. using `.limit(1)`), otherwise this + * returns an error. + */ + single() { + this.headers["Accept"] = "application/vnd.pgrst.object+json"; + return this; + } + /** + * Return `data` as a single object instead of an array of objects. + * + * Query result must be zero or one row (e.g. using `.limit(1)`), otherwise + * this returns an error. + */ + maybeSingle() { + if (this.method === "GET") { + this.headers["Accept"] = "application/json"; + } else { + this.headers["Accept"] = "application/vnd.pgrst.object+json"; + } + this.isMaybeSingle = true; + return this; + } + /** + * Return `data` as a string in CSV format. + */ + csv() { + this.headers["Accept"] = "text/csv"; + return this; + } + /** + * Return `data` as an object in [GeoJSON](https://geojson.org) format. + */ + geojson() { + this.headers["Accept"] = "application/geo+json"; + return this; + } + /** + * Return `data` as the EXPLAIN plan for the query. + * + * You need to enable the + * [db_plan_enabled](https://supabase.com/docs/guides/database/debugging-performance#enabling-explain) + * setting before using this method. + * + * @param options - Named parameters + * + * @param options.analyze - If `true`, the query will be executed and the + * actual run time will be returned + * + * @param options.verbose - If `true`, the query identifier will be returned + * and `data` will include the output columns of the query + * + * @param options.settings - If `true`, include information on configuration + * parameters that affect query planning + * + * @param options.buffers - If `true`, include information on buffer usage + * + * @param options.wal - If `true`, include information on WAL record generation + * + * @param options.format - The format of the output, can be `"text"` (default) + * or `"json"` + */ + explain({ analyze = false, verbose = false, settings = false, buffers = false, wal = false, format = "text" } = {}) { + var _a; + const options = [ + analyze ? "analyze" : null, + verbose ? "verbose" : null, + settings ? "settings" : null, + buffers ? "buffers" : null, + wal ? "wal" : null + ].filter(Boolean).join("|"); + const forMediatype = (_a = this.headers["Accept"]) !== null && _a !== void 0 ? _a : "application/json"; + this.headers["Accept"] = `application/vnd.pgrst.plan+${format}; for="${forMediatype}"; options=${options};`; + if (format === "json") + return this; + else + return this; + } + /** + * Rollback the query. + * + * `data` will still be returned, but the query is not committed. + */ + rollback() { + var _a; + if (((_a = this.headers["Prefer"]) !== null && _a !== void 0 ? _a : "").trim().length > 0) { + this.headers["Prefer"] += ",tx=rollback"; + } else { + this.headers["Prefer"] = "tx=rollback"; + } + return this; + } + /** + * Override the type of the returned `data`. + * + * @typeParam NewResult - The new result type to override with + * @deprecated Use overrideTypes() method at the end of your call chain instead + */ + returns() { + return this; + } + }; + exports2.default = PostgrestTransformBuilder; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.js +var require_PostgrestFilterBuilder = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var PostgrestTransformBuilder_1 = __importDefault(require_PostgrestTransformBuilder()); + var PostgrestFilterBuilder = class extends PostgrestTransformBuilder_1.default { + /** + * Match only rows where `column` is equal to `value`. + * + * To check if the value of `column` is NULL, you should use `.is()` instead. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + eq(column, value) { + this.url.searchParams.append(column, `eq.${value}`); + return this; + } + /** + * Match only rows where `column` is not equal to `value`. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + neq(column, value) { + this.url.searchParams.append(column, `neq.${value}`); + return this; + } + /** + * Match only rows where `column` is greater than `value`. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + gt(column, value) { + this.url.searchParams.append(column, `gt.${value}`); + return this; + } + /** + * Match only rows where `column` is greater than or equal to `value`. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + gte(column, value) { + this.url.searchParams.append(column, `gte.${value}`); + return this; + } + /** + * Match only rows where `column` is less than `value`. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + lt(column, value) { + this.url.searchParams.append(column, `lt.${value}`); + return this; + } + /** + * Match only rows where `column` is less than or equal to `value`. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + lte(column, value) { + this.url.searchParams.append(column, `lte.${value}`); + return this; + } + /** + * Match only rows where `column` matches `pattern` case-sensitively. + * + * @param column - The column to filter on + * @param pattern - The pattern to match with + */ + like(column, pattern) { + this.url.searchParams.append(column, `like.${pattern}`); + return this; + } + /** + * Match only rows where `column` matches all of `patterns` case-sensitively. + * + * @param column - The column to filter on + * @param patterns - The patterns to match with + */ + likeAllOf(column, patterns) { + this.url.searchParams.append(column, `like(all).{${patterns.join(",")}}`); + return this; + } + /** + * Match only rows where `column` matches any of `patterns` case-sensitively. + * + * @param column - The column to filter on + * @param patterns - The patterns to match with + */ + likeAnyOf(column, patterns) { + this.url.searchParams.append(column, `like(any).{${patterns.join(",")}}`); + return this; + } + /** + * Match only rows where `column` matches `pattern` case-insensitively. + * + * @param column - The column to filter on + * @param pattern - The pattern to match with + */ + ilike(column, pattern) { + this.url.searchParams.append(column, `ilike.${pattern}`); + return this; + } + /** + * Match only rows where `column` matches all of `patterns` case-insensitively. + * + * @param column - The column to filter on + * @param patterns - The patterns to match with + */ + ilikeAllOf(column, patterns) { + this.url.searchParams.append(column, `ilike(all).{${patterns.join(",")}}`); + return this; + } + /** + * Match only rows where `column` matches any of `patterns` case-insensitively. + * + * @param column - The column to filter on + * @param patterns - The patterns to match with + */ + ilikeAnyOf(column, patterns) { + this.url.searchParams.append(column, `ilike(any).{${patterns.join(",")}}`); + return this; + } + /** + * Match only rows where `column` IS `value`. + * + * For non-boolean columns, this is only relevant for checking if the value of + * `column` is NULL by setting `value` to `null`. + * + * For boolean columns, you can also set `value` to `true` or `false` and it + * will behave the same way as `.eq()`. + * + * @param column - The column to filter on + * @param value - The value to filter with + */ + is(column, value) { + this.url.searchParams.append(column, `is.${value}`); + return this; + } + /** + * Match only rows where `column` is included in the `values` array. + * + * @param column - The column to filter on + * @param values - The values array to filter with + */ + in(column, values) { + const cleanedValues = Array.from(new Set(values)).map((s) => { + if (typeof s === "string" && new RegExp("[,()]").test(s)) + return `"${s}"`; + else + return `${s}`; + }).join(","); + this.url.searchParams.append(column, `in.(${cleanedValues})`); + return this; + } + /** + * Only relevant for jsonb, array, and range columns. Match only rows where + * `column` contains every element appearing in `value`. + * + * @param column - The jsonb, array, or range column to filter on + * @param value - The jsonb, array, or range value to filter with + */ + contains(column, value) { + if (typeof value === "string") { + this.url.searchParams.append(column, `cs.${value}`); + } else if (Array.isArray(value)) { + this.url.searchParams.append(column, `cs.{${value.join(",")}}`); + } else { + this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`); + } + return this; + } + /** + * Only relevant for jsonb, array, and range columns. Match only rows where + * every element appearing in `column` is contained by `value`. + * + * @param column - The jsonb, array, or range column to filter on + * @param value - The jsonb, array, or range value to filter with + */ + containedBy(column, value) { + if (typeof value === "string") { + this.url.searchParams.append(column, `cd.${value}`); + } else if (Array.isArray(value)) { + this.url.searchParams.append(column, `cd.{${value.join(",")}}`); + } else { + this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`); + } + return this; + } + /** + * Only relevant for range columns. Match only rows where every element in + * `column` is greater than any element in `range`. + * + * @param column - The range column to filter on + * @param range - The range to filter with + */ + rangeGt(column, range) { + this.url.searchParams.append(column, `sr.${range}`); + return this; + } + /** + * Only relevant for range columns. Match only rows where every element in + * `column` is either contained in `range` or greater than any element in + * `range`. + * + * @param column - The range column to filter on + * @param range - The range to filter with + */ + rangeGte(column, range) { + this.url.searchParams.append(column, `nxl.${range}`); + return this; + } + /** + * Only relevant for range columns. Match only rows where every element in + * `column` is less than any element in `range`. + * + * @param column - The range column to filter on + * @param range - The range to filter with + */ + rangeLt(column, range) { + this.url.searchParams.append(column, `sl.${range}`); + return this; + } + /** + * Only relevant for range columns. Match only rows where every element in + * `column` is either contained in `range` or less than any element in + * `range`. + * + * @param column - The range column to filter on + * @param range - The range to filter with + */ + rangeLte(column, range) { + this.url.searchParams.append(column, `nxr.${range}`); + return this; + } + /** + * Only relevant for range columns. Match only rows where `column` is + * mutually exclusive to `range` and there can be no element between the two + * ranges. + * + * @param column - The range column to filter on + * @param range - The range to filter with + */ + rangeAdjacent(column, range) { + this.url.searchParams.append(column, `adj.${range}`); + return this; + } + /** + * Only relevant for array and range columns. Match only rows where + * `column` and `value` have an element in common. + * + * @param column - The array or range column to filter on + * @param value - The array or range value to filter with + */ + overlaps(column, value) { + if (typeof value === "string") { + this.url.searchParams.append(column, `ov.${value}`); + } else { + this.url.searchParams.append(column, `ov.{${value.join(",")}}`); + } + return this; + } + /** + * Only relevant for text and tsvector columns. Match only rows where + * `column` matches the query string in `query`. + * + * @param column - The text or tsvector column to filter on + * @param query - The query text to match with + * @param options - Named parameters + * @param options.config - The text search configuration to use + * @param options.type - Change how the `query` text is interpreted + */ + textSearch(column, query, { config, type } = {}) { + let typePart = ""; + if (type === "plain") { + typePart = "pl"; + } else if (type === "phrase") { + typePart = "ph"; + } else if (type === "websearch") { + typePart = "w"; + } + const configPart = config === void 0 ? "" : `(${config})`; + this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`); + return this; + } + /** + * Match only rows where each column in `query` keys is equal to its + * associated value. Shorthand for multiple `.eq()`s. + * + * @param query - The object to filter with, with column names as keys mapped + * to their filter values + */ + match(query) { + Object.entries(query).forEach(([column, value]) => { + this.url.searchParams.append(column, `eq.${value}`); + }); + return this; + } + /** + * Match only rows which doesn't satisfy the filter. + * + * Unlike most filters, `opearator` and `value` are used as-is and need to + * follow [PostgREST + * syntax](https://postgrest.org/en/stable/api.html#operators). You also need + * to make sure they are properly sanitized. + * + * @param column - The column to filter on + * @param operator - The operator to be negated to filter with, following + * PostgREST syntax + * @param value - The value to filter with, following PostgREST syntax + */ + not(column, operator, value) { + this.url.searchParams.append(column, `not.${operator}.${value}`); + return this; + } + /** + * Match only rows which satisfy at least one of the filters. + * + * Unlike most filters, `filters` is used as-is and needs to follow [PostgREST + * syntax](https://postgrest.org/en/stable/api.html#operators). You also need + * to make sure it's properly sanitized. + * + * It's currently not possible to do an `.or()` filter across multiple tables. + * + * @param filters - The filters to use, following PostgREST syntax + * @param options - Named parameters + * @param options.referencedTable - Set this to filter on referenced tables + * instead of the parent table + * @param options.foreignTable - Deprecated, use `referencedTable` instead + */ + or(filters, { foreignTable, referencedTable = foreignTable } = {}) { + const key = referencedTable ? `${referencedTable}.or` : "or"; + this.url.searchParams.append(key, `(${filters})`); + return this; + } + /** + * Match only rows which satisfy the filter. This is an escape hatch - you + * should use the specific filter methods wherever possible. + * + * Unlike most filters, `opearator` and `value` are used as-is and need to + * follow [PostgREST + * syntax](https://postgrest.org/en/stable/api.html#operators). You also need + * to make sure they are properly sanitized. + * + * @param column - The column to filter on + * @param operator - The operator to filter with, following PostgREST syntax + * @param value - The value to filter with, following PostgREST syntax + */ + filter(column, operator, value) { + this.url.searchParams.append(column, `${operator}.${value}`); + return this; + } + }; + exports2.default = PostgrestFilterBuilder; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.js +var require_PostgrestQueryBuilder = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var PostgrestFilterBuilder_1 = __importDefault(require_PostgrestFilterBuilder()); + var PostgrestQueryBuilder = class { + constructor(url, { headers = {}, schema, fetch: fetch2 }) { + this.url = url; + this.headers = headers; + this.schema = schema; + this.fetch = fetch2; + } + /** + * Perform a SELECT query on the table or view. + * + * @param columns - The columns to retrieve, separated by commas. Columns can be renamed when returned with `customName:columnName` + * + * @param options - Named parameters + * + * @param options.head - When set to `true`, `data` will not be returned. + * Useful if you only need the count. + * + * @param options.count - Count algorithm to use to count rows in the table or view. + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + */ + select(columns, { head = false, count } = {}) { + const method = head ? "HEAD" : "GET"; + let quoted = false; + const cleanedColumns = (columns !== null && columns !== void 0 ? columns : "*").split("").map((c) => { + if (/\s/.test(c) && !quoted) { + return ""; + } + if (c === '"') { + quoted = !quoted; + } + return c; + }).join(""); + this.url.searchParams.set("select", cleanedColumns); + if (count) { + this.headers["Prefer"] = `count=${count}`; + } + return new PostgrestFilterBuilder_1.default({ + method, + url: this.url, + headers: this.headers, + schema: this.schema, + fetch: this.fetch, + allowEmpty: false + }); + } + /** + * Perform an INSERT into the table or view. + * + * By default, inserted rows are not returned. To return it, chain the call + * with `.select()`. + * + * @param values - The values to insert. Pass an object to insert a single row + * or an array to insert multiple rows. + * + * @param options - Named parameters + * + * @param options.count - Count algorithm to use to count inserted rows. + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + * + * @param options.defaultToNull - Make missing fields default to `null`. + * Otherwise, use the default value for the column. Only applies for bulk + * inserts. + */ + insert(values, { count, defaultToNull = true } = {}) { + const method = "POST"; + const prefersHeaders = []; + if (this.headers["Prefer"]) { + prefersHeaders.push(this.headers["Prefer"]); + } + if (count) { + prefersHeaders.push(`count=${count}`); + } + if (!defaultToNull) { + prefersHeaders.push("missing=default"); + } + this.headers["Prefer"] = prefersHeaders.join(","); + if (Array.isArray(values)) { + const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []); + if (columns.length > 0) { + const uniqueColumns = [...new Set(columns)].map((column) => `"${column}"`); + this.url.searchParams.set("columns", uniqueColumns.join(",")); + } + } + return new PostgrestFilterBuilder_1.default({ + method, + url: this.url, + headers: this.headers, + schema: this.schema, + body: values, + fetch: this.fetch, + allowEmpty: false + }); + } + /** + * Perform an UPSERT on the table or view. Depending on the column(s) passed + * to `onConflict`, `.upsert()` allows you to perform the equivalent of + * `.insert()` if a row with the corresponding `onConflict` columns doesn't + * exist, or if it does exist, perform an alternative action depending on + * `ignoreDuplicates`. + * + * By default, upserted rows are not returned. To return it, chain the call + * with `.select()`. + * + * @param values - The values to upsert with. Pass an object to upsert a + * single row or an array to upsert multiple rows. + * + * @param options - Named parameters + * + * @param options.onConflict - Comma-separated UNIQUE column(s) to specify how + * duplicate rows are determined. Two rows are duplicates if all the + * `onConflict` columns are equal. + * + * @param options.ignoreDuplicates - If `true`, duplicate rows are ignored. If + * `false`, duplicate rows are merged with existing rows. + * + * @param options.count - Count algorithm to use to count upserted rows. + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + * + * @param options.defaultToNull - Make missing fields default to `null`. + * Otherwise, use the default value for the column. This only applies when + * inserting new rows, not when merging with existing rows under + * `ignoreDuplicates: false`. This also only applies when doing bulk upserts. + */ + upsert(values, { onConflict, ignoreDuplicates = false, count, defaultToNull = true } = {}) { + const method = "POST"; + const prefersHeaders = [`resolution=${ignoreDuplicates ? "ignore" : "merge"}-duplicates`]; + if (onConflict !== void 0) + this.url.searchParams.set("on_conflict", onConflict); + if (this.headers["Prefer"]) { + prefersHeaders.push(this.headers["Prefer"]); + } + if (count) { + prefersHeaders.push(`count=${count}`); + } + if (!defaultToNull) { + prefersHeaders.push("missing=default"); + } + this.headers["Prefer"] = prefersHeaders.join(","); + if (Array.isArray(values)) { + const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []); + if (columns.length > 0) { + const uniqueColumns = [...new Set(columns)].map((column) => `"${column}"`); + this.url.searchParams.set("columns", uniqueColumns.join(",")); + } + } + return new PostgrestFilterBuilder_1.default({ + method, + url: this.url, + headers: this.headers, + schema: this.schema, + body: values, + fetch: this.fetch, + allowEmpty: false + }); + } + /** + * Perform an UPDATE on the table or view. + * + * By default, updated rows are not returned. To return it, chain the call + * with `.select()` after filters. + * + * @param values - The values to update with + * + * @param options - Named parameters + * + * @param options.count - Count algorithm to use to count updated rows. + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + */ + update(values, { count } = {}) { + const method = "PATCH"; + const prefersHeaders = []; + if (this.headers["Prefer"]) { + prefersHeaders.push(this.headers["Prefer"]); + } + if (count) { + prefersHeaders.push(`count=${count}`); + } + this.headers["Prefer"] = prefersHeaders.join(","); + return new PostgrestFilterBuilder_1.default({ + method, + url: this.url, + headers: this.headers, + schema: this.schema, + body: values, + fetch: this.fetch, + allowEmpty: false + }); + } + /** + * Perform a DELETE on the table or view. + * + * By default, deleted rows are not returned. To return it, chain the call + * with `.select()` after filters. + * + * @param options - Named parameters + * + * @param options.count - Count algorithm to use to count deleted rows. + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + */ + delete({ count } = {}) { + const method = "DELETE"; + const prefersHeaders = []; + if (count) { + prefersHeaders.push(`count=${count}`); + } + if (this.headers["Prefer"]) { + prefersHeaders.unshift(this.headers["Prefer"]); + } + this.headers["Prefer"] = prefersHeaders.join(","); + return new PostgrestFilterBuilder_1.default({ + method, + url: this.url, + headers: this.headers, + schema: this.schema, + fetch: this.fetch, + allowEmpty: false + }); + } + }; + exports2.default = PostgrestQueryBuilder; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/version.js +var require_version = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/version.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.version = void 0; + exports2.version = "0.0.0-automated"; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/constants.js +var require_constants = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DEFAULT_HEADERS = void 0; + var version_1 = require_version(); + exports2.DEFAULT_HEADERS = { "X-Client-Info": `postgrest-js/${version_1.version}` }; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.js +var require_PostgrestClient = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var PostgrestQueryBuilder_1 = __importDefault(require_PostgrestQueryBuilder()); + var PostgrestFilterBuilder_1 = __importDefault(require_PostgrestFilterBuilder()); + var constants_1 = require_constants(); + var PostgrestClient = class _PostgrestClient { + // TODO: Add back shouldThrowOnError once we figure out the typings + /** + * Creates a PostgREST client. + * + * @param url - URL of the PostgREST endpoint + * @param options - Named parameters + * @param options.headers - Custom headers + * @param options.schema - Postgres schema to switch to + * @param options.fetch - Custom fetch + */ + constructor(url, { headers = {}, schema, fetch: fetch2 } = {}) { + this.url = url; + this.headers = Object.assign(Object.assign({}, constants_1.DEFAULT_HEADERS), headers); + this.schemaName = schema; + this.fetch = fetch2; + } + /** + * Perform a query on a table or a view. + * + * @param relation - The table or view name to query + */ + from(relation) { + const url = new URL(`${this.url}/${relation}`); + return new PostgrestQueryBuilder_1.default(url, { + headers: Object.assign({}, this.headers), + schema: this.schemaName, + fetch: this.fetch + }); + } + /** + * Select a schema to query or perform an function (rpc) call. + * + * The schema needs to be on the list of exposed schemas inside Supabase. + * + * @param schema - The schema to query + */ + schema(schema) { + return new _PostgrestClient(this.url, { + headers: this.headers, + schema, + fetch: this.fetch + }); + } + /** + * Perform a function call. + * + * @param fn - The function name to call + * @param args - The arguments to pass to the function call + * @param options - Named parameters + * @param options.head - When set to `true`, `data` will not be returned. + * Useful if you only need the count. + * @param options.get - When set to `true`, the function will be called with + * read-only access mode. + * @param options.count - Count algorithm to use to count rows returned by the + * function. Only applicable for [set-returning + * functions](https://www.postgresql.org/docs/current/functions-srf.html). + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + */ + rpc(fn, args = {}, { head = false, get = false, count } = {}) { + let method; + const url = new URL(`${this.url}/rpc/${fn}`); + let body; + if (head || get) { + method = head ? "HEAD" : "GET"; + Object.entries(args).filter(([_, value]) => value !== void 0).map(([name, value]) => [name, Array.isArray(value) ? `{${value.join(",")}}` : `${value}`]).forEach(([name, value]) => { + url.searchParams.append(name, value); + }); + } else { + method = "POST"; + body = args; + } + const headers = Object.assign({}, this.headers); + if (count) { + headers["Prefer"] = `count=${count}`; + } + return new PostgrestFilterBuilder_1.default({ + method, + url, + headers, + schema: this.schemaName, + body, + fetch: this.fetch, + allowEmpty: false + }); + } + }; + exports2.default = PostgrestClient; + } +}); + +// node_modules/@supabase/postgrest-js/dist/cjs/index.js +var require_cjs = __commonJS({ + "node_modules/@supabase/postgrest-js/dist/cjs/index.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PostgrestError = exports2.PostgrestBuilder = exports2.PostgrestTransformBuilder = exports2.PostgrestFilterBuilder = exports2.PostgrestQueryBuilder = exports2.PostgrestClient = void 0; + var PostgrestClient_1 = __importDefault(require_PostgrestClient()); + exports2.PostgrestClient = PostgrestClient_1.default; + var PostgrestQueryBuilder_1 = __importDefault(require_PostgrestQueryBuilder()); + exports2.PostgrestQueryBuilder = PostgrestQueryBuilder_1.default; + var PostgrestFilterBuilder_1 = __importDefault(require_PostgrestFilterBuilder()); + exports2.PostgrestFilterBuilder = PostgrestFilterBuilder_1.default; + var PostgrestTransformBuilder_1 = __importDefault(require_PostgrestTransformBuilder()); + exports2.PostgrestTransformBuilder = PostgrestTransformBuilder_1.default; + var PostgrestBuilder_1 = __importDefault(require_PostgrestBuilder()); + exports2.PostgrestBuilder = PostgrestBuilder_1.default; + var PostgrestError_1 = __importDefault(require_PostgrestError()); + exports2.PostgrestError = PostgrestError_1.default; + exports2.default = { + PostgrestClient: PostgrestClient_1.default, + PostgrestQueryBuilder: PostgrestQueryBuilder_1.default, + PostgrestFilterBuilder: PostgrestFilterBuilder_1.default, + PostgrestTransformBuilder: PostgrestTransformBuilder_1.default, + PostgrestBuilder: PostgrestBuilder_1.default, + PostgrestError: PostgrestError_1.default + }; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/lib/version.js +var require_version2 = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/lib/version.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.version = void 0; + exports2.version = "2.11.2"; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/lib/constants.js +var require_constants2 = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/lib/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CONNECTION_STATE = exports2.TRANSPORTS = exports2.CHANNEL_EVENTS = exports2.CHANNEL_STATES = exports2.SOCKET_STATES = exports2.WS_CLOSE_NORMAL = exports2.DEFAULT_TIMEOUT = exports2.VSN = exports2.DEFAULT_HEADERS = void 0; + var version_1 = require_version2(); + exports2.DEFAULT_HEADERS = { "X-Client-Info": `realtime-js/${version_1.version}` }; + exports2.VSN = "1.0.0"; + exports2.DEFAULT_TIMEOUT = 1e4; + exports2.WS_CLOSE_NORMAL = 1e3; + var SOCKET_STATES; + (function(SOCKET_STATES2) { + SOCKET_STATES2[SOCKET_STATES2["connecting"] = 0] = "connecting"; + SOCKET_STATES2[SOCKET_STATES2["open"] = 1] = "open"; + SOCKET_STATES2[SOCKET_STATES2["closing"] = 2] = "closing"; + SOCKET_STATES2[SOCKET_STATES2["closed"] = 3] = "closed"; + })(SOCKET_STATES = exports2.SOCKET_STATES || (exports2.SOCKET_STATES = {})); + var CHANNEL_STATES; + (function(CHANNEL_STATES2) { + CHANNEL_STATES2["closed"] = "closed"; + CHANNEL_STATES2["errored"] = "errored"; + CHANNEL_STATES2["joined"] = "joined"; + CHANNEL_STATES2["joining"] = "joining"; + CHANNEL_STATES2["leaving"] = "leaving"; + })(CHANNEL_STATES = exports2.CHANNEL_STATES || (exports2.CHANNEL_STATES = {})); + var CHANNEL_EVENTS; + (function(CHANNEL_EVENTS2) { + CHANNEL_EVENTS2["close"] = "phx_close"; + CHANNEL_EVENTS2["error"] = "phx_error"; + CHANNEL_EVENTS2["join"] = "phx_join"; + CHANNEL_EVENTS2["reply"] = "phx_reply"; + CHANNEL_EVENTS2["leave"] = "phx_leave"; + CHANNEL_EVENTS2["access_token"] = "access_token"; + })(CHANNEL_EVENTS = exports2.CHANNEL_EVENTS || (exports2.CHANNEL_EVENTS = {})); + var TRANSPORTS; + (function(TRANSPORTS2) { + TRANSPORTS2["websocket"] = "websocket"; + })(TRANSPORTS = exports2.TRANSPORTS || (exports2.TRANSPORTS = {})); + var CONNECTION_STATE; + (function(CONNECTION_STATE2) { + CONNECTION_STATE2["Connecting"] = "connecting"; + CONNECTION_STATE2["Open"] = "open"; + CONNECTION_STATE2["Closing"] = "closing"; + CONNECTION_STATE2["Closed"] = "closed"; + })(CONNECTION_STATE = exports2.CONNECTION_STATE || (exports2.CONNECTION_STATE = {})); + } +}); + +// node_modules/@supabase/realtime-js/dist/main/lib/serializer.js +var require_serializer = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/lib/serializer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var Serializer = class { + constructor() { + this.HEADER_LENGTH = 1; + } + decode(rawPayload, callback) { + if (rawPayload.constructor === ArrayBuffer) { + return callback(this._binaryDecode(rawPayload)); + } + if (typeof rawPayload === "string") { + return callback(JSON.parse(rawPayload)); + } + return callback({}); + } + _binaryDecode(buffer) { + const view = new DataView(buffer); + const decoder = new TextDecoder(); + return this._decodeBroadcast(buffer, view, decoder); + } + _decodeBroadcast(buffer, view, decoder) { + const topicSize = view.getUint8(1); + const eventSize = view.getUint8(2); + let offset = this.HEADER_LENGTH + 2; + const topic = decoder.decode(buffer.slice(offset, offset + topicSize)); + offset = offset + topicSize; + const event = decoder.decode(buffer.slice(offset, offset + eventSize)); + offset = offset + eventSize; + const data = JSON.parse(decoder.decode(buffer.slice(offset, buffer.byteLength))); + return { ref: null, topic, event, payload: data }; + } + }; + exports2.default = Serializer; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/lib/timer.js +var require_timer = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/lib/timer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var Timer = class { + constructor(callback, timerCalc) { + this.callback = callback; + this.timerCalc = timerCalc; + this.timer = void 0; + this.tries = 0; + this.callback = callback; + this.timerCalc = timerCalc; + } + reset() { + this.tries = 0; + clearTimeout(this.timer); + } + // Cancels any previous scheduleTimeout and schedules callback + scheduleTimeout() { + clearTimeout(this.timer); + this.timer = setTimeout(() => { + this.tries = this.tries + 1; + this.callback(); + }, this.timerCalc(this.tries + 1)); + } + }; + exports2.default = Timer; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/lib/transformers.js +var require_transformers = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/lib/transformers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.httpEndpointURL = exports2.toTimestampString = exports2.toArray = exports2.toJson = exports2.toNumber = exports2.toBoolean = exports2.convertCell = exports2.convertColumn = exports2.convertChangeData = exports2.PostgresTypes = void 0; + var PostgresTypes; + (function(PostgresTypes2) { + PostgresTypes2["abstime"] = "abstime"; + PostgresTypes2["bool"] = "bool"; + PostgresTypes2["date"] = "date"; + PostgresTypes2["daterange"] = "daterange"; + PostgresTypes2["float4"] = "float4"; + PostgresTypes2["float8"] = "float8"; + PostgresTypes2["int2"] = "int2"; + PostgresTypes2["int4"] = "int4"; + PostgresTypes2["int4range"] = "int4range"; + PostgresTypes2["int8"] = "int8"; + PostgresTypes2["int8range"] = "int8range"; + PostgresTypes2["json"] = "json"; + PostgresTypes2["jsonb"] = "jsonb"; + PostgresTypes2["money"] = "money"; + PostgresTypes2["numeric"] = "numeric"; + PostgresTypes2["oid"] = "oid"; + PostgresTypes2["reltime"] = "reltime"; + PostgresTypes2["text"] = "text"; + PostgresTypes2["time"] = "time"; + PostgresTypes2["timestamp"] = "timestamp"; + PostgresTypes2["timestamptz"] = "timestamptz"; + PostgresTypes2["timetz"] = "timetz"; + PostgresTypes2["tsrange"] = "tsrange"; + PostgresTypes2["tstzrange"] = "tstzrange"; + })(PostgresTypes = exports2.PostgresTypes || (exports2.PostgresTypes = {})); + var convertChangeData = (columns, record, options = {}) => { + var _a; + const skipTypes = (_a = options.skipTypes) !== null && _a !== void 0 ? _a : []; + return Object.keys(record).reduce((acc, rec_key) => { + acc[rec_key] = (0, exports2.convertColumn)(rec_key, columns, record, skipTypes); + return acc; + }, {}); + }; + exports2.convertChangeData = convertChangeData; + var convertColumn = (columnName, columns, record, skipTypes) => { + const column = columns.find((x) => x.name === columnName); + const colType = column === null || column === void 0 ? void 0 : column.type; + const value = record[columnName]; + if (colType && !skipTypes.includes(colType)) { + return (0, exports2.convertCell)(colType, value); + } + return noop(value); + }; + exports2.convertColumn = convertColumn; + var convertCell = (type, value) => { + if (type.charAt(0) === "_") { + const dataType = type.slice(1, type.length); + return (0, exports2.toArray)(value, dataType); + } + switch (type) { + case PostgresTypes.bool: + return (0, exports2.toBoolean)(value); + case PostgresTypes.float4: + case PostgresTypes.float8: + case PostgresTypes.int2: + case PostgresTypes.int4: + case PostgresTypes.int8: + case PostgresTypes.numeric: + case PostgresTypes.oid: + return (0, exports2.toNumber)(value); + case PostgresTypes.json: + case PostgresTypes.jsonb: + return (0, exports2.toJson)(value); + case PostgresTypes.timestamp: + return (0, exports2.toTimestampString)(value); + // Format to be consistent with PostgREST + case PostgresTypes.abstime: + // To allow users to cast it based on Timezone + case PostgresTypes.date: + // To allow users to cast it based on Timezone + case PostgresTypes.daterange: + case PostgresTypes.int4range: + case PostgresTypes.int8range: + case PostgresTypes.money: + case PostgresTypes.reltime: + // To allow users to cast it based on Timezone + case PostgresTypes.text: + case PostgresTypes.time: + // To allow users to cast it based on Timezone + case PostgresTypes.timestamptz: + // To allow users to cast it based on Timezone + case PostgresTypes.timetz: + // To allow users to cast it based on Timezone + case PostgresTypes.tsrange: + case PostgresTypes.tstzrange: + return noop(value); + default: + return noop(value); + } + }; + exports2.convertCell = convertCell; + var noop = (value) => { + return value; + }; + var toBoolean = (value) => { + switch (value) { + case "t": + return true; + case "f": + return false; + default: + return value; + } + }; + exports2.toBoolean = toBoolean; + var toNumber = (value) => { + if (typeof value === "string") { + const parsedValue = parseFloat(value); + if (!Number.isNaN(parsedValue)) { + return parsedValue; + } + } + return value; + }; + exports2.toNumber = toNumber; + var toJson = (value) => { + if (typeof value === "string") { + try { + return JSON.parse(value); + } catch (error) { + console.log(`JSON parse error: ${error}`); + return value; + } + } + return value; + }; + exports2.toJson = toJson; + var toArray = (value, type) => { + if (typeof value !== "string") { + return value; + } + const lastIdx = value.length - 1; + const closeBrace = value[lastIdx]; + const openBrace = value[0]; + if (openBrace === "{" && closeBrace === "}") { + let arr; + const valTrim = value.slice(1, lastIdx); + try { + arr = JSON.parse("[" + valTrim + "]"); + } catch (_) { + arr = valTrim ? valTrim.split(",") : []; + } + return arr.map((val) => (0, exports2.convertCell)(type, val)); + } + return value; + }; + exports2.toArray = toArray; + var toTimestampString = (value) => { + if (typeof value === "string") { + return value.replace(" ", "T"); + } + return value; + }; + exports2.toTimestampString = toTimestampString; + var httpEndpointURL = (socketUrl) => { + let url = socketUrl; + url = url.replace(/^ws/i, "http"); + url = url.replace(/(\/socket\/websocket|\/socket|\/websocket)\/?$/i, ""); + return url.replace(/\/+$/, ""); + }; + exports2.httpEndpointURL = httpEndpointURL; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/lib/push.js +var require_push = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/lib/push.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var constants_1 = require_constants2(); + var Push = class { + /** + * Initializes the Push + * + * @param channel The Channel + * @param event The event, for example `"phx_join"` + * @param payload The payload, for example `{user_id: 123}` + * @param timeout The push timeout in milliseconds + */ + constructor(channel, event, payload = {}, timeout = constants_1.DEFAULT_TIMEOUT) { + this.channel = channel; + this.event = event; + this.payload = payload; + this.timeout = timeout; + this.sent = false; + this.timeoutTimer = void 0; + this.ref = ""; + this.receivedResp = null; + this.recHooks = []; + this.refEvent = null; + } + resend(timeout) { + this.timeout = timeout; + this._cancelRefEvent(); + this.ref = ""; + this.refEvent = null; + this.receivedResp = null; + this.sent = false; + this.send(); + } + send() { + if (this._hasReceived("timeout")) { + return; + } + this.startTimeout(); + this.sent = true; + this.channel.socket.push({ + topic: this.channel.topic, + event: this.event, + payload: this.payload, + ref: this.ref, + join_ref: this.channel._joinRef() + }); + } + updatePayload(payload) { + this.payload = Object.assign(Object.assign({}, this.payload), payload); + } + receive(status, callback) { + var _a; + if (this._hasReceived(status)) { + callback((_a = this.receivedResp) === null || _a === void 0 ? void 0 : _a.response); + } + this.recHooks.push({ status, callback }); + return this; + } + startTimeout() { + if (this.timeoutTimer) { + return; + } + this.ref = this.channel.socket._makeRef(); + this.refEvent = this.channel._replyEventName(this.ref); + const callback = (payload) => { + this._cancelRefEvent(); + this._cancelTimeout(); + this.receivedResp = payload; + this._matchReceive(payload); + }; + this.channel._on(this.refEvent, {}, callback); + this.timeoutTimer = setTimeout(() => { + this.trigger("timeout", {}); + }, this.timeout); + } + trigger(status, response) { + if (this.refEvent) + this.channel._trigger(this.refEvent, { status, response }); + } + destroy() { + this._cancelRefEvent(); + this._cancelTimeout(); + } + _cancelRefEvent() { + if (!this.refEvent) { + return; + } + this.channel._off(this.refEvent, {}); + } + _cancelTimeout() { + clearTimeout(this.timeoutTimer); + this.timeoutTimer = void 0; + } + _matchReceive({ status, response }) { + this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response)); + } + _hasReceived(status) { + return this.receivedResp && this.receivedResp.status === status; + } + }; + exports2.default = Push; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/RealtimePresence.js +var require_RealtimePresence = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/RealtimePresence.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.REALTIME_PRESENCE_LISTEN_EVENTS = void 0; + var REALTIME_PRESENCE_LISTEN_EVENTS; + (function(REALTIME_PRESENCE_LISTEN_EVENTS2) { + REALTIME_PRESENCE_LISTEN_EVENTS2["SYNC"] = "sync"; + REALTIME_PRESENCE_LISTEN_EVENTS2["JOIN"] = "join"; + REALTIME_PRESENCE_LISTEN_EVENTS2["LEAVE"] = "leave"; + })(REALTIME_PRESENCE_LISTEN_EVENTS = exports2.REALTIME_PRESENCE_LISTEN_EVENTS || (exports2.REALTIME_PRESENCE_LISTEN_EVENTS = {})); + var RealtimePresence = class _RealtimePresence { + /** + * Initializes the Presence. + * + * @param channel - The RealtimeChannel + * @param opts - The options, + * for example `{events: {state: 'state', diff: 'diff'}}` + */ + constructor(channel, opts) { + this.channel = channel; + this.state = {}; + this.pendingDiffs = []; + this.joinRef = null; + this.caller = { + onJoin: () => { + }, + onLeave: () => { + }, + onSync: () => { + } + }; + const events = (opts === null || opts === void 0 ? void 0 : opts.events) || { + state: "presence_state", + diff: "presence_diff" + }; + this.channel._on(events.state, {}, (newState) => { + const { onJoin, onLeave, onSync } = this.caller; + this.joinRef = this.channel._joinRef(); + this.state = _RealtimePresence.syncState(this.state, newState, onJoin, onLeave); + this.pendingDiffs.forEach((diff) => { + this.state = _RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave); + }); + this.pendingDiffs = []; + onSync(); + }); + this.channel._on(events.diff, {}, (diff) => { + const { onJoin, onLeave, onSync } = this.caller; + if (this.inPendingSyncState()) { + this.pendingDiffs.push(diff); + } else { + this.state = _RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave); + onSync(); + } + }); + this.onJoin((key, currentPresences, newPresences) => { + this.channel._trigger("presence", { + event: "join", + key, + currentPresences, + newPresences + }); + }); + this.onLeave((key, currentPresences, leftPresences) => { + this.channel._trigger("presence", { + event: "leave", + key, + currentPresences, + leftPresences + }); + }); + this.onSync(() => { + this.channel._trigger("presence", { event: "sync" }); + }); + } + /** + * Used to sync the list of presences on the server with the + * client's state. + * + * An optional `onJoin` and `onLeave` callback can be provided to + * react to changes in the client's local presences across + * disconnects and reconnects with the server. + * + * @internal + */ + static syncState(currentState, newState, onJoin, onLeave) { + const state = this.cloneDeep(currentState); + const transformedState = this.transformState(newState); + const joins = {}; + const leaves = {}; + this.map(state, (key, presences) => { + if (!transformedState[key]) { + leaves[key] = presences; + } + }); + this.map(transformedState, (key, newPresences) => { + const currentPresences = state[key]; + if (currentPresences) { + const newPresenceRefs = newPresences.map((m) => m.presence_ref); + const curPresenceRefs = currentPresences.map((m) => m.presence_ref); + const joinedPresences = newPresences.filter((m) => curPresenceRefs.indexOf(m.presence_ref) < 0); + const leftPresences = currentPresences.filter((m) => newPresenceRefs.indexOf(m.presence_ref) < 0); + if (joinedPresences.length > 0) { + joins[key] = joinedPresences; + } + if (leftPresences.length > 0) { + leaves[key] = leftPresences; + } + } else { + joins[key] = newPresences; + } + }); + return this.syncDiff(state, { joins, leaves }, onJoin, onLeave); + } + /** + * Used to sync a diff of presence join and leave events from the + * server, as they happen. + * + * Like `syncState`, `syncDiff` accepts optional `onJoin` and + * `onLeave` callbacks to react to a user joining or leaving from a + * device. + * + * @internal + */ + static syncDiff(state, diff, onJoin, onLeave) { + const { joins, leaves } = { + joins: this.transformState(diff.joins), + leaves: this.transformState(diff.leaves) + }; + if (!onJoin) { + onJoin = () => { + }; + } + if (!onLeave) { + onLeave = () => { + }; + } + this.map(joins, (key, newPresences) => { + var _a; + const currentPresences = (_a = state[key]) !== null && _a !== void 0 ? _a : []; + state[key] = this.cloneDeep(newPresences); + if (currentPresences.length > 0) { + const joinedPresenceRefs = state[key].map((m) => m.presence_ref); + const curPresences = currentPresences.filter((m) => joinedPresenceRefs.indexOf(m.presence_ref) < 0); + state[key].unshift(...curPresences); + } + onJoin(key, currentPresences, newPresences); + }); + this.map(leaves, (key, leftPresences) => { + let currentPresences = state[key]; + if (!currentPresences) + return; + const presenceRefsToRemove = leftPresences.map((m) => m.presence_ref); + currentPresences = currentPresences.filter((m) => presenceRefsToRemove.indexOf(m.presence_ref) < 0); + state[key] = currentPresences; + onLeave(key, currentPresences, leftPresences); + if (currentPresences.length === 0) + delete state[key]; + }); + return state; + } + /** @internal */ + static map(obj, func) { + return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key])); + } + /** + * Remove 'metas' key + * Change 'phx_ref' to 'presence_ref' + * Remove 'phx_ref' and 'phx_ref_prev' + * + * @example + * // returns { + * abc123: [ + * { presence_ref: '2', user_id: 1 }, + * { presence_ref: '3', user_id: 2 } + * ] + * } + * RealtimePresence.transformState({ + * abc123: { + * metas: [ + * { phx_ref: '2', phx_ref_prev: '1' user_id: 1 }, + * { phx_ref: '3', user_id: 2 } + * ] + * } + * }) + * + * @internal + */ + static transformState(state) { + state = this.cloneDeep(state); + return Object.getOwnPropertyNames(state).reduce((newState, key) => { + const presences = state[key]; + if ("metas" in presences) { + newState[key] = presences.metas.map((presence) => { + presence["presence_ref"] = presence["phx_ref"]; + delete presence["phx_ref"]; + delete presence["phx_ref_prev"]; + return presence; + }); + } else { + newState[key] = presences; + } + return newState; + }, {}); + } + /** @internal */ + static cloneDeep(obj) { + return JSON.parse(JSON.stringify(obj)); + } + /** @internal */ + onJoin(callback) { + this.caller.onJoin = callback; + } + /** @internal */ + onLeave(callback) { + this.caller.onLeave = callback; + } + /** @internal */ + onSync(callback) { + this.caller.onSync = callback; + } + /** @internal */ + inPendingSyncState() { + return !this.joinRef || this.joinRef !== this.channel._joinRef(); + } + }; + exports2.default = RealtimePresence; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/RealtimeChannel.js +var require_RealtimeChannel = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/RealtimeChannel.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.REALTIME_CHANNEL_STATES = exports2.REALTIME_SUBSCRIBE_STATES = exports2.REALTIME_LISTEN_TYPES = exports2.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = void 0; + var constants_1 = require_constants2(); + var push_1 = __importDefault(require_push()); + var timer_1 = __importDefault(require_timer()); + var RealtimePresence_1 = __importDefault(require_RealtimePresence()); + var Transformers = __importStar(require_transformers()); + var transformers_1 = require_transformers(); + var REALTIME_POSTGRES_CHANGES_LISTEN_EVENT; + (function(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2) { + REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2["ALL"] = "*"; + REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2["INSERT"] = "INSERT"; + REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2["UPDATE"] = "UPDATE"; + REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2["DELETE"] = "DELETE"; + })(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = exports2.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT || (exports2.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = {})); + var REALTIME_LISTEN_TYPES; + (function(REALTIME_LISTEN_TYPES2) { + REALTIME_LISTEN_TYPES2["BROADCAST"] = "broadcast"; + REALTIME_LISTEN_TYPES2["PRESENCE"] = "presence"; + REALTIME_LISTEN_TYPES2["POSTGRES_CHANGES"] = "postgres_changes"; + REALTIME_LISTEN_TYPES2["SYSTEM"] = "system"; + })(REALTIME_LISTEN_TYPES = exports2.REALTIME_LISTEN_TYPES || (exports2.REALTIME_LISTEN_TYPES = {})); + var REALTIME_SUBSCRIBE_STATES; + (function(REALTIME_SUBSCRIBE_STATES2) { + REALTIME_SUBSCRIBE_STATES2["SUBSCRIBED"] = "SUBSCRIBED"; + REALTIME_SUBSCRIBE_STATES2["TIMED_OUT"] = "TIMED_OUT"; + REALTIME_SUBSCRIBE_STATES2["CLOSED"] = "CLOSED"; + REALTIME_SUBSCRIBE_STATES2["CHANNEL_ERROR"] = "CHANNEL_ERROR"; + })(REALTIME_SUBSCRIBE_STATES = exports2.REALTIME_SUBSCRIBE_STATES || (exports2.REALTIME_SUBSCRIBE_STATES = {})); + exports2.REALTIME_CHANNEL_STATES = constants_1.CHANNEL_STATES; + var RealtimeChannel = class _RealtimeChannel { + constructor(topic, params = { config: {} }, socket) { + this.topic = topic; + this.params = params; + this.socket = socket; + this.bindings = {}; + this.state = constants_1.CHANNEL_STATES.closed; + this.joinedOnce = false; + this.pushBuffer = []; + this.subTopic = topic.replace(/^realtime:/i, ""); + this.params.config = Object.assign({ + broadcast: { ack: false, self: false }, + presence: { key: "" }, + private: false + }, params.config); + this.timeout = this.socket.timeout; + this.joinPush = new push_1.default(this, constants_1.CHANNEL_EVENTS.join, this.params, this.timeout); + this.rejoinTimer = new timer_1.default(() => this._rejoinUntilConnected(), this.socket.reconnectAfterMs); + this.joinPush.receive("ok", () => { + this.state = constants_1.CHANNEL_STATES.joined; + this.rejoinTimer.reset(); + this.pushBuffer.forEach((pushEvent) => pushEvent.send()); + this.pushBuffer = []; + }); + this._onClose(() => { + this.rejoinTimer.reset(); + this.socket.log("channel", `close ${this.topic} ${this._joinRef()}`); + this.state = constants_1.CHANNEL_STATES.closed; + this.socket._remove(this); + }); + this._onError((reason) => { + if (this._isLeaving() || this._isClosed()) { + return; + } + this.socket.log("channel", `error ${this.topic}`, reason); + this.state = constants_1.CHANNEL_STATES.errored; + this.rejoinTimer.scheduleTimeout(); + }); + this.joinPush.receive("timeout", () => { + if (!this._isJoining()) { + return; + } + this.socket.log("channel", `timeout ${this.topic}`, this.joinPush.timeout); + this.state = constants_1.CHANNEL_STATES.errored; + this.rejoinTimer.scheduleTimeout(); + }); + this._on(constants_1.CHANNEL_EVENTS.reply, {}, (payload, ref) => { + this._trigger(this._replyEventName(ref), payload); + }); + this.presence = new RealtimePresence_1.default(this); + this.broadcastEndpointURL = (0, transformers_1.httpEndpointURL)(this.socket.endPoint) + "/api/broadcast"; + this.private = this.params.config.private || false; + } + /** Subscribe registers your client with the server */ + subscribe(callback, timeout = this.timeout) { + var _a, _b; + if (!this.socket.isConnected()) { + this.socket.connect(); + } + if (this.joinedOnce) { + throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`; + } else { + const { config: { broadcast, presence, private: isPrivate } } = this.params; + this._onError((e) => callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, e)); + this._onClose(() => callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CLOSED)); + const accessTokenPayload = {}; + const config = { + broadcast, + presence, + postgres_changes: (_b = (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.map((r) => r.filter)) !== null && _b !== void 0 ? _b : [], + private: isPrivate + }; + if (this.socket.accessTokenValue) { + accessTokenPayload.access_token = this.socket.accessTokenValue; + } + this.updateJoinPayload(Object.assign({ config }, accessTokenPayload)); + this.joinedOnce = true; + this._rejoin(timeout); + this.joinPush.receive("ok", async ({ postgres_changes }) => { + var _a2; + this.socket.setAuth(); + if (postgres_changes === void 0) { + callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED); + return; + } else { + const clientPostgresBindings = this.bindings.postgres_changes; + const bindingsLen = (_a2 = clientPostgresBindings === null || clientPostgresBindings === void 0 ? void 0 : clientPostgresBindings.length) !== null && _a2 !== void 0 ? _a2 : 0; + const newPostgresBindings = []; + for (let i = 0; i < bindingsLen; i++) { + const clientPostgresBinding = clientPostgresBindings[i]; + const { filter: { event, schema, table, filter } } = clientPostgresBinding; + const serverPostgresFilter = postgres_changes && postgres_changes[i]; + if (serverPostgresFilter && serverPostgresFilter.event === event && serverPostgresFilter.schema === schema && serverPostgresFilter.table === table && serverPostgresFilter.filter === filter) { + newPostgresBindings.push(Object.assign(Object.assign({}, clientPostgresBinding), { id: serverPostgresFilter.id })); + } else { + this.unsubscribe(); + callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, new Error("mismatch between server and client bindings for postgres changes")); + return; + } + } + this.bindings.postgres_changes = newPostgresBindings; + callback && callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED); + return; + } + }).receive("error", (error) => { + callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, new Error(JSON.stringify(Object.values(error).join(", ") || "error"))); + return; + }).receive("timeout", () => { + callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.TIMED_OUT); + return; + }); + } + return this; + } + presenceState() { + return this.presence.state; + } + async track(payload, opts = {}) { + return await this.send({ + type: "presence", + event: "track", + payload + }, opts.timeout || this.timeout); + } + async untrack(opts = {}) { + return await this.send({ + type: "presence", + event: "untrack" + }, opts); + } + on(type, filter, callback) { + return this._on(type, filter, callback); + } + /** + * Sends a message into the channel. + * + * @param args Arguments to send to channel + * @param args.type The type of event to send + * @param args.event The name of the event being sent + * @param args.payload Payload to be sent + * @param opts Options to be used during the send process + */ + async send(args, opts = {}) { + var _a, _b; + if (!this._canPush() && args.type === "broadcast") { + const { event, payload: endpoint_payload } = args; + const authorization = this.socket.accessTokenValue ? `Bearer ${this.socket.accessTokenValue}` : ""; + const options = { + method: "POST", + headers: { + Authorization: authorization, + apikey: this.socket.apiKey ? this.socket.apiKey : "", + "Content-Type": "application/json" + }, + body: JSON.stringify({ + messages: [ + { + topic: this.subTopic, + event, + payload: endpoint_payload, + private: this.private + } + ] + }) + }; + try { + const response = await this._fetchWithTimeout(this.broadcastEndpointURL, options, (_a = opts.timeout) !== null && _a !== void 0 ? _a : this.timeout); + await ((_b = response.body) === null || _b === void 0 ? void 0 : _b.cancel()); + return response.ok ? "ok" : "error"; + } catch (error) { + if (error.name === "AbortError") { + return "timed out"; + } else { + return "error"; + } + } + } else { + return new Promise((resolve) => { + var _a2, _b2, _c; + const push = this._push(args.type, args, opts.timeout || this.timeout); + if (args.type === "broadcast" && !((_c = (_b2 = (_a2 = this.params) === null || _a2 === void 0 ? void 0 : _a2.config) === null || _b2 === void 0 ? void 0 : _b2.broadcast) === null || _c === void 0 ? void 0 : _c.ack)) { + resolve("ok"); + } + push.receive("ok", () => resolve("ok")); + push.receive("error", () => resolve("error")); + push.receive("timeout", () => resolve("timed out")); + }); + } + } + updateJoinPayload(payload) { + this.joinPush.updatePayload(payload); + } + /** + * Leaves the channel. + * + * Unsubscribes from server events, and instructs channel to terminate on server. + * Triggers onClose() hooks. + * + * To receive leave acknowledgements, use the a `receive` hook to bind to the server ack, ie: + * channel.unsubscribe().receive("ok", () => alert("left!") ) + */ + unsubscribe(timeout = this.timeout) { + this.state = constants_1.CHANNEL_STATES.leaving; + const onClose = () => { + this.socket.log("channel", `leave ${this.topic}`); + this._trigger(constants_1.CHANNEL_EVENTS.close, "leave", this._joinRef()); + }; + this.rejoinTimer.reset(); + this.joinPush.destroy(); + return new Promise((resolve) => { + const leavePush = new push_1.default(this, constants_1.CHANNEL_EVENTS.leave, {}, timeout); + leavePush.receive("ok", () => { + onClose(); + resolve("ok"); + }).receive("timeout", () => { + onClose(); + resolve("timed out"); + }).receive("error", () => { + resolve("error"); + }); + leavePush.send(); + if (!this._canPush()) { + leavePush.trigger("ok", {}); + } + }); + } + /** @internal */ + async _fetchWithTimeout(url, options, timeout) { + const controller = new AbortController(); + const id = setTimeout(() => controller.abort(), timeout); + const response = await this.socket.fetch(url, Object.assign(Object.assign({}, options), { signal: controller.signal })); + clearTimeout(id); + return response; + } + /** @internal */ + _push(event, payload, timeout = this.timeout) { + if (!this.joinedOnce) { + throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`; + } + let pushEvent = new push_1.default(this, event, payload, timeout); + if (this._canPush()) { + pushEvent.send(); + } else { + pushEvent.startTimeout(); + this.pushBuffer.push(pushEvent); + } + return pushEvent; + } + /** + * Overridable message hook + * + * Receives all events for specialized message handling before dispatching to the channel callbacks. + * Must return the payload, modified or unmodified. + * + * @internal + */ + _onMessage(_event, payload, _ref) { + return payload; + } + /** @internal */ + _isMember(topic) { + return this.topic === topic; + } + /** @internal */ + _joinRef() { + return this.joinPush.ref; + } + /** @internal */ + _trigger(type, payload, ref) { + var _a, _b; + const typeLower = type.toLocaleLowerCase(); + const { close, error, leave, join } = constants_1.CHANNEL_EVENTS; + const events = [close, error, leave, join]; + if (ref && events.indexOf(typeLower) >= 0 && ref !== this._joinRef()) { + return; + } + let handledPayload = this._onMessage(typeLower, payload, ref); + if (payload && !handledPayload) { + throw "channel onMessage callbacks must return the payload, modified or unmodified"; + } + if (["insert", "update", "delete"].includes(typeLower)) { + (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.filter((bind) => { + var _a2, _b2, _c; + return ((_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event) === "*" || ((_c = (_b2 = bind.filter) === null || _b2 === void 0 ? void 0 : _b2.event) === null || _c === void 0 ? void 0 : _c.toLocaleLowerCase()) === typeLower; + }).map((bind) => bind.callback(handledPayload, ref)); + } else { + (_b = this.bindings[typeLower]) === null || _b === void 0 ? void 0 : _b.filter((bind) => { + var _a2, _b2, _c, _d, _e, _f; + if (["broadcast", "presence", "postgres_changes"].includes(typeLower)) { + if ("id" in bind) { + const bindId = bind.id; + const bindEvent = (_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event; + return bindId && ((_b2 = payload.ids) === null || _b2 === void 0 ? void 0 : _b2.includes(bindId)) && (bindEvent === "*" || (bindEvent === null || bindEvent === void 0 ? void 0 : bindEvent.toLocaleLowerCase()) === ((_c = payload.data) === null || _c === void 0 ? void 0 : _c.type.toLocaleLowerCase())); + } else { + const bindEvent = (_e = (_d = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _d === void 0 ? void 0 : _d.event) === null || _e === void 0 ? void 0 : _e.toLocaleLowerCase(); + return bindEvent === "*" || bindEvent === ((_f = payload === null || payload === void 0 ? void 0 : payload.event) === null || _f === void 0 ? void 0 : _f.toLocaleLowerCase()); + } + } else { + return bind.type.toLocaleLowerCase() === typeLower; + } + }).map((bind) => { + if (typeof handledPayload === "object" && "ids" in handledPayload) { + const postgresChanges = handledPayload.data; + const { schema, table, commit_timestamp, type: type2, errors } = postgresChanges; + const enrichedPayload = { + schema, + table, + commit_timestamp, + eventType: type2, + new: {}, + old: {}, + errors + }; + handledPayload = Object.assign(Object.assign({}, enrichedPayload), this._getPayloadRecords(postgresChanges)); + } + bind.callback(handledPayload, ref); + }); + } + } + /** @internal */ + _isClosed() { + return this.state === constants_1.CHANNEL_STATES.closed; + } + /** @internal */ + _isJoined() { + return this.state === constants_1.CHANNEL_STATES.joined; + } + /** @internal */ + _isJoining() { + return this.state === constants_1.CHANNEL_STATES.joining; + } + /** @internal */ + _isLeaving() { + return this.state === constants_1.CHANNEL_STATES.leaving; + } + /** @internal */ + _replyEventName(ref) { + return `chan_reply_${ref}`; + } + /** @internal */ + _on(type, filter, callback) { + const typeLower = type.toLocaleLowerCase(); + const binding = { + type: typeLower, + filter, + callback + }; + if (this.bindings[typeLower]) { + this.bindings[typeLower].push(binding); + } else { + this.bindings[typeLower] = [binding]; + } + return this; + } + /** @internal */ + _off(type, filter) { + const typeLower = type.toLocaleLowerCase(); + this.bindings[typeLower] = this.bindings[typeLower].filter((bind) => { + var _a; + return !(((_a = bind.type) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) === typeLower && _RealtimeChannel.isEqual(bind.filter, filter)); + }); + return this; + } + /** @internal */ + static isEqual(obj1, obj2) { + if (Object.keys(obj1).length !== Object.keys(obj2).length) { + return false; + } + for (const k in obj1) { + if (obj1[k] !== obj2[k]) { + return false; + } + } + return true; + } + /** @internal */ + _rejoinUntilConnected() { + this.rejoinTimer.scheduleTimeout(); + if (this.socket.isConnected()) { + this._rejoin(); + } + } + /** + * Registers a callback that will be executed when the channel closes. + * + * @internal + */ + _onClose(callback) { + this._on(constants_1.CHANNEL_EVENTS.close, {}, callback); + } + /** + * Registers a callback that will be executed when the channel encounteres an error. + * + * @internal + */ + _onError(callback) { + this._on(constants_1.CHANNEL_EVENTS.error, {}, (reason) => callback(reason)); + } + /** + * Returns `true` if the socket is connected and the channel has been joined. + * + * @internal + */ + _canPush() { + return this.socket.isConnected() && this._isJoined(); + } + /** @internal */ + _rejoin(timeout = this.timeout) { + if (this._isLeaving()) { + return; + } + this.socket._leaveOpenTopic(this.topic); + this.state = constants_1.CHANNEL_STATES.joining; + this.joinPush.resend(timeout); + } + /** @internal */ + _getPayloadRecords(payload) { + const records = { + new: {}, + old: {} + }; + if (payload.type === "INSERT" || payload.type === "UPDATE") { + records.new = Transformers.convertChangeData(payload.columns, payload.record); + } + if (payload.type === "UPDATE" || payload.type === "DELETE") { + records.old = Transformers.convertChangeData(payload.columns, payload.old_record); + } + return records; + } + }; + exports2.default = RealtimeChannel; + } +}); + +// node_modules/ws/lib/constants.js +var require_constants3 = __commonJS({ + "node_modules/ws/lib/constants.js"(exports2, module2) { + "use strict"; + var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"]; + var hasBlob = typeof Blob !== "undefined"; + if (hasBlob) BINARY_TYPES.push("blob"); + module2.exports = { + BINARY_TYPES, + EMPTY_BUFFER: Buffer.alloc(0), + GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", + hasBlob, + kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), + kListener: Symbol("kListener"), + kStatusCode: Symbol("status-code"), + kWebSocket: Symbol("websocket"), + NOOP: () => { + } + }; + } +}); + +// node_modules/ws/lib/buffer-util.js +var require_buffer_util = __commonJS({ + "node_modules/ws/lib/buffer-util.js"(exports2, module2) { + "use strict"; + var { EMPTY_BUFFER } = require_constants3(); + var FastBuffer = Buffer[Symbol.species]; + function concat(list, totalLength) { + if (list.length === 0) return EMPTY_BUFFER; + if (list.length === 1) return list[0]; + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + for (let i = 0; i < list.length; i++) { + const buf = list[i]; + target.set(buf, offset); + offset += buf.length; + } + if (offset < totalLength) { + return new FastBuffer(target.buffer, target.byteOffset, offset); + } + return target; + } + function _mask(source, mask, output, offset, length) { + for (let i = 0; i < length; i++) { + output[offset + i] = source[i] ^ mask[i & 3]; + } + } + function _unmask(buffer, mask) { + for (let i = 0; i < buffer.length; i++) { + buffer[i] ^= mask[i & 3]; + } + } + function toArrayBuffer(buf) { + if (buf.length === buf.buffer.byteLength) { + return buf.buffer; + } + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); + } + function toBuffer(data) { + toBuffer.readOnly = true; + if (Buffer.isBuffer(data)) return data; + let buf; + if (data instanceof ArrayBuffer) { + buf = new FastBuffer(data); + } else if (ArrayBuffer.isView(data)) { + buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer.readOnly = false; + } + return buf; + } + module2.exports = { + concat, + mask: _mask, + toArrayBuffer, + toBuffer, + unmask: _unmask + }; + if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require("bufferutil"); + module2.exports.mask = function(source, mask, output, offset, length) { + if (length < 48) _mask(source, mask, output, offset, length); + else bufferUtil.mask(source, mask, output, offset, length); + }; + module2.exports.unmask = function(buffer, mask) { + if (buffer.length < 32) _unmask(buffer, mask); + else bufferUtil.unmask(buffer, mask); + }; + } catch (e) { + } + } + } +}); + +// node_modules/ws/lib/limiter.js +var require_limiter = __commonJS({ + "node_modules/ws/lib/limiter.js"(exports2, module2) { + "use strict"; + var kDone = Symbol("kDone"); + var kRun = Symbol("kRun"); + var Limiter = class { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) return; + if (this.jobs.length) { + const job = this.jobs.shift(); + this.pending++; + job(this[kDone]); + } + } + }; + module2.exports = Limiter; + } +}); + +// node_modules/ws/lib/permessage-deflate.js +var require_permessage_deflate = __commonJS({ + "node_modules/ws/lib/permessage-deflate.js"(exports2, module2) { + "use strict"; + var zlib = require("zlib"); + var bufferUtil = require_buffer_util(); + var Limiter = require_limiter(); + var { kStatusCode } = require_constants3(); + var FastBuffer = Buffer[Symbol.species]; + var TRAILER = Buffer.from([0, 0, 255, 255]); + var kPerMessageDeflate = Symbol("permessage-deflate"); + var kTotalLength = Symbol("total-length"); + var kCallback = Symbol("callback"); + var kBuffers = Symbol("buffers"); + var kError = Symbol("error"); + var zlibLimiter; + var PerMessageDeflate = class { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + this.params = null; + if (!zlibLimiter) { + const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; + zlibLimiter = new Limiter(concurrency); + } + } + /** + * @type {String} + */ + static get extensionName() { + return "permessage-deflate"; + } + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + return params; + } + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); + return this.params; + } + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + if (this._deflate) { + const callback = this._deflate[kCallback]; + this._deflate.close(); + this._deflate = null; + if (callback) { + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); + } + } + } + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { + return false; + } + return true; + }); + if (!accepted) { + throw new Error("None of the extension offers can be accepted"); + } + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === "number") { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === "number") { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { + delete accepted.client_max_window_bits; + } + return accepted; + } + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === "number") { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + return params; + } + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + value = value[0]; + if (key === "client_max_window_bits") { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === "server_max_window_bits") { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + params[key] = value; + }); + }); + return configurations; + } + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err, result) => { + done(); + callback(err, result); + }); + }); + } + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint = this._isServer ? "client" : "server"; + if (!this._inflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._inflate = zlib.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on("error", inflateOnError); + this._inflate.on("data", inflateOnData); + } + this._inflate[kCallback] = callback; + this._inflate.write(data); + if (fin) this._inflate.write(TRAILER); + this._inflate.flush(() => { + const err = this._inflate[kError]; + if (err) { + this._inflate.close(); + this._inflate = null; + callback(err); + return; + } + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._inflate.reset(); + } + } + callback(null, data2); + }); + } + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint = this._isServer ? "server" : "client"; + if (!this._deflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._deflate = zlib.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + this._deflate.on("data", deflateOnData); + } + this._deflate[kCallback] = callback; + this._deflate.write(data); + this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + return; + } + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + if (fin) { + data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4); + } + this._deflate[kCallback] = null; + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._deflate.reset(); + } + callback(null, data2); + }); + } + }; + module2.exports = PerMessageDeflate; + function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; + } + function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { + this[kBuffers].push(chunk); + return; + } + this[kError] = new RangeError("Max payload size exceeded"); + this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; + this[kError][kStatusCode] = 1009; + this.removeListener("data", inflateOnData); + this.reset(); + } + function inflateOnError(err) { + this[kPerMessageDeflate]._inflate = null; + if (this[kError]) { + this[kCallback](this[kError]); + return; + } + err[kStatusCode] = 1007; + this[kCallback](err); + } + } +}); + +// node_modules/ws/lib/validation.js +var require_validation = __commonJS({ + "node_modules/ws/lib/validation.js"(exports2, module2) { + "use strict"; + var { isUtf8 } = require("buffer"); + var { hasBlob } = require_constants3(); + var tokenChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 0 - 15 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 16 - 31 + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + // 32 - 47 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + // 48 - 63 + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 64 - 79 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + // 80 - 95 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 96 - 111 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0 + // 112 - 127 + ]; + function isValidStatusCode(code) { + return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; + } + function _isValidUTF8(buf) { + const len = buf.length; + let i = 0; + while (i < len) { + if ((buf[i] & 128) === 0) { + i++; + } else if ((buf[i] & 224) === 192) { + if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { + return false; + } + i += 2; + } else if ((buf[i] & 240) === 224) { + if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // Overlong + buf[i] === 237 && (buf[i + 1] & 224) === 160) { + return false; + } + i += 3; + } else if ((buf[i] & 248) === 240) { + if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // Overlong + buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { + return false; + } + i += 4; + } else { + return false; + } + } + return true; + } + function isBlob(value) { + return hasBlob && typeof value === "object" && typeof value.arrayBuffer === "function" && typeof value.type === "string" && typeof value.stream === "function" && (value[Symbol.toStringTag] === "Blob" || value[Symbol.toStringTag] === "File"); + } + module2.exports = { + isBlob, + isValidStatusCode, + isValidUTF8: _isValidUTF8, + tokenChars + }; + if (isUtf8) { + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); + }; + } else if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require("utf-8-validate"); + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e) { + } + } + } +}); + +// node_modules/ws/lib/receiver.js +var require_receiver = __commonJS({ + "node_modules/ws/lib/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = require("stream"); + var PerMessageDeflate = require_permessage_deflate(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + kStatusCode, + kWebSocket + } = require_constants3(); + var { concat, toArrayBuffer, unmask } = require_buffer_util(); + var { isValidStatusCode, isValidUTF8 } = require_validation(); + var FastBuffer = Buffer[Symbol.species]; + var GET_INFO = 0; + var GET_PAYLOAD_LENGTH_16 = 1; + var GET_PAYLOAD_LENGTH_64 = 2; + var GET_MASK = 3; + var GET_DATA = 4; + var INFLATING = 5; + var DEFER_EVENT = 6; + var Receiver = class extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true; + this._binaryType = options.binaryType || BINARY_TYPES[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket] = void 0; + this._bufferedBytes = 0; + this._buffers = []; + this._compressed = false; + this._payloadLength = 0; + this._mask = void 0; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + this._errored = false; + this._loop = false; + this._state = GET_INFO; + } + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 8 && this._state == GET_INFO) return cb(); + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + if (n === this._buffers[0].length) return this._buffers.shift(); + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + return new FastBuffer(buf.buffer, buf.byteOffset, n); + } + const dst = Buffer.allocUnsafe(n); + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + } + n -= buf.length; + } while (n > 0); + return dst; + } + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + this._loop = true; + do { + switch (this._state) { + case GET_INFO: + this.getInfo(cb); + break; + case GET_PAYLOAD_LENGTH_16: + this.getPayloadLength16(cb); + break; + case GET_PAYLOAD_LENGTH_64: + this.getPayloadLength64(cb); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + this.getData(cb); + break; + case INFLATING: + case DEFER_EVENT: + this._loop = false; + return; + } + } while (this._loop); + if (!this._errored) cb(); + } + /** + * Reads the first two bytes of a frame. + * + * @param {Function} cb Callback + * @private + */ + getInfo(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + const buf = this.consume(2); + if ((buf[0] & 48) !== 0) { + const error = this.createError( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); + cb(error); + return; + } + const compressed = (buf[0] & 64) === 64; + if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + this._fin = (buf[0] & 128) === 128; + this._opcode = buf[0] & 15; + this._payloadLength = buf[1] & 127; + if (this._opcode === 0) { + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (!this._fragmented) { + const error = this.createError( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._opcode = this._fragmented; + } else if (this._opcode === 1 || this._opcode === 2) { + if (this._fragmented) { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._compressed = compressed; + } else if (this._opcode > 7 && this._opcode < 11) { + if (!this._fin) { + const error = this.createError( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); + cb(error); + return; + } + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) { + const error = this.createError( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + } else { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + if (!this._fin && !this._fragmented) this._fragmented = this._opcode; + this._masked = (buf[1] & 128) === 128; + if (this._isServer) { + if (!this._masked) { + const error = this.createError( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); + cb(error); + return; + } + } else if (this._masked) { + const error = this.createError( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); + cb(error); + return; + } + if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; + else this.haveLength(cb); + } + /** + * Gets extended payload length (7+16). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength16(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + this._payloadLength = this.consume(2).readUInt16BE(0); + this.haveLength(cb); + } + /** + * Gets extended payload length (7+64). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength64(cb) { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + if (num > Math.pow(2, 53 - 32) - 1) { + const error = this.createError( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + this.haveLength(cb); + } + /** + * Payload length has been read. + * + * @param {Function} cb Callback + * @private + */ + haveLength(cb) { + if (this._payloadLength && this._opcode < 8) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + } + if (this._masked) this._state = GET_MASK; + else this._state = GET_DATA; + } + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + this._mask = this.consume(4); + this._state = GET_DATA; + } + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER; + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + data = this.consume(this._payloadLength); + if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { + unmask(data, this._mask); + } + } + if (this._opcode > 7) { + this.controlMessage(data, cb); + return; + } + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + if (data.length) { + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + this.dataMessage(cb); + } + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + perMessageDeflate.decompress(data, this._fin, (err, buf) => { + if (err) return cb(err); + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + this._fragments.push(buf); + } + this.dataMessage(cb); + if (this._state === GET_INFO) this.startLoop(cb); + }); + } + /** + * Handles a data message. + * + * @param {Function} cb Callback + * @private + */ + dataMessage(cb) { + if (!this._fin) { + this._state = GET_INFO; + return; + } + const messageLength = this._messageLength; + const fragments = this._fragments; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + if (this._opcode === 2) { + let data; + if (this._binaryType === "nodebuffer") { + data = concat(fragments, messageLength); + } else if (this._binaryType === "arraybuffer") { + data = toArrayBuffer(concat(fragments, messageLength)); + } else if (this._binaryType === "blob") { + data = new Blob(fragments); + } else { + data = fragments; + } + if (this._allowSynchronousEvents) { + this.emit("message", data, true); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", data, true); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } else { + const buf = concat(fragments, messageLength); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + if (this._state === INFLATING || this._allowSynchronousEvents) { + this.emit("message", buf, false); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", buf, false); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + } + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data, cb) { + if (this._opcode === 8) { + if (data.length === 0) { + this._loop = false; + this.emit("conclude", 1005, EMPTY_BUFFER); + this.end(); + } else { + const code = data.readUInt16BE(0); + if (!isValidStatusCode(code)) { + const error = this.createError( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); + cb(error); + return; + } + const buf = new FastBuffer( + data.buffer, + data.byteOffset + 2, + data.length - 2 + ); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + this._loop = false; + this.emit("conclude", code, buf); + this.end(); + } + this._state = GET_INFO; + return; + } + if (this._allowSynchronousEvents) { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + /** + * Builds an error object. + * + * @param {function(new:Error|RangeError)} ErrorCtor The error constructor + * @param {String} message The error message + * @param {Boolean} prefix Specifies whether or not to add a default prefix to + * `message` + * @param {Number} statusCode The status code + * @param {String} errorCode The exposed error code + * @return {(Error|RangeError)} The error + * @private + */ + createError(ErrorCtor, message, prefix, statusCode, errorCode) { + this._loop = false; + this._errored = true; + const err = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + Error.captureStackTrace(err, this.createError); + err.code = errorCode; + err[kStatusCode] = statusCode; + return err; + } + }; + module2.exports = Receiver; + } +}); + +// node_modules/ws/lib/sender.js +var require_sender = __commonJS({ + "node_modules/ws/lib/sender.js"(exports2, module2) { + "use strict"; + var { Duplex } = require("stream"); + var { randomFillSync } = require("crypto"); + var PerMessageDeflate = require_permessage_deflate(); + var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants3(); + var { isBlob, isValidStatusCode } = require_validation(); + var { mask: applyMask, toBuffer } = require_buffer_util(); + var kByteLength = Symbol("kByteLength"); + var maskBuffer = Buffer.alloc(4); + var RANDOM_POOL_SIZE = 8 * 1024; + var randomPool; + var randomPoolPointer = RANDOM_POOL_SIZE; + var DEFAULT = 0; + var DEFLATING = 1; + var GET_BLOB_DATA = 2; + var Sender = class _Sender { + /** + * Creates a Sender instance. + * + * @param {Duplex} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + this._socket = socket; + this._firstFragment = true; + this._compress = false; + this._bufferedBytes = 0; + this._queue = []; + this._state = DEFAULT; + this.onerror = NOOP; + this[kWebSocket] = void 0; + } + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge = false; + let offset = 2; + let skipMasking = false; + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + if (options.generateMask) { + options.generateMask(mask); + } else { + if (randomPoolPointer === RANDOM_POOL_SIZE) { + if (randomPool === void 0) { + randomPool = Buffer.alloc(RANDOM_POOL_SIZE); + } + randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); + randomPoolPointer = 0; + } + mask[0] = randomPool[randomPoolPointer++]; + mask[1] = randomPool[randomPoolPointer++]; + mask[2] = randomPool[randomPoolPointer++]; + mask[3] = randomPool[randomPoolPointer++]; + } + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + let dataLength; + if (typeof data === "string") { + if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge = options.mask && options.readOnly && !skipMasking; + } + let payloadLength = dataLength; + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); + target[0] = options.fin ? options.opcode | 128 : options.opcode; + if (options.rsv1) target[0] |= 64; + target[1] = payloadLength; + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + if (!options.mask) return [target, data]; + target[1] |= 128; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + if (skipMasking) return [target, data]; + if (merge) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + if (code === void 0) { + buf = EMPTY_BUFFER; + } else if (typeof code !== "number" || !isValidStatusCode(code)) { + throw new TypeError("First argument must be a valid error code number"); + } else if (data === void 0 || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + if (length > 123) { + throw new RangeError("The message must not be greater than 123 bytes"); + } + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + if (typeof data === "string") { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 8, + readOnly: false, + rsv1: false + }; + if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(buf, options), cb); + } + } + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 9, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 10, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (this._firstFragment) { + this._firstFragment = false; + if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + if (options.fin) this._firstFragment = true; + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, this._compress, opts, cb]); + } else { + this.getBlobData(data, this._compress, opts, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } + /** + * Gets the contents of a blob as binary data. + * + * @param {Blob} blob The blob + * @param {Boolean} [compress=false] Specifies whether or not to compress + * the data + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + getBlobData(blob, compress, options, cb) { + this._bufferedBytes += options[kByteLength]; + this._state = GET_BLOB_DATA; + blob.arrayBuffer().then((arrayBuffer) => { + if (this._socket.destroyed) { + const err = new Error( + "The socket was closed while the blob was being read" + ); + process.nextTick(callCallbacks, this, err, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + const data = toBuffer(arrayBuffer); + if (!compress) { + this._state = DEFAULT; + this.sendFrame(_Sender.frame(data, options), cb); + this.dequeue(); + } else { + this.dispatch(data, compress, options, cb); + } + }).catch((err) => { + process.nextTick(onError, this, err, cb); + }); + } + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(_Sender.frame(data, options), cb); + return; + } + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + this._bufferedBytes += options[kByteLength]; + this._state = DEFLATING; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err = new Error( + "The socket was closed while data was being compressed" + ); + callCallbacks(this, err, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + this._state = DEFAULT; + options.readOnly = false; + this.sendFrame(_Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (this._state === DEFAULT && this._queue.length) { + const params = this._queue.shift(); + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + /** + * Sends a frame. + * + * @param {(Buffer | String)[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } + }; + module2.exports = Sender; + function callCallbacks(sender, err, cb) { + if (typeof cb === "function") cb(err); + for (let i = 0; i < sender._queue.length; i++) { + const params = sender._queue[i]; + const callback = params[params.length - 1]; + if (typeof callback === "function") callback(err); + } + } + function onError(sender, err, cb) { + callCallbacks(sender, err, cb); + sender.onerror(err); + } + } +}); + +// node_modules/ws/lib/event-target.js +var require_event_target = __commonJS({ + "node_modules/ws/lib/event-target.js"(exports2, module2) { + "use strict"; + var { kForOnEventAttribute, kListener } = require_constants3(); + var kCode = Symbol("kCode"); + var kData = Symbol("kData"); + var kError = Symbol("kError"); + var kMessage = Symbol("kMessage"); + var kReason = Symbol("kReason"); + var kTarget = Symbol("kTarget"); + var kType = Symbol("kType"); + var kWasClean = Symbol("kWasClean"); + var Event = class { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + /** + * @type {String} + */ + get type() { + return this[kType]; + } + }; + Object.defineProperty(Event.prototype, "target", { enumerable: true }); + Object.defineProperty(Event.prototype, "type", { enumerable: true }); + var CloseEvent = class extends Event { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + this[kCode] = options.code === void 0 ? 0 : options.code; + this[kReason] = options.reason === void 0 ? "" : options.reason; + this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; + } + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } + }; + Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); + var ErrorEvent = class extends Event { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + this[kError] = options.error === void 0 ? null : options.error; + this[kMessage] = options.message === void 0 ? "" : options.message; + } + /** + * @type {*} + */ + get error() { + return this[kError]; + } + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } + }; + Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); + Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); + var MessageEvent = class extends Event { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + this[kData] = options.data === void 0 ? null : options.data; + } + /** + * @type {*} + */ + get data() { + return this[kData]; + } + }; + Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); + var EventTarget = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler2, options = {}) { + for (const listener of this.listeners(type)) { + if (!options[kForOnEventAttribute] && listener[kListener] === handler2 && !listener[kForOnEventAttribute]) { + return; + } + } + let wrapper; + if (type === "message") { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent("message", { + data: isBinary ? data : data.toString() + }); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else if (type === "close") { + wrapper = function onClose(code, message) { + const event = new CloseEvent("close", { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else if (type === "error") { + wrapper = function onError(error) { + const event = new ErrorEvent("error", { + error, + message: error.message + }); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else if (type === "open") { + wrapper = function onOpen() { + const event = new Event("open"); + event[kTarget] = this; + callListener(handler2, this, event); + }; + } else { + return; + } + wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; + wrapper[kListener] = handler2; + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler2) { + for (const listener of this.listeners(type)) { + if (listener[kListener] === handler2 && !listener[kForOnEventAttribute]) { + this.removeListener(type, listener); + break; + } + } + } + }; + module2.exports = { + CloseEvent, + ErrorEvent, + Event, + EventTarget, + MessageEvent + }; + function callListener(listener, thisArg, event) { + if (typeof listener === "object" && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } + } + } +}); + +// node_modules/ws/lib/extension.js +var require_extension = __commonJS({ + "node_modules/ws/lib/extension.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation(); + function push(dest, name, elem) { + if (dest[name] === void 0) dest[name] = [elem]; + else dest[name].push(elem); + } + function parse(header) { + const offers = /* @__PURE__ */ Object.create(null); + let params = /* @__PURE__ */ Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i = 0; + for (; i < header.length; i++) { + code = header.charCodeAt(i); + if (extensionName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const name = header.slice(start, end); + if (code === 44) { + push(offers, name, params); + params = /* @__PURE__ */ Object.create(null); + } else { + extensionName = name; + } + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (paramName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 32 || code === 9) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + push(params, header.slice(start, end), true); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + start = end = -1; + } else if (code === 61 && start !== -1 && end === -1) { + paramName = header.slice(start, i); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else { + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (start === -1) start = i; + else if (!mustUnescape) mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 34 && start !== -1) { + inQuotes = false; + end = i; + } else if (code === 92) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (code === 34 && header.charCodeAt(i - 1) === 61) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (start !== -1 && (code === 32 || code === 9)) { + if (end === -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ""); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + paramName = void 0; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + } + if (start === -1 || inQuotes || code === 32 || code === 9) { + throw new SyntaxError("Unexpected end of input"); + } + if (end === -1) end = i; + const token = header.slice(start, end); + if (extensionName === void 0) { + push(offers, token, params); + } else { + if (paramName === void 0) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, "")); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + return offers; + } + function format(extensions) { + return Object.keys(extensions).map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) configurations = [configurations]; + return configurations.map((params) => { + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); + }).join(", "); + }).join(", "); + } + module2.exports = { format, parse }; + } +}); + +// node_modules/ws/lib/websocket.js +var require_websocket = __commonJS({ + "node_modules/ws/lib/websocket.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events"); + var https = require("https"); + var http = require("http"); + var net = require("net"); + var tls = require("tls"); + var { randomBytes, createHash } = require("crypto"); + var { Duplex, Readable } = require("stream"); + var { URL: URL2 } = require("url"); + var PerMessageDeflate = require_permessage_deflate(); + var Receiver = require_receiver(); + var Sender = require_sender(); + var { isBlob } = require_validation(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP + } = require_constants3(); + var { + EventTarget: { addEventListener, removeEventListener } + } = require_event_target(); + var { format, parse } = require_extension(); + var { toBuffer } = require_buffer_util(); + var closeTimeout = 30 * 1e3; + var kAborted = Symbol("kAborted"); + var protocolVersions = [8, 13]; + var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; + var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + var WebSocket2 = class _WebSocket extends EventEmitter { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._errorEmitted = false; + this._extensions = {}; + this._paused = false; + this._protocol = ""; + this._readyState = _WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + if (protocols === void 0) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === "object" && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + initAsClient(this, address, protocols, options); + } else { + this._autoPong = options.autoPong; + this._isServer = true; + } + } + /** + * For historical reasons, the custom "nodebuffer" type is used by the default + * instead of "blob". + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) return; + this._binaryType = type; + if (this._receiver) this._receiver._binaryType = type; + } + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) return this._bufferedAmount; + return this._socket._writableState.length + this._sender._bufferedBytes; + } + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + /** + * @type {String} + */ + get url() { + return this._url; + } + /** + * Set up the socket and the internal resources. + * + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver({ + allowSynchronousEvents: options.allowSynchronousEvents, + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + const sender = new Sender(socket, this._extensions, options.generateMask); + this._receiver = receiver; + this._sender = sender; + this._socket = socket; + receiver[kWebSocket] = this; + sender[kWebSocket] = this; + socket[kWebSocket] = this; + receiver.on("conclude", receiverOnConclude); + receiver.on("drain", receiverOnDrain); + receiver.on("error", receiverOnError); + receiver.on("message", receiverOnMessage); + receiver.on("ping", receiverOnPing); + receiver.on("pong", receiverOnPong); + sender.onerror = senderOnError; + if (socket.setTimeout) socket.setTimeout(0); + if (socket.setNoDelay) socket.setNoDelay(); + if (head.length > 0) socket.unshift(head); + socket.on("close", socketOnClose); + socket.on("data", socketOnData); + socket.on("end", socketOnEnd); + socket.on("error", socketOnError); + this._readyState = _WebSocket.OPEN; + this.emit("open"); + } + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + return; + } + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + this._receiver.removeAllListeners(); + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + } + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this.readyState === _WebSocket.CLOSING) { + if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { + this._socket.end(); + } + return; + } + this._readyState = _WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err) => { + if (err) return; + this._closeFrameSent = true; + if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { + this._socket.end(); + } + }); + setCloseTimer(this); + } + /** + * Pause the socket. + * + * @public + */ + pause() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = true; + this._socket.pause(); + } + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + /** + * Resume the socket. + * + * @public + */ + resume() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = false; + if (!this._receiver._writableState.needDrain) this._socket.resume(); + } + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof options === "function") { + cb = options; + options = {}; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + const opts = { + binary: typeof data !== "string", + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this._socket) { + this._readyState = _WebSocket.CLOSING; + this._socket.destroy(); + } + } + }; + Object.defineProperty(WebSocket2, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket2.prototype, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket2, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket2.prototype, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket2, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket2.prototype, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket2, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + Object.defineProperty(WebSocket2.prototype, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + [ + "binaryType", + "bufferedAmount", + "extensions", + "isPaused", + "protocol", + "readyState", + "url" + ].forEach((property) => { + Object.defineProperty(WebSocket2.prototype, property, { enumerable: true }); + }); + ["open", "error", "close", "message"].forEach((method) => { + Object.defineProperty(WebSocket2.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) return listener[kListener]; + } + return null; + }, + set(handler2) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + if (typeof handler2 !== "function") return; + this.addEventListener(method, handler2, { + [kForOnEventAttribute]: true + }); + } + }); + }); + WebSocket2.prototype.addEventListener = addEventListener; + WebSocket2.prototype.removeEventListener = removeEventListener; + module2.exports = WebSocket2; + function initAsClient(websocket, address, protocols, options) { + const opts = { + allowSynchronousEvents: true, + autoPong: true, + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + socketPath: void 0, + hostname: void 0, + protocol: void 0, + timeout: void 0, + method: "GET", + host: void 0, + path: void 0, + port: void 0 + }; + websocket._autoPong = opts.autoPong; + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); + } + let parsedUrl; + if (address instanceof URL2) { + parsedUrl = address; + } else { + try { + parsedUrl = new URL2(address); + } catch (e) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + } + if (parsedUrl.protocol === "http:") { + parsedUrl.protocol = "ws:"; + } else if (parsedUrl.protocol === "https:") { + parsedUrl.protocol = "wss:"; + } + websocket._url = parsedUrl.href; + const isSecure = parsedUrl.protocol === "wss:"; + const isIpcUrl = parsedUrl.protocol === "ws+unix:"; + let invalidUrlMessage; + if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { + invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = "The URL contains a fragment identifier"; + } + if (invalidUrlMessage) { + const err = new SyntaxError(invalidUrlMessage); + if (websocket._redirects === 0) { + throw err; + } else { + emitErrorAndClose(websocket, err); + return; + } + } + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes(16).toString("base64"); + const request = isSecure ? https.request : http.request; + const protocolSet = /* @__PURE__ */ new Set(); + let perMessageDeflate; + opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect); + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + "Sec-WebSocket-Version": opts.protocolVersion, + "Sec-WebSocket-Key": key, + Connection: "Upgrade", + Upgrade: "websocket" + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers["Sec-WebSocket-Extensions"] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { + throw new SyntaxError( + "An invalid or duplicated subprotocol was specified" + ); + } + protocolSet.add(protocol); + } + opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers["Sec-WebSocket-Origin"] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + if (isIpcUrl) { + const parts = opts.path.split(":"); + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + let req; + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; + const headers = options && options.headers; + options = { ...options, headers: {} }; + if (headers) { + for (const [key2, value] of Object.entries(headers)) { + options.headers[key2.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount("redirect") === 0) { + const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) delete opts.headers.host; + opts.auth = void 0; + } + } + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); + } + req = websocket._req = request(opts); + if (websocket._redirects) { + websocket.emit("redirect", websocket.url, req); + } + } else { + req = websocket._req = request(opts); + } + if (opts.timeout) { + req.on("timeout", () => { + abortHandshake(websocket, req, "Opening handshake has timed out"); + }); + } + req.on("error", (err) => { + if (req === null || req[kAborted]) return; + req = websocket._req = null; + emitErrorAndClose(websocket, err); + }); + req.on("response", (res) => { + const location = res.headers.location; + const statusCode = res.statusCode; + if (location && opts.followRedirects && statusCode >= 300 && statusCode < 400) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, "Maximum redirects exceeded"); + return; + } + req.abort(); + let addr; + try { + addr = new URL2(location, address); + } catch (e) { + const err = new SyntaxError(`Invalid URL: ${location}`); + emitErrorAndClose(websocket, err); + return; + } + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit("unexpected-response", req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + req.on("upgrade", (res, socket, head) => { + websocket.emit("upgrade", res); + if (websocket.readyState !== WebSocket2.CONNECTING) return; + req = websocket._req = null; + const upgrade = res.headers.upgrade; + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } + const digest = createHash("sha1").update(key + GUID).digest("base64"); + if (res.headers["sec-websocket-accept"] !== digest) { + abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); + return; + } + const serverProt = res.headers["sec-websocket-protocol"]; + let protError; + if (serverProt !== void 0) { + if (!protocolSet.size) { + protError = "Server sent a subprotocol but none was requested"; + } else if (!protocolSet.has(serverProt)) { + protError = "Server sent an invalid subprotocol"; + } + } else if (protocolSet.size) { + protError = "Server sent no subprotocol"; + } + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + if (serverProt) websocket._protocol = serverProt; + const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; + if (secWebSocketExtensions !== void 0) { + if (!perMessageDeflate) { + const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; + abortHandshake(websocket, socket, message); + return; + } + let extensions; + try { + extensions = parse(secWebSocketExtensions); + } catch (err) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + const extensionNames = Object.keys(extensions); + if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { + const message = "Server indicated an extension that was not requested"; + abortHandshake(websocket, socket, message); + return; + } + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + websocket.setSocket(socket, head, { + allowSynchronousEvents: opts.allowSynchronousEvents, + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + if (opts.finishRequest) { + opts.finishRequest(req, websocket); + } else { + req.end(); + } + } + function emitErrorAndClose(websocket, err) { + websocket._readyState = WebSocket2.CLOSING; + websocket._errorEmitted = true; + websocket.emit("error", err); + websocket.emitClose(); + } + function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); + } + function tlsConnect(options) { + options.path = void 0; + if (!options.servername && options.servername !== "") { + options.servername = net.isIP(options.host) ? "" : options.host; + } + return tls.connect(options); + } + function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket2.CLOSING; + const err = new Error(message); + Error.captureStackTrace(err, abortHandshake); + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + if (stream.socket && !stream.socket.destroyed) { + stream.socket.destroy(); + } + process.nextTick(emitErrorAndClose, websocket, err); + } else { + stream.destroy(err); + stream.once("error", websocket.emit.bind(websocket, "error")); + stream.once("close", websocket.emitClose.bind(websocket)); + } + } + function sendAfterClose(websocket, data, cb) { + if (data) { + const length = isBlob(data) ? data.size : toBuffer(data).length; + if (websocket._socket) websocket._sender._bufferedBytes += length; + else websocket._bufferedAmount += length; + } + if (cb) { + const err = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); + process.nextTick(cb, err); + } + } + function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + if (websocket._socket[kWebSocket] === void 0) return; + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + if (code === 1005) websocket.close(); + else websocket.close(code, reason); + } + function receiverOnDrain() { + const websocket = this[kWebSocket]; + if (!websocket.isPaused) websocket._socket.resume(); + } + function receiverOnError(err) { + const websocket = this[kWebSocket]; + if (websocket._socket[kWebSocket] !== void 0) { + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + websocket.close(err[kStatusCode]); + } + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err); + } + } + function receiverOnFinish() { + this[kWebSocket].emitClose(); + } + function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit("message", data, isBinary); + } + function receiverOnPing(data) { + const websocket = this[kWebSocket]; + if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP); + websocket.emit("ping", data); + } + function receiverOnPong(data) { + this[kWebSocket].emit("pong", data); + } + function resume(stream) { + stream.resume(); + } + function senderOnError(err) { + const websocket = this[kWebSocket]; + if (websocket.readyState === WebSocket2.CLOSED) return; + if (websocket.readyState === WebSocket2.OPEN) { + websocket._readyState = WebSocket2.CLOSING; + setCloseTimer(websocket); + } + this._socket.end(); + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err); + } + } + function setCloseTimer(websocket) { + websocket._closeTimer = setTimeout( + websocket._socket.destroy.bind(websocket._socket), + closeTimeout + ); + } + function socketOnClose() { + const websocket = this[kWebSocket]; + this.removeListener("close", socketOnClose); + this.removeListener("data", socketOnData); + this.removeListener("end", socketOnEnd); + websocket._readyState = WebSocket2.CLOSING; + let chunk; + if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && (chunk = websocket._socket.read()) !== null) { + websocket._receiver.write(chunk); + } + websocket._receiver.end(); + this[kWebSocket] = void 0; + clearTimeout(websocket._closeTimer); + if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { + websocket.emitClose(); + } else { + websocket._receiver.on("error", receiverOnFinish); + websocket._receiver.on("finish", receiverOnFinish); + } + } + function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } + } + function socketOnEnd() { + const websocket = this[kWebSocket]; + websocket._readyState = WebSocket2.CLOSING; + websocket._receiver.end(); + this.end(); + } + function socketOnError() { + const websocket = this[kWebSocket]; + this.removeListener("error", socketOnError); + this.on("error", NOOP); + if (websocket) { + websocket._readyState = WebSocket2.CLOSING; + this.destroy(); + } + } + } +}); + +// node_modules/ws/lib/stream.js +var require_stream = __commonJS({ + "node_modules/ws/lib/stream.js"(exports2, module2) { + "use strict"; + var WebSocket2 = require_websocket(); + var { Duplex } = require("stream"); + function emitClose(stream) { + stream.emit("close"); + } + function duplexOnEnd() { + if (!this.destroyed && this._writableState.finished) { + this.destroy(); + } + } + function duplexOnError(err) { + this.removeListener("error", duplexOnError); + this.destroy(); + if (this.listenerCount("error") === 0) { + this.emit("error", err); + } + } + function createWebSocketStream(ws, options) { + let terminateOnDestroy = true; + const duplex = new Duplex({ + ...options, + autoDestroy: false, + emitClose: false, + objectMode: false, + writableObjectMode: false + }); + ws.on("message", function message(msg, isBinary) { + const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; + if (!duplex.push(data)) ws.pause(); + }); + ws.once("error", function error(err) { + if (duplex.destroyed) return; + terminateOnDestroy = false; + duplex.destroy(err); + }); + ws.once("close", function close() { + if (duplex.destroyed) return; + duplex.push(null); + }); + duplex._destroy = function(err, callback) { + if (ws.readyState === ws.CLOSED) { + callback(err); + process.nextTick(emitClose, duplex); + return; + } + let called = false; + ws.once("error", function error(err2) { + called = true; + callback(err2); + }); + ws.once("close", function close() { + if (!called) callback(err); + process.nextTick(emitClose, duplex); + }); + if (terminateOnDestroy) ws.terminate(); + }; + duplex._final = function(callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._final(callback); + }); + return; + } + if (ws._socket === null) return; + if (ws._socket._writableState.finished) { + callback(); + if (duplex._readableState.endEmitted) duplex.destroy(); + } else { + ws._socket.once("finish", function finish() { + callback(); + }); + ws.close(); + } + }; + duplex._read = function() { + if (ws.isPaused) ws.resume(); + }; + duplex._write = function(chunk, encoding, callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._write(chunk, encoding, callback); + }); + return; + } + ws.send(chunk, callback); + }; + duplex.on("end", duplexOnEnd); + duplex.on("error", duplexOnError); + return duplex; + } + module2.exports = createWebSocketStream; + } +}); + +// node_modules/ws/lib/subprotocol.js +var require_subprotocol = __commonJS({ + "node_modules/ws/lib/subprotocol.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation(); + function parse(header) { + const protocols = /* @__PURE__ */ new Set(); + let start = -1; + let end = -1; + let i = 0; + for (i; i < header.length; i++) { + const code = header.charCodeAt(i); + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const protocol2 = header.slice(start, end); + if (protocols.has(protocol2)) { + throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); + } + protocols.add(protocol2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + if (start === -1 || end !== -1) { + throw new SyntaxError("Unexpected end of input"); + } + const protocol = header.slice(start, i); + if (protocols.has(protocol)) { + throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); + } + protocols.add(protocol); + return protocols; + } + module2.exports = { parse }; + } +}); + +// node_modules/ws/lib/websocket-server.js +var require_websocket_server = __commonJS({ + "node_modules/ws/lib/websocket-server.js"(exports2, module2) { + "use strict"; + var EventEmitter = require("events"); + var http = require("http"); + var { Duplex } = require("stream"); + var { createHash } = require("crypto"); + var extension = require_extension(); + var PerMessageDeflate = require_permessage_deflate(); + var subprotocol = require_subprotocol(); + var WebSocket2 = require_websocket(); + var { GUID, kWebSocket } = require_constants3(); + var keyRegex = /^[+/0-9A-Za-z]{22}==$/; + var RUNNING = 0; + var CLOSING = 1; + var CLOSED = 2; + var WebSocketServer = class extends EventEmitter { + /** + * Create a `WebSocketServer` instance. + * + * @param {Object} options Configuration options + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Boolean} [options.autoPong=true] Specifies whether or not to + * automatically send a pong in response to a ping + * @param {Number} [options.backlog=511] The maximum length of the queue of + * pending connections + * @param {Boolean} [options.clientTracking=true] Specifies whether or not to + * track clients + * @param {Function} [options.handleProtocols] A hook to handle protocols + * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Boolean} [options.noServer=false] Enable no server mode + * @param {String} [options.path] Accept only connections matching this path + * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable + * permessage-deflate + * @param {Number} [options.port] The port where to bind the server + * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S + * server to use + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @param {Function} [options.verifyClient] A hook to reject connections + * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` + * class to use. It must be the `WebSocket` class or class that extends it + * @param {Function} [callback] A listener for the `listening` event + */ + constructor(options, callback) { + super(); + options = { + allowSynchronousEvents: true, + autoPong: true, + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: false, + handleProtocols: null, + clientTracking: true, + verifyClient: null, + noServer: false, + backlog: null, + // use default (511 as implemented in net.js) + server: null, + host: null, + path: null, + port: null, + WebSocket: WebSocket2, + ...options + }; + if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); + } + if (options.port != null) { + this._server = http.createServer((req, res) => { + const body = http.STATUS_CODES[426]; + res.writeHead(426, { + "Content-Length": body.length, + "Content-Type": "text/plain" + }); + res.end(body); + }); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); + } else if (options.server) { + this._server = options.server; + } + if (this._server) { + const emitConnection = this.emit.bind(this, "connection"); + this._removeListeners = addListeners(this._server, { + listening: this.emit.bind(this, "listening"), + error: this.emit.bind(this, "error"), + upgrade: (req, socket, head) => { + this.handleUpgrade(req, socket, head, emitConnection); + } + }); + } + if (options.perMessageDeflate === true) options.perMessageDeflate = {}; + if (options.clientTracking) { + this.clients = /* @__PURE__ */ new Set(); + this._shouldEmitClose = false; + } + this.options = options; + this._state = RUNNING; + } + /** + * Returns the bound address, the address family name, and port of the server + * as reported by the operating system if listening on an IP socket. + * If the server is listening on a pipe or UNIX domain socket, the name is + * returned as a string. + * + * @return {(Object|String|null)} The address of the server + * @public + */ + address() { + if (this.options.noServer) { + throw new Error('The server is operating in "noServer" mode'); + } + if (!this._server) return null; + return this._server.address(); + } + /** + * Stop the server from accepting new connections and emit the `'close'` event + * when all existing connections are closed. + * + * @param {Function} [cb] A one-time listener for the `'close'` event + * @public + */ + close(cb) { + if (this._state === CLOSED) { + if (cb) { + this.once("close", () => { + cb(new Error("The server is not running")); + }); + } + process.nextTick(emitClose, this); + return; + } + if (cb) this.once("close", cb); + if (this._state === CLOSING) return; + this._state = CLOSING; + if (this.options.noServer || this.options.server) { + if (this._server) { + this._removeListeners(); + this._removeListeners = this._server = null; + } + if (this.clients) { + if (!this.clients.size) { + process.nextTick(emitClose, this); + } else { + this._shouldEmitClose = true; + } + } else { + process.nextTick(emitClose, this); + } + } else { + const server = this._server; + this._removeListeners(); + this._removeListeners = this._server = null; + server.close(() => { + emitClose(this); + }); + } + } + /** + * See if a given request should be handled by this server instance. + * + * @param {http.IncomingMessage} req Request object to inspect + * @return {Boolean} `true` if the request is valid, else `false` + * @public + */ + shouldHandle(req) { + if (this.options.path) { + const index = req.url.indexOf("?"); + const pathname = index !== -1 ? req.url.slice(0, index) : req.url; + if (pathname !== this.options.path) return false; + } + return true; + } + /** + * Handle a HTTP Upgrade request. + * + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @public + */ + handleUpgrade(req, socket, head, cb) { + socket.on("error", socketOnError); + const key = req.headers["sec-websocket-key"]; + const upgrade = req.headers.upgrade; + const version = +req.headers["sec-websocket-version"]; + if (req.method !== "GET") { + const message = "Invalid HTTP method"; + abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); + return; + } + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + const message = "Invalid Upgrade header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (key === void 0 || !keyRegex.test(key)) { + const message = "Missing or invalid Sec-WebSocket-Key header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (version !== 8 && version !== 13) { + const message = "Missing or invalid Sec-WebSocket-Version header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (!this.shouldHandle(req)) { + abortHandshake(socket, 400); + return; + } + const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; + let protocols = /* @__PURE__ */ new Set(); + if (secWebSocketProtocol !== void 0) { + try { + protocols = subprotocol.parse(secWebSocketProtocol); + } catch (err) { + const message = "Invalid Sec-WebSocket-Protocol header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; + const extensions = {}; + if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); + try { + const offers = extension.parse(secWebSocketExtensions); + if (offers[PerMessageDeflate.extensionName]) { + perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); + extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + } catch (err) { + const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + if (this.options.verifyClient) { + const info = { + origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], + secure: !!(req.socket.authorized || req.socket.encrypted), + req + }; + if (this.options.verifyClient.length === 2) { + this.options.verifyClient(info, (verified, code, message, headers) => { + if (!verified) { + return abortHandshake(socket, code || 401, message, headers); + } + this.completeUpgrade( + extensions, + key, + protocols, + req, + socket, + head, + cb + ); + }); + return; + } + if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); + } + this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); + } + /** + * Upgrade the connection to WebSocket. + * + * @param {Object} extensions The accepted extensions + * @param {String} key The value of the `Sec-WebSocket-Key` header + * @param {Set} protocols The subprotocols + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @throws {Error} If called more than once with the same socket + * @private + */ + completeUpgrade(extensions, key, protocols, req, socket, head, cb) { + if (!socket.readable || !socket.writable) return socket.destroy(); + if (socket[kWebSocket]) { + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); + } + if (this._state > RUNNING) return abortHandshake(socket, 503); + const digest = createHash("sha1").update(key + GUID).digest("base64"); + const headers = [ + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Connection: Upgrade", + `Sec-WebSocket-Accept: ${digest}` + ]; + const ws = new this.options.WebSocket(null, void 0, this.options); + if (protocols.size) { + const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; + if (protocol) { + headers.push(`Sec-WebSocket-Protocol: ${protocol}`); + ws._protocol = protocol; + } + } + if (extensions[PerMessageDeflate.extensionName]) { + const params = extensions[PerMessageDeflate.extensionName].params; + const value = extension.format({ + [PerMessageDeflate.extensionName]: [params] + }); + headers.push(`Sec-WebSocket-Extensions: ${value}`); + ws._extensions = extensions; + } + this.emit("headers", headers, req); + socket.write(headers.concat("\r\n").join("\r\n")); + socket.removeListener("error", socketOnError); + ws.setSocket(socket, head, { + allowSynchronousEvents: this.options.allowSynchronousEvents, + maxPayload: this.options.maxPayload, + skipUTF8Validation: this.options.skipUTF8Validation + }); + if (this.clients) { + this.clients.add(ws); + ws.on("close", () => { + this.clients.delete(ws); + if (this._shouldEmitClose && !this.clients.size) { + process.nextTick(emitClose, this); + } + }); + } + cb(ws, req); + } + }; + module2.exports = WebSocketServer; + function addListeners(server, map) { + for (const event of Object.keys(map)) server.on(event, map[event]); + return function removeListeners() { + for (const event of Object.keys(map)) { + server.removeListener(event, map[event]); + } + }; + } + function emitClose(server) { + server._state = CLOSED; + server.emit("close"); + } + function socketOnError() { + this.destroy(); + } + function abortHandshake(socket, code, message, headers) { + message = message || http.STATUS_CODES[code]; + headers = { + Connection: "close", + "Content-Type": "text/html", + "Content-Length": Buffer.byteLength(message), + ...headers + }; + socket.once("finish", socket.destroy); + socket.end( + `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message + ); + } + function abortHandshakeOrEmitwsClientError(server, req, socket, code, message) { + if (server.listenerCount("wsClientError")) { + const err = new Error(message); + Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError); + server.emit("wsClientError", err, socket, req); + } else { + abortHandshake(socket, code, message); + } + } + } +}); + +// node_modules/ws/index.js +var require_ws = __commonJS({ + "node_modules/ws/index.js"(exports2, module2) { + "use strict"; + var WebSocket2 = require_websocket(); + WebSocket2.createWebSocketStream = require_stream(); + WebSocket2.Server = require_websocket_server(); + WebSocket2.Receiver = require_receiver(); + WebSocket2.Sender = require_sender(); + WebSocket2.WebSocket = WebSocket2; + WebSocket2.WebSocketServer = WebSocket2.Server; + module2.exports = WebSocket2; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/RealtimeClient.js +var require_RealtimeClient = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/RealtimeClient.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var constants_1 = require_constants2(); + var serializer_1 = __importDefault(require_serializer()); + var timer_1 = __importDefault(require_timer()); + var transformers_1 = require_transformers(); + var RealtimeChannel_1 = __importDefault(require_RealtimeChannel()); + var noop = () => { + }; + var NATIVE_WEBSOCKET_AVAILABLE = typeof WebSocket !== "undefined"; + var WORKER_SCRIPT = ` + addEventListener("message", (e) => { + if (e.data.event === "start") { + setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval); + } + });`; + var RealtimeClient = class { + /** + * Initializes the Socket. + * + * @param endPoint The string WebSocket endpoint, ie, "ws://example.com/socket", "wss://example.com", "/socket" (inherited host & protocol) + * @param httpEndpoint The string HTTP endpoint, ie, "https://example.com", "/" (inherited host & protocol) + * @param options.transport The Websocket Transport, for example WebSocket. + * @param options.timeout The default timeout in milliseconds to trigger push timeouts. + * @param options.params The optional params to pass when connecting. + * @param options.headers The optional headers to pass when connecting. + * @param options.heartbeatIntervalMs The millisec interval to send a heartbeat message. + * @param options.logger The optional function for specialized logging, ie: logger: (kind, msg, data) => { console.log(`${kind}: ${msg}`, data) } + * @param options.encode The function to encode outgoing messages. Defaults to JSON: (payload, callback) => callback(JSON.stringify(payload)) + * @param options.decode The function to decode incoming messages. Defaults to Serializer's decode. + * @param options.reconnectAfterMs he optional function that returns the millsec reconnect interval. Defaults to stepped backoff off. + * @param options.worker Use Web Worker to set a side flow. Defaults to false. + * @param options.workerUrl The URL of the worker script. Defaults to https://realtime.supabase.com/worker.js that includes a heartbeat event call to keep the connection alive. + */ + constructor(endPoint, options) { + var _a; + this.accessTokenValue = null; + this.apiKey = null; + this.channels = []; + this.endPoint = ""; + this.httpEndpoint = ""; + this.headers = constants_1.DEFAULT_HEADERS; + this.params = {}; + this.timeout = constants_1.DEFAULT_TIMEOUT; + this.heartbeatIntervalMs = 3e4; + this.heartbeatTimer = void 0; + this.pendingHeartbeatRef = null; + this.ref = 0; + this.logger = noop; + this.conn = null; + this.sendBuffer = []; + this.serializer = new serializer_1.default(); + this.stateChangeCallbacks = { + open: [], + close: [], + error: [], + message: [] + }; + this.accessToken = null; + this._resolveFetch = (customFetch) => { + let _fetch; + if (customFetch) { + _fetch = customFetch; + } else if (typeof fetch === "undefined") { + _fetch = (...args) => Promise.resolve().then(() => __importStar(require_lib2())).then(({ default: fetch2 }) => fetch2(...args)); + } else { + _fetch = fetch; + } + return (...args) => _fetch(...args); + }; + this.endPoint = `${endPoint}/${constants_1.TRANSPORTS.websocket}`; + this.httpEndpoint = (0, transformers_1.httpEndpointURL)(endPoint); + if (options === null || options === void 0 ? void 0 : options.transport) { + this.transport = options.transport; + } else { + this.transport = null; + } + if (options === null || options === void 0 ? void 0 : options.params) + this.params = options.params; + if (options === null || options === void 0 ? void 0 : options.headers) + this.headers = Object.assign(Object.assign({}, this.headers), options.headers); + if (options === null || options === void 0 ? void 0 : options.timeout) + this.timeout = options.timeout; + if (options === null || options === void 0 ? void 0 : options.logger) + this.logger = options.logger; + if (options === null || options === void 0 ? void 0 : options.heartbeatIntervalMs) + this.heartbeatIntervalMs = options.heartbeatIntervalMs; + const accessTokenValue = (_a = options === null || options === void 0 ? void 0 : options.params) === null || _a === void 0 ? void 0 : _a.apikey; + if (accessTokenValue) { + this.accessTokenValue = accessTokenValue; + this.apiKey = accessTokenValue; + } + this.reconnectAfterMs = (options === null || options === void 0 ? void 0 : options.reconnectAfterMs) ? options.reconnectAfterMs : (tries) => { + return [1e3, 2e3, 5e3, 1e4][tries - 1] || 1e4; + }; + this.encode = (options === null || options === void 0 ? void 0 : options.encode) ? options.encode : (payload, callback) => { + return callback(JSON.stringify(payload)); + }; + this.decode = (options === null || options === void 0 ? void 0 : options.decode) ? options.decode : this.serializer.decode.bind(this.serializer); + this.reconnectTimer = new timer_1.default(async () => { + this.disconnect(); + this.connect(); + }, this.reconnectAfterMs); + this.fetch = this._resolveFetch(options === null || options === void 0 ? void 0 : options.fetch); + if (options === null || options === void 0 ? void 0 : options.worker) { + if (typeof window !== "undefined" && !window.Worker) { + throw new Error("Web Worker is not supported"); + } + this.worker = (options === null || options === void 0 ? void 0 : options.worker) || false; + this.workerUrl = options === null || options === void 0 ? void 0 : options.workerUrl; + } + this.accessToken = (options === null || options === void 0 ? void 0 : options.accessToken) || null; + } + /** + * Connects the socket, unless already connected. + */ + connect() { + if (this.conn) { + return; + } + if (this.transport) { + this.conn = new this.transport(this.endpointURL(), void 0, { + headers: this.headers + }); + return; + } + if (NATIVE_WEBSOCKET_AVAILABLE) { + this.conn = new WebSocket(this.endpointURL()); + this.setupConnection(); + return; + } + this.conn = new WSWebSocketDummy(this.endpointURL(), void 0, { + close: () => { + this.conn = null; + } + }); + Promise.resolve().then(() => __importStar(require_ws())).then(({ default: WS }) => { + this.conn = new WS(this.endpointURL(), void 0, { + headers: this.headers + }); + this.setupConnection(); + }); + } + /** + * Returns the URL of the websocket. + * @returns string The URL of the websocket. + */ + endpointURL() { + return this._appendParams(this.endPoint, Object.assign({}, this.params, { vsn: constants_1.VSN })); + } + /** + * Disconnects the socket. + * + * @param code A numeric status code to send on disconnect. + * @param reason A custom reason for the disconnect. + */ + disconnect(code, reason) { + if (this.conn) { + this.conn.onclose = function() { + }; + if (code) { + this.conn.close(code, reason !== null && reason !== void 0 ? reason : ""); + } else { + this.conn.close(); + } + this.conn = null; + this.heartbeatTimer && clearInterval(this.heartbeatTimer); + this.reconnectTimer.reset(); + } + } + /** + * Returns all created channels + */ + getChannels() { + return this.channels; + } + /** + * Unsubscribes and removes a single channel + * @param channel A RealtimeChannel instance + */ + async removeChannel(channel) { + const status = await channel.unsubscribe(); + if (this.channels.length === 0) { + this.disconnect(); + } + return status; + } + /** + * Unsubscribes and removes all channels + */ + async removeAllChannels() { + const values_1 = await Promise.all(this.channels.map((channel) => channel.unsubscribe())); + this.disconnect(); + return values_1; + } + /** + * Logs the message. + * + * For customized logging, `this.logger` can be overridden. + */ + log(kind, msg, data) { + this.logger(kind, msg, data); + } + /** + * Returns the current state of the socket. + */ + connectionState() { + switch (this.conn && this.conn.readyState) { + case constants_1.SOCKET_STATES.connecting: + return constants_1.CONNECTION_STATE.Connecting; + case constants_1.SOCKET_STATES.open: + return constants_1.CONNECTION_STATE.Open; + case constants_1.SOCKET_STATES.closing: + return constants_1.CONNECTION_STATE.Closing; + default: + return constants_1.CONNECTION_STATE.Closed; + } + } + /** + * Returns `true` is the connection is open. + */ + isConnected() { + return this.connectionState() === constants_1.CONNECTION_STATE.Open; + } + channel(topic, params = { config: {} }) { + const chan = new RealtimeChannel_1.default(`realtime:${topic}`, params, this); + this.channels.push(chan); + return chan; + } + /** + * Push out a message if the socket is connected. + * + * If the socket is not connected, the message gets enqueued within a local buffer, and sent out when a connection is next established. + */ + push(data) { + const { topic, event, payload, ref } = data; + const callback = () => { + this.encode(data, (result) => { + var _a; + (_a = this.conn) === null || _a === void 0 ? void 0 : _a.send(result); + }); + }; + this.log("push", `${topic} ${event} (${ref})`, payload); + if (this.isConnected()) { + callback(); + } else { + this.sendBuffer.push(callback); + } + } + /** + * Sets the JWT access token used for channel subscription authorization and Realtime RLS. + * + * If param is null it will use the `accessToken` callback function or the token set on the client. + * + * On callback used, it will set the value of the token internal to the client. + * + * @param token A JWT string to override the token set on the client. + */ + async setAuth(token = null) { + let tokenToSend = token || this.accessToken && await this.accessToken() || this.accessTokenValue; + if (tokenToSend) { + let parsed = null; + try { + parsed = JSON.parse(atob(tokenToSend.split(".")[1])); + } catch (_error) { + } + if (parsed && parsed.exp) { + let now = Math.floor(Date.now() / 1e3); + let valid = now - parsed.exp < 0; + if (!valid) { + this.log("auth", `InvalidJWTToken: Invalid value for JWT claim "exp" with value ${parsed.exp}`); + return Promise.reject(`InvalidJWTToken: Invalid value for JWT claim "exp" with value ${parsed.exp}`); + } + } + this.accessTokenValue = tokenToSend; + this.channels.forEach((channel) => { + tokenToSend && channel.updateJoinPayload({ access_token: tokenToSend }); + if (channel.joinedOnce && channel._isJoined()) { + channel._push(constants_1.CHANNEL_EVENTS.access_token, { + access_token: tokenToSend + }); + } + }); + } + } + /** + * Sends a heartbeat message if the socket is connected. + */ + async sendHeartbeat() { + var _a; + if (!this.isConnected()) { + return; + } + if (this.pendingHeartbeatRef) { + this.pendingHeartbeatRef = null; + this.log("transport", "heartbeat timeout. Attempting to re-establish connection"); + (_a = this.conn) === null || _a === void 0 ? void 0 : _a.close(constants_1.WS_CLOSE_NORMAL, "hearbeat timeout"); + return; + } + this.pendingHeartbeatRef = this._makeRef(); + this.push({ + topic: "phoenix", + event: "heartbeat", + payload: {}, + ref: this.pendingHeartbeatRef + }); + this.setAuth(); + } + /** + * Flushes send buffer + */ + flushSendBuffer() { + if (this.isConnected() && this.sendBuffer.length > 0) { + this.sendBuffer.forEach((callback) => callback()); + this.sendBuffer = []; + } + } + /** + * Return the next message ref, accounting for overflows + * + * @internal + */ + _makeRef() { + let newRef = this.ref + 1; + if (newRef === this.ref) { + this.ref = 0; + } else { + this.ref = newRef; + } + return this.ref.toString(); + } + /** + * Unsubscribe from channels with the specified topic. + * + * @internal + */ + _leaveOpenTopic(topic) { + let dupChannel = this.channels.find((c) => c.topic === topic && (c._isJoined() || c._isJoining())); + if (dupChannel) { + this.log("transport", `leaving duplicate topic "${topic}"`); + dupChannel.unsubscribe(); + } + } + /** + * Removes a subscription from the socket. + * + * @param channel An open subscription. + * + * @internal + */ + _remove(channel) { + this.channels = this.channels.filter((c) => c._joinRef() !== channel._joinRef()); + } + /** + * Sets up connection handlers. + * + * @internal + */ + setupConnection() { + if (this.conn) { + this.conn.binaryType = "arraybuffer"; + this.conn.onopen = () => this._onConnOpen(); + this.conn.onerror = (error) => this._onConnError(error); + this.conn.onmessage = (event) => this._onConnMessage(event); + this.conn.onclose = (event) => this._onConnClose(event); + } + } + /** @internal */ + _onConnMessage(rawMessage) { + this.decode(rawMessage.data, (msg) => { + let { topic, event, payload, ref } = msg; + if (ref && ref === this.pendingHeartbeatRef) { + this.pendingHeartbeatRef = null; + } + this.log("receive", `${payload.status || ""} ${topic} ${event} ${ref && "(" + ref + ")" || ""}`, payload); + this.channels.filter((channel) => channel._isMember(topic)).forEach((channel) => channel._trigger(event, payload, ref)); + this.stateChangeCallbacks.message.forEach((callback) => callback(msg)); + }); + } + /** @internal */ + async _onConnOpen() { + this.log("transport", `connected to ${this.endpointURL()}`); + this.flushSendBuffer(); + this.reconnectTimer.reset(); + if (!this.worker) { + this.heartbeatTimer && clearInterval(this.heartbeatTimer); + this.heartbeatTimer = setInterval(() => this.sendHeartbeat(), this.heartbeatIntervalMs); + } else { + if (this.workerUrl) { + this.log("worker", `starting worker for from ${this.workerUrl}`); + } else { + this.log("worker", `starting default worker`); + } + const objectUrl = this._workerObjectUrl(this.workerUrl); + this.workerRef = new Worker(objectUrl); + this.workerRef.onerror = (error) => { + this.log("worker", "worker error", error.message); + this.workerRef.terminate(); + }; + this.workerRef.onmessage = (event) => { + if (event.data.event === "keepAlive") { + this.sendHeartbeat(); + } + }; + this.workerRef.postMessage({ + event: "start", + interval: this.heartbeatIntervalMs + }); + } + this.stateChangeCallbacks.open.forEach((callback) => callback()); + } + /** @internal */ + _onConnClose(event) { + this.log("transport", "close", event); + this._triggerChanError(); + this.heartbeatTimer && clearInterval(this.heartbeatTimer); + this.reconnectTimer.scheduleTimeout(); + this.stateChangeCallbacks.close.forEach((callback) => callback(event)); + } + /** @internal */ + _onConnError(error) { + this.log("transport", error.message); + this._triggerChanError(); + this.stateChangeCallbacks.error.forEach((callback) => callback(error)); + } + /** @internal */ + _triggerChanError() { + this.channels.forEach((channel) => channel._trigger(constants_1.CHANNEL_EVENTS.error)); + } + /** @internal */ + _appendParams(url, params) { + if (Object.keys(params).length === 0) { + return url; + } + const prefix = url.match(/\?/) ? "&" : "?"; + const query = new URLSearchParams(params); + return `${url}${prefix}${query}`; + } + _workerObjectUrl(url) { + let result_url; + if (url) { + result_url = url; + } else { + const blob = new Blob([WORKER_SCRIPT], { type: "application/javascript" }); + result_url = URL.createObjectURL(blob); + } + return result_url; + } + }; + exports2.default = RealtimeClient; + var WSWebSocketDummy = class { + constructor(address, _protocols, options) { + this.binaryType = "arraybuffer"; + this.onclose = () => { + }; + this.onerror = () => { + }; + this.onmessage = () => { + }; + this.onopen = () => { + }; + this.readyState = constants_1.SOCKET_STATES.connecting; + this.send = () => { + }; + this.url = null; + this.url = address; + this.close = options.close; + } + }; + } +}); + +// node_modules/@supabase/realtime-js/dist/main/index.js +var require_main2 = __commonJS({ + "node_modules/@supabase/realtime-js/dist/main/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.REALTIME_CHANNEL_STATES = exports2.REALTIME_SUBSCRIBE_STATES = exports2.REALTIME_PRESENCE_LISTEN_EVENTS = exports2.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = exports2.REALTIME_LISTEN_TYPES = exports2.RealtimeClient = exports2.RealtimeChannel = exports2.RealtimePresence = void 0; + var RealtimeClient_1 = __importDefault(require_RealtimeClient()); + exports2.RealtimeClient = RealtimeClient_1.default; + var RealtimeChannel_1 = __importStar(require_RealtimeChannel()); + exports2.RealtimeChannel = RealtimeChannel_1.default; + Object.defineProperty(exports2, "REALTIME_LISTEN_TYPES", { enumerable: true, get: function() { + return RealtimeChannel_1.REALTIME_LISTEN_TYPES; + } }); + Object.defineProperty(exports2, "REALTIME_POSTGRES_CHANGES_LISTEN_EVENT", { enumerable: true, get: function() { + return RealtimeChannel_1.REALTIME_POSTGRES_CHANGES_LISTEN_EVENT; + } }); + Object.defineProperty(exports2, "REALTIME_SUBSCRIBE_STATES", { enumerable: true, get: function() { + return RealtimeChannel_1.REALTIME_SUBSCRIBE_STATES; + } }); + Object.defineProperty(exports2, "REALTIME_CHANNEL_STATES", { enumerable: true, get: function() { + return RealtimeChannel_1.REALTIME_CHANNEL_STATES; + } }); + var RealtimePresence_1 = __importStar(require_RealtimePresence()); + exports2.RealtimePresence = RealtimePresence_1.default; + Object.defineProperty(exports2, "REALTIME_PRESENCE_LISTEN_EVENTS", { enumerable: true, get: function() { + return RealtimePresence_1.REALTIME_PRESENCE_LISTEN_EVENTS; + } }); + } +}); + +// node_modules/@supabase/storage-js/dist/main/lib/errors.js +var require_errors = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/lib/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.StorageUnknownError = exports2.StorageApiError = exports2.isStorageError = exports2.StorageError = void 0; + var StorageError = class extends Error { + constructor(message) { + super(message); + this.__isStorageError = true; + this.name = "StorageError"; + } + }; + exports2.StorageError = StorageError; + function isStorageError(error) { + return typeof error === "object" && error !== null && "__isStorageError" in error; + } + exports2.isStorageError = isStorageError; + var StorageApiError = class extends StorageError { + constructor(message, status) { + super(message); + this.name = "StorageApiError"; + this.status = status; + } + toJSON() { + return { + name: this.name, + message: this.message, + status: this.status + }; + } + }; + exports2.StorageApiError = StorageApiError; + var StorageUnknownError = class extends StorageError { + constructor(message, originalError) { + super(message); + this.name = "StorageUnknownError"; + this.originalError = originalError; + } + }; + exports2.StorageUnknownError = StorageUnknownError; + } +}); + +// node_modules/@supabase/storage-js/dist/main/lib/helpers.js +var require_helpers = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/lib/helpers.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.recursiveToCamel = exports2.resolveResponse = exports2.resolveFetch = void 0; + var resolveFetch = (customFetch) => { + let _fetch; + if (customFetch) { + _fetch = customFetch; + } else if (typeof fetch === "undefined") { + _fetch = (...args) => Promise.resolve().then(() => __importStar(require_lib2())).then(({ default: fetch2 }) => fetch2(...args)); + } else { + _fetch = fetch; + } + return (...args) => _fetch(...args); + }; + exports2.resolveFetch = resolveFetch; + var resolveResponse = () => __awaiter(void 0, void 0, void 0, function* () { + if (typeof Response === "undefined") { + return (yield Promise.resolve().then(() => __importStar(require_lib2()))).Response; + } + return Response; + }); + exports2.resolveResponse = resolveResponse; + var recursiveToCamel = (item) => { + if (Array.isArray(item)) { + return item.map((el) => (0, exports2.recursiveToCamel)(el)); + } else if (typeof item === "function" || item !== Object(item)) { + return item; + } + const result = {}; + Object.entries(item).forEach(([key, value]) => { + const newKey = key.replace(/([-_][a-z])/gi, (c) => c.toUpperCase().replace(/[-_]/g, "")); + result[newKey] = (0, exports2.recursiveToCamel)(value); + }); + return result; + }; + exports2.recursiveToCamel = recursiveToCamel; + } +}); + +// node_modules/@supabase/storage-js/dist/main/lib/fetch.js +var require_fetch = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/lib/fetch.js"(exports2) { + "use strict"; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.remove = exports2.head = exports2.put = exports2.post = exports2.get = void 0; + var errors_1 = require_errors(); + var helpers_1 = require_helpers(); + var _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err); + var handleError = (error, reject, options) => __awaiter(void 0, void 0, void 0, function* () { + const Res = yield (0, helpers_1.resolveResponse)(); + if (error instanceof Res && !(options === null || options === void 0 ? void 0 : options.noResolveJson)) { + error.json().then((err) => { + reject(new errors_1.StorageApiError(_getErrorMessage(err), error.status || 500)); + }).catch((err) => { + reject(new errors_1.StorageUnknownError(_getErrorMessage(err), err)); + }); + } else { + reject(new errors_1.StorageUnknownError(_getErrorMessage(error), error)); + } + }); + var _getRequestParams = (method, options, parameters, body) => { + const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} }; + if (method === "GET") { + return params; + } + params.headers = Object.assign({ "Content-Type": "application/json" }, options === null || options === void 0 ? void 0 : options.headers); + if (body) { + params.body = JSON.stringify(body); + } + return Object.assign(Object.assign({}, params), parameters); + }; + function _handleRequest(fetcher, method, url, options, parameters, body) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => { + if (!result.ok) + throw result; + if (options === null || options === void 0 ? void 0 : options.noResolveJson) + return result; + return result.json(); + }).then((data) => resolve(data)).catch((error) => handleError(error, reject, options)); + }); + }); + } + function get(fetcher, url, options, parameters) { + return __awaiter(this, void 0, void 0, function* () { + return _handleRequest(fetcher, "GET", url, options, parameters); + }); + } + exports2.get = get; + function post(fetcher, url, body, options, parameters) { + return __awaiter(this, void 0, void 0, function* () { + return _handleRequest(fetcher, "POST", url, options, parameters, body); + }); + } + exports2.post = post; + function put(fetcher, url, body, options, parameters) { + return __awaiter(this, void 0, void 0, function* () { + return _handleRequest(fetcher, "PUT", url, options, parameters, body); + }); + } + exports2.put = put; + function head(fetcher, url, options, parameters) { + return __awaiter(this, void 0, void 0, function* () { + return _handleRequest(fetcher, "HEAD", url, Object.assign(Object.assign({}, options), { noResolveJson: true }), parameters); + }); + } + exports2.head = head; + function remove(fetcher, url, body, options, parameters) { + return __awaiter(this, void 0, void 0, function* () { + return _handleRequest(fetcher, "DELETE", url, options, parameters, body); + }); + } + exports2.remove = remove; + } +}); + +// node_modules/@supabase/storage-js/dist/main/packages/StorageFileApi.js +var require_StorageFileApi = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/packages/StorageFileApi.js"(exports2) { + "use strict"; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var errors_1 = require_errors(); + var fetch_1 = require_fetch(); + var helpers_1 = require_helpers(); + var DEFAULT_SEARCH_OPTIONS = { + limit: 100, + offset: 0, + sortBy: { + column: "name", + order: "asc" + } + }; + var DEFAULT_FILE_OPTIONS = { + cacheControl: "3600", + contentType: "text/plain;charset=UTF-8", + upsert: false + }; + var StorageFileApi = class { + constructor(url, headers = {}, bucketId, fetch2) { + this.url = url; + this.headers = headers; + this.bucketId = bucketId; + this.fetch = (0, helpers_1.resolveFetch)(fetch2); + } + /** + * Uploads a file to an existing bucket or replaces an existing file at the specified path with a new one. + * + * @param method HTTP method. + * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + * @param fileBody The body of the file to be stored in the bucket. + */ + uploadOrUpdate(method, path, fileBody, fileOptions) { + return __awaiter(this, void 0, void 0, function* () { + try { + let body; + const options = Object.assign(Object.assign({}, DEFAULT_FILE_OPTIONS), fileOptions); + let headers = Object.assign(Object.assign({}, this.headers), method === "POST" && { "x-upsert": String(options.upsert) }); + const metadata = options.metadata; + if (typeof Blob !== "undefined" && fileBody instanceof Blob) { + body = new FormData(); + body.append("cacheControl", options.cacheControl); + if (metadata) { + body.append("metadata", this.encodeMetadata(metadata)); + } + body.append("", fileBody); + } else if (typeof FormData !== "undefined" && fileBody instanceof FormData) { + body = fileBody; + body.append("cacheControl", options.cacheControl); + if (metadata) { + body.append("metadata", this.encodeMetadata(metadata)); + } + } else { + body = fileBody; + headers["cache-control"] = `max-age=${options.cacheControl}`; + headers["content-type"] = options.contentType; + if (metadata) { + headers["x-metadata"] = this.toBase64(this.encodeMetadata(metadata)); + } + } + if (fileOptions === null || fileOptions === void 0 ? void 0 : fileOptions.headers) { + headers = Object.assign(Object.assign({}, headers), fileOptions.headers); + } + const cleanPath = this._removeEmptyFolders(path); + const _path = this._getFinalPath(cleanPath); + const res = yield this.fetch(`${this.url}/object/${_path}`, Object.assign({ method, body, headers }, (options === null || options === void 0 ? void 0 : options.duplex) ? { duplex: options.duplex } : {})); + const data = yield res.json(); + if (res.ok) { + return { + data: { path: cleanPath, id: data.Id, fullPath: data.Key }, + error: null + }; + } else { + const error = data; + return { data: null, error }; + } + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Uploads a file to an existing bucket. + * + * @param path The file path, including the file name. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + * @param fileBody The body of the file to be stored in the bucket. + */ + upload(path, fileBody, fileOptions) { + return __awaiter(this, void 0, void 0, function* () { + return this.uploadOrUpdate("POST", path, fileBody, fileOptions); + }); + } + /** + * Upload a file with a token generated from `createSignedUploadUrl`. + * @param path The file path, including the file name. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + * @param token The token generated from `createSignedUploadUrl` + * @param fileBody The body of the file to be stored in the bucket. + */ + uploadToSignedUrl(path, token, fileBody, fileOptions) { + return __awaiter(this, void 0, void 0, function* () { + const cleanPath = this._removeEmptyFolders(path); + const _path = this._getFinalPath(cleanPath); + const url = new URL(this.url + `/object/upload/sign/${_path}`); + url.searchParams.set("token", token); + try { + let body; + const options = Object.assign({ upsert: DEFAULT_FILE_OPTIONS.upsert }, fileOptions); + const headers = Object.assign(Object.assign({}, this.headers), { "x-upsert": String(options.upsert) }); + if (typeof Blob !== "undefined" && fileBody instanceof Blob) { + body = new FormData(); + body.append("cacheControl", options.cacheControl); + body.append("", fileBody); + } else if (typeof FormData !== "undefined" && fileBody instanceof FormData) { + body = fileBody; + body.append("cacheControl", options.cacheControl); + } else { + body = fileBody; + headers["cache-control"] = `max-age=${options.cacheControl}`; + headers["content-type"] = options.contentType; + } + const res = yield this.fetch(url.toString(), { + method: "PUT", + body, + headers + }); + const data = yield res.json(); + if (res.ok) { + return { + data: { path: cleanPath, fullPath: data.Key }, + error: null + }; + } else { + const error = data; + return { data: null, error }; + } + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Creates a signed upload URL. + * Signed upload URLs can be used to upload files to the bucket without further authentication. + * They are valid for 2 hours. + * @param path The file path, including the current file name. For example `folder/image.png`. + * @param options.upsert If set to true, allows the file to be overwritten if it already exists. + */ + createSignedUploadUrl(path, options) { + return __awaiter(this, void 0, void 0, function* () { + try { + let _path = this._getFinalPath(path); + const headers = Object.assign({}, this.headers); + if (options === null || options === void 0 ? void 0 : options.upsert) { + headers["x-upsert"] = "true"; + } + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/object/upload/sign/${_path}`, {}, { headers }); + const url = new URL(this.url + data.url); + const token = url.searchParams.get("token"); + if (!token) { + throw new errors_1.StorageError("No token returned by API"); + } + return { data: { signedUrl: url.toString(), path, token }, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Replaces an existing file at the specified path with a new one. + * + * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to update. + * @param fileBody The body of the file to be stored in the bucket. + */ + update(path, fileBody, fileOptions) { + return __awaiter(this, void 0, void 0, function* () { + return this.uploadOrUpdate("PUT", path, fileBody, fileOptions); + }); + } + /** + * Moves an existing file to a new path in the same bucket. + * + * @param fromPath The original file path, including the current file name. For example `folder/image.png`. + * @param toPath The new file path, including the new file name. For example `folder/image-new.png`. + * @param options The destination options. + */ + move(fromPath, toPath, options) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/object/move`, { + bucketId: this.bucketId, + sourceKey: fromPath, + destinationKey: toPath, + destinationBucket: options === null || options === void 0 ? void 0 : options.destinationBucket + }, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Copies an existing file to a new path in the same bucket. + * + * @param fromPath The original file path, including the current file name. For example `folder/image.png`. + * @param toPath The new file path, including the new file name. For example `folder/image-copy.png`. + * @param options The destination options. + */ + copy(fromPath, toPath, options) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/object/copy`, { + bucketId: this.bucketId, + sourceKey: fromPath, + destinationKey: toPath, + destinationBucket: options === null || options === void 0 ? void 0 : options.destinationBucket + }, { headers: this.headers }); + return { data: { path: data.Key }, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Creates a signed URL. Use a signed URL to share a file for a fixed amount of time. + * + * @param path The file path, including the current file name. For example `folder/image.png`. + * @param expiresIn The number of seconds until the signed URL expires. For example, `60` for a URL which is valid for one minute. + * @param options.download triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename. + * @param options.transform Transform the asset before serving it to the client. + */ + createSignedUrl(path, expiresIn, options) { + return __awaiter(this, void 0, void 0, function* () { + try { + let _path = this._getFinalPath(path); + let data = yield (0, fetch_1.post)(this.fetch, `${this.url}/object/sign/${_path}`, Object.assign({ expiresIn }, (options === null || options === void 0 ? void 0 : options.transform) ? { transform: options.transform } : {}), { headers: this.headers }); + const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? "" : options.download}` : ""; + const signedUrl = encodeURI(`${this.url}${data.signedURL}${downloadQueryParam}`); + data = { signedUrl }; + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Creates multiple signed URLs. Use a signed URL to share a file for a fixed amount of time. + * + * @param paths The file paths to be downloaded, including the current file names. For example `['folder/image.png', 'folder2/image2.png']`. + * @param expiresIn The number of seconds until the signed URLs expire. For example, `60` for URLs which are valid for one minute. + * @param options.download triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename. + */ + createSignedUrls(paths, expiresIn, options) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/object/sign/${this.bucketId}`, { expiresIn, paths }, { headers: this.headers }); + const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? "" : options.download}` : ""; + return { + data: data.map((datum) => Object.assign(Object.assign({}, datum), { signedUrl: datum.signedURL ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`) : null })), + error: null + }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Downloads a file from a private bucket. For public buckets, make a request to the URL returned from `getPublicUrl` instead. + * + * @param path The full path and file name of the file to be downloaded. For example `folder/image.png`. + * @param options.transform Transform the asset before serving it to the client. + */ + download(path, options) { + return __awaiter(this, void 0, void 0, function* () { + const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== "undefined"; + const renderPath = wantsTransformation ? "render/image/authenticated" : "object"; + const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {}); + const queryString = transformationQuery ? `?${transformationQuery}` : ""; + try { + const _path = this._getFinalPath(path); + const res = yield (0, fetch_1.get)(this.fetch, `${this.url}/${renderPath}/${_path}${queryString}`, { + headers: this.headers, + noResolveJson: true + }); + const data = yield res.blob(); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Retrieves the details of an existing file. + * @param path + */ + info(path) { + return __awaiter(this, void 0, void 0, function* () { + const _path = this._getFinalPath(path); + try { + const data = yield (0, fetch_1.get)(this.fetch, `${this.url}/object/info/${_path}`, { + headers: this.headers + }); + return { data: (0, helpers_1.recursiveToCamel)(data), error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Checks the existence of a file. + * @param path + */ + exists(path) { + return __awaiter(this, void 0, void 0, function* () { + const _path = this._getFinalPath(path); + try { + yield (0, fetch_1.head)(this.fetch, `${this.url}/object/${_path}`, { + headers: this.headers + }); + return { data: true, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error) && error instanceof errors_1.StorageUnknownError) { + const originalError = error.originalError; + if ([400, 404].includes(originalError === null || originalError === void 0 ? void 0 : originalError.status)) { + return { data: false, error }; + } + } + throw error; + } + }); + } + /** + * A simple convenience function to get the URL for an asset in a public bucket. If you do not want to use this function, you can construct the public URL by concatenating the bucket URL with the path to the asset. + * This function does not verify if the bucket is public. If a public URL is created for a bucket which is not public, you will not be able to download the asset. + * + * @param path The path and name of the file to generate the public URL for. For example `folder/image.png`. + * @param options.download Triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename. + * @param options.transform Transform the asset before serving it to the client. + */ + getPublicUrl(path, options) { + const _path = this._getFinalPath(path); + const _queryString = []; + const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `download=${options.download === true ? "" : options.download}` : ""; + if (downloadQueryParam !== "") { + _queryString.push(downloadQueryParam); + } + const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== "undefined"; + const renderPath = wantsTransformation ? "render/image" : "object"; + const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {}); + if (transformationQuery !== "") { + _queryString.push(transformationQuery); + } + let queryString = _queryString.join("&"); + if (queryString !== "") { + queryString = `?${queryString}`; + } + return { + data: { publicUrl: encodeURI(`${this.url}/${renderPath}/public/${_path}${queryString}`) } + }; + } + /** + * Deletes files within the same bucket + * + * @param paths An array of files to delete, including the path and file name. For example [`'folder/image.png'`]. + */ + remove(paths) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.remove)(this.fetch, `${this.url}/object/${this.bucketId}`, { prefixes: paths }, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Get file metadata + * @param id the file id to retrieve metadata + */ + // async getMetadata( + // id: string + // ): Promise< + // | { + // data: Metadata + // error: null + // } + // | { + // data: null + // error: StorageError + // } + // > { + // try { + // const data = await get(this.fetch, `${this.url}/metadata/${id}`, { headers: this.headers }) + // return { data, error: null } + // } catch (error) { + // if (isStorageError(error)) { + // return { data: null, error } + // } + // throw error + // } + // } + /** + * Update file metadata + * @param id the file id to update metadata + * @param meta the new file metadata + */ + // async updateMetadata( + // id: string, + // meta: Metadata + // ): Promise< + // | { + // data: Metadata + // error: null + // } + // | { + // data: null + // error: StorageError + // } + // > { + // try { + // const data = await post( + // this.fetch, + // `${this.url}/metadata/${id}`, + // { ...meta }, + // { headers: this.headers } + // ) + // return { data, error: null } + // } catch (error) { + // if (isStorageError(error)) { + // return { data: null, error } + // } + // throw error + // } + // } + /** + * Lists all the files within a bucket. + * @param path The folder path. + */ + list(path, options, parameters) { + return __awaiter(this, void 0, void 0, function* () { + try { + const body = Object.assign(Object.assign(Object.assign({}, DEFAULT_SEARCH_OPTIONS), options), { prefix: path || "" }); + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/object/list/${this.bucketId}`, body, { headers: this.headers }, parameters); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + encodeMetadata(metadata) { + return JSON.stringify(metadata); + } + toBase64(data) { + if (typeof Buffer !== "undefined") { + return Buffer.from(data).toString("base64"); + } + return btoa(data); + } + _getFinalPath(path) { + return `${this.bucketId}/${path}`; + } + _removeEmptyFolders(path) { + return path.replace(/^\/|\/$/g, "").replace(/\/+/g, "/"); + } + transformOptsToQueryString(transform) { + const params = []; + if (transform.width) { + params.push(`width=${transform.width}`); + } + if (transform.height) { + params.push(`height=${transform.height}`); + } + if (transform.resize) { + params.push(`resize=${transform.resize}`); + } + if (transform.format) { + params.push(`format=${transform.format}`); + } + if (transform.quality) { + params.push(`quality=${transform.quality}`); + } + return params.join("&"); + } + }; + exports2.default = StorageFileApi; + } +}); + +// node_modules/@supabase/storage-js/dist/main/lib/version.js +var require_version3 = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/lib/version.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.version = void 0; + exports2.version = "2.7.1"; + } +}); + +// node_modules/@supabase/storage-js/dist/main/lib/constants.js +var require_constants4 = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/lib/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DEFAULT_HEADERS = void 0; + var version_1 = require_version3(); + exports2.DEFAULT_HEADERS = { "X-Client-Info": `storage-js/${version_1.version}` }; + } +}); + +// node_modules/@supabase/storage-js/dist/main/packages/StorageBucketApi.js +var require_StorageBucketApi = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/packages/StorageBucketApi.js"(exports2) { + "use strict"; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var constants_1 = require_constants4(); + var errors_1 = require_errors(); + var fetch_1 = require_fetch(); + var helpers_1 = require_helpers(); + var StorageBucketApi = class { + constructor(url, headers = {}, fetch2) { + this.url = url; + this.headers = Object.assign(Object.assign({}, constants_1.DEFAULT_HEADERS), headers); + this.fetch = (0, helpers_1.resolveFetch)(fetch2); + } + /** + * Retrieves the details of all Storage buckets within an existing project. + */ + listBuckets() { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.get)(this.fetch, `${this.url}/bucket`, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Retrieves the details of an existing Storage bucket. + * + * @param id The unique identifier of the bucket you would like to retrieve. + */ + getBucket(id) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.get)(this.fetch, `${this.url}/bucket/${id}`, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Creates a new Storage bucket + * + * @param id A unique identifier for the bucket you are creating. + * @param options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations. By default, buckets are private. + * @param options.fileSizeLimit specifies the max file size in bytes that can be uploaded to this bucket. + * The global file size limit takes precedence over this value. + * The default value is null, which doesn't set a per bucket file size limit. + * @param options.allowedMimeTypes specifies the allowed mime types that this bucket can accept during upload. + * The default value is null, which allows files with all mime types to be uploaded. + * Each mime type specified can be a wildcard, e.g. image/*, or a specific mime type, e.g. image/png. + * @returns newly created bucket id + */ + createBucket(id, options = { + public: false + }) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/bucket`, { + id, + name: id, + public: options.public, + file_size_limit: options.fileSizeLimit, + allowed_mime_types: options.allowedMimeTypes + }, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Updates a Storage bucket + * + * @param id A unique identifier for the bucket you are updating. + * @param options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations. + * @param options.fileSizeLimit specifies the max file size in bytes that can be uploaded to this bucket. + * The global file size limit takes precedence over this value. + * The default value is null, which doesn't set a per bucket file size limit. + * @param options.allowedMimeTypes specifies the allowed mime types that this bucket can accept during upload. + * The default value is null, which allows files with all mime types to be uploaded. + * Each mime type specified can be a wildcard, e.g. image/*, or a specific mime type, e.g. image/png. + */ + updateBucket(id, options) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.put)(this.fetch, `${this.url}/bucket/${id}`, { + id, + name: id, + public: options.public, + file_size_limit: options.fileSizeLimit, + allowed_mime_types: options.allowedMimeTypes + }, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Removes all objects inside a single bucket. + * + * @param id The unique identifier of the bucket you would like to empty. + */ + emptyBucket(id) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.post)(this.fetch, `${this.url}/bucket/${id}/empty`, {}, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * Deletes an existing bucket. A bucket can't be deleted with existing objects inside it. + * You must first `empty()` the bucket. + * + * @param id The unique identifier of the bucket you would like to delete. + */ + deleteBucket(id) { + return __awaiter(this, void 0, void 0, function* () { + try { + const data = yield (0, fetch_1.remove)(this.fetch, `${this.url}/bucket/${id}`, {}, { headers: this.headers }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isStorageError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + }; + exports2.default = StorageBucketApi; + } +}); + +// node_modules/@supabase/storage-js/dist/main/StorageClient.js +var require_StorageClient = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/StorageClient.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.StorageClient = void 0; + var StorageFileApi_1 = __importDefault(require_StorageFileApi()); + var StorageBucketApi_1 = __importDefault(require_StorageBucketApi()); + var StorageClient = class extends StorageBucketApi_1.default { + constructor(url, headers = {}, fetch2) { + super(url, headers, fetch2); + } + /** + * Perform file operation in a bucket. + * + * @param id The bucket id to operate on. + */ + from(id) { + return new StorageFileApi_1.default(this.url, this.headers, id, this.fetch); + } + }; + exports2.StorageClient = StorageClient; + } +}); + +// node_modules/@supabase/storage-js/dist/main/lib/types.js +var require_types2 = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/lib/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// node_modules/@supabase/storage-js/dist/main/index.js +var require_main3 = __commonJS({ + "node_modules/@supabase/storage-js/dist/main/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.StorageClient = void 0; + var StorageClient_1 = require_StorageClient(); + Object.defineProperty(exports2, "StorageClient", { enumerable: true, get: function() { + return StorageClient_1.StorageClient; + } }); + __exportStar(require_types2(), exports2); + __exportStar(require_errors(), exports2); + } +}); + +// node_modules/@supabase/supabase-js/dist/main/lib/version.js +var require_version4 = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/lib/version.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.version = void 0; + exports2.version = "2.49.8"; + } +}); + +// node_modules/@supabase/supabase-js/dist/main/lib/constants.js +var require_constants5 = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/lib/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DEFAULT_REALTIME_OPTIONS = exports2.DEFAULT_AUTH_OPTIONS = exports2.DEFAULT_DB_OPTIONS = exports2.DEFAULT_GLOBAL_OPTIONS = exports2.DEFAULT_HEADERS = void 0; + var version_1 = require_version4(); + var JS_ENV = ""; + if (typeof Deno !== "undefined") { + JS_ENV = "deno"; + } else if (typeof document !== "undefined") { + JS_ENV = "web"; + } else if (typeof navigator !== "undefined" && navigator.product === "ReactNative") { + JS_ENV = "react-native"; + } else { + JS_ENV = "node"; + } + exports2.DEFAULT_HEADERS = { "X-Client-Info": `supabase-js-${JS_ENV}/${version_1.version}` }; + exports2.DEFAULT_GLOBAL_OPTIONS = { + headers: exports2.DEFAULT_HEADERS + }; + exports2.DEFAULT_DB_OPTIONS = { + schema: "public" + }; + exports2.DEFAULT_AUTH_OPTIONS = { + autoRefreshToken: true, + persistSession: true, + detectSessionInUrl: true, + flowType: "implicit" + }; + exports2.DEFAULT_REALTIME_OPTIONS = {}; + } +}); + +// node_modules/@supabase/supabase-js/dist/main/lib/fetch.js +var require_fetch2 = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/lib/fetch.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.fetchWithAuth = exports2.resolveHeadersConstructor = exports2.resolveFetch = void 0; + var node_fetch_1 = __importStar(require_lib2()); + var resolveFetch = (customFetch) => { + let _fetch; + if (customFetch) { + _fetch = customFetch; + } else if (typeof fetch === "undefined") { + _fetch = node_fetch_1.default; + } else { + _fetch = fetch; + } + return (...args) => _fetch(...args); + }; + exports2.resolveFetch = resolveFetch; + var resolveHeadersConstructor = () => { + if (typeof Headers === "undefined") { + return node_fetch_1.Headers; + } + return Headers; + }; + exports2.resolveHeadersConstructor = resolveHeadersConstructor; + var fetchWithAuth = (supabaseKey, getAccessToken, customFetch) => { + const fetch2 = (0, exports2.resolveFetch)(customFetch); + const HeadersConstructor = (0, exports2.resolveHeadersConstructor)(); + return (input, init) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const accessToken = (_a = yield getAccessToken()) !== null && _a !== void 0 ? _a : supabaseKey; + let headers = new HeadersConstructor(init === null || init === void 0 ? void 0 : init.headers); + if (!headers.has("apikey")) { + headers.set("apikey", supabaseKey); + } + if (!headers.has("Authorization")) { + headers.set("Authorization", `Bearer ${accessToken}`); + } + return fetch2(input, Object.assign(Object.assign({}, init), { headers })); + }); + }; + exports2.fetchWithAuth = fetchWithAuth; + } +}); + +// node_modules/@supabase/supabase-js/dist/main/lib/helpers.js +var require_helpers2 = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/lib/helpers.js"(exports2) { + "use strict"; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.applySettingDefaults = exports2.isBrowser = exports2.ensureTrailingSlash = exports2.uuid = void 0; + function uuid() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { + var r = Math.random() * 16 | 0, v = c == "x" ? r : r & 3 | 8; + return v.toString(16); + }); + } + exports2.uuid = uuid; + function ensureTrailingSlash(url) { + return url.endsWith("/") ? url : url + "/"; + } + exports2.ensureTrailingSlash = ensureTrailingSlash; + var isBrowser = () => typeof window !== "undefined"; + exports2.isBrowser = isBrowser; + function applySettingDefaults(options, defaults) { + var _a, _b; + const { db: dbOptions, auth: authOptions, realtime: realtimeOptions, global: globalOptions } = options; + const { db: DEFAULT_DB_OPTIONS, auth: DEFAULT_AUTH_OPTIONS, realtime: DEFAULT_REALTIME_OPTIONS, global: DEFAULT_GLOBAL_OPTIONS } = defaults; + const result = { + db: Object.assign(Object.assign({}, DEFAULT_DB_OPTIONS), dbOptions), + auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS), authOptions), + realtime: Object.assign(Object.assign({}, DEFAULT_REALTIME_OPTIONS), realtimeOptions), + global: Object.assign(Object.assign(Object.assign({}, DEFAULT_GLOBAL_OPTIONS), globalOptions), { headers: Object.assign(Object.assign({}, (_a = DEFAULT_GLOBAL_OPTIONS === null || DEFAULT_GLOBAL_OPTIONS === void 0 ? void 0 : DEFAULT_GLOBAL_OPTIONS.headers) !== null && _a !== void 0 ? _a : {}), (_b = globalOptions === null || globalOptions === void 0 ? void 0 : globalOptions.headers) !== null && _b !== void 0 ? _b : {}) }), + accessToken: () => __awaiter(this, void 0, void 0, function* () { + return ""; + }) + }; + if (options.accessToken) { + result.accessToken = options.accessToken; + } else { + delete result.accessToken; + } + return result; + } + exports2.applySettingDefaults = applySettingDefaults; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/version.js +var require_version5 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/version.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.version = void 0; + exports2.version = "2.69.1"; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/constants.js +var require_constants6 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.JWKS_TTL = exports2.BASE64URL_REGEX = exports2.API_VERSIONS = exports2.API_VERSION_HEADER_NAME = exports2.NETWORK_FAILURE = exports2.DEFAULT_HEADERS = exports2.AUDIENCE = exports2.STORAGE_KEY = exports2.GOTRUE_URL = exports2.EXPIRY_MARGIN_MS = exports2.AUTO_REFRESH_TICK_THRESHOLD = exports2.AUTO_REFRESH_TICK_DURATION_MS = void 0; + var version_1 = require_version5(); + exports2.AUTO_REFRESH_TICK_DURATION_MS = 30 * 1e3; + exports2.AUTO_REFRESH_TICK_THRESHOLD = 3; + exports2.EXPIRY_MARGIN_MS = exports2.AUTO_REFRESH_TICK_THRESHOLD * exports2.AUTO_REFRESH_TICK_DURATION_MS; + exports2.GOTRUE_URL = "http://localhost:9999"; + exports2.STORAGE_KEY = "supabase.auth.token"; + exports2.AUDIENCE = ""; + exports2.DEFAULT_HEADERS = { "X-Client-Info": `gotrue-js/${version_1.version}` }; + exports2.NETWORK_FAILURE = { + MAX_RETRIES: 10, + RETRY_INTERVAL: 2 + // in deciseconds + }; + exports2.API_VERSION_HEADER_NAME = "X-Supabase-Api-Version"; + exports2.API_VERSIONS = { + "2024-01-01": { + timestamp: Date.parse("2024-01-01T00:00:00.0Z"), + name: "2024-01-01" + } + }; + exports2.BASE64URL_REGEX = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i; + exports2.JWKS_TTL = 6e5; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/errors.js +var require_errors2 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AuthInvalidJwtError = exports2.isAuthWeakPasswordError = exports2.AuthWeakPasswordError = exports2.isAuthRetryableFetchError = exports2.AuthRetryableFetchError = exports2.AuthPKCEGrantCodeExchangeError = exports2.isAuthImplicitGrantRedirectError = exports2.AuthImplicitGrantRedirectError = exports2.AuthInvalidCredentialsError = exports2.AuthInvalidTokenResponseError = exports2.isAuthSessionMissingError = exports2.AuthSessionMissingError = exports2.CustomAuthError = exports2.AuthUnknownError = exports2.isAuthApiError = exports2.AuthApiError = exports2.isAuthError = exports2.AuthError = void 0; + var AuthError = class extends Error { + constructor(message, status, code) { + super(message); + this.__isAuthError = true; + this.name = "AuthError"; + this.status = status; + this.code = code; + } + }; + exports2.AuthError = AuthError; + function isAuthError(error) { + return typeof error === "object" && error !== null && "__isAuthError" in error; + } + exports2.isAuthError = isAuthError; + var AuthApiError = class extends AuthError { + constructor(message, status, code) { + super(message, status, code); + this.name = "AuthApiError"; + this.status = status; + this.code = code; + } + }; + exports2.AuthApiError = AuthApiError; + function isAuthApiError(error) { + return isAuthError(error) && error.name === "AuthApiError"; + } + exports2.isAuthApiError = isAuthApiError; + var AuthUnknownError = class extends AuthError { + constructor(message, originalError) { + super(message); + this.name = "AuthUnknownError"; + this.originalError = originalError; + } + }; + exports2.AuthUnknownError = AuthUnknownError; + var CustomAuthError = class extends AuthError { + constructor(message, name, status, code) { + super(message, status, code); + this.name = name; + this.status = status; + } + }; + exports2.CustomAuthError = CustomAuthError; + var AuthSessionMissingError = class extends CustomAuthError { + constructor() { + super("Auth session missing!", "AuthSessionMissingError", 400, void 0); + } + }; + exports2.AuthSessionMissingError = AuthSessionMissingError; + function isAuthSessionMissingError(error) { + return isAuthError(error) && error.name === "AuthSessionMissingError"; + } + exports2.isAuthSessionMissingError = isAuthSessionMissingError; + var AuthInvalidTokenResponseError = class extends CustomAuthError { + constructor() { + super("Auth session or user missing", "AuthInvalidTokenResponseError", 500, void 0); + } + }; + exports2.AuthInvalidTokenResponseError = AuthInvalidTokenResponseError; + var AuthInvalidCredentialsError = class extends CustomAuthError { + constructor(message) { + super(message, "AuthInvalidCredentialsError", 400, void 0); + } + }; + exports2.AuthInvalidCredentialsError = AuthInvalidCredentialsError; + var AuthImplicitGrantRedirectError = class extends CustomAuthError { + constructor(message, details = null) { + super(message, "AuthImplicitGrantRedirectError", 500, void 0); + this.details = null; + this.details = details; + } + toJSON() { + return { + name: this.name, + message: this.message, + status: this.status, + details: this.details + }; + } + }; + exports2.AuthImplicitGrantRedirectError = AuthImplicitGrantRedirectError; + function isAuthImplicitGrantRedirectError(error) { + return isAuthError(error) && error.name === "AuthImplicitGrantRedirectError"; + } + exports2.isAuthImplicitGrantRedirectError = isAuthImplicitGrantRedirectError; + var AuthPKCEGrantCodeExchangeError = class extends CustomAuthError { + constructor(message, details = null) { + super(message, "AuthPKCEGrantCodeExchangeError", 500, void 0); + this.details = null; + this.details = details; + } + toJSON() { + return { + name: this.name, + message: this.message, + status: this.status, + details: this.details + }; + } + }; + exports2.AuthPKCEGrantCodeExchangeError = AuthPKCEGrantCodeExchangeError; + var AuthRetryableFetchError = class extends CustomAuthError { + constructor(message, status) { + super(message, "AuthRetryableFetchError", status, void 0); + } + }; + exports2.AuthRetryableFetchError = AuthRetryableFetchError; + function isAuthRetryableFetchError(error) { + return isAuthError(error) && error.name === "AuthRetryableFetchError"; + } + exports2.isAuthRetryableFetchError = isAuthRetryableFetchError; + var AuthWeakPasswordError = class extends CustomAuthError { + constructor(message, status, reasons) { + super(message, "AuthWeakPasswordError", status, "weak_password"); + this.reasons = reasons; + } + }; + exports2.AuthWeakPasswordError = AuthWeakPasswordError; + function isAuthWeakPasswordError(error) { + return isAuthError(error) && error.name === "AuthWeakPasswordError"; + } + exports2.isAuthWeakPasswordError = isAuthWeakPasswordError; + var AuthInvalidJwtError = class extends CustomAuthError { + constructor(message) { + super(message, "AuthInvalidJwtError", 400, "invalid_jwt"); + } + }; + exports2.AuthInvalidJwtError = AuthInvalidJwtError; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/base64url.js +var require_base64url = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/base64url.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.stringToUint8Array = exports2.base64UrlToUint8Array = exports2.stringFromUTF8 = exports2.stringToUTF8 = exports2.codepointToUTF8 = exports2.stringFromBase64URL = exports2.stringToBase64URL = exports2.byteFromBase64URL = exports2.byteToBase64URL = void 0; + var TO_BASE64URL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""); + var IGNORE_BASE64URL = " \n\r=".split(""); + var FROM_BASE64URL = (() => { + const charMap = new Array(128); + for (let i = 0; i < charMap.length; i += 1) { + charMap[i] = -1; + } + for (let i = 0; i < IGNORE_BASE64URL.length; i += 1) { + charMap[IGNORE_BASE64URL[i].charCodeAt(0)] = -2; + } + for (let i = 0; i < TO_BASE64URL.length; i += 1) { + charMap[TO_BASE64URL[i].charCodeAt(0)] = i; + } + return charMap; + })(); + function byteToBase64URL(byte, state, emit) { + if (byte !== null) { + state.queue = state.queue << 8 | byte; + state.queuedBits += 8; + while (state.queuedBits >= 6) { + const pos = state.queue >> state.queuedBits - 6 & 63; + emit(TO_BASE64URL[pos]); + state.queuedBits -= 6; + } + } else if (state.queuedBits > 0) { + state.queue = state.queue << 6 - state.queuedBits; + state.queuedBits = 6; + while (state.queuedBits >= 6) { + const pos = state.queue >> state.queuedBits - 6 & 63; + emit(TO_BASE64URL[pos]); + state.queuedBits -= 6; + } + } + } + exports2.byteToBase64URL = byteToBase64URL; + function byteFromBase64URL(charCode, state, emit) { + const bits = FROM_BASE64URL[charCode]; + if (bits > -1) { + state.queue = state.queue << 6 | bits; + state.queuedBits += 6; + while (state.queuedBits >= 8) { + emit(state.queue >> state.queuedBits - 8 & 255); + state.queuedBits -= 8; + } + } else if (bits === -2) { + return; + } else { + throw new Error(`Invalid Base64-URL character "${String.fromCharCode(charCode)}"`); + } + } + exports2.byteFromBase64URL = byteFromBase64URL; + function stringToBase64URL(str) { + const base64 = []; + const emitter = (char) => { + base64.push(char); + }; + const state = { queue: 0, queuedBits: 0 }; + stringToUTF8(str, (byte) => { + byteToBase64URL(byte, state, emitter); + }); + byteToBase64URL(null, state, emitter); + return base64.join(""); + } + exports2.stringToBase64URL = stringToBase64URL; + function stringFromBase64URL(str) { + const conv = []; + const utf8Emit = (codepoint) => { + conv.push(String.fromCodePoint(codepoint)); + }; + const utf8State = { + utf8seq: 0, + codepoint: 0 + }; + const b64State = { queue: 0, queuedBits: 0 }; + const byteEmit = (byte) => { + stringFromUTF8(byte, utf8State, utf8Emit); + }; + for (let i = 0; i < str.length; i += 1) { + byteFromBase64URL(str.charCodeAt(i), b64State, byteEmit); + } + return conv.join(""); + } + exports2.stringFromBase64URL = stringFromBase64URL; + function codepointToUTF8(codepoint, emit) { + if (codepoint <= 127) { + emit(codepoint); + return; + } else if (codepoint <= 2047) { + emit(192 | codepoint >> 6); + emit(128 | codepoint & 63); + return; + } else if (codepoint <= 65535) { + emit(224 | codepoint >> 12); + emit(128 | codepoint >> 6 & 63); + emit(128 | codepoint & 63); + return; + } else if (codepoint <= 1114111) { + emit(240 | codepoint >> 18); + emit(128 | codepoint >> 12 & 63); + emit(128 | codepoint >> 6 & 63); + emit(128 | codepoint & 63); + return; + } + throw new Error(`Unrecognized Unicode codepoint: ${codepoint.toString(16)}`); + } + exports2.codepointToUTF8 = codepointToUTF8; + function stringToUTF8(str, emit) { + for (let i = 0; i < str.length; i += 1) { + let codepoint = str.charCodeAt(i); + if (codepoint > 55295 && codepoint <= 56319) { + const highSurrogate = (codepoint - 55296) * 1024 & 65535; + const lowSurrogate = str.charCodeAt(i + 1) - 56320 & 65535; + codepoint = (lowSurrogate | highSurrogate) + 65536; + i += 1; + } + codepointToUTF8(codepoint, emit); + } + } + exports2.stringToUTF8 = stringToUTF8; + function stringFromUTF8(byte, state, emit) { + if (state.utf8seq === 0) { + if (byte <= 127) { + emit(byte); + return; + } + for (let leadingBit = 1; leadingBit < 6; leadingBit += 1) { + if ((byte >> 7 - leadingBit & 1) === 0) { + state.utf8seq = leadingBit; + break; + } + } + if (state.utf8seq === 2) { + state.codepoint = byte & 31; + } else if (state.utf8seq === 3) { + state.codepoint = byte & 15; + } else if (state.utf8seq === 4) { + state.codepoint = byte & 7; + } else { + throw new Error("Invalid UTF-8 sequence"); + } + state.utf8seq -= 1; + } else if (state.utf8seq > 0) { + if (byte <= 127) { + throw new Error("Invalid UTF-8 sequence"); + } + state.codepoint = state.codepoint << 6 | byte & 63; + state.utf8seq -= 1; + if (state.utf8seq === 0) { + emit(state.codepoint); + } + } + } + exports2.stringFromUTF8 = stringFromUTF8; + function base64UrlToUint8Array(str) { + const result = []; + const state = { queue: 0, queuedBits: 0 }; + const onByte = (byte) => { + result.push(byte); + }; + for (let i = 0; i < str.length; i += 1) { + byteFromBase64URL(str.charCodeAt(i), state, onByte); + } + return new Uint8Array(result); + } + exports2.base64UrlToUint8Array = base64UrlToUint8Array; + function stringToUint8Array(str) { + const result = []; + stringToUTF8(str, (byte) => result.push(byte)); + return new Uint8Array(result); + } + exports2.stringToUint8Array = stringToUint8Array; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/helpers.js +var require_helpers3 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/helpers.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + } + __setModuleDefault(result, mod); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getAlgorithm = exports2.validateExp = exports2.parseResponseAPIVersion = exports2.getCodeChallengeAndMethod = exports2.generatePKCEChallenge = exports2.generatePKCEVerifier = exports2.retryable = exports2.sleep = exports2.decodeJWT = exports2.Deferred = exports2.removeItemAsync = exports2.getItemAsync = exports2.setItemAsync = exports2.looksLikeFetchResponse = exports2.resolveFetch = exports2.parseParametersFromURL = exports2.supportsLocalStorage = exports2.isBrowser = exports2.uuid = exports2.expiresAt = void 0; + var constants_1 = require_constants6(); + var errors_1 = require_errors2(); + var base64url_1 = require_base64url(); + function expiresAt(expiresIn) { + const timeNow = Math.round(Date.now() / 1e3); + return timeNow + expiresIn; + } + exports2.expiresAt = expiresAt; + function uuid() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { + const r = Math.random() * 16 | 0, v = c == "x" ? r : r & 3 | 8; + return v.toString(16); + }); + } + exports2.uuid = uuid; + var isBrowser = () => typeof window !== "undefined" && typeof document !== "undefined"; + exports2.isBrowser = isBrowser; + var localStorageWriteTests = { + tested: false, + writable: false + }; + var supportsLocalStorage = () => { + if (!(0, exports2.isBrowser)()) { + return false; + } + try { + if (typeof globalThis.localStorage !== "object") { + return false; + } + } catch (e) { + return false; + } + if (localStorageWriteTests.tested) { + return localStorageWriteTests.writable; + } + const randomKey = `lswt-${Math.random()}${Math.random()}`; + try { + globalThis.localStorage.setItem(randomKey, randomKey); + globalThis.localStorage.removeItem(randomKey); + localStorageWriteTests.tested = true; + localStorageWriteTests.writable = true; + } catch (e) { + localStorageWriteTests.tested = true; + localStorageWriteTests.writable = false; + } + return localStorageWriteTests.writable; + }; + exports2.supportsLocalStorage = supportsLocalStorage; + function parseParametersFromURL(href) { + const result = {}; + const url = new URL(href); + if (url.hash && url.hash[0] === "#") { + try { + const hashSearchParams = new URLSearchParams(url.hash.substring(1)); + hashSearchParams.forEach((value, key) => { + result[key] = value; + }); + } catch (e) { + } + } + url.searchParams.forEach((value, key) => { + result[key] = value; + }); + return result; + } + exports2.parseParametersFromURL = parseParametersFromURL; + var resolveFetch = (customFetch) => { + let _fetch; + if (customFetch) { + _fetch = customFetch; + } else if (typeof fetch === "undefined") { + _fetch = (...args) => Promise.resolve().then(() => __importStar(require_lib2())).then(({ default: fetch2 }) => fetch2(...args)); + } else { + _fetch = fetch; + } + return (...args) => _fetch(...args); + }; + exports2.resolveFetch = resolveFetch; + var looksLikeFetchResponse = (maybeResponse) => { + return typeof maybeResponse === "object" && maybeResponse !== null && "status" in maybeResponse && "ok" in maybeResponse && "json" in maybeResponse && typeof maybeResponse.json === "function"; + }; + exports2.looksLikeFetchResponse = looksLikeFetchResponse; + var setItemAsync = async (storage, key, data) => { + await storage.setItem(key, JSON.stringify(data)); + }; + exports2.setItemAsync = setItemAsync; + var getItemAsync = async (storage, key) => { + const value = await storage.getItem(key); + if (!value) { + return null; + } + try { + return JSON.parse(value); + } catch (_a) { + return value; + } + }; + exports2.getItemAsync = getItemAsync; + var removeItemAsync = async (storage, key) => { + await storage.removeItem(key); + }; + exports2.removeItemAsync = removeItemAsync; + var Deferred = class _Deferred { + constructor() { + ; + this.promise = new _Deferred.promiseConstructor((res, rej) => { + ; + this.resolve = res; + this.reject = rej; + }); + } + }; + exports2.Deferred = Deferred; + Deferred.promiseConstructor = Promise; + function decodeJWT(token) { + const parts = token.split("."); + if (parts.length !== 3) { + throw new errors_1.AuthInvalidJwtError("Invalid JWT structure"); + } + for (let i = 0; i < parts.length; i++) { + if (!constants_1.BASE64URL_REGEX.test(parts[i])) { + throw new errors_1.AuthInvalidJwtError("JWT not in base64url format"); + } + } + const data = { + // using base64url lib + header: JSON.parse((0, base64url_1.stringFromBase64URL)(parts[0])), + payload: JSON.parse((0, base64url_1.stringFromBase64URL)(parts[1])), + signature: (0, base64url_1.base64UrlToUint8Array)(parts[2]), + raw: { + header: parts[0], + payload: parts[1] + } + }; + return data; + } + exports2.decodeJWT = decodeJWT; + async function sleep(time) { + return await new Promise((accept) => { + setTimeout(() => accept(null), time); + }); + } + exports2.sleep = sleep; + function retryable(fn, isRetryable) { + const promise = new Promise((accept, reject) => { + ; + (async () => { + for (let attempt = 0; attempt < Infinity; attempt++) { + try { + const result = await fn(attempt); + if (!isRetryable(attempt, null, result)) { + accept(result); + return; + } + } catch (e) { + if (!isRetryable(attempt, e)) { + reject(e); + return; + } + } + } + })(); + }); + return promise; + } + exports2.retryable = retryable; + function dec2hex(dec) { + return ("0" + dec.toString(16)).substr(-2); + } + function generatePKCEVerifier() { + const verifierLength = 56; + const array = new Uint32Array(verifierLength); + if (typeof crypto === "undefined") { + const charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"; + const charSetLen = charSet.length; + let verifier = ""; + for (let i = 0; i < verifierLength; i++) { + verifier += charSet.charAt(Math.floor(Math.random() * charSetLen)); + } + return verifier; + } + crypto.getRandomValues(array); + return Array.from(array, dec2hex).join(""); + } + exports2.generatePKCEVerifier = generatePKCEVerifier; + async function sha256(randomString) { + const encoder = new TextEncoder(); + const encodedData = encoder.encode(randomString); + const hash = await crypto.subtle.digest("SHA-256", encodedData); + const bytes = new Uint8Array(hash); + return Array.from(bytes).map((c) => String.fromCharCode(c)).join(""); + } + async function generatePKCEChallenge(verifier) { + const hasCryptoSupport = typeof crypto !== "undefined" && typeof crypto.subtle !== "undefined" && typeof TextEncoder !== "undefined"; + if (!hasCryptoSupport) { + console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."); + return verifier; + } + const hashed = await sha256(verifier); + return btoa(hashed).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); + } + exports2.generatePKCEChallenge = generatePKCEChallenge; + async function getCodeChallengeAndMethod(storage, storageKey, isPasswordRecovery = false) { + const codeVerifier = generatePKCEVerifier(); + let storedCodeVerifier = codeVerifier; + if (isPasswordRecovery) { + storedCodeVerifier += "/PASSWORD_RECOVERY"; + } + await (0, exports2.setItemAsync)(storage, `${storageKey}-code-verifier`, storedCodeVerifier); + const codeChallenge = await generatePKCEChallenge(codeVerifier); + const codeChallengeMethod = codeVerifier === codeChallenge ? "plain" : "s256"; + return [codeChallenge, codeChallengeMethod]; + } + exports2.getCodeChallengeAndMethod = getCodeChallengeAndMethod; + var API_VERSION_REGEX = /^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i; + function parseResponseAPIVersion(response) { + const apiVersion = response.headers.get(constants_1.API_VERSION_HEADER_NAME); + if (!apiVersion) { + return null; + } + if (!apiVersion.match(API_VERSION_REGEX)) { + return null; + } + try { + const date = /* @__PURE__ */ new Date(`${apiVersion}T00:00:00.0Z`); + return date; + } catch (e) { + return null; + } + } + exports2.parseResponseAPIVersion = parseResponseAPIVersion; + function validateExp(exp) { + if (!exp) { + throw new Error("Missing exp claim"); + } + const timeNow = Math.floor(Date.now() / 1e3); + if (exp <= timeNow) { + throw new Error("JWT has expired"); + } + } + exports2.validateExp = validateExp; + function getAlgorithm(alg) { + switch (alg) { + case "RS256": + return { + name: "RSASSA-PKCS1-v1_5", + hash: { name: "SHA-256" } + }; + case "ES256": + return { + name: "ECDSA", + namedCurve: "P-256", + hash: { name: "SHA-256" } + }; + default: + throw new Error("Invalid alg claim"); + } + } + exports2.getAlgorithm = getAlgorithm; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/fetch.js +var require_fetch3 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/fetch.js"(exports2) { + "use strict"; + var __rest = exports2 && exports2.__rest || function(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2._noResolveJsonResponse = exports2._generateLinkResponse = exports2._ssoResponse = exports2._userResponse = exports2._sessionResponsePassword = exports2._sessionResponse = exports2._request = exports2.handleError = void 0; + var constants_1 = require_constants6(); + var helpers_1 = require_helpers3(); + var errors_1 = require_errors2(); + var _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err); + var NETWORK_ERROR_CODES = [502, 503, 504]; + async function handleError(error) { + var _a; + if (!(0, helpers_1.looksLikeFetchResponse)(error)) { + throw new errors_1.AuthRetryableFetchError(_getErrorMessage(error), 0); + } + if (NETWORK_ERROR_CODES.includes(error.status)) { + throw new errors_1.AuthRetryableFetchError(_getErrorMessage(error), error.status); + } + let data; + try { + data = await error.json(); + } catch (e) { + throw new errors_1.AuthUnknownError(_getErrorMessage(e), e); + } + let errorCode = void 0; + const responseAPIVersion = (0, helpers_1.parseResponseAPIVersion)(error); + if (responseAPIVersion && responseAPIVersion.getTime() >= constants_1.API_VERSIONS["2024-01-01"].timestamp && typeof data === "object" && data && typeof data.code === "string") { + errorCode = data.code; + } else if (typeof data === "object" && data && typeof data.error_code === "string") { + errorCode = data.error_code; + } + if (!errorCode) { + if (typeof data === "object" && data && typeof data.weak_password === "object" && data.weak_password && Array.isArray(data.weak_password.reasons) && data.weak_password.reasons.length && data.weak_password.reasons.reduce((a, i) => a && typeof i === "string", true)) { + throw new errors_1.AuthWeakPasswordError(_getErrorMessage(data), error.status, data.weak_password.reasons); + } + } else if (errorCode === "weak_password") { + throw new errors_1.AuthWeakPasswordError(_getErrorMessage(data), error.status, ((_a = data.weak_password) === null || _a === void 0 ? void 0 : _a.reasons) || []); + } else if (errorCode === "session_not_found") { + throw new errors_1.AuthSessionMissingError(); + } + throw new errors_1.AuthApiError(_getErrorMessage(data), error.status || 500, errorCode); + } + exports2.handleError = handleError; + var _getRequestParams = (method, options, parameters, body) => { + const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} }; + if (method === "GET") { + return params; + } + params.headers = Object.assign({ "Content-Type": "application/json;charset=UTF-8" }, options === null || options === void 0 ? void 0 : options.headers); + params.body = JSON.stringify(body); + return Object.assign(Object.assign({}, params), parameters); + }; + async function _request(fetcher, method, url, options) { + var _a; + const headers = Object.assign({}, options === null || options === void 0 ? void 0 : options.headers); + if (!headers[constants_1.API_VERSION_HEADER_NAME]) { + headers[constants_1.API_VERSION_HEADER_NAME] = constants_1.API_VERSIONS["2024-01-01"].name; + } + if (options === null || options === void 0 ? void 0 : options.jwt) { + headers["Authorization"] = `Bearer ${options.jwt}`; + } + const qs = (_a = options === null || options === void 0 ? void 0 : options.query) !== null && _a !== void 0 ? _a : {}; + if (options === null || options === void 0 ? void 0 : options.redirectTo) { + qs["redirect_to"] = options.redirectTo; + } + const queryString = Object.keys(qs).length ? "?" + new URLSearchParams(qs).toString() : ""; + const data = await _handleRequest(fetcher, method, url + queryString, { + headers, + noResolveJson: options === null || options === void 0 ? void 0 : options.noResolveJson + }, {}, options === null || options === void 0 ? void 0 : options.body); + return (options === null || options === void 0 ? void 0 : options.xform) ? options === null || options === void 0 ? void 0 : options.xform(data) : { data: Object.assign({}, data), error: null }; + } + exports2._request = _request; + async function _handleRequest(fetcher, method, url, options, parameters, body) { + const requestParams = _getRequestParams(method, options, parameters, body); + let result; + try { + result = await fetcher(url, Object.assign({}, requestParams)); + } catch (e) { + console.error(e); + throw new errors_1.AuthRetryableFetchError(_getErrorMessage(e), 0); + } + if (!result.ok) { + await handleError(result); + } + if (options === null || options === void 0 ? void 0 : options.noResolveJson) { + return result; + } + try { + return await result.json(); + } catch (e) { + await handleError(e); + } + } + function _sessionResponse(data) { + var _a; + let session = null; + if (hasSession(data)) { + session = Object.assign({}, data); + if (!data.expires_at) { + session.expires_at = (0, helpers_1.expiresAt)(data.expires_in); + } + } + const user = (_a = data.user) !== null && _a !== void 0 ? _a : data; + return { data: { session, user }, error: null }; + } + exports2._sessionResponse = _sessionResponse; + function _sessionResponsePassword(data) { + const response = _sessionResponse(data); + if (!response.error && data.weak_password && typeof data.weak_password === "object" && Array.isArray(data.weak_password.reasons) && data.weak_password.reasons.length && data.weak_password.message && typeof data.weak_password.message === "string" && data.weak_password.reasons.reduce((a, i) => a && typeof i === "string", true)) { + response.data.weak_password = data.weak_password; + } + return response; + } + exports2._sessionResponsePassword = _sessionResponsePassword; + function _userResponse(data) { + var _a; + const user = (_a = data.user) !== null && _a !== void 0 ? _a : data; + return { data: { user }, error: null }; + } + exports2._userResponse = _userResponse; + function _ssoResponse(data) { + return { data, error: null }; + } + exports2._ssoResponse = _ssoResponse; + function _generateLinkResponse(data) { + const { action_link, email_otp, hashed_token, redirect_to, verification_type } = data, rest = __rest(data, ["action_link", "email_otp", "hashed_token", "redirect_to", "verification_type"]); + const properties = { + action_link, + email_otp, + hashed_token, + redirect_to, + verification_type + }; + const user = Object.assign({}, rest); + return { + data: { + properties, + user + }, + error: null + }; + } + exports2._generateLinkResponse = _generateLinkResponse; + function _noResolveJsonResponse(data) { + return data; + } + exports2._noResolveJsonResponse = _noResolveJsonResponse; + function hasSession(data) { + return data.access_token && data.refresh_token && data.expires_in; + } + } +}); + +// node_modules/@supabase/auth-js/dist/main/GoTrueAdminApi.js +var require_GoTrueAdminApi = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/GoTrueAdminApi.js"(exports2) { + "use strict"; + var __rest = exports2 && exports2.__rest || function(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var fetch_1 = require_fetch3(); + var helpers_1 = require_helpers3(); + var errors_1 = require_errors2(); + var GoTrueAdminApi = class { + constructor({ url = "", headers = {}, fetch: fetch2 }) { + this.url = url; + this.headers = headers; + this.fetch = (0, helpers_1.resolveFetch)(fetch2); + this.mfa = { + listFactors: this._listFactors.bind(this), + deleteFactor: this._deleteFactor.bind(this) + }; + } + /** + * Removes a logged-in session. + * @param jwt A valid, logged-in JWT. + * @param scope The logout sope. + */ + async signOut(jwt, scope = "global") { + try { + await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/logout?scope=${scope}`, { + headers: this.headers, + jwt, + noResolveJson: true + }); + return { data: null, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + /** + * Sends an invite link to an email address. + * @param email The email address of the user. + * @param options Additional options to be included when inviting. + */ + async inviteUserByEmail(email, options = {}) { + try { + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/invite`, { + body: { email, data: options.data }, + headers: this.headers, + redirectTo: options.redirectTo, + xform: fetch_1._userResponse + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null }, error }; + } + throw error; + } + } + /** + * Generates email links and OTPs to be sent via a custom email provider. + * @param email The user's email. + * @param options.password User password. For signup only. + * @param options.data Optional user metadata. For signup only. + * @param options.redirectTo The redirect url which should be appended to the generated link + */ + async generateLink(params) { + try { + const { options } = params, rest = __rest(params, ["options"]); + const body = Object.assign(Object.assign({}, rest), options); + if ("newEmail" in rest) { + body.new_email = rest === null || rest === void 0 ? void 0 : rest.newEmail; + delete body["newEmail"]; + } + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/admin/generate_link`, { + body, + headers: this.headers, + xform: fetch_1._generateLinkResponse, + redirectTo: options === null || options === void 0 ? void 0 : options.redirectTo + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { + data: { + properties: null, + user: null + }, + error + }; + } + throw error; + } + } + // User Admin API + /** + * Creates a new user. + * This function should only be called on a server. Never expose your `service_role` key in the browser. + */ + async createUser(attributes) { + try { + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/admin/users`, { + body: attributes, + headers: this.headers, + xform: fetch_1._userResponse + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null }, error }; + } + throw error; + } + } + /** + * Get a list of users. + * + * This function should only be called on a server. Never expose your `service_role` key in the browser. + * @param params An object which supports `page` and `perPage` as numbers, to alter the paginated results. + */ + async listUsers(params) { + var _a, _b, _c, _d, _e, _f, _g; + try { + const pagination = { nextPage: null, lastPage: 0, total: 0 }; + const response = await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/admin/users`, { + headers: this.headers, + noResolveJson: true, + query: { + page: (_b = (_a = params === null || params === void 0 ? void 0 : params.page) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : "", + per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : "" + }, + xform: fetch_1._noResolveJsonResponse + }); + if (response.error) + throw response.error; + const users = await response.json(); + const total = (_e = response.headers.get("x-total-count")) !== null && _e !== void 0 ? _e : 0; + const links = (_g = (_f = response.headers.get("link")) === null || _f === void 0 ? void 0 : _f.split(",")) !== null && _g !== void 0 ? _g : []; + if (links.length > 0) { + links.forEach((link) => { + const page = parseInt(link.split(";")[0].split("=")[1].substring(0, 1)); + const rel = JSON.parse(link.split(";")[1].split("=")[1]); + pagination[`${rel}Page`] = page; + }); + pagination.total = parseInt(total); + } + return { data: Object.assign(Object.assign({}, users), pagination), error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { users: [] }, error }; + } + throw error; + } + } + /** + * Get user by id. + * + * @param uid The user's unique identifier + * + * This function should only be called on a server. Never expose your `service_role` key in the browser. + */ + async getUserById(uid) { + try { + return await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/admin/users/${uid}`, { + headers: this.headers, + xform: fetch_1._userResponse + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null }, error }; + } + throw error; + } + } + /** + * Updates the user data. + * + * @param attributes The data you want to update. + * + * This function should only be called on a server. Never expose your `service_role` key in the browser. + */ + async updateUserById(uid, attributes) { + try { + return await (0, fetch_1._request)(this.fetch, "PUT", `${this.url}/admin/users/${uid}`, { + body: attributes, + headers: this.headers, + xform: fetch_1._userResponse + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null }, error }; + } + throw error; + } + } + /** + * Delete a user. Requires a `service_role` key. + * + * @param id The user id you want to remove. + * @param shouldSoftDelete If true, then the user will be soft-deleted from the auth schema. Soft deletion allows user identification from the hashed user ID but is not reversible. + * Defaults to false for backward compatibility. + * + * This function should only be called on a server. Never expose your `service_role` key in the browser. + */ + async deleteUser(id, shouldSoftDelete = false) { + try { + return await (0, fetch_1._request)(this.fetch, "DELETE", `${this.url}/admin/users/${id}`, { + headers: this.headers, + body: { + should_soft_delete: shouldSoftDelete + }, + xform: fetch_1._userResponse + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null }, error }; + } + throw error; + } + } + async _listFactors(params) { + try { + const { data, error } = await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/admin/users/${params.userId}/factors`, { + headers: this.headers, + xform: (factors) => { + return { data: { factors }, error: null }; + } + }); + return { data, error }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + async _deleteFactor(params) { + try { + const data = await (0, fetch_1._request)(this.fetch, "DELETE", `${this.url}/admin/users/${params.userId}/factors/${params.id}`, { + headers: this.headers + }); + return { data, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + }; + exports2.default = GoTrueAdminApi; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/local-storage.js +var require_local_storage = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/local-storage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.memoryLocalStorageAdapter = exports2.localStorageAdapter = void 0; + var helpers_1 = require_helpers3(); + exports2.localStorageAdapter = { + getItem: (key) => { + if (!(0, helpers_1.supportsLocalStorage)()) { + return null; + } + return globalThis.localStorage.getItem(key); + }, + setItem: (key, value) => { + if (!(0, helpers_1.supportsLocalStorage)()) { + return; + } + globalThis.localStorage.setItem(key, value); + }, + removeItem: (key) => { + if (!(0, helpers_1.supportsLocalStorage)()) { + return; + } + globalThis.localStorage.removeItem(key); + } + }; + function memoryLocalStorageAdapter(store = {}) { + return { + getItem: (key) => { + return store[key] || null; + }, + setItem: (key, value) => { + store[key] = value; + }, + removeItem: (key) => { + delete store[key]; + } + }; + } + exports2.memoryLocalStorageAdapter = memoryLocalStorageAdapter; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/polyfills.js +var require_polyfills = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/polyfills.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.polyfillGlobalThis = void 0; + function polyfillGlobalThis() { + if (typeof globalThis === "object") + return; + try { + Object.defineProperty(Object.prototype, "__magic__", { + get: function() { + return this; + }, + configurable: true + }); + __magic__.globalThis = __magic__; + delete Object.prototype.__magic__; + } catch (e) { + if (typeof self !== "undefined") { + self.globalThis = self; + } + } + } + exports2.polyfillGlobalThis = polyfillGlobalThis; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/locks.js +var require_locks = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/locks.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.processLock = exports2.navigatorLock = exports2.ProcessLockAcquireTimeoutError = exports2.NavigatorLockAcquireTimeoutError = exports2.LockAcquireTimeoutError = exports2.internals = void 0; + var helpers_1 = require_helpers3(); + exports2.internals = { + /** + * @experimental + */ + debug: !!(globalThis && (0, helpers_1.supportsLocalStorage)() && globalThis.localStorage && globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug") === "true") + }; + var LockAcquireTimeoutError = class extends Error { + constructor(message) { + super(message); + this.isAcquireTimeout = true; + } + }; + exports2.LockAcquireTimeoutError = LockAcquireTimeoutError; + var NavigatorLockAcquireTimeoutError = class extends LockAcquireTimeoutError { + }; + exports2.NavigatorLockAcquireTimeoutError = NavigatorLockAcquireTimeoutError; + var ProcessLockAcquireTimeoutError = class extends LockAcquireTimeoutError { + }; + exports2.ProcessLockAcquireTimeoutError = ProcessLockAcquireTimeoutError; + async function navigatorLock(name, acquireTimeout, fn) { + if (exports2.internals.debug) { + console.log("@supabase/gotrue-js: navigatorLock: acquire lock", name, acquireTimeout); + } + const abortController = new globalThis.AbortController(); + if (acquireTimeout > 0) { + setTimeout(() => { + abortController.abort(); + if (exports2.internals.debug) { + console.log("@supabase/gotrue-js: navigatorLock acquire timed out", name); + } + }, acquireTimeout); + } + return await Promise.resolve().then(() => globalThis.navigator.locks.request(name, acquireTimeout === 0 ? { + mode: "exclusive", + ifAvailable: true + } : { + mode: "exclusive", + signal: abortController.signal + }, async (lock) => { + if (lock) { + if (exports2.internals.debug) { + console.log("@supabase/gotrue-js: navigatorLock: acquired", name, lock.name); + } + try { + return await fn(); + } finally { + if (exports2.internals.debug) { + console.log("@supabase/gotrue-js: navigatorLock: released", name, lock.name); + } + } + } else { + if (acquireTimeout === 0) { + if (exports2.internals.debug) { + console.log("@supabase/gotrue-js: navigatorLock: not immediately available", name); + } + throw new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`); + } else { + if (exports2.internals.debug) { + try { + const result = await globalThis.navigator.locks.query(); + console.log("@supabase/gotrue-js: Navigator LockManager state", JSON.stringify(result, null, " ")); + } catch (e) { + console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state", e); + } + } + console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"); + return await fn(); + } + } + })); + } + exports2.navigatorLock = navigatorLock; + var PROCESS_LOCKS = {}; + async function processLock(name, acquireTimeout, fn) { + var _a; + const previousOperation = (_a = PROCESS_LOCKS[name]) !== null && _a !== void 0 ? _a : Promise.resolve(); + const currentOperation = Promise.race([ + previousOperation.catch(() => { + return null; + }), + acquireTimeout >= 0 ? new Promise((_, reject) => { + setTimeout(() => { + reject(new ProcessLockAcquireTimeoutError(`Acquring process lock with name "${name}" timed out`)); + }, acquireTimeout); + }) : null + ].filter((x) => x)).catch((e) => { + if (e && e.isAcquireTimeout) { + throw e; + } + return null; + }).then(async () => { + return await fn(); + }); + PROCESS_LOCKS[name] = currentOperation.catch(async (e) => { + if (e && e.isAcquireTimeout) { + await previousOperation; + return null; + } + throw e; + }); + return await currentOperation; + } + exports2.processLock = processLock; + } +}); + +// node_modules/@supabase/auth-js/dist/main/GoTrueClient.js +var require_GoTrueClient = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/GoTrueClient.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var GoTrueAdminApi_1 = __importDefault(require_GoTrueAdminApi()); + var constants_1 = require_constants6(); + var errors_1 = require_errors2(); + var fetch_1 = require_fetch3(); + var helpers_1 = require_helpers3(); + var local_storage_1 = require_local_storage(); + var polyfills_1 = require_polyfills(); + var version_1 = require_version5(); + var locks_1 = require_locks(); + var base64url_1 = require_base64url(); + (0, polyfills_1.polyfillGlobalThis)(); + var DEFAULT_OPTIONS = { + url: constants_1.GOTRUE_URL, + storageKey: constants_1.STORAGE_KEY, + autoRefreshToken: true, + persistSession: true, + detectSessionInUrl: true, + headers: constants_1.DEFAULT_HEADERS, + flowType: "implicit", + debug: false, + hasCustomAuthorizationHeader: false + }; + async function lockNoOp(name, acquireTimeout, fn) { + return await fn(); + } + var GoTrueClient = class _GoTrueClient { + /** + * Create a new client for use in the browser. + */ + constructor(options) { + var _a, _b; + this.memoryStorage = null; + this.stateChangeEmitters = /* @__PURE__ */ new Map(); + this.autoRefreshTicker = null; + this.visibilityChangedCallback = null; + this.refreshingDeferred = null; + this.initializePromise = null; + this.detectSessionInUrl = true; + this.hasCustomAuthorizationHeader = false; + this.suppressGetSessionWarning = false; + this.lockAcquired = false; + this.pendingInLock = []; + this.broadcastChannel = null; + this.logger = console.log; + this.instanceID = _GoTrueClient.nextInstanceID; + _GoTrueClient.nextInstanceID += 1; + if (this.instanceID > 0 && (0, helpers_1.isBrowser)()) { + console.warn("Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key."); + } + const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options); + this.logDebugMessages = !!settings.debug; + if (typeof settings.debug === "function") { + this.logger = settings.debug; + } + this.persistSession = settings.persistSession; + this.storageKey = settings.storageKey; + this.autoRefreshToken = settings.autoRefreshToken; + this.admin = new GoTrueAdminApi_1.default({ + url: settings.url, + headers: settings.headers, + fetch: settings.fetch + }); + this.url = settings.url; + this.headers = settings.headers; + this.fetch = (0, helpers_1.resolveFetch)(settings.fetch); + this.lock = settings.lock || lockNoOp; + this.detectSessionInUrl = settings.detectSessionInUrl; + this.flowType = settings.flowType; + this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader; + if (settings.lock) { + this.lock = settings.lock; + } else if ((0, helpers_1.isBrowser)() && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a === void 0 ? void 0 : _a.locks)) { + this.lock = locks_1.navigatorLock; + } else { + this.lock = lockNoOp; + } + this.jwks = { keys: [] }; + this.jwks_cached_at = Number.MIN_SAFE_INTEGER; + this.mfa = { + verify: this._verify.bind(this), + enroll: this._enroll.bind(this), + unenroll: this._unenroll.bind(this), + challenge: this._challenge.bind(this), + listFactors: this._listFactors.bind(this), + challengeAndVerify: this._challengeAndVerify.bind(this), + getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this) + }; + if (this.persistSession) { + if (settings.storage) { + this.storage = settings.storage; + } else { + if ((0, helpers_1.supportsLocalStorage)()) { + this.storage = local_storage_1.localStorageAdapter; + } else { + this.memoryStorage = {}; + this.storage = (0, local_storage_1.memoryLocalStorageAdapter)(this.memoryStorage); + } + } + } else { + this.memoryStorage = {}; + this.storage = (0, local_storage_1.memoryLocalStorageAdapter)(this.memoryStorage); + } + if ((0, helpers_1.isBrowser)() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) { + try { + this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey); + } catch (e) { + console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available", e); + } + (_b = this.broadcastChannel) === null || _b === void 0 ? void 0 : _b.addEventListener("message", async (event) => { + this._debug("received broadcast notification from other tab or client", event); + await this._notifyAllSubscribers(event.data.event, event.data.session, false); + }); + } + this.initialize(); + } + _debug(...args) { + if (this.logDebugMessages) { + this.logger(`GoTrueClient@${this.instanceID} (${version_1.version}) ${(/* @__PURE__ */ new Date()).toISOString()}`, ...args); + } + return this; + } + /** + * Initializes the client session either from the url or from storage. + * This method is automatically called when instantiating the client, but should also be called + * manually when checking for an error from an auth redirect (oauth, magiclink, password recovery, etc). + */ + async initialize() { + if (this.initializePromise) { + return await this.initializePromise; + } + this.initializePromise = (async () => { + return await this._acquireLock(-1, async () => { + return await this._initialize(); + }); + })(); + return await this.initializePromise; + } + /** + * IMPORTANT: + * 1. Never throw in this method, as it is called from the constructor + * 2. Never return a session from this method as it would be cached over + * the whole lifetime of the client + */ + async _initialize() { + var _a; + try { + const params = (0, helpers_1.parseParametersFromURL)(window.location.href); + let callbackUrlType = "none"; + if (this._isImplicitGrantCallback(params)) { + callbackUrlType = "implicit"; + } else if (await this._isPKCECallback(params)) { + callbackUrlType = "pkce"; + } + if ((0, helpers_1.isBrowser)() && this.detectSessionInUrl && callbackUrlType !== "none") { + const { data, error } = await this._getSessionFromURL(params, callbackUrlType); + if (error) { + this._debug("#_initialize()", "error detecting session from URL", error); + if ((0, errors_1.isAuthImplicitGrantRedirectError)(error)) { + const errorCode = (_a = error.details) === null || _a === void 0 ? void 0 : _a.code; + if (errorCode === "identity_already_exists" || errorCode === "identity_not_found" || errorCode === "single_identity_not_deletable") { + return { error }; + } + } + await this._removeSession(); + return { error }; + } + const { session, redirectType } = data; + this._debug("#_initialize()", "detected session in URL", session, "redirect type", redirectType); + await this._saveSession(session); + setTimeout(async () => { + if (redirectType === "recovery") { + await this._notifyAllSubscribers("PASSWORD_RECOVERY", session); + } else { + await this._notifyAllSubscribers("SIGNED_IN", session); + } + }, 0); + return { error: null }; + } + await this._recoverAndRefresh(); + return { error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { error }; + } + return { + error: new errors_1.AuthUnknownError("Unexpected error during initialization", error) + }; + } finally { + await this._handleVisibilityChange(); + this._debug("#_initialize()", "end"); + } + } + /** + * Creates a new anonymous user. + * + * @returns A session where the is_anonymous claim in the access token JWT set to true + */ + async signInAnonymously(credentials) { + var _a, _b, _c; + try { + const res = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/signup`, { + headers: this.headers, + body: { + data: (_b = (_a = credentials === null || credentials === void 0 ? void 0 : credentials.options) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {}, + gotrue_meta_security: { captcha_token: (_c = credentials === null || credentials === void 0 ? void 0 : credentials.options) === null || _c === void 0 ? void 0 : _c.captchaToken } + }, + xform: fetch_1._sessionResponse + }); + const { data, error } = res; + if (error || !data) { + return { data: { user: null, session: null }, error }; + } + const session = data.session; + const user = data.user; + if (data.session) { + await this._saveSession(data.session); + await this._notifyAllSubscribers("SIGNED_IN", session); + } + return { data: { user, session }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Creates a new user. + * + * Be aware that if a user account exists in the system you may get back an + * error message that attempts to hide this information from the user. + * This method has support for PKCE via email signups. The PKCE flow cannot be used when autoconfirm is enabled. + * + * @returns A logged-in session if the server has "autoconfirm" ON + * @returns A user if the server has "autoconfirm" OFF + */ + async signUp(credentials) { + var _a, _b, _c; + try { + let res; + if ("email" in credentials) { + const { email, password, options } = credentials; + let codeChallenge = null; + let codeChallengeMethod = null; + if (this.flowType === "pkce") { + ; + [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)(this.storage, this.storageKey); + } + res = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/signup`, { + headers: this.headers, + redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo, + body: { + email, + password, + data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {}, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }, + code_challenge: codeChallenge, + code_challenge_method: codeChallengeMethod + }, + xform: fetch_1._sessionResponse + }); + } else if ("phone" in credentials) { + const { phone, password, options } = credentials; + res = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/signup`, { + headers: this.headers, + body: { + phone, + password, + data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {}, + channel: (_c = options === null || options === void 0 ? void 0 : options.channel) !== null && _c !== void 0 ? _c : "sms", + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken } + }, + xform: fetch_1._sessionResponse + }); + } else { + throw new errors_1.AuthInvalidCredentialsError("You must provide either an email or phone number and a password"); + } + const { data, error } = res; + if (error || !data) { + return { data: { user: null, session: null }, error }; + } + const session = data.session; + const user = data.user; + if (data.session) { + await this._saveSession(data.session); + await this._notifyAllSubscribers("SIGNED_IN", session); + } + return { data: { user, session }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Log in an existing user with an email and password or phone and password. + * + * Be aware that you may get back an error message that will not distinguish + * between the cases where the account does not exist or that the + * email/phone and password combination is wrong or that the account can only + * be accessed via social login. + */ + async signInWithPassword(credentials) { + try { + let res; + if ("email" in credentials) { + const { email, password, options } = credentials; + res = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/token?grant_type=password`, { + headers: this.headers, + body: { + email, + password, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken } + }, + xform: fetch_1._sessionResponsePassword + }); + } else if ("phone" in credentials) { + const { phone, password, options } = credentials; + res = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/token?grant_type=password`, { + headers: this.headers, + body: { + phone, + password, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken } + }, + xform: fetch_1._sessionResponsePassword + }); + } else { + throw new errors_1.AuthInvalidCredentialsError("You must provide either an email or phone number and a password"); + } + const { data, error } = res; + if (error) { + return { data: { user: null, session: null }, error }; + } else if (!data || !data.session || !data.user) { + return { data: { user: null, session: null }, error: new errors_1.AuthInvalidTokenResponseError() }; + } + if (data.session) { + await this._saveSession(data.session); + await this._notifyAllSubscribers("SIGNED_IN", data.session); + } + return { + data: Object.assign({ user: data.user, session: data.session }, data.weak_password ? { weakPassword: data.weak_password } : null), + error + }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Log in an existing user via a third-party provider. + * This method supports the PKCE flow. + */ + async signInWithOAuth(credentials) { + var _a, _b, _c, _d; + return await this._handleProviderSignIn(credentials.provider, { + redirectTo: (_a = credentials.options) === null || _a === void 0 ? void 0 : _a.redirectTo, + scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes, + queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams, + skipBrowserRedirect: (_d = credentials.options) === null || _d === void 0 ? void 0 : _d.skipBrowserRedirect + }); + } + /** + * Log in an existing user by exchanging an Auth Code issued during the PKCE flow. + */ + async exchangeCodeForSession(authCode) { + await this.initializePromise; + return this._acquireLock(-1, async () => { + return this._exchangeCodeForSession(authCode); + }); + } + async _exchangeCodeForSession(authCode) { + const storageItem = await (0, helpers_1.getItemAsync)(this.storage, `${this.storageKey}-code-verifier`); + const [codeVerifier, redirectType] = (storageItem !== null && storageItem !== void 0 ? storageItem : "").split("/"); + try { + const { data, error } = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/token?grant_type=pkce`, { + headers: this.headers, + body: { + auth_code: authCode, + code_verifier: codeVerifier + }, + xform: fetch_1._sessionResponse + }); + await (0, helpers_1.removeItemAsync)(this.storage, `${this.storageKey}-code-verifier`); + if (error) { + throw error; + } + if (!data || !data.session || !data.user) { + return { + data: { user: null, session: null, redirectType: null }, + error: new errors_1.AuthInvalidTokenResponseError() + }; + } + if (data.session) { + await this._saveSession(data.session); + await this._notifyAllSubscribers("SIGNED_IN", data.session); + } + return { data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null, redirectType: null }, error }; + } + throw error; + } + } + /** + * Allows signing in with an OIDC ID token. The authentication provider used + * should be enabled and configured. + */ + async signInWithIdToken(credentials) { + try { + const { options, provider, token, access_token, nonce } = credentials; + const res = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/token?grant_type=id_token`, { + headers: this.headers, + body: { + provider, + id_token: token, + access_token, + nonce, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken } + }, + xform: fetch_1._sessionResponse + }); + const { data, error } = res; + if (error) { + return { data: { user: null, session: null }, error }; + } else if (!data || !data.session || !data.user) { + return { + data: { user: null, session: null }, + error: new errors_1.AuthInvalidTokenResponseError() + }; + } + if (data.session) { + await this._saveSession(data.session); + await this._notifyAllSubscribers("SIGNED_IN", data.session); + } + return { data, error }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Log in a user using magiclink or a one-time password (OTP). + * + * If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent. + * If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent. + * If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins. + * + * Be aware that you may get back an error message that will not distinguish + * between the cases where the account does not exist or, that the account + * can only be accessed via social login. + * + * Do note that you will need to configure a Whatsapp sender on Twilio + * if you are using phone sign in with the 'whatsapp' channel. The whatsapp + * channel is not supported on other providers + * at this time. + * This method supports PKCE when an email is passed. + */ + async signInWithOtp(credentials) { + var _a, _b, _c, _d, _e; + try { + if ("email" in credentials) { + const { email, options } = credentials; + let codeChallenge = null; + let codeChallengeMethod = null; + if (this.flowType === "pkce") { + ; + [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)(this.storage, this.storageKey); + } + const { error } = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/otp`, { + headers: this.headers, + body: { + email, + data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {}, + create_user: (_b = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _b !== void 0 ? _b : true, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }, + code_challenge: codeChallenge, + code_challenge_method: codeChallengeMethod + }, + redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo + }); + return { data: { user: null, session: null }, error }; + } + if ("phone" in credentials) { + const { phone, options } = credentials; + const { data, error } = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/otp`, { + headers: this.headers, + body: { + phone, + data: (_c = options === null || options === void 0 ? void 0 : options.data) !== null && _c !== void 0 ? _c : {}, + create_user: (_d = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _d !== void 0 ? _d : true, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }, + channel: (_e = options === null || options === void 0 ? void 0 : options.channel) !== null && _e !== void 0 ? _e : "sms" + } + }); + return { data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id }, error }; + } + throw new errors_1.AuthInvalidCredentialsError("You must provide either an email or phone number."); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Log in a user given a User supplied OTP or TokenHash received through mobile or email. + */ + async verifyOtp(params) { + var _a, _b; + try { + let redirectTo = void 0; + let captchaToken = void 0; + if ("options" in params) { + redirectTo = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo; + captchaToken = (_b = params.options) === null || _b === void 0 ? void 0 : _b.captchaToken; + } + const { data, error } = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/verify`, { + headers: this.headers, + body: Object.assign(Object.assign({}, params), { gotrue_meta_security: { captcha_token: captchaToken } }), + redirectTo, + xform: fetch_1._sessionResponse + }); + if (error) { + throw error; + } + if (!data) { + throw new Error("An error occurred on token verification."); + } + const session = data.session; + const user = data.user; + if (session === null || session === void 0 ? void 0 : session.access_token) { + await this._saveSession(session); + await this._notifyAllSubscribers(params.type == "recovery" ? "PASSWORD_RECOVERY" : "SIGNED_IN", session); + } + return { data: { user, session }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Attempts a single-sign on using an enterprise Identity Provider. A + * successful SSO attempt will redirect the current page to the identity + * provider authorization page. The redirect URL is implementation and SSO + * protocol specific. + * + * You can use it by providing a SSO domain. Typically you can extract this + * domain by asking users for their email address. If this domain is + * registered on the Auth instance the redirect will use that organization's + * currently active SSO Identity Provider for the login. + * + * If you have built an organization-specific login page, you can use the + * organization's SSO Identity Provider UUID directly instead. + */ + async signInWithSSO(params) { + var _a, _b, _c; + try { + let codeChallenge = null; + let codeChallengeMethod = null; + if (this.flowType === "pkce") { + ; + [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)(this.storage, this.storageKey); + } + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/sso`, { + body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, "providerId" in params ? { provider_id: params.providerId } : null), "domain" in params ? { domain: params.domain } : null), { redirect_to: (_b = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo) !== null && _b !== void 0 ? _b : void 0 }), ((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken) ? { gotrue_meta_security: { captcha_token: params.options.captchaToken } } : null), { skip_http_redirect: true, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }), + headers: this.headers, + xform: fetch_1._ssoResponse + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + /** + * Sends a reauthentication OTP to the user's email or phone number. + * Requires the user to be signed-in. + */ + async reauthenticate() { + await this.initializePromise; + return await this._acquireLock(-1, async () => { + return await this._reauthenticate(); + }); + } + async _reauthenticate() { + try { + return await this._useSession(async (result) => { + const { data: { session }, error: sessionError } = result; + if (sessionError) + throw sessionError; + if (!session) + throw new errors_1.AuthSessionMissingError(); + const { error } = await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/reauthenticate`, { + headers: this.headers, + jwt: session.access_token + }); + return { data: { user: null, session: null }, error }; + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Resends an existing signup confirmation email, email change email, SMS OTP or phone change OTP. + */ + async resend(credentials) { + try { + const endpoint = `${this.url}/resend`; + if ("email" in credentials) { + const { email, type, options } = credentials; + const { error } = await (0, fetch_1._request)(this.fetch, "POST", endpoint, { + headers: this.headers, + body: { + email, + type, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken } + }, + redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo + }); + return { data: { user: null, session: null }, error }; + } else if ("phone" in credentials) { + const { phone, type, options } = credentials; + const { data, error } = await (0, fetch_1._request)(this.fetch, "POST", endpoint, { + headers: this.headers, + body: { + phone, + type, + gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken } + } + }); + return { data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id }, error }; + } + throw new errors_1.AuthInvalidCredentialsError("You must provide either an email or phone number and a type"); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Returns the session, refreshing it if necessary. + * + * The session returned can be null if the session is not detected which can happen in the event a user is not signed-in or has logged out. + * + * **IMPORTANT:** This method loads values directly from the storage attached + * to the client. If that storage is based on request cookies for example, + * the values in it may not be authentic and therefore it's strongly advised + * against using this method and its results in such circumstances. A warning + * will be emitted if this is detected. Use {@link #getUser()} instead. + */ + async getSession() { + await this.initializePromise; + const result = await this._acquireLock(-1, async () => { + return this._useSession(async (result2) => { + return result2; + }); + }); + return result; + } + /** + * Acquires a global lock based on the storage key. + */ + async _acquireLock(acquireTimeout, fn) { + this._debug("#_acquireLock", "begin", acquireTimeout); + try { + if (this.lockAcquired) { + const last = this.pendingInLock.length ? this.pendingInLock[this.pendingInLock.length - 1] : Promise.resolve(); + const result = (async () => { + await last; + return await fn(); + })(); + this.pendingInLock.push((async () => { + try { + await result; + } catch (e) { + } + })()); + return result; + } + return await this.lock(`lock:${this.storageKey}`, acquireTimeout, async () => { + this._debug("#_acquireLock", "lock acquired for storage key", this.storageKey); + try { + this.lockAcquired = true; + const result = fn(); + this.pendingInLock.push((async () => { + try { + await result; + } catch (e) { + } + })()); + await result; + while (this.pendingInLock.length) { + const waitOn = [...this.pendingInLock]; + await Promise.all(waitOn); + this.pendingInLock.splice(0, waitOn.length); + } + return await result; + } finally { + this._debug("#_acquireLock", "lock released for storage key", this.storageKey); + this.lockAcquired = false; + } + }); + } finally { + this._debug("#_acquireLock", "end"); + } + } + /** + * Use instead of {@link #getSession} inside the library. It is + * semantically usually what you want, as getting a session involves some + * processing afterwards that requires only one client operating on the + * session at once across multiple tabs or processes. + */ + async _useSession(fn) { + this._debug("#_useSession", "begin"); + try { + const result = await this.__loadSession(); + return await fn(result); + } finally { + this._debug("#_useSession", "end"); + } + } + /** + * NEVER USE DIRECTLY! + * + * Always use {@link #_useSession}. + */ + async __loadSession() { + this._debug("#__loadSession()", "begin"); + if (!this.lockAcquired) { + this._debug("#__loadSession()", "used outside of an acquired lock!", new Error().stack); + } + try { + let currentSession = null; + const maybeSession = await (0, helpers_1.getItemAsync)(this.storage, this.storageKey); + this._debug("#getSession()", "session from storage", maybeSession); + if (maybeSession !== null) { + if (this._isValidSession(maybeSession)) { + currentSession = maybeSession; + } else { + this._debug("#getSession()", "session from storage is not valid"); + await this._removeSession(); + } + } + if (!currentSession) { + return { data: { session: null }, error: null }; + } + const hasExpired = currentSession.expires_at ? currentSession.expires_at * 1e3 - Date.now() < constants_1.EXPIRY_MARGIN_MS : false; + this._debug("#__loadSession()", `session has${hasExpired ? "" : " not"} expired`, "expires_at", currentSession.expires_at); + if (!hasExpired) { + if (this.storage.isServer) { + let suppressWarning = this.suppressGetSessionWarning; + const proxySession = new Proxy(currentSession, { + get: (target, prop, receiver) => { + if (!suppressWarning && prop === "user") { + console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."); + suppressWarning = true; + this.suppressGetSessionWarning = true; + } + return Reflect.get(target, prop, receiver); + } + }); + currentSession = proxySession; + } + return { data: { session: currentSession }, error: null }; + } + const { session, error } = await this._callRefreshToken(currentSession.refresh_token); + if (error) { + return { data: { session: null }, error }; + } + return { data: { session }, error: null }; + } finally { + this._debug("#__loadSession()", "end"); + } + } + /** + * Gets the current user details if there is an existing session. This method + * performs a network request to the Supabase Auth server, so the returned + * value is authentic and can be used to base authorization rules on. + * + * @param jwt Takes in an optional access token JWT. If no JWT is provided, the JWT from the current session is used. + */ + async getUser(jwt) { + if (jwt) { + return await this._getUser(jwt); + } + await this.initializePromise; + const result = await this._acquireLock(-1, async () => { + return await this._getUser(); + }); + return result; + } + async _getUser(jwt) { + try { + if (jwt) { + return await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/user`, { + headers: this.headers, + jwt, + xform: fetch_1._userResponse + }); + } + return await this._useSession(async (result) => { + var _a, _b, _c; + const { data, error } = result; + if (error) { + throw error; + } + if (!((_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) && !this.hasCustomAuthorizationHeader) { + return { data: { user: null }, error: new errors_1.AuthSessionMissingError() }; + } + return await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/user`, { + headers: this.headers, + jwt: (_c = (_b = data.session) === null || _b === void 0 ? void 0 : _b.access_token) !== null && _c !== void 0 ? _c : void 0, + xform: fetch_1._userResponse + }); + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + if ((0, errors_1.isAuthSessionMissingError)(error)) { + await this._removeSession(); + await (0, helpers_1.removeItemAsync)(this.storage, `${this.storageKey}-code-verifier`); + } + return { data: { user: null }, error }; + } + throw error; + } + } + /** + * Updates user data for a logged in user. + */ + async updateUser(attributes, options = {}) { + await this.initializePromise; + return await this._acquireLock(-1, async () => { + return await this._updateUser(attributes, options); + }); + } + async _updateUser(attributes, options = {}) { + try { + return await this._useSession(async (result) => { + const { data: sessionData, error: sessionError } = result; + if (sessionError) { + throw sessionError; + } + if (!sessionData.session) { + throw new errors_1.AuthSessionMissingError(); + } + const session = sessionData.session; + let codeChallenge = null; + let codeChallengeMethod = null; + if (this.flowType === "pkce" && attributes.email != null) { + ; + [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)(this.storage, this.storageKey); + } + const { data, error: userError } = await (0, fetch_1._request)(this.fetch, "PUT", `${this.url}/user`, { + headers: this.headers, + redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo, + body: Object.assign(Object.assign({}, attributes), { code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }), + jwt: session.access_token, + xform: fetch_1._userResponse + }); + if (userError) + throw userError; + session.user = data.user; + await this._saveSession(session); + await this._notifyAllSubscribers("USER_UPDATED", session); + return { data: { user: session.user }, error: null }; + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null }, error }; + } + throw error; + } + } + /** + * Sets the session data from the current session. If the current session is expired, setSession will take care of refreshing it to obtain a new session. + * If the refresh token or access token in the current session is invalid, an error will be thrown. + * @param currentSession The current session that minimally contains an access token and refresh token. + */ + async setSession(currentSession) { + await this.initializePromise; + return await this._acquireLock(-1, async () => { + return await this._setSession(currentSession); + }); + } + async _setSession(currentSession) { + try { + if (!currentSession.access_token || !currentSession.refresh_token) { + throw new errors_1.AuthSessionMissingError(); + } + const timeNow = Date.now() / 1e3; + let expiresAt = timeNow; + let hasExpired = true; + let session = null; + const { payload } = (0, helpers_1.decodeJWT)(currentSession.access_token); + if (payload.exp) { + expiresAt = payload.exp; + hasExpired = expiresAt <= timeNow; + } + if (hasExpired) { + const { session: refreshedSession, error } = await this._callRefreshToken(currentSession.refresh_token); + if (error) { + return { data: { user: null, session: null }, error }; + } + if (!refreshedSession) { + return { data: { user: null, session: null }, error: null }; + } + session = refreshedSession; + } else { + const { data, error } = await this._getUser(currentSession.access_token); + if (error) { + throw error; + } + session = { + access_token: currentSession.access_token, + refresh_token: currentSession.refresh_token, + user: data.user, + token_type: "bearer", + expires_in: expiresAt - timeNow, + expires_at: expiresAt + }; + await this._saveSession(session); + await this._notifyAllSubscribers("SIGNED_IN", session); + } + return { data: { user: session.user, session }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { session: null, user: null }, error }; + } + throw error; + } + } + /** + * Returns a new session, regardless of expiry status. + * Takes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession(). + * If the current session's refresh token is invalid, an error will be thrown. + * @param currentSession The current session. If passed in, it must contain a refresh token. + */ + async refreshSession(currentSession) { + await this.initializePromise; + return await this._acquireLock(-1, async () => { + return await this._refreshSession(currentSession); + }); + } + async _refreshSession(currentSession) { + try { + return await this._useSession(async (result) => { + var _a; + if (!currentSession) { + const { data, error: error2 } = result; + if (error2) { + throw error2; + } + currentSession = (_a = data.session) !== null && _a !== void 0 ? _a : void 0; + } + if (!(currentSession === null || currentSession === void 0 ? void 0 : currentSession.refresh_token)) { + throw new errors_1.AuthSessionMissingError(); + } + const { session, error } = await this._callRefreshToken(currentSession.refresh_token); + if (error) { + return { data: { user: null, session: null }, error }; + } + if (!session) { + return { data: { user: null, session: null }, error: null }; + } + return { data: { user: session.user, session }, error: null }; + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { user: null, session: null }, error }; + } + throw error; + } + } + /** + * Gets the session data from a URL string + */ + async _getSessionFromURL(params, callbackUrlType) { + try { + if (!(0, helpers_1.isBrowser)()) + throw new errors_1.AuthImplicitGrantRedirectError("No browser detected."); + if (params.error || params.error_description || params.error_code) { + throw new errors_1.AuthImplicitGrantRedirectError(params.error_description || "Error in URL with unspecified error_description", { + error: params.error || "unspecified_error", + code: params.error_code || "unspecified_code" + }); + } + switch (callbackUrlType) { + case "implicit": + if (this.flowType === "pkce") { + throw new errors_1.AuthPKCEGrantCodeExchangeError("Not a valid PKCE flow url."); + } + break; + case "pkce": + if (this.flowType === "implicit") { + throw new errors_1.AuthImplicitGrantRedirectError("Not a valid implicit grant flow url."); + } + break; + default: + } + if (callbackUrlType === "pkce") { + this._debug("#_initialize()", "begin", "is PKCE flow", true); + if (!params.code) + throw new errors_1.AuthPKCEGrantCodeExchangeError("No code detected."); + const { data: data2, error: error2 } = await this._exchangeCodeForSession(params.code); + if (error2) + throw error2; + const url = new URL(window.location.href); + url.searchParams.delete("code"); + window.history.replaceState(window.history.state, "", url.toString()); + return { data: { session: data2.session, redirectType: null }, error: null }; + } + const { provider_token, provider_refresh_token, access_token, refresh_token, expires_in, expires_at, token_type } = params; + if (!access_token || !expires_in || !refresh_token || !token_type) { + throw new errors_1.AuthImplicitGrantRedirectError("No session defined in URL"); + } + const timeNow = Math.round(Date.now() / 1e3); + const expiresIn = parseInt(expires_in); + let expiresAt = timeNow + expiresIn; + if (expires_at) { + expiresAt = parseInt(expires_at); + } + const actuallyExpiresIn = expiresAt - timeNow; + if (actuallyExpiresIn * 1e3 <= constants_1.AUTO_REFRESH_TICK_DURATION_MS) { + console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${actuallyExpiresIn}s, should have been closer to ${expiresIn}s`); + } + const issuedAt = expiresAt - expiresIn; + if (timeNow - issuedAt >= 120) { + console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale", issuedAt, expiresAt, timeNow); + } else if (timeNow - issuedAt < 0) { + console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew", issuedAt, expiresAt, timeNow); + } + const { data, error } = await this._getUser(access_token); + if (error) + throw error; + const session = { + provider_token, + provider_refresh_token, + access_token, + expires_in: expiresIn, + expires_at: expiresAt, + refresh_token, + token_type, + user: data.user + }; + window.location.hash = ""; + this._debug("#_getSessionFromURL()", "clearing window.location.hash"); + return { data: { session, redirectType: params.type }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { session: null, redirectType: null }, error }; + } + throw error; + } + } + /** + * Checks if the current URL contains parameters given by an implicit oauth grant flow (https://www.rfc-editor.org/rfc/rfc6749.html#section-4.2) + */ + _isImplicitGrantCallback(params) { + return Boolean(params.access_token || params.error_description); + } + /** + * Checks if the current URL and backing storage contain parameters given by a PKCE flow + */ + async _isPKCECallback(params) { + const currentStorageContent = await (0, helpers_1.getItemAsync)(this.storage, `${this.storageKey}-code-verifier`); + return !!(params.code && currentStorageContent); + } + /** + * Inside a browser context, `signOut()` will remove the logged in user from the browser session and log them out - removing all items from localstorage and then trigger a `"SIGNED_OUT"` event. + * + * For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`. + * There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason. + * + * If using `others` scope, no `SIGNED_OUT` event is fired! + */ + async signOut(options = { scope: "global" }) { + await this.initializePromise; + return await this._acquireLock(-1, async () => { + return await this._signOut(options); + }); + } + async _signOut({ scope } = { scope: "global" }) { + return await this._useSession(async (result) => { + var _a; + const { data, error: sessionError } = result; + if (sessionError) { + return { error: sessionError }; + } + const accessToken = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token; + if (accessToken) { + const { error } = await this.admin.signOut(accessToken, scope); + if (error) { + if (!((0, errors_1.isAuthApiError)(error) && (error.status === 404 || error.status === 401 || error.status === 403))) { + return { error }; + } + } + } + if (scope !== "others") { + await this._removeSession(); + await (0, helpers_1.removeItemAsync)(this.storage, `${this.storageKey}-code-verifier`); + } + return { error: null }; + }); + } + /** + * Receive a notification every time an auth event happens. + * @param callback A callback function to be invoked when an auth event happens. + */ + onAuthStateChange(callback) { + const id = (0, helpers_1.uuid)(); + const subscription = { + id, + callback, + unsubscribe: () => { + this._debug("#unsubscribe()", "state change callback with id removed", id); + this.stateChangeEmitters.delete(id); + } + }; + this._debug("#onAuthStateChange()", "registered callback with id", id); + this.stateChangeEmitters.set(id, subscription); + (async () => { + await this.initializePromise; + await this._acquireLock(-1, async () => { + this._emitInitialSession(id); + }); + })(); + return { data: { subscription } }; + } + async _emitInitialSession(id) { + return await this._useSession(async (result) => { + var _a, _b; + try { + const { data: { session }, error } = result; + if (error) + throw error; + await ((_a = this.stateChangeEmitters.get(id)) === null || _a === void 0 ? void 0 : _a.callback("INITIAL_SESSION", session)); + this._debug("INITIAL_SESSION", "callback id", id, "session", session); + } catch (err) { + await ((_b = this.stateChangeEmitters.get(id)) === null || _b === void 0 ? void 0 : _b.callback("INITIAL_SESSION", null)); + this._debug("INITIAL_SESSION", "callback id", id, "error", err); + console.error(err); + } + }); + } + /** + * Sends a password reset request to an email address. This method supports the PKCE flow. + * + * @param email The email address of the user. + * @param options.redirectTo The URL to send the user to after they click the password reset link. + * @param options.captchaToken Verification token received when the user completes the captcha on the site. + */ + async resetPasswordForEmail(email, options = {}) { + let codeChallenge = null; + let codeChallengeMethod = null; + if (this.flowType === "pkce") { + ; + [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)( + this.storage, + this.storageKey, + true + // isPasswordRecovery + ); + } + try { + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/recover`, { + body: { + email, + code_challenge: codeChallenge, + code_challenge_method: codeChallengeMethod, + gotrue_meta_security: { captcha_token: options.captchaToken } + }, + headers: this.headers, + redirectTo: options.redirectTo + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + /** + * Gets all the identities linked to a user. + */ + async getUserIdentities() { + var _a; + try { + const { data, error } = await this.getUser(); + if (error) + throw error; + return { data: { identities: (_a = data.user.identities) !== null && _a !== void 0 ? _a : [] }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + /** + * Links an oauth identity to an existing user. + * This method supports the PKCE flow. + */ + async linkIdentity(credentials) { + var _a; + try { + const { data, error } = await this._useSession(async (result) => { + var _a2, _b, _c, _d, _e; + const { data: data2, error: error2 } = result; + if (error2) + throw error2; + const url = await this._getUrlForProvider(`${this.url}/user/identities/authorize`, credentials.provider, { + redirectTo: (_a2 = credentials.options) === null || _a2 === void 0 ? void 0 : _a2.redirectTo, + scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes, + queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams, + skipBrowserRedirect: true + }); + return await (0, fetch_1._request)(this.fetch, "GET", url, { + headers: this.headers, + jwt: (_e = (_d = data2.session) === null || _d === void 0 ? void 0 : _d.access_token) !== null && _e !== void 0 ? _e : void 0 + }); + }); + if (error) + throw error; + if ((0, helpers_1.isBrowser)() && !((_a = credentials.options) === null || _a === void 0 ? void 0 : _a.skipBrowserRedirect)) { + window.location.assign(data === null || data === void 0 ? void 0 : data.url); + } + return { data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url }, error: null }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: { provider: credentials.provider, url: null }, error }; + } + throw error; + } + } + /** + * Unlinks an identity from a user by deleting it. The user will no longer be able to sign in with that identity once it's unlinked. + */ + async unlinkIdentity(identity) { + try { + return await this._useSession(async (result) => { + var _a, _b; + const { data, error } = result; + if (error) { + throw error; + } + return await (0, fetch_1._request)(this.fetch, "DELETE", `${this.url}/user/identities/${identity.identity_id}`, { + headers: this.headers, + jwt: (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : void 0 + }); + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + /** + * Generates a new JWT. + * @param refreshToken A valid refresh token that was returned on login. + */ + async _refreshAccessToken(refreshToken) { + const debugName = `#_refreshAccessToken(${refreshToken.substring(0, 5)}...)`; + this._debug(debugName, "begin"); + try { + const startedAt = Date.now(); + return await (0, helpers_1.retryable)(async (attempt) => { + if (attempt > 0) { + await (0, helpers_1.sleep)(200 * Math.pow(2, attempt - 1)); + } + this._debug(debugName, "refreshing attempt", attempt); + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/token?grant_type=refresh_token`, { + body: { refresh_token: refreshToken }, + headers: this.headers, + xform: fetch_1._sessionResponse + }); + }, (attempt, error) => { + const nextBackOffInterval = 200 * Math.pow(2, attempt); + return error && (0, errors_1.isAuthRetryableFetchError)(error) && // retryable only if the request can be sent before the backoff overflows the tick duration + Date.now() + nextBackOffInterval - startedAt < constants_1.AUTO_REFRESH_TICK_DURATION_MS; + }); + } catch (error) { + this._debug(debugName, "error", error); + if ((0, errors_1.isAuthError)(error)) { + return { data: { session: null, user: null }, error }; + } + throw error; + } finally { + this._debug(debugName, "end"); + } + } + _isValidSession(maybeSession) { + const isValidSession = typeof maybeSession === "object" && maybeSession !== null && "access_token" in maybeSession && "refresh_token" in maybeSession && "expires_at" in maybeSession; + return isValidSession; + } + async _handleProviderSignIn(provider, options) { + const url = await this._getUrlForProvider(`${this.url}/authorize`, provider, { + redirectTo: options.redirectTo, + scopes: options.scopes, + queryParams: options.queryParams + }); + this._debug("#_handleProviderSignIn()", "provider", provider, "options", options, "url", url); + if ((0, helpers_1.isBrowser)() && !options.skipBrowserRedirect) { + window.location.assign(url); + } + return { data: { provider, url }, error: null }; + } + /** + * Recovers the session from LocalStorage and refreshes the token + * Note: this method is async to accommodate for AsyncStorage e.g. in React native. + */ + async _recoverAndRefresh() { + var _a; + const debugName = "#_recoverAndRefresh()"; + this._debug(debugName, "begin"); + try { + const currentSession = await (0, helpers_1.getItemAsync)(this.storage, this.storageKey); + this._debug(debugName, "session from storage", currentSession); + if (!this._isValidSession(currentSession)) { + this._debug(debugName, "session is not valid"); + if (currentSession !== null) { + await this._removeSession(); + } + return; + } + const expiresWithMargin = ((_a = currentSession.expires_at) !== null && _a !== void 0 ? _a : Infinity) * 1e3 - Date.now() < constants_1.EXPIRY_MARGIN_MS; + this._debug(debugName, `session has${expiresWithMargin ? "" : " not"} expired with margin of ${constants_1.EXPIRY_MARGIN_MS}s`); + if (expiresWithMargin) { + if (this.autoRefreshToken && currentSession.refresh_token) { + const { error } = await this._callRefreshToken(currentSession.refresh_token); + if (error) { + console.error(error); + if (!(0, errors_1.isAuthRetryableFetchError)(error)) { + this._debug(debugName, "refresh failed with a non-retryable error, removing the session", error); + await this._removeSession(); + } + } + } + } else { + await this._notifyAllSubscribers("SIGNED_IN", currentSession); + } + } catch (err) { + this._debug(debugName, "error", err); + console.error(err); + return; + } finally { + this._debug(debugName, "end"); + } + } + async _callRefreshToken(refreshToken) { + var _a, _b; + if (!refreshToken) { + throw new errors_1.AuthSessionMissingError(); + } + if (this.refreshingDeferred) { + return this.refreshingDeferred.promise; + } + const debugName = `#_callRefreshToken(${refreshToken.substring(0, 5)}...)`; + this._debug(debugName, "begin"); + try { + this.refreshingDeferred = new helpers_1.Deferred(); + const { data, error } = await this._refreshAccessToken(refreshToken); + if (error) + throw error; + if (!data.session) + throw new errors_1.AuthSessionMissingError(); + await this._saveSession(data.session); + await this._notifyAllSubscribers("TOKEN_REFRESHED", data.session); + const result = { session: data.session, error: null }; + this.refreshingDeferred.resolve(result); + return result; + } catch (error) { + this._debug(debugName, "error", error); + if ((0, errors_1.isAuthError)(error)) { + const result = { session: null, error }; + if (!(0, errors_1.isAuthRetryableFetchError)(error)) { + await this._removeSession(); + } + (_a = this.refreshingDeferred) === null || _a === void 0 ? void 0 : _a.resolve(result); + return result; + } + (_b = this.refreshingDeferred) === null || _b === void 0 ? void 0 : _b.reject(error); + throw error; + } finally { + this.refreshingDeferred = null; + this._debug(debugName, "end"); + } + } + async _notifyAllSubscribers(event, session, broadcast = true) { + const debugName = `#_notifyAllSubscribers(${event})`; + this._debug(debugName, "begin", session, `broadcast = ${broadcast}`); + try { + if (this.broadcastChannel && broadcast) { + this.broadcastChannel.postMessage({ event, session }); + } + const errors = []; + const promises = Array.from(this.stateChangeEmitters.values()).map(async (x) => { + try { + await x.callback(event, session); + } catch (e) { + errors.push(e); + } + }); + await Promise.all(promises); + if (errors.length > 0) { + for (let i = 0; i < errors.length; i += 1) { + console.error(errors[i]); + } + throw errors[0]; + } + } finally { + this._debug(debugName, "end"); + } + } + /** + * set currentSession and currentUser + * process to _startAutoRefreshToken if possible + */ + async _saveSession(session) { + this._debug("#_saveSession()", session); + this.suppressGetSessionWarning = true; + await (0, helpers_1.setItemAsync)(this.storage, this.storageKey, session); + } + async _removeSession() { + this._debug("#_removeSession()"); + await (0, helpers_1.removeItemAsync)(this.storage, this.storageKey); + await this._notifyAllSubscribers("SIGNED_OUT", null); + } + /** + * Removes any registered visibilitychange callback. + * + * {@see #startAutoRefresh} + * {@see #stopAutoRefresh} + */ + _removeVisibilityChangedCallback() { + this._debug("#_removeVisibilityChangedCallback()"); + const callback = this.visibilityChangedCallback; + this.visibilityChangedCallback = null; + try { + if (callback && (0, helpers_1.isBrowser)() && (window === null || window === void 0 ? void 0 : window.removeEventListener)) { + window.removeEventListener("visibilitychange", callback); + } + } catch (e) { + console.error("removing visibilitychange callback failed", e); + } + } + /** + * This is the private implementation of {@link #startAutoRefresh}. Use this + * within the library. + */ + async _startAutoRefresh() { + await this._stopAutoRefresh(); + this._debug("#_startAutoRefresh()"); + const ticker = setInterval(() => this._autoRefreshTokenTick(), constants_1.AUTO_REFRESH_TICK_DURATION_MS); + this.autoRefreshTicker = ticker; + if (ticker && typeof ticker === "object" && typeof ticker.unref === "function") { + ticker.unref(); + } else if (typeof Deno !== "undefined" && typeof Deno.unrefTimer === "function") { + Deno.unrefTimer(ticker); + } + setTimeout(async () => { + await this.initializePromise; + await this._autoRefreshTokenTick(); + }, 0); + } + /** + * This is the private implementation of {@link #stopAutoRefresh}. Use this + * within the library. + */ + async _stopAutoRefresh() { + this._debug("#_stopAutoRefresh()"); + const ticker = this.autoRefreshTicker; + this.autoRefreshTicker = null; + if (ticker) { + clearInterval(ticker); + } + } + /** + * Starts an auto-refresh process in the background. The session is checked + * every few seconds. Close to the time of expiration a process is started to + * refresh the session. If refreshing fails it will be retried for as long as + * necessary. + * + * If you set the {@link GoTrueClientOptions#autoRefreshToken} you don't need + * to call this function, it will be called for you. + * + * On browsers the refresh process works only when the tab/window is in the + * foreground to conserve resources as well as prevent race conditions and + * flooding auth with requests. If you call this method any managed + * visibility change callback will be removed and you must manage visibility + * changes on your own. + * + * On non-browser platforms the refresh process works *continuously* in the + * background, which may not be desirable. You should hook into your + * platform's foreground indication mechanism and call these methods + * appropriately to conserve resources. + * + * {@see #stopAutoRefresh} + */ + async startAutoRefresh() { + this._removeVisibilityChangedCallback(); + await this._startAutoRefresh(); + } + /** + * Stops an active auto refresh process running in the background (if any). + * + * If you call this method any managed visibility change callback will be + * removed and you must manage visibility changes on your own. + * + * See {@link #startAutoRefresh} for more details. + */ + async stopAutoRefresh() { + this._removeVisibilityChangedCallback(); + await this._stopAutoRefresh(); + } + /** + * Runs the auto refresh token tick. + */ + async _autoRefreshTokenTick() { + this._debug("#_autoRefreshTokenTick()", "begin"); + try { + await this._acquireLock(0, async () => { + try { + const now = Date.now(); + try { + return await this._useSession(async (result) => { + const { data: { session } } = result; + if (!session || !session.refresh_token || !session.expires_at) { + this._debug("#_autoRefreshTokenTick()", "no session"); + return; + } + const expiresInTicks = Math.floor((session.expires_at * 1e3 - now) / constants_1.AUTO_REFRESH_TICK_DURATION_MS); + this._debug("#_autoRefreshTokenTick()", `access token expires in ${expiresInTicks} ticks, a tick lasts ${constants_1.AUTO_REFRESH_TICK_DURATION_MS}ms, refresh threshold is ${constants_1.AUTO_REFRESH_TICK_THRESHOLD} ticks`); + if (expiresInTicks <= constants_1.AUTO_REFRESH_TICK_THRESHOLD) { + await this._callRefreshToken(session.refresh_token); + } + }); + } catch (e) { + console.error("Auto refresh tick failed with error. This is likely a transient error.", e); + } + } finally { + this._debug("#_autoRefreshTokenTick()", "end"); + } + }); + } catch (e) { + if (e.isAcquireTimeout || e instanceof locks_1.LockAcquireTimeoutError) { + this._debug("auto refresh token tick lock not available"); + } else { + throw e; + } + } + } + /** + * Registers callbacks on the browser / platform, which in-turn run + * algorithms when the browser window/tab are in foreground. On non-browser + * platforms it assumes always foreground. + */ + async _handleVisibilityChange() { + this._debug("#_handleVisibilityChange()"); + if (!(0, helpers_1.isBrowser)() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) { + if (this.autoRefreshToken) { + this.startAutoRefresh(); + } + return false; + } + try { + this.visibilityChangedCallback = async () => await this._onVisibilityChanged(false); + window === null || window === void 0 ? void 0 : window.addEventListener("visibilitychange", this.visibilityChangedCallback); + await this._onVisibilityChanged(true); + } catch (error) { + console.error("_handleVisibilityChange", error); + } + } + /** + * Callback registered with `window.addEventListener('visibilitychange')`. + */ + async _onVisibilityChanged(calledFromInitialize) { + const methodName = `#_onVisibilityChanged(${calledFromInitialize})`; + this._debug(methodName, "visibilityState", document.visibilityState); + if (document.visibilityState === "visible") { + if (this.autoRefreshToken) { + this._startAutoRefresh(); + } + if (!calledFromInitialize) { + await this.initializePromise; + await this._acquireLock(-1, async () => { + if (document.visibilityState !== "visible") { + this._debug(methodName, "acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting"); + return; + } + await this._recoverAndRefresh(); + }); + } + } else if (document.visibilityState === "hidden") { + if (this.autoRefreshToken) { + this._stopAutoRefresh(); + } + } + } + /** + * Generates the relevant login URL for a third-party provider. + * @param options.redirectTo A URL or mobile address to send the user to after they are confirmed. + * @param options.scopes A space-separated list of scopes granted to the OAuth application. + * @param options.queryParams An object of key-value pairs containing query parameters granted to the OAuth application. + */ + async _getUrlForProvider(url, provider, options) { + const urlParams = [`provider=${encodeURIComponent(provider)}`]; + if (options === null || options === void 0 ? void 0 : options.redirectTo) { + urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`); + } + if (options === null || options === void 0 ? void 0 : options.scopes) { + urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`); + } + if (this.flowType === "pkce") { + const [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)(this.storage, this.storageKey); + const flowParams = new URLSearchParams({ + code_challenge: `${encodeURIComponent(codeChallenge)}`, + code_challenge_method: `${encodeURIComponent(codeChallengeMethod)}` + }); + urlParams.push(flowParams.toString()); + } + if (options === null || options === void 0 ? void 0 : options.queryParams) { + const query = new URLSearchParams(options.queryParams); + urlParams.push(query.toString()); + } + if (options === null || options === void 0 ? void 0 : options.skipBrowserRedirect) { + urlParams.push(`skip_http_redirect=${options.skipBrowserRedirect}`); + } + return `${url}?${urlParams.join("&")}`; + } + async _unenroll(params) { + try { + return await this._useSession(async (result) => { + var _a; + const { data: sessionData, error: sessionError } = result; + if (sessionError) { + return { data: null, error: sessionError }; + } + return await (0, fetch_1._request)(this.fetch, "DELETE", `${this.url}/factors/${params.factorId}`, { + headers: this.headers, + jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token + }); + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + async _enroll(params) { + try { + return await this._useSession(async (result) => { + var _a, _b; + const { data: sessionData, error: sessionError } = result; + if (sessionError) { + return { data: null, error: sessionError }; + } + const body = Object.assign({ friendly_name: params.friendlyName, factor_type: params.factorType }, params.factorType === "phone" ? { phone: params.phone } : { issuer: params.issuer }); + const { data, error } = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/factors`, { + body, + headers: this.headers, + jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token + }); + if (error) { + return { data: null, error }; + } + if (params.factorType === "totp" && ((_b = data === null || data === void 0 ? void 0 : data.totp) === null || _b === void 0 ? void 0 : _b.qr_code)) { + data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`; + } + return { data, error: null }; + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + /** + * {@see GoTrueMFAApi#verify} + */ + async _verify(params) { + return this._acquireLock(-1, async () => { + try { + return await this._useSession(async (result) => { + var _a; + const { data: sessionData, error: sessionError } = result; + if (sessionError) { + return { data: null, error: sessionError }; + } + const { data, error } = await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/factors/${params.factorId}/verify`, { + body: { code: params.code, challenge_id: params.challengeId }, + headers: this.headers, + jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token + }); + if (error) { + return { data: null, error }; + } + await this._saveSession(Object.assign({ expires_at: Math.round(Date.now() / 1e3) + data.expires_in }, data)); + await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED", data); + return { data, error }; + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * {@see GoTrueMFAApi#challenge} + */ + async _challenge(params) { + return this._acquireLock(-1, async () => { + try { + return await this._useSession(async (result) => { + var _a; + const { data: sessionData, error: sessionError } = result; + if (sessionError) { + return { data: null, error: sessionError }; + } + return await (0, fetch_1._request)(this.fetch, "POST", `${this.url}/factors/${params.factorId}/challenge`, { + body: { channel: params.channel }, + headers: this.headers, + jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token + }); + }); + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + }); + } + /** + * {@see GoTrueMFAApi#challengeAndVerify} + */ + async _challengeAndVerify(params) { + const { data: challengeData, error: challengeError } = await this._challenge({ + factorId: params.factorId + }); + if (challengeError) { + return { data: null, error: challengeError }; + } + return await this._verify({ + factorId: params.factorId, + challengeId: challengeData.id, + code: params.code + }); + } + /** + * {@see GoTrueMFAApi#listFactors} + */ + async _listFactors() { + const { data: { user }, error: userError } = await this.getUser(); + if (userError) { + return { data: null, error: userError }; + } + const factors = (user === null || user === void 0 ? void 0 : user.factors) || []; + const totp = factors.filter((factor) => factor.factor_type === "totp" && factor.status === "verified"); + const phone = factors.filter((factor) => factor.factor_type === "phone" && factor.status === "verified"); + return { + data: { + all: factors, + totp, + phone + }, + error: null + }; + } + /** + * {@see GoTrueMFAApi#getAuthenticatorAssuranceLevel} + */ + async _getAuthenticatorAssuranceLevel() { + return this._acquireLock(-1, async () => { + return await this._useSession(async (result) => { + var _a, _b; + const { data: { session }, error: sessionError } = result; + if (sessionError) { + return { data: null, error: sessionError }; + } + if (!session) { + return { + data: { currentLevel: null, nextLevel: null, currentAuthenticationMethods: [] }, + error: null + }; + } + const { payload } = (0, helpers_1.decodeJWT)(session.access_token); + let currentLevel = null; + if (payload.aal) { + currentLevel = payload.aal; + } + let nextLevel = currentLevel; + const verifiedFactors = (_b = (_a = session.user.factors) === null || _a === void 0 ? void 0 : _a.filter((factor) => factor.status === "verified")) !== null && _b !== void 0 ? _b : []; + if (verifiedFactors.length > 0) { + nextLevel = "aal2"; + } + const currentAuthenticationMethods = payload.amr || []; + return { data: { currentLevel, nextLevel, currentAuthenticationMethods }, error: null }; + }); + }); + } + async fetchJwk(kid, jwks = { keys: [] }) { + let jwk = jwks.keys.find((key) => key.kid === kid); + if (jwk) { + return jwk; + } + jwk = this.jwks.keys.find((key) => key.kid === kid); + if (jwk && this.jwks_cached_at + constants_1.JWKS_TTL > Date.now()) { + return jwk; + } + const { data, error } = await (0, fetch_1._request)(this.fetch, "GET", `${this.url}/.well-known/jwks.json`, { + headers: this.headers + }); + if (error) { + throw error; + } + if (!data.keys || data.keys.length === 0) { + throw new errors_1.AuthInvalidJwtError("JWKS is empty"); + } + this.jwks = data; + this.jwks_cached_at = Date.now(); + jwk = data.keys.find((key) => key.kid === kid); + if (!jwk) { + throw new errors_1.AuthInvalidJwtError("No matching signing key found in JWKS"); + } + return jwk; + } + /** + * @experimental This method may change in future versions. + * @description Gets the claims from a JWT. If the JWT is symmetric JWTs, it will call getUser() to verify against the server. If the JWT is asymmetric, it will be verified against the JWKS using the WebCrypto API. + */ + async getClaims(jwt, jwks = { keys: [] }) { + try { + let token = jwt; + if (!token) { + const { data, error } = await this.getSession(); + if (error || !data.session) { + return { data: null, error }; + } + token = data.session.access_token; + } + const { header, payload, signature, raw: { header: rawHeader, payload: rawPayload } } = (0, helpers_1.decodeJWT)(token); + (0, helpers_1.validateExp)(payload.exp); + if (!header.kid || header.alg === "HS256" || !("crypto" in globalThis && "subtle" in globalThis.crypto)) { + const { error } = await this.getUser(token); + if (error) { + throw error; + } + return { + data: { + claims: payload, + header, + signature + }, + error: null + }; + } + const algorithm = (0, helpers_1.getAlgorithm)(header.alg); + const signingKey = await this.fetchJwk(header.kid, jwks); + const publicKey = await crypto.subtle.importKey("jwk", signingKey, algorithm, true, [ + "verify" + ]); + const isValid = await crypto.subtle.verify(algorithm, publicKey, signature, (0, base64url_1.stringToUint8Array)(`${rawHeader}.${rawPayload}`)); + if (!isValid) { + throw new errors_1.AuthInvalidJwtError("Invalid JWT signature"); + } + return { + data: { + claims: payload, + header, + signature + }, + error: null + }; + } catch (error) { + if ((0, errors_1.isAuthError)(error)) { + return { data: null, error }; + } + throw error; + } + } + }; + exports2.default = GoTrueClient; + GoTrueClient.nextInstanceID = 0; + } +}); + +// node_modules/@supabase/auth-js/dist/main/AuthAdminApi.js +var require_AuthAdminApi = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/AuthAdminApi.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var GoTrueAdminApi_1 = __importDefault(require_GoTrueAdminApi()); + var AuthAdminApi = GoTrueAdminApi_1.default; + exports2.default = AuthAdminApi; + } +}); + +// node_modules/@supabase/auth-js/dist/main/AuthClient.js +var require_AuthClient = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/AuthClient.js"(exports2) { + "use strict"; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var GoTrueClient_1 = __importDefault(require_GoTrueClient()); + var AuthClient = GoTrueClient_1.default; + exports2.default = AuthClient; + } +}); + +// node_modules/@supabase/auth-js/dist/main/lib/types.js +var require_types3 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/lib/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// node_modules/@supabase/auth-js/dist/main/index.js +var require_main4 = __commonJS({ + "node_modules/@supabase/auth-js/dist/main/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p); + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.lockInternals = exports2.NavigatorLockAcquireTimeoutError = exports2.navigatorLock = exports2.AuthClient = exports2.AuthAdminApi = exports2.GoTrueClient = exports2.GoTrueAdminApi = void 0; + var GoTrueAdminApi_1 = __importDefault(require_GoTrueAdminApi()); + exports2.GoTrueAdminApi = GoTrueAdminApi_1.default; + var GoTrueClient_1 = __importDefault(require_GoTrueClient()); + exports2.GoTrueClient = GoTrueClient_1.default; + var AuthAdminApi_1 = __importDefault(require_AuthAdminApi()); + exports2.AuthAdminApi = AuthAdminApi_1.default; + var AuthClient_1 = __importDefault(require_AuthClient()); + exports2.AuthClient = AuthClient_1.default; + __exportStar(require_types3(), exports2); + __exportStar(require_errors2(), exports2); + var locks_1 = require_locks(); + Object.defineProperty(exports2, "navigatorLock", { enumerable: true, get: function() { + return locks_1.navigatorLock; + } }); + Object.defineProperty(exports2, "NavigatorLockAcquireTimeoutError", { enumerable: true, get: function() { + return locks_1.NavigatorLockAcquireTimeoutError; + } }); + Object.defineProperty(exports2, "lockInternals", { enumerable: true, get: function() { + return locks_1.internals; + } }); + } +}); + +// node_modules/@supabase/supabase-js/dist/main/lib/SupabaseAuthClient.js +var require_SupabaseAuthClient = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/lib/SupabaseAuthClient.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SupabaseAuthClient = void 0; + var auth_js_1 = require_main4(); + var SupabaseAuthClient = class extends auth_js_1.AuthClient { + constructor(options) { + super(options); + } + }; + exports2.SupabaseAuthClient = SupabaseAuthClient; + } +}); + +// node_modules/@supabase/supabase-js/dist/main/SupabaseClient.js +var require_SupabaseClient = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/SupabaseClient.js"(exports2) { + "use strict"; + var __awaiter = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var functions_js_1 = require_main(); + var postgrest_js_1 = require_cjs(); + var realtime_js_1 = require_main2(); + var storage_js_1 = require_main3(); + var constants_1 = require_constants5(); + var fetch_1 = require_fetch2(); + var helpers_1 = require_helpers2(); + var SupabaseAuthClient_1 = require_SupabaseAuthClient(); + var SupabaseClient = class { + /** + * Create a new client for use in the browser. + * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard. + * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard. + * @param options.db.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase. + * @param options.auth.autoRefreshToken Set to "true" if you want to automatically refresh the token before expiring. + * @param options.auth.persistSession Set to "true" if you want to automatically save the user session into local storage. + * @param options.auth.detectSessionInUrl Set to "true" if you want to automatically detects OAuth grants in the URL and signs in the user. + * @param options.realtime Options passed along to realtime-js constructor. + * @param options.global.fetch A custom fetch implementation. + * @param options.global.headers Any additional headers to send with each network request. + */ + constructor(supabaseUrl, supabaseKey, options) { + var _a, _b, _c; + this.supabaseUrl = supabaseUrl; + this.supabaseKey = supabaseKey; + if (!supabaseUrl) + throw new Error("supabaseUrl is required."); + if (!supabaseKey) + throw new Error("supabaseKey is required."); + const _supabaseUrl = (0, helpers_1.ensureTrailingSlash)(supabaseUrl); + const baseUrl = new URL(_supabaseUrl); + this.realtimeUrl = new URL("realtime/v1", baseUrl); + this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace("http", "ws"); + this.authUrl = new URL("auth/v1", baseUrl); + this.storageUrl = new URL("storage/v1", baseUrl); + this.functionsUrl = new URL("functions/v1", baseUrl); + const defaultStorageKey = `sb-${baseUrl.hostname.split(".")[0]}-auth-token`; + const DEFAULTS = { + db: constants_1.DEFAULT_DB_OPTIONS, + realtime: constants_1.DEFAULT_REALTIME_OPTIONS, + auth: Object.assign(Object.assign({}, constants_1.DEFAULT_AUTH_OPTIONS), { storageKey: defaultStorageKey }), + global: constants_1.DEFAULT_GLOBAL_OPTIONS + }; + const settings = (0, helpers_1.applySettingDefaults)(options !== null && options !== void 0 ? options : {}, DEFAULTS); + this.storageKey = (_a = settings.auth.storageKey) !== null && _a !== void 0 ? _a : ""; + this.headers = (_b = settings.global.headers) !== null && _b !== void 0 ? _b : {}; + if (!settings.accessToken) { + this.auth = this._initSupabaseAuthClient((_c = settings.auth) !== null && _c !== void 0 ? _c : {}, this.headers, settings.global.fetch); + } else { + this.accessToken = settings.accessToken; + this.auth = new Proxy({}, { + get: (_, prop) => { + throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(prop)} is not possible`); + } + }); + } + this.fetch = (0, fetch_1.fetchWithAuth)(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch); + this.realtime = this._initRealtimeClient(Object.assign({ headers: this.headers, accessToken: this._getAccessToken.bind(this) }, settings.realtime)); + this.rest = new postgrest_js_1.PostgrestClient(new URL("rest/v1", baseUrl).href, { + headers: this.headers, + schema: settings.db.schema, + fetch: this.fetch + }); + if (!settings.accessToken) { + this._listenForAuthEvents(); + } + } + /** + * Supabase Functions allows you to deploy and invoke edge functions. + */ + get functions() { + return new functions_js_1.FunctionsClient(this.functionsUrl.href, { + headers: this.headers, + customFetch: this.fetch + }); + } + /** + * Supabase Storage allows you to manage user-generated content, such as photos or videos. + */ + get storage() { + return new storage_js_1.StorageClient(this.storageUrl.href, this.headers, this.fetch); + } + /** + * Perform a query on a table or a view. + * + * @param relation - The table or view name to query + */ + from(relation) { + return this.rest.from(relation); + } + // NOTE: signatures must be kept in sync with PostgrestClient.schema + /** + * Select a schema to query or perform an function (rpc) call. + * + * The schema needs to be on the list of exposed schemas inside Supabase. + * + * @param schema - The schema to query + */ + schema(schema) { + return this.rest.schema(schema); + } + // NOTE: signatures must be kept in sync with PostgrestClient.rpc + /** + * Perform a function call. + * + * @param fn - The function name to call + * @param args - The arguments to pass to the function call + * @param options - Named parameters + * @param options.head - When set to `true`, `data` will not be returned. + * Useful if you only need the count. + * @param options.get - When set to `true`, the function will be called with + * read-only access mode. + * @param options.count - Count algorithm to use to count rows returned by the + * function. Only applicable for [set-returning + * functions](https://www.postgresql.org/docs/current/functions-srf.html). + * + * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the + * hood. + * + * `"planned"`: Approximated but fast count algorithm. Uses the Postgres + * statistics under the hood. + * + * `"estimated"`: Uses exact count for low numbers and planned count for high + * numbers. + */ + rpc(fn, args = {}, options = {}) { + return this.rest.rpc(fn, args, options); + } + /** + * Creates a Realtime channel with Broadcast, Presence, and Postgres Changes. + * + * @param {string} name - The name of the Realtime channel. + * @param {Object} opts - The options to pass to the Realtime channel. + * + */ + channel(name, opts = { config: {} }) { + return this.realtime.channel(name, opts); + } + /** + * Returns all Realtime channels. + */ + getChannels() { + return this.realtime.getChannels(); + } + /** + * Unsubscribes and removes Realtime channel from Realtime client. + * + * @param {RealtimeChannel} channel - The name of the Realtime channel. + * + */ + removeChannel(channel) { + return this.realtime.removeChannel(channel); + } + /** + * Unsubscribes and removes all Realtime channels from Realtime client. + */ + removeAllChannels() { + return this.realtime.removeAllChannels(); + } + _getAccessToken() { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + if (this.accessToken) { + return yield this.accessToken(); + } + const { data } = yield this.auth.getSession(); + return (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : null; + }); + } + _initSupabaseAuthClient({ autoRefreshToken, persistSession, detectSessionInUrl, storage, storageKey, flowType, lock, debug }, headers, fetch2) { + const authHeaders = { + Authorization: `Bearer ${this.supabaseKey}`, + apikey: `${this.supabaseKey}` + }; + return new SupabaseAuthClient_1.SupabaseAuthClient({ + url: this.authUrl.href, + headers: Object.assign(Object.assign({}, authHeaders), headers), + storageKey, + autoRefreshToken, + persistSession, + detectSessionInUrl, + storage, + flowType, + lock, + debug, + fetch: fetch2, + // auth checks if there is a custom authorizaiton header using this flag + // so it knows whether to return an error when getUser is called with no session + hasCustomAuthorizationHeader: "Authorization" in this.headers + }); + } + _initRealtimeClient(options) { + return new realtime_js_1.RealtimeClient(this.realtimeUrl.href, Object.assign(Object.assign({}, options), { params: Object.assign({ apikey: this.supabaseKey }, options === null || options === void 0 ? void 0 : options.params) })); + } + _listenForAuthEvents() { + let data = this.auth.onAuthStateChange((event, session) => { + this._handleTokenChanged(event, "CLIENT", session === null || session === void 0 ? void 0 : session.access_token); + }); + return data; + } + _handleTokenChanged(event, source, token) { + if ((event === "TOKEN_REFRESHED" || event === "SIGNED_IN") && this.changedAccessToken !== token) { + this.changedAccessToken = token; + } else if (event === "SIGNED_OUT") { + this.realtime.setAuth(); + if (source == "STORAGE") + this.auth.signOut(); + this.changedAccessToken = void 0; + } + } + }; + exports2.default = SupabaseClient; + } +}); + +// node_modules/@supabase/supabase-js/dist/main/index.js +var require_main5 = __commonJS({ + "node_modules/@supabase/supabase-js/dist/main/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p); + }; + var __importDefault = exports2 && exports2.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.createClient = exports2.SupabaseClient = exports2.FunctionRegion = exports2.FunctionsError = exports2.FunctionsRelayError = exports2.FunctionsFetchError = exports2.FunctionsHttpError = exports2.PostgrestError = void 0; + var SupabaseClient_1 = __importDefault(require_SupabaseClient()); + __exportStar(require_main4(), exports2); + var postgrest_js_1 = require_cjs(); + Object.defineProperty(exports2, "PostgrestError", { enumerable: true, get: function() { + return postgrest_js_1.PostgrestError; + } }); + var functions_js_1 = require_main(); + Object.defineProperty(exports2, "FunctionsHttpError", { enumerable: true, get: function() { + return functions_js_1.FunctionsHttpError; + } }); + Object.defineProperty(exports2, "FunctionsFetchError", { enumerable: true, get: function() { + return functions_js_1.FunctionsFetchError; + } }); + Object.defineProperty(exports2, "FunctionsRelayError", { enumerable: true, get: function() { + return functions_js_1.FunctionsRelayError; + } }); + Object.defineProperty(exports2, "FunctionsError", { enumerable: true, get: function() { + return functions_js_1.FunctionsError; + } }); + Object.defineProperty(exports2, "FunctionRegion", { enumerable: true, get: function() { + return functions_js_1.FunctionRegion; + } }); + __exportStar(require_main2(), exports2); + var SupabaseClient_2 = require_SupabaseClient(); + Object.defineProperty(exports2, "SupabaseClient", { enumerable: true, get: function() { + return __importDefault(SupabaseClient_2).default; + } }); + var createClient2 = (supabaseUrl, supabaseKey, options) => { + return new SupabaseClient_1.default(supabaseUrl, supabaseKey, options); + }; + exports2.createClient = createClient2; + } +}); + +// netlify/functions/data-handler.js +var data_handler_exports = {}; +__export(data_handler_exports, { + handler: () => handler +}); +module.exports = __toCommonJS(data_handler_exports); + +// netlify/functions/utils/supabase-utils.js +var import_supabase_js = __toESM(require_main5()); +var CONFIG = { + MAX_FILE_SIZE: 10 * 1024 * 1024, + // 10MB limit + ALLOWED_MIME_TYPES: [ + "application/json", + "text/csv", + "text/plain" + ], + RATE_LIMIT_WINDOW: 60 * 1e3, + // 1 minute + RATE_LIMIT_MAX_REQUESTS: 10, + // max requests per window + CODE_EXPIRY_HOURS: 48 + // codes expire after 48 hours +}; +var rateLimitStore = /* @__PURE__ */ new Map(); +var supabase; +try { + if (!process.env.SUPABASE_URL || !process.env.SUPABASE_KEY) { + throw new Error("Missing required Supabase environment variables"); + } + supabase = (0, import_supabase_js.createClient)( + process.env.SUPABASE_URL, + process.env.SUPABASE_KEY + ); +} catch (error) { + console.error("Failed to initialize Supabase client:", error); +} +function getSupabaseClient() { + if (!supabase) { + throw new Error("Supabase client not initialized"); + } + return supabase; +} +var getAllowedOrigin = (requestOrigin) => { + const allowedOrigins = [ + "https://fakeprofiledetection.github.io", + "https://melodious-squirrel-b0930c.netlify.app", + "http://localhost:3999", + "http://localhost:8888" + ]; + if (!requestOrigin) { + return "*"; + } + if (requestOrigin.includes("github.io") || requestOrigin.includes("netlify.app")) { + return requestOrigin; + } + return allowedOrigins.includes(requestOrigin) ? requestOrigin : "*"; +}; +var corsHeaders = { + "Access-Control-Allow-Origin": "*", + // Will be dynamically set in createResponse + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With, Accept, Origin", + "Access-Control-Max-Age": "86400", + "Access-Control-Allow-Credentials": "false", + "Content-Type": "application/json" +}; +function checkRateLimit(clientIP, maxRequests = CONFIG.RATE_LIMIT_MAX_REQUESTS) { + const now = Date.now(); + const windowStart = now - CONFIG.RATE_LIMIT_WINDOW; + for (const [ip, requests2] of rateLimitStore.entries()) { + const filteredRequests = requests2.filter((time) => time > windowStart); + if (filteredRequests.length === 0) { + rateLimitStore.delete(ip); + } else { + rateLimitStore.set(ip, filteredRequests); + } + } + const requests = rateLimitStore.get(clientIP) || []; + const recentRequests = requests.filter((time) => time > windowStart); + if (recentRequests.length >= maxRequests) { + return false; + } + recentRequests.push(now); + rateLimitStore.set(clientIP, recentRequests); + return true; +} +function validateFileUpload(fileName, fileBuffer, contentType) { + const errors = []; + if (fileBuffer.length > CONFIG.MAX_FILE_SIZE) { + errors.push(`File size exceeds limit of ${CONFIG.MAX_FILE_SIZE / 1024 / 1024}MB`); + } + if (!fileName || fileName.length > 255) { + errors.push("Invalid file name"); + } + const sanitizedName = fileName.replace(/[^a-zA-Z0-9._-]/g, ""); + if (sanitizedName !== fileName) { + errors.push("File name contains invalid characters"); + } + if (!CONFIG.ALLOWED_MIME_TYPES.includes(contentType)) { + errors.push(`File type not allowed. Allowed types: ${CONFIG.ALLOWED_MIME_TYPES.join(", ")}`); + } + if (contentType === "application/json") { + try { + JSON.parse(fileBuffer.toString()); + } catch (e) { + errors.push("Invalid JSON content"); + } + } + const fileContent = fileBuffer.toString().toLowerCase(); + const suspiciousPatterns = [ + " expiryTime; +} +async function findCompletionFileByCode(surveyCode) { + const supabase2 = getSupabaseClient(); + try { + const { data: files, error: listError } = await supabase2.storage.from("data-collection-files").list("uploads", { + limit: 1e3, + search: "_completion.json" + }); + if (listError) { + throw new Error(`Failed to list files: ${listError.message}`); + } + if (!files || files.length === 0) { + return null; + } + const completionFiles = files.filter( + (file) => file.name.endsWith("_completion.json") + ); + console.log(`Searching through ${completionFiles.length} completion files for code: ${surveyCode}`); + for (const file of completionFiles) { + try { + const { data: fileData, error: downloadError } = await supabase2.storage.from("data-collection-files").download(`uploads/${file.name}`); + if (downloadError) { + console.warn(`Failed to download ${file.name}:`, downloadError.message); + continue; + } + const fileContent = await fileData.text(); + const completionData = JSON.parse(fileContent); + if (completionData.survey_code === surveyCode) { + return { + fileName: file.name, + filePath: `uploads/${file.name}`, + data: completionData + }; + } + } catch (parseError) { + console.warn(`Failed to parse ${file.name}:`, parseError.message); + continue; + } + } + return null; + } catch (error) { + console.error("Error searching for completion file:", error); + throw error; + } +} +async function markCodeAsUsed(filePath, completionData, workerInfo = {}) { + const supabase2 = getSupabaseClient(); + try { + const updatedData = { + ...completionData, + code_used: true, + code_used_timestamp: (/* @__PURE__ */ new Date()).toISOString(), + mturk_worker_id: workerInfo.workerId || null, + validation_metadata: { + validated_at: (/* @__PURE__ */ new Date()).toISOString(), + user_agent: workerInfo.userAgent || null, + ip_address: workerInfo.ipAddress || null + } + }; + const updatedContent = JSON.stringify(updatedData, null, 2); + const blob = new Blob([updatedContent], { type: "application/json" }); + const { error: uploadError } = await supabase2.storage.from("data-collection-files").upload(filePath, blob, { + contentType: "application/json", + upsert: true + // Allow overwrite + }); + if (uploadError) { + throw new Error(`Failed to update completion file: ${uploadError.message}`); + } + console.log(`Successfully marked code as used in ${filePath}`); + return true; + } catch (error) { + console.error("Error marking code as used:", error); + throw error; + } +} +function createResponse(statusCode, body, headers = {}, event = null) { + const requestOrigin = event?.headers?.origin || event?.headers?.Origin; + const allowedOrigin = getAllowedOrigin(requestOrigin); + console.log("CORS Debug:", { + requestOrigin, + allowedOrigin, + userAgent: event?.headers?.["user-agent"]?.substring(0, 100) + }); + const responseHeaders = { + ...corsHeaders, + "Access-Control-Allow-Origin": allowedOrigin, + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With, Accept, Origin", + "Access-Control-Max-Age": "86400", + ...headers + }; + return { + statusCode, + headers: responseHeaders, + body: JSON.stringify(body) + }; +} +function createErrorResponse(error, statusCode = 500, processingTime = 0, event = null) { + const isClientError = error.message.includes("Validation failed") || error.message.includes("Rate limit") || error.message.includes("Method not allowed") || error.message.includes("required") || error.message.includes("Invalid"); + const userMessage = isClientError ? error.message : "Service error. Please try again."; + return createResponse(isClientError ? 400 : statusCode, { + success: false, + error: userMessage, + processingTime + }, {}, event); +} +function getClientInfo(event) { + const { headers } = event; + return { + ip: headers["x-forwarded-for"] || headers["x-real-ip"] || event.requestContext?.identity?.sourceIp || "unknown", + userAgent: headers["user-agent"] || null + }; +} + +// netlify/functions/data-handler.js +var handler = async (event) => { + const startTime = Date.now(); + const { httpMethod, queryStringParameters } = event; + const clientInfo = getClientInfo(event); + console.log(`[${(/* @__PURE__ */ new Date()).toISOString()}] ${httpMethod} request from ${clientInfo.ip}`); + if (httpMethod === "OPTIONS") { + return createResponse(200, { message: "CORS preflight successful" }, { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With, Accept, Origin", + "Access-Control-Max-Age": "86400" + }, event); + } + if (httpMethod !== "POST") { + return createResponse(405, { + error: "Method not allowed", + allowed: ["POST", "OPTIONS"] + }, {}, event); + } + const action = queryStringParameters?.action; + if (!action) { + return createResponse(400, { + error: "Missing required 'action' parameter", + available_actions: ["upload-file", "store-completion", "validate-code"] + }, {}, event); + } + if (!checkRateLimit(clientInfo.ip)) { + console.warn(`Rate limit exceeded for IP: ${clientInfo.ip}`); + return createResponse(429, { + error: "Rate limit exceeded", + message: "Too many requests. Please try again later.", + retryAfter: CONFIG.RATE_LIMIT_WINDOW / 1e3 + }, {}, event); + } + try { + let result; + switch (action) { + case "upload-file": + result = await handleFileUpload(event, clientInfo); + break; + case "store-completion": + result = await handleStoreCompletion(event, clientInfo); + break; + case "validate-code": + result = await handleValidateCode(event, clientInfo); + break; + default: + return createResponse(400, { + error: `Unknown action: ${action}`, + available_actions: ["upload-file", "store-completion", "validate-code"] + }, {}, event); + } + const processingTime = Date.now() - startTime; + console.log(`[${(/* @__PURE__ */ new Date()).toISOString()}] ${action} completed successfully (${processingTime}ms)`); + return createResponse(200, { + ...result, + processingTime + }, {}, event); + } catch (error) { + const processingTime = Date.now() - startTime; + console.error(`[${(/* @__PURE__ */ new Date()).toISOString()}] ${action} error (${processingTime}ms):`, { + error: error.message, + stack: error.stack, + clientIP: clientInfo.ip + }); + return createErrorResponse(error, 500, processingTime, event); + } +}; +async function handleFileUpload(event, clientInfo) { + const { headers, body } = event; + const contentType = headers["content-type"] || headers["Content-Type"] || ""; + if (!contentType.includes("multipart/form-data")) { + throw new Error("Content-Type must be multipart/form-data"); + } + const boundary = contentType.split("boundary=")[1]; + if (!boundary) { + throw new Error("Missing multipart boundary"); + } + const bodyBuffer = Buffer.from(body, "base64"); + const parts = bodyBuffer.toString().split(`--${boundary}`); + const filePart = parts.find( + (part) => part.includes("Content-Disposition") && part.includes("filename=") + ); + if (!filePart) { + throw new Error("No file found in request"); + } + const fileNameMatch = filePart.match(/filename="(.+?)"/); + if (!fileNameMatch) { + throw new Error("Invalid filename format"); + } + const originalFileName = fileNameMatch[1]; + const fileDataMatch = filePart.split("\r\n\r\n"); + if (fileDataMatch.length < 2) { + throw new Error("Invalid file data format"); + } + const fileData = fileDataMatch[1].split("\r\n")[0]; + const fileBuffer = Buffer.from(fileData, "binary"); + let detectedContentType = "text/plain"; + const lowerFileName = originalFileName.toLowerCase(); + if (lowerFileName.endsWith(".json")) { + detectedContentType = "application/json"; + } else if (lowerFileName.endsWith(".csv")) { + detectedContentType = "text/csv"; + } else if (lowerFileName.endsWith(".txt")) { + detectedContentType = "text/plain"; + } + const validationErrors = validateFileUpload(originalFileName, fileBuffer, detectedContentType); + if (validationErrors.length > 0) { + throw new Error(`Validation failed: ${validationErrors.join(", ")}`); + } + let userId; + const taskFileMatch = originalFileName.match(/^[a-z]_([a-f0-9]{8,32})_/); + const formFileMatch = originalFileName.match(/^([a-f0-9]{8,32})_(consent|demographics|start_time|completion)/); + if (taskFileMatch) { + userId = taskFileMatch[1]; + } else if (formFileMatch) { + userId = formFileMatch[1]; + } else { + throw new Error("Invalid filename format - expected: {platform_prefix}_{userId}_{taskId}.ext or {userId}_{formType}.ext"); + } + const secureFileName = originalFileName; + const supabase2 = getSupabaseClient(); + const { error } = await supabase2.storage.from("data-collection-files").upload(`uploads/${secureFileName}`, fileBuffer, { + contentType: detectedContentType, + upsert: true, + // Allow overwriting for legitimate retries + cacheControl: "3600" + }); + if (error) { + console.error("Supabase upload error:", error); + throw new Error(`Upload failed: ${error.message}`); + } + const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${secureFileName}`; + return { + success: true, + url: publicUrl, + fileName: secureFileName, + originalName: originalFileName, + size: fileBuffer.length + }; +} +async function handleStoreCompletion(event, clientInfo) { + const { body } = event; + if (!body) { + throw new Error("Request body is required"); + } + const completionData = JSON.parse(body); + const validationErrors = validateCompletionData(completionData); + if (validationErrors.length > 0) { + throw new Error(`Validation failed: ${validationErrors.join(", ")}`); + } + const finalCompletionData = { + completion_timestamp: (/* @__PURE__ */ new Date()).toISOString(), + user_id: completionData.user_id, + study_version: completionData.study_version || "1.0", + completion_status: "success", + survey_code: completionData.survey_code.toUpperCase(), + code_used: false, + code_used_timestamp: null, + mturk_worker_id: null, + code_expires_at: new Date(Date.now() + CONFIG.CODE_EXPIRY_HOURS * 60 * 60 * 1e3).toISOString(), + client_info: { + ip_address: clientInfo.ip, + user_agent: clientInfo.userAgent, + stored_at: (/* @__PURE__ */ new Date()).toISOString() + } + }; + const fileName = `${completionData.user_id}_completion.json`; + const jsonBlob = new Blob([JSON.stringify(finalCompletionData, null, 2)], { + type: "application/json" + }); + const supabase2 = getSupabaseClient(); + const { error: uploadError } = await supabase2.storage.from("data-collection-files").upload(`uploads/${fileName}`, jsonBlob, { + contentType: "application/json", + upsert: true, + // Allow overwriting for legitimate retries/refreshes + cacheControl: "3600" + }); + if (uploadError) { + console.error("Supabase upload error:", uploadError); + throw new Error(`Upload failed: ${uploadError.message}`); + } + const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${fileName}`; + return { + success: true, + message: "Completion data stored successfully", + survey_code: finalCompletionData.survey_code, + user_id: finalCompletionData.user_id, + file_name: fileName, + expires_at: finalCompletionData.code_expires_at, + url: publicUrl + }; +} +async function handleValidateCode(event, clientInfo) { + const { body } = event; + if (!body) { + throw new Error("Request body is required"); + } + const requestData = JSON.parse(body); + const { code, workerInfo } = requestData; + if (!code || typeof code !== "string") { + throw new Error("Survey code is required"); + } + const surveyCode = code.trim().toUpperCase(); + if (!validateSurveyCode(surveyCode)) { + return { + valid: false, + used: false, + expired: false, + message: "Invalid code format. Expected format: TASK-YYYYMMDD-XXXX-XXXXXX" + }; + } + const completionFile = await findCompletionFileByCode(surveyCode); + if (!completionFile) { + return { + valid: false, + used: false, + expired: false, + message: "Code not found. Please check your code and try again." + }; + } + if (completionFile.data.code_used === true) { + return { + valid: true, + used: true, + expired: false, + message: "This code has already been used and cannot be reused.", + used_at: completionFile.data.code_used_timestamp + }; + } + const expired = isCodeExpired(completionFile.data.completion_timestamp); + if (expired) { + return { + valid: true, + used: false, + expired: true, + message: `Code has expired. Codes are valid for ${CONFIG.CODE_EXPIRY_HOURS} hours after completion.` + }; + } + await markCodeAsUsed(completionFile.filePath, completionFile.data, { + workerId: workerInfo?.workerId, + userAgent: clientInfo.userAgent, + ipAddress: clientInfo.ip + }); + return { + valid: true, + used: false, + expired: false, + message: "Code is valid! You may proceed with your submission.", + validated_at: (/* @__PURE__ */ new Date()).toISOString(), + user_id: completionFile.data.user_id, + completed_at: completionFile.data.completion_timestamp + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + handler +}); +//# sourceMappingURL=data-handler.js.map diff --git a/.netlify/functions-serve/data-handler/netlify/functions/data-handler.js.map b/.netlify/functions-serve/data-handler/netlify/functions/data-handler.js.map new file mode 100644 index 0000000..8ea21c6 --- /dev/null +++ b/.netlify/functions-serve/data-handler/netlify/functions/data-handler.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/webidl-conversions/lib/index.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/whatwg-url/lib/utils.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/tr46/lib/mappingTable.json", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/tr46/index.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/whatwg-url/lib/url-state-machine.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/whatwg-url/lib/URL-impl.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/whatwg-url/lib/URL.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/whatwg-url/lib/public-api.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/node-fetch/lib/index.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/functions-js/src/helper.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/functions-js/src/types.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/functions-js/src/FunctionsClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/functions-js/src/index.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/PostgrestError.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/PostgrestBuilder.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/PostgrestTransformBuilder.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/PostgrestFilterBuilder.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/PostgrestQueryBuilder.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/version.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/constants.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/PostgrestClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/postgrest-js/src/index.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/lib/version.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/lib/constants.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/lib/serializer.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/lib/timer.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/lib/transformers.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/lib/push.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/RealtimePresence.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/RealtimeChannel.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/constants.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/buffer-util.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/limiter.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/permessage-deflate.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/validation.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/receiver.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/sender.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/event-target.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/extension.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/websocket.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/stream.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/subprotocol.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/lib/websocket-server.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/ws/index.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/RealtimeClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/realtime-js/src/index.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/lib/errors.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/lib/helpers.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/lib/fetch.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/packages/StorageFileApi.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/lib/version.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/lib/constants.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/packages/StorageBucketApi.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/StorageClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/dist/main/lib/types.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/storage-js/src/index.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/lib/version.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/lib/constants.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/lib/fetch.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/lib/helpers.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/version.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/constants.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/errors.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/base64url.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/helpers.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/fetch.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/GoTrueAdminApi.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/local-storage.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/polyfills.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/lib/locks.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/GoTrueClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/AuthAdminApi.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/AuthClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/dist/main/lib/types.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/auth-js/src/index.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/lib/SupabaseAuthClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/SupabaseClient.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/node_modules/@supabase/supabase-js/src/index.ts", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/netlify/functions/data-handler.js", "../../../../../../Users/irentala/PycharmProjects/web-data-collection/netlify/functions/utils/supabase-utils.js"], + "sourceRoot": "/var/folders/vq/l765vtwn2mvb9rz941dc_y280000gn/T/tmp-42991-i2AdBj0KLCyu", + "sourcesContent": ["\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\t{\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "import { Fetch } from './types'\n\nexport const resolveFetch = (customFetch?: Fetch): Fetch => {\n let _fetch: Fetch\n if (customFetch) {\n _fetch = customFetch\n } else if (typeof fetch === 'undefined') {\n _fetch = (...args) =>\n import('@supabase/node-fetch' as any).then(({ default: fetch }) => fetch(...args))\n } else {\n _fetch = fetch\n }\n return (...args) => _fetch(...args)\n}\n", "export type Fetch = typeof fetch\n\n/**\n * Response format\n *\n */\nexport interface FunctionsResponseSuccess {\n data: T\n error: null\n}\nexport interface FunctionsResponseFailure {\n data: null\n error: any\n}\nexport type FunctionsResponse = FunctionsResponseSuccess | FunctionsResponseFailure\n\nexport class FunctionsError extends Error {\n context: any\n constructor(message: string, name = 'FunctionsError', context?: any) {\n super(message)\n this.name = name\n this.context = context\n }\n}\n\nexport class FunctionsFetchError extends FunctionsError {\n constructor(context: any) {\n super('Failed to send a request to the Edge Function', 'FunctionsFetchError', context)\n }\n}\n\nexport class FunctionsRelayError extends FunctionsError {\n constructor(context: any) {\n super('Relay Error invoking the Edge Function', 'FunctionsRelayError', context)\n }\n}\n\nexport class FunctionsHttpError extends FunctionsError {\n constructor(context: any) {\n super('Edge Function returned a non-2xx status code', 'FunctionsHttpError', context)\n }\n}\n// Define the enum for the 'region' property\nexport enum FunctionRegion {\n Any = 'any',\n ApNortheast1 = 'ap-northeast-1',\n ApNortheast2 = 'ap-northeast-2',\n ApSouth1 = 'ap-south-1',\n ApSoutheast1 = 'ap-southeast-1',\n ApSoutheast2 = 'ap-southeast-2',\n CaCentral1 = 'ca-central-1',\n EuCentral1 = 'eu-central-1',\n EuWest1 = 'eu-west-1',\n EuWest2 = 'eu-west-2',\n EuWest3 = 'eu-west-3',\n SaEast1 = 'sa-east-1',\n UsEast1 = 'us-east-1',\n UsWest1 = 'us-west-1',\n UsWest2 = 'us-west-2',\n}\n\nexport type FunctionInvokeOptions = {\n /**\n * Object representing the headers to send with the request.\n * */\n headers?: { [key: string]: string }\n /**\n * The HTTP verb of the request\n */\n method?: 'POST' | 'GET' | 'PUT' | 'PATCH' | 'DELETE'\n /**\n * The Region to invoke the function in.\n */\n region?: FunctionRegion\n /**\n * The body of the request.\n */\n body?:\n | File\n | Blob\n | ArrayBuffer\n | FormData\n | ReadableStream\n | Record\n | string\n}\n", "import { resolveFetch } from './helper'\nimport {\n Fetch,\n FunctionsFetchError,\n FunctionsHttpError,\n FunctionsRelayError,\n FunctionsResponse,\n FunctionInvokeOptions,\n FunctionRegion,\n} from './types'\n\nexport class FunctionsClient {\n protected url: string\n protected headers: Record\n protected region: FunctionRegion\n protected fetch: Fetch\n\n constructor(\n url: string,\n {\n headers = {},\n customFetch,\n region = FunctionRegion.Any,\n }: {\n headers?: Record\n customFetch?: Fetch\n region?: FunctionRegion\n } = {}\n ) {\n this.url = url\n this.headers = headers\n this.region = region\n this.fetch = resolveFetch(customFetch)\n }\n\n /**\n * Updates the authorization header\n * @param token - the new jwt token sent in the authorisation header\n */\n setAuth(token: string) {\n this.headers.Authorization = `Bearer ${token}`\n }\n\n /**\n * Invokes a function\n * @param functionName - The name of the Function to invoke.\n * @param options - Options for invoking the Function.\n */\n async invoke(\n functionName: string,\n options: FunctionInvokeOptions = {}\n ): Promise> {\n try {\n const { headers, method, body: functionArgs } = options\n let _headers: Record = {}\n let { region } = options\n if (!region) {\n region = this.region\n }\n if (region && region !== 'any') {\n _headers['x-region'] = region\n }\n let body: any\n if (\n functionArgs &&\n ((headers && !Object.prototype.hasOwnProperty.call(headers, 'Content-Type')) || !headers)\n ) {\n if (\n (typeof Blob !== 'undefined' && functionArgs instanceof Blob) ||\n functionArgs instanceof ArrayBuffer\n ) {\n // will work for File as File inherits Blob\n // also works for ArrayBuffer as it is the same underlying structure as a Blob\n _headers['Content-Type'] = 'application/octet-stream'\n body = functionArgs\n } else if (typeof functionArgs === 'string') {\n // plain string\n _headers['Content-Type'] = 'text/plain'\n body = functionArgs\n } else if (typeof FormData !== 'undefined' && functionArgs instanceof FormData) {\n // don't set content-type headers\n // Request will automatically add the right boundary value\n body = functionArgs\n } else {\n // default, assume this is JSON\n _headers['Content-Type'] = 'application/json'\n body = JSON.stringify(functionArgs)\n }\n }\n\n const response = await this.fetch(`${this.url}/${functionName}`, {\n method: method || 'POST',\n // headers priority is (high to low):\n // 1. invoke-level headers\n // 2. client-level headers\n // 3. default Content-Type header\n headers: { ..._headers, ...this.headers, ...headers },\n body,\n }).catch((fetchError) => {\n throw new FunctionsFetchError(fetchError)\n })\n\n const isRelayError = response.headers.get('x-relay-error')\n if (isRelayError && isRelayError === 'true') {\n throw new FunctionsRelayError(response)\n }\n\n if (!response.ok) {\n throw new FunctionsHttpError(response)\n }\n\n let responseType = (response.headers.get('Content-Type') ?? 'text/plain').split(';')[0].trim()\n let data: any\n if (responseType === 'application/json') {\n data = await response.json()\n } else if (responseType === 'application/octet-stream') {\n data = await response.blob()\n } else if (responseType === 'text/event-stream') {\n data = response\n } else if (responseType === 'multipart/form-data') {\n data = await response.formData()\n } else {\n // default to text\n data = await response.text()\n }\n\n return { data, error: null }\n } catch (error) {\n return { data: null, error }\n }\n }\n}\n", "export { FunctionsClient } from './FunctionsClient'\nexport {\n type FunctionInvokeOptions,\n FunctionsError,\n FunctionsFetchError,\n FunctionsHttpError,\n FunctionsRelayError,\n FunctionRegion,\n type FunctionsResponse,\n} from './types'\n", "/**\n * Error format\n *\n * {@link https://postgrest.org/en/stable/api.html?highlight=options#errors-and-http-status-codes}\n */\nexport default class PostgrestError extends Error {\n details: string\n hint: string\n code: string\n\n constructor(context: { message: string; details: string; hint: string; code: string }) {\n super(context.message)\n this.name = 'PostgrestError'\n this.details = context.details\n this.hint = context.hint\n this.code = context.code\n }\n}\n", "// @ts-ignore\nimport nodeFetch from '@supabase/node-fetch'\n\nimport type {\n Fetch,\n PostgrestSingleResponse,\n PostgrestResponseSuccess,\n CheckMatchingArrayTypes,\n MergePartialResult,\n IsValidResultOverride,\n} from './types'\nimport PostgrestError from './PostgrestError'\nimport { ContainsNull } from './select-query-parser/types'\n\nexport default abstract class PostgrestBuilder\n implements\n PromiseLike<\n ThrowOnError extends true ? PostgrestResponseSuccess : PostgrestSingleResponse\n >\n{\n protected method: 'GET' | 'HEAD' | 'POST' | 'PATCH' | 'DELETE'\n protected url: URL\n protected headers: Record\n protected schema?: string\n protected body?: unknown\n protected shouldThrowOnError = false\n protected signal?: AbortSignal\n protected fetch: Fetch\n protected isMaybeSingle: boolean\n\n constructor(builder: PostgrestBuilder) {\n this.method = builder.method\n this.url = builder.url\n this.headers = builder.headers\n this.schema = builder.schema\n this.body = builder.body\n this.shouldThrowOnError = builder.shouldThrowOnError\n this.signal = builder.signal\n this.isMaybeSingle = builder.isMaybeSingle\n\n if (builder.fetch) {\n this.fetch = builder.fetch\n } else if (typeof fetch === 'undefined') {\n this.fetch = nodeFetch\n } else {\n this.fetch = fetch\n }\n }\n\n /**\n * If there's an error with the query, throwOnError will reject the promise by\n * throwing the error instead of returning it as part of a successful response.\n *\n * {@link https://github.com/supabase/supabase-js/issues/92}\n */\n throwOnError(): this & PostgrestBuilder {\n this.shouldThrowOnError = true\n return this as this & PostgrestBuilder\n }\n\n /**\n * Set an HTTP header for the request.\n */\n setHeader(name: string, value: string): this {\n this.headers = { ...this.headers }\n this.headers[name] = value\n return this\n }\n\n then<\n TResult1 = ThrowOnError extends true\n ? PostgrestResponseSuccess\n : PostgrestSingleResponse,\n TResult2 = never\n >(\n onfulfilled?:\n | ((\n value: ThrowOnError extends true\n ? PostgrestResponseSuccess\n : PostgrestSingleResponse\n ) => TResult1 | PromiseLike)\n | undefined\n | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null\n ): PromiseLike {\n // https://postgrest.org/en/stable/api.html#switching-schemas\n if (this.schema === undefined) {\n // skip\n } else if (['GET', 'HEAD'].includes(this.method)) {\n this.headers['Accept-Profile'] = this.schema\n } else {\n this.headers['Content-Profile'] = this.schema\n }\n if (this.method !== 'GET' && this.method !== 'HEAD') {\n this.headers['Content-Type'] = 'application/json'\n }\n\n // NOTE: Invoke w/o `this` to avoid illegal invocation error.\n // https://github.com/supabase/postgrest-js/pull/247\n const _fetch = this.fetch\n let res = _fetch(this.url.toString(), {\n method: this.method,\n headers: this.headers,\n body: JSON.stringify(this.body),\n signal: this.signal,\n }).then(async (res) => {\n let error = null\n let data = null\n let count: number | null = null\n let status = res.status\n let statusText = res.statusText\n\n if (res.ok) {\n if (this.method !== 'HEAD') {\n const body = await res.text()\n if (body === '') {\n // Prefer: return=minimal\n } else if (this.headers['Accept'] === 'text/csv') {\n data = body\n } else if (\n this.headers['Accept'] &&\n this.headers['Accept'].includes('application/vnd.pgrst.plan+text')\n ) {\n data = body\n } else {\n data = JSON.parse(body)\n }\n }\n\n const countHeader = this.headers['Prefer']?.match(/count=(exact|planned|estimated)/)\n const contentRange = res.headers.get('content-range')?.split('/')\n if (countHeader && contentRange && contentRange.length > 1) {\n count = parseInt(contentRange[1])\n }\n\n // Temporary partial fix for https://github.com/supabase/postgrest-js/issues/361\n // Issue persists e.g. for `.insert([...]).select().maybeSingle()`\n if (this.isMaybeSingle && this.method === 'GET' && Array.isArray(data)) {\n if (data.length > 1) {\n error = {\n // https://github.com/PostgREST/postgrest/blob/a867d79c42419af16c18c3fb019eba8df992626f/src/PostgREST/Error.hs#L553\n code: 'PGRST116',\n details: `Results contain ${data.length} rows, application/vnd.pgrst.object+json requires 1 row`,\n hint: null,\n message: 'JSON object requested, multiple (or no) rows returned',\n }\n data = null\n count = null\n status = 406\n statusText = 'Not Acceptable'\n } else if (data.length === 1) {\n data = data[0]\n } else {\n data = null\n }\n }\n } else {\n const body = await res.text()\n\n try {\n error = JSON.parse(body)\n\n // Workaround for https://github.com/supabase/postgrest-js/issues/295\n if (Array.isArray(error) && res.status === 404) {\n data = []\n error = null\n status = 200\n statusText = 'OK'\n }\n } catch {\n // Workaround for https://github.com/supabase/postgrest-js/issues/295\n if (res.status === 404 && body === '') {\n status = 204\n statusText = 'No Content'\n } else {\n error = {\n message: body,\n }\n }\n }\n\n if (error && this.isMaybeSingle && error?.details?.includes('0 rows')) {\n error = null\n status = 200\n statusText = 'OK'\n }\n\n if (error && this.shouldThrowOnError) {\n throw new PostgrestError(error)\n }\n }\n\n const postgrestResponse = {\n error,\n data,\n count,\n status,\n statusText,\n }\n\n return postgrestResponse\n })\n if (!this.shouldThrowOnError) {\n res = res.catch((fetchError) => ({\n error: {\n message: `${fetchError?.name ?? 'FetchError'}: ${fetchError?.message}`,\n details: `${fetchError?.stack ?? ''}`,\n hint: '',\n code: `${fetchError?.code ?? ''}`,\n },\n data: null,\n count: null,\n status: 0,\n statusText: '',\n }))\n }\n\n return res.then(onfulfilled, onrejected)\n }\n\n /**\n * Override the type of the returned `data`.\n *\n * @typeParam NewResult - The new result type to override with\n * @deprecated Use overrideTypes() method at the end of your call chain instead\n */\n returns(): PostgrestBuilder, ThrowOnError> {\n /* istanbul ignore next */\n return this as unknown as PostgrestBuilder<\n CheckMatchingArrayTypes,\n ThrowOnError\n >\n }\n\n /**\n * Override the type of the returned `data` field in the response.\n *\n * @typeParam NewResult - The new type to cast the response data to\n * @typeParam Options - Optional type configuration (defaults to { merge: true })\n * @typeParam Options.merge - When true, merges the new type with existing return type. When false, replaces the existing types entirely (defaults to true)\n * @example\n * ```typescript\n * // Merge with existing types (default behavior)\n * const query = supabase\n * .from('users')\n * .select()\n * .overrideTypes<{ custom_field: string }>()\n *\n * // Replace existing types completely\n * const replaceQuery = supabase\n * .from('users')\n * .select()\n * .overrideTypes<{ id: number; name: string }, { merge: false }>()\n * ```\n * @returns A PostgrestBuilder instance with the new type\n */\n overrideTypes<\n NewResult,\n Options extends { merge?: boolean } = { merge: true }\n >(): PostgrestBuilder<\n IsValidResultOverride extends true\n ? // Preserve the optionality of the result if the overriden type is an object (case of chaining with `maybeSingle`)\n ContainsNull extends true\n ? MergePartialResult, Options> | null\n : MergePartialResult\n : CheckMatchingArrayTypes,\n ThrowOnError\n > {\n return this as unknown as PostgrestBuilder<\n IsValidResultOverride extends true\n ? // Preserve the optionality of the result if the overriden type is an object (case of chaining with `maybeSingle`)\n ContainsNull extends true\n ? MergePartialResult, Options> | null\n : MergePartialResult\n : CheckMatchingArrayTypes,\n ThrowOnError\n >\n }\n}\n", "import PostgrestBuilder from './PostgrestBuilder'\nimport { GetResult } from './select-query-parser/result'\nimport { GenericSchema, CheckMatchingArrayTypes } from './types'\n\nexport default class PostgrestTransformBuilder<\n Schema extends GenericSchema,\n Row extends Record,\n Result,\n RelationName = unknown,\n Relationships = unknown\n> extends PostgrestBuilder {\n /**\n * Perform a SELECT on the query result.\n *\n * By default, `.insert()`, `.update()`, `.upsert()`, and `.delete()` do not\n * return modified rows. By calling this method, modified rows are returned in\n * `data`.\n *\n * @param columns - The columns to retrieve, separated by commas\n */\n select<\n Query extends string = '*',\n NewResultOne = GetResult\n >(\n columns?: Query\n ): PostgrestTransformBuilder {\n // Remove whitespaces except when quoted\n let quoted = false\n const cleanedColumns = (columns ?? '*')\n .split('')\n .map((c) => {\n if (/\\s/.test(c) && !quoted) {\n return ''\n }\n if (c === '\"') {\n quoted = !quoted\n }\n return c\n })\n .join('')\n this.url.searchParams.set('select', cleanedColumns)\n if (this.headers['Prefer']) {\n this.headers['Prefer'] += ','\n }\n this.headers['Prefer'] += 'return=representation'\n return this as unknown as PostgrestTransformBuilder<\n Schema,\n Row,\n NewResultOne[],\n RelationName,\n Relationships\n >\n }\n\n order(\n column: ColumnName,\n options?: { ascending?: boolean; nullsFirst?: boolean; referencedTable?: undefined }\n ): this\n order(\n column: string,\n options?: { ascending?: boolean; nullsFirst?: boolean; referencedTable?: string }\n ): this\n /**\n * @deprecated Use `options.referencedTable` instead of `options.foreignTable`\n */\n order(\n column: ColumnName,\n options?: { ascending?: boolean; nullsFirst?: boolean; foreignTable?: undefined }\n ): this\n /**\n * @deprecated Use `options.referencedTable` instead of `options.foreignTable`\n */\n order(\n column: string,\n options?: { ascending?: boolean; nullsFirst?: boolean; foreignTable?: string }\n ): this\n /**\n * Order the query result by `column`.\n *\n * You can call this method multiple times to order by multiple columns.\n *\n * You can order referenced tables, but it only affects the ordering of the\n * parent table if you use `!inner` in the query.\n *\n * @param column - The column to order by\n * @param options - Named parameters\n * @param options.ascending - If `true`, the result will be in ascending order\n * @param options.nullsFirst - If `true`, `null`s appear first. If `false`,\n * `null`s appear last.\n * @param options.referencedTable - Set this to order a referenced table by\n * its columns\n * @param options.foreignTable - Deprecated, use `options.referencedTable`\n * instead\n */\n order(\n column: string,\n {\n ascending = true,\n nullsFirst,\n foreignTable,\n referencedTable = foreignTable,\n }: {\n ascending?: boolean\n nullsFirst?: boolean\n foreignTable?: string\n referencedTable?: string\n } = {}\n ): this {\n const key = referencedTable ? `${referencedTable}.order` : 'order'\n const existingOrder = this.url.searchParams.get(key)\n\n this.url.searchParams.set(\n key,\n `${existingOrder ? `${existingOrder},` : ''}${column}.${ascending ? 'asc' : 'desc'}${\n nullsFirst === undefined ? '' : nullsFirst ? '.nullsfirst' : '.nullslast'\n }`\n )\n return this\n }\n\n /**\n * Limit the query result by `count`.\n *\n * @param count - The maximum number of rows to return\n * @param options - Named parameters\n * @param options.referencedTable - Set this to limit rows of referenced\n * tables instead of the parent table\n * @param options.foreignTable - Deprecated, use `options.referencedTable`\n * instead\n */\n limit(\n count: number,\n {\n foreignTable,\n referencedTable = foreignTable,\n }: { foreignTable?: string; referencedTable?: string } = {}\n ): this {\n const key = typeof referencedTable === 'undefined' ? 'limit' : `${referencedTable}.limit`\n this.url.searchParams.set(key, `${count}`)\n return this\n }\n\n /**\n * Limit the query result by starting at an offset `from` and ending at the offset `to`.\n * Only records within this range are returned.\n * This respects the query order and if there is no order clause the range could behave unexpectedly.\n * The `from` and `to` values are 0-based and inclusive: `range(1, 3)` will include the second, third\n * and fourth rows of the query.\n *\n * @param from - The starting index from which to limit the result\n * @param to - The last index to which to limit the result\n * @param options - Named parameters\n * @param options.referencedTable - Set this to limit rows of referenced\n * tables instead of the parent table\n * @param options.foreignTable - Deprecated, use `options.referencedTable`\n * instead\n */\n range(\n from: number,\n to: number,\n {\n foreignTable,\n referencedTable = foreignTable,\n }: { foreignTable?: string; referencedTable?: string } = {}\n ): this {\n const keyOffset =\n typeof referencedTable === 'undefined' ? 'offset' : `${referencedTable}.offset`\n const keyLimit = typeof referencedTable === 'undefined' ? 'limit' : `${referencedTable}.limit`\n this.url.searchParams.set(keyOffset, `${from}`)\n // Range is inclusive, so add 1\n this.url.searchParams.set(keyLimit, `${to - from + 1}`)\n return this\n }\n\n /**\n * Set the AbortSignal for the fetch request.\n *\n * @param signal - The AbortSignal to use for the fetch request\n */\n abortSignal(signal: AbortSignal): this {\n this.signal = signal\n return this\n }\n\n /**\n * Return `data` as a single object instead of an array of objects.\n *\n * Query result must be one row (e.g. using `.limit(1)`), otherwise this\n * returns an error.\n */\n single<\n ResultOne = Result extends (infer ResultOne)[] ? ResultOne : never\n >(): PostgrestBuilder {\n this.headers['Accept'] = 'application/vnd.pgrst.object+json'\n return this as unknown as PostgrestBuilder\n }\n\n /**\n * Return `data` as a single object instead of an array of objects.\n *\n * Query result must be zero or one row (e.g. using `.limit(1)`), otherwise\n * this returns an error.\n */\n maybeSingle<\n ResultOne = Result extends (infer ResultOne)[] ? ResultOne : never\n >(): PostgrestBuilder {\n // Temporary partial fix for https://github.com/supabase/postgrest-js/issues/361\n // Issue persists e.g. for `.insert([...]).select().maybeSingle()`\n if (this.method === 'GET') {\n this.headers['Accept'] = 'application/json'\n } else {\n this.headers['Accept'] = 'application/vnd.pgrst.object+json'\n }\n this.isMaybeSingle = true\n return this as unknown as PostgrestBuilder\n }\n\n /**\n * Return `data` as a string in CSV format.\n */\n csv(): PostgrestBuilder {\n this.headers['Accept'] = 'text/csv'\n return this as unknown as PostgrestBuilder\n }\n\n /**\n * Return `data` as an object in [GeoJSON](https://geojson.org) format.\n */\n geojson(): PostgrestBuilder> {\n this.headers['Accept'] = 'application/geo+json'\n return this as unknown as PostgrestBuilder>\n }\n\n /**\n * Return `data` as the EXPLAIN plan for the query.\n *\n * You need to enable the\n * [db_plan_enabled](https://supabase.com/docs/guides/database/debugging-performance#enabling-explain)\n * setting before using this method.\n *\n * @param options - Named parameters\n *\n * @param options.analyze - If `true`, the query will be executed and the\n * actual run time will be returned\n *\n * @param options.verbose - If `true`, the query identifier will be returned\n * and `data` will include the output columns of the query\n *\n * @param options.settings - If `true`, include information on configuration\n * parameters that affect query planning\n *\n * @param options.buffers - If `true`, include information on buffer usage\n *\n * @param options.wal - If `true`, include information on WAL record generation\n *\n * @param options.format - The format of the output, can be `\"text\"` (default)\n * or `\"json\"`\n */\n explain({\n analyze = false,\n verbose = false,\n settings = false,\n buffers = false,\n wal = false,\n format = 'text',\n }: {\n analyze?: boolean\n verbose?: boolean\n settings?: boolean\n buffers?: boolean\n wal?: boolean\n format?: 'json' | 'text'\n } = {}): PostgrestBuilder[]> | PostgrestBuilder {\n const options = [\n analyze ? 'analyze' : null,\n verbose ? 'verbose' : null,\n settings ? 'settings' : null,\n buffers ? 'buffers' : null,\n wal ? 'wal' : null,\n ]\n .filter(Boolean)\n .join('|')\n // An Accept header can carry multiple media types but postgrest-js always sends one\n const forMediatype = this.headers['Accept'] ?? 'application/json'\n this.headers[\n 'Accept'\n ] = `application/vnd.pgrst.plan+${format}; for=\"${forMediatype}\"; options=${options};`\n if (format === 'json') return this as unknown as PostgrestBuilder[]>\n else return this as unknown as PostgrestBuilder\n }\n\n /**\n * Rollback the query.\n *\n * `data` will still be returned, but the query is not committed.\n */\n rollback(): this {\n if ((this.headers['Prefer'] ?? '').trim().length > 0) {\n this.headers['Prefer'] += ',tx=rollback'\n } else {\n this.headers['Prefer'] = 'tx=rollback'\n }\n return this\n }\n\n /**\n * Override the type of the returned `data`.\n *\n * @typeParam NewResult - The new result type to override with\n * @deprecated Use overrideTypes() method at the end of your call chain instead\n */\n returns(): PostgrestTransformBuilder<\n Schema,\n Row,\n CheckMatchingArrayTypes,\n RelationName,\n Relationships\n > {\n return this as unknown as PostgrestTransformBuilder<\n Schema,\n Row,\n CheckMatchingArrayTypes,\n RelationName,\n Relationships\n >\n }\n}\n", "import PostgrestTransformBuilder from './PostgrestTransformBuilder'\nimport { JsonPathToAccessor, JsonPathToType } from './select-query-parser/utils'\nimport { GenericSchema } from './types'\n\ntype FilterOperator =\n | 'eq'\n | 'neq'\n | 'gt'\n | 'gte'\n | 'lt'\n | 'lte'\n | 'like'\n | 'ilike'\n | 'is'\n | 'in'\n | 'cs'\n | 'cd'\n | 'sl'\n | 'sr'\n | 'nxl'\n | 'nxr'\n | 'adj'\n | 'ov'\n | 'fts'\n | 'plfts'\n | 'phfts'\n | 'wfts'\n\nexport type IsStringOperator = Path extends `${string}->>${string}`\n ? true\n : false\n\n// Match relationship filters with `table.column` syntax and resolve underlying\n// column value. If not matched, fallback to generic type.\n// TODO: Validate the relationship itself ala select-query-parser. Currently we\n// assume that all tables have valid relationships to each other, despite\n// nonexistent foreign keys.\ntype ResolveFilterValue<\n Schema extends GenericSchema,\n Row extends Record,\n ColumnName extends string\n> = ColumnName extends `${infer RelationshipTable}.${infer Remainder}`\n ? Remainder extends `${infer _}.${infer _}`\n ? ResolveFilterValue\n : ResolveFilterRelationshipValue\n : ColumnName extends keyof Row\n ? Row[ColumnName]\n : // If the column selection is a jsonpath like `data->value` or `data->>value` we attempt to match\n // the expected type with the parsed custom json type\n IsStringOperator extends true\n ? string\n : JsonPathToType> extends infer JsonPathValue\n ? JsonPathValue extends never\n ? never\n : JsonPathValue\n : never\n\ntype ResolveFilterRelationshipValue<\n Schema extends GenericSchema,\n RelationshipTable extends string,\n RelationshipColumn extends string\n> = Schema['Tables'] & Schema['Views'] extends infer TablesAndViews\n ? RelationshipTable extends keyof TablesAndViews\n ? 'Row' extends keyof TablesAndViews[RelationshipTable]\n ? RelationshipColumn extends keyof TablesAndViews[RelationshipTable]['Row']\n ? TablesAndViews[RelationshipTable]['Row'][RelationshipColumn]\n : unknown\n : unknown\n : unknown\n : never\n\nexport default class PostgrestFilterBuilder<\n Schema extends GenericSchema,\n Row extends Record,\n Result,\n RelationName = unknown,\n Relationships = unknown\n> extends PostgrestTransformBuilder {\n /**\n * Match only rows where `column` is equal to `value`.\n *\n * To check if the value of `column` is NULL, you should use `.is()` instead.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n eq(\n column: ColumnName,\n value: ResolveFilterValue extends never\n ? NonNullable\n : // We want to infer the type before wrapping it into a `NonNullable` to avoid too deep\n // type resolution error\n ResolveFilterValue extends infer ResolvedFilterValue\n ? NonNullable\n : // We should never enter this case as all the branches are covered above\n never\n ): this {\n this.url.searchParams.append(column, `eq.${value}`)\n return this\n }\n\n /**\n * Match only rows where `column` is not equal to `value`.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n neq(\n column: ColumnName,\n value: ResolveFilterValue extends never\n ? unknown\n : ResolveFilterValue extends infer ResolvedFilterValue\n ? ResolvedFilterValue\n : never\n ): this {\n this.url.searchParams.append(column, `neq.${value}`)\n return this\n }\n\n gt(column: ColumnName, value: Row[ColumnName]): this\n gt(column: string, value: unknown): this\n /**\n * Match only rows where `column` is greater than `value`.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n gt(column: string, value: unknown): this {\n this.url.searchParams.append(column, `gt.${value}`)\n return this\n }\n\n gte(column: ColumnName, value: Row[ColumnName]): this\n gte(column: string, value: unknown): this\n /**\n * Match only rows where `column` is greater than or equal to `value`.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n gte(column: string, value: unknown): this {\n this.url.searchParams.append(column, `gte.${value}`)\n return this\n }\n\n lt(column: ColumnName, value: Row[ColumnName]): this\n lt(column: string, value: unknown): this\n /**\n * Match only rows where `column` is less than `value`.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n lt(column: string, value: unknown): this {\n this.url.searchParams.append(column, `lt.${value}`)\n return this\n }\n\n lte(column: ColumnName, value: Row[ColumnName]): this\n lte(column: string, value: unknown): this\n /**\n * Match only rows where `column` is less than or equal to `value`.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n lte(column: string, value: unknown): this {\n this.url.searchParams.append(column, `lte.${value}`)\n return this\n }\n\n like(column: ColumnName, pattern: string): this\n like(column: string, pattern: string): this\n /**\n * Match only rows where `column` matches `pattern` case-sensitively.\n *\n * @param column - The column to filter on\n * @param pattern - The pattern to match with\n */\n like(column: string, pattern: string): this {\n this.url.searchParams.append(column, `like.${pattern}`)\n return this\n }\n\n likeAllOf(\n column: ColumnName,\n patterns: readonly string[]\n ): this\n likeAllOf(column: string, patterns: readonly string[]): this\n /**\n * Match only rows where `column` matches all of `patterns` case-sensitively.\n *\n * @param column - The column to filter on\n * @param patterns - The patterns to match with\n */\n likeAllOf(column: string, patterns: readonly string[]): this {\n this.url.searchParams.append(column, `like(all).{${patterns.join(',')}}`)\n return this\n }\n\n likeAnyOf(\n column: ColumnName,\n patterns: readonly string[]\n ): this\n likeAnyOf(column: string, patterns: readonly string[]): this\n /**\n * Match only rows where `column` matches any of `patterns` case-sensitively.\n *\n * @param column - The column to filter on\n * @param patterns - The patterns to match with\n */\n likeAnyOf(column: string, patterns: readonly string[]): this {\n this.url.searchParams.append(column, `like(any).{${patterns.join(',')}}`)\n return this\n }\n\n ilike(column: ColumnName, pattern: string): this\n ilike(column: string, pattern: string): this\n /**\n * Match only rows where `column` matches `pattern` case-insensitively.\n *\n * @param column - The column to filter on\n * @param pattern - The pattern to match with\n */\n ilike(column: string, pattern: string): this {\n this.url.searchParams.append(column, `ilike.${pattern}`)\n return this\n }\n\n ilikeAllOf(\n column: ColumnName,\n patterns: readonly string[]\n ): this\n ilikeAllOf(column: string, patterns: readonly string[]): this\n /**\n * Match only rows where `column` matches all of `patterns` case-insensitively.\n *\n * @param column - The column to filter on\n * @param patterns - The patterns to match with\n */\n ilikeAllOf(column: string, patterns: readonly string[]): this {\n this.url.searchParams.append(column, `ilike(all).{${patterns.join(',')}}`)\n return this\n }\n\n ilikeAnyOf(\n column: ColumnName,\n patterns: readonly string[]\n ): this\n ilikeAnyOf(column: string, patterns: readonly string[]): this\n /**\n * Match only rows where `column` matches any of `patterns` case-insensitively.\n *\n * @param column - The column to filter on\n * @param patterns - The patterns to match with\n */\n ilikeAnyOf(column: string, patterns: readonly string[]): this {\n this.url.searchParams.append(column, `ilike(any).{${patterns.join(',')}}`)\n return this\n }\n\n is(\n column: ColumnName,\n value: Row[ColumnName] & (boolean | null)\n ): this\n is(column: string, value: boolean | null): this\n /**\n * Match only rows where `column` IS `value`.\n *\n * For non-boolean columns, this is only relevant for checking if the value of\n * `column` is NULL by setting `value` to `null`.\n *\n * For boolean columns, you can also set `value` to `true` or `false` and it\n * will behave the same way as `.eq()`.\n *\n * @param column - The column to filter on\n * @param value - The value to filter with\n */\n is(column: string, value: boolean | null): this {\n this.url.searchParams.append(column, `is.${value}`)\n return this\n }\n\n /**\n * Match only rows where `column` is included in the `values` array.\n *\n * @param column - The column to filter on\n * @param values - The values array to filter with\n */\n in(\n column: ColumnName,\n values: ReadonlyArray<\n ResolveFilterValue extends never\n ? unknown\n : // We want to infer the type before wrapping it into a `NonNullable` to avoid too deep\n // type resolution error\n ResolveFilterValue extends infer ResolvedFilterValue\n ? ResolvedFilterValue\n : // We should never enter this case as all the branches are covered above\n never\n >\n ): this {\n const cleanedValues = Array.from(new Set(values))\n .map((s) => {\n // handle postgrest reserved characters\n // https://postgrest.org/en/v7.0.0/api.html#reserved-characters\n if (typeof s === 'string' && new RegExp('[,()]').test(s)) return `\"${s}\"`\n else return `${s}`\n })\n .join(',')\n this.url.searchParams.append(column, `in.(${cleanedValues})`)\n return this\n }\n\n contains(\n column: ColumnName,\n value: string | ReadonlyArray | Record\n ): this\n contains(column: string, value: string | readonly unknown[] | Record): this\n /**\n * Only relevant for jsonb, array, and range columns. Match only rows where\n * `column` contains every element appearing in `value`.\n *\n * @param column - The jsonb, array, or range column to filter on\n * @param value - The jsonb, array, or range value to filter with\n */\n contains(column: string, value: string | readonly unknown[] | Record): this {\n if (typeof value === 'string') {\n // range types can be inclusive '[', ']' or exclusive '(', ')' so just\n // keep it simple and accept a string\n this.url.searchParams.append(column, `cs.${value}`)\n } else if (Array.isArray(value)) {\n // array\n this.url.searchParams.append(column, `cs.{${value.join(',')}}`)\n } else {\n // json\n this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`)\n }\n return this\n }\n\n containedBy(\n column: ColumnName,\n value: string | ReadonlyArray | Record\n ): this\n containedBy(column: string, value: string | readonly unknown[] | Record): this\n /**\n * Only relevant for jsonb, array, and range columns. Match only rows where\n * every element appearing in `column` is contained by `value`.\n *\n * @param column - The jsonb, array, or range column to filter on\n * @param value - The jsonb, array, or range value to filter with\n */\n containedBy(column: string, value: string | readonly unknown[] | Record): this {\n if (typeof value === 'string') {\n // range\n this.url.searchParams.append(column, `cd.${value}`)\n } else if (Array.isArray(value)) {\n // array\n this.url.searchParams.append(column, `cd.{${value.join(',')}}`)\n } else {\n // json\n this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`)\n }\n return this\n }\n\n rangeGt(column: ColumnName, range: string): this\n rangeGt(column: string, range: string): this\n /**\n * Only relevant for range columns. Match only rows where every element in\n * `column` is greater than any element in `range`.\n *\n * @param column - The range column to filter on\n * @param range - The range to filter with\n */\n rangeGt(column: string, range: string): this {\n this.url.searchParams.append(column, `sr.${range}`)\n return this\n }\n\n rangeGte(column: ColumnName, range: string): this\n rangeGte(column: string, range: string): this\n /**\n * Only relevant for range columns. Match only rows where every element in\n * `column` is either contained in `range` or greater than any element in\n * `range`.\n *\n * @param column - The range column to filter on\n * @param range - The range to filter with\n */\n rangeGte(column: string, range: string): this {\n this.url.searchParams.append(column, `nxl.${range}`)\n return this\n }\n\n rangeLt(column: ColumnName, range: string): this\n rangeLt(column: string, range: string): this\n /**\n * Only relevant for range columns. Match only rows where every element in\n * `column` is less than any element in `range`.\n *\n * @param column - The range column to filter on\n * @param range - The range to filter with\n */\n rangeLt(column: string, range: string): this {\n this.url.searchParams.append(column, `sl.${range}`)\n return this\n }\n\n rangeLte(column: ColumnName, range: string): this\n rangeLte(column: string, range: string): this\n /**\n * Only relevant for range columns. Match only rows where every element in\n * `column` is either contained in `range` or less than any element in\n * `range`.\n *\n * @param column - The range column to filter on\n * @param range - The range to filter with\n */\n rangeLte(column: string, range: string): this {\n this.url.searchParams.append(column, `nxr.${range}`)\n return this\n }\n\n rangeAdjacent(column: ColumnName, range: string): this\n rangeAdjacent(column: string, range: string): this\n /**\n * Only relevant for range columns. Match only rows where `column` is\n * mutually exclusive to `range` and there can be no element between the two\n * ranges.\n *\n * @param column - The range column to filter on\n * @param range - The range to filter with\n */\n rangeAdjacent(column: string, range: string): this {\n this.url.searchParams.append(column, `adj.${range}`)\n return this\n }\n\n overlaps(\n column: ColumnName,\n value: string | ReadonlyArray\n ): this\n overlaps(column: string, value: string | readonly unknown[]): this\n /**\n * Only relevant for array and range columns. Match only rows where\n * `column` and `value` have an element in common.\n *\n * @param column - The array or range column to filter on\n * @param value - The array or range value to filter with\n */\n overlaps(column: string, value: string | readonly unknown[]): this {\n if (typeof value === 'string') {\n // range\n this.url.searchParams.append(column, `ov.${value}`)\n } else {\n // array\n this.url.searchParams.append(column, `ov.{${value.join(',')}}`)\n }\n return this\n }\n\n textSearch(\n column: ColumnName,\n query: string,\n options?: { config?: string; type?: 'plain' | 'phrase' | 'websearch' }\n ): this\n textSearch(\n column: string,\n query: string,\n options?: { config?: string; type?: 'plain' | 'phrase' | 'websearch' }\n ): this\n /**\n * Only relevant for text and tsvector columns. Match only rows where\n * `column` matches the query string in `query`.\n *\n * @param column - The text or tsvector column to filter on\n * @param query - The query text to match with\n * @param options - Named parameters\n * @param options.config - The text search configuration to use\n * @param options.type - Change how the `query` text is interpreted\n */\n textSearch(\n column: string,\n query: string,\n { config, type }: { config?: string; type?: 'plain' | 'phrase' | 'websearch' } = {}\n ): this {\n let typePart = ''\n if (type === 'plain') {\n typePart = 'pl'\n } else if (type === 'phrase') {\n typePart = 'ph'\n } else if (type === 'websearch') {\n typePart = 'w'\n }\n const configPart = config === undefined ? '' : `(${config})`\n this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`)\n return this\n }\n\n match(query: Record): this\n match(query: Record): this\n /**\n * Match only rows where each column in `query` keys is equal to its\n * associated value. Shorthand for multiple `.eq()`s.\n *\n * @param query - The object to filter with, with column names as keys mapped\n * to their filter values\n */\n match(query: Record): this {\n Object.entries(query).forEach(([column, value]) => {\n this.url.searchParams.append(column, `eq.${value}`)\n })\n return this\n }\n\n not(\n column: ColumnName,\n operator: FilterOperator,\n value: Row[ColumnName]\n ): this\n not(column: string, operator: string, value: unknown): this\n /**\n * Match only rows which doesn't satisfy the filter.\n *\n * Unlike most filters, `opearator` and `value` are used as-is and need to\n * follow [PostgREST\n * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n * to make sure they are properly sanitized.\n *\n * @param column - The column to filter on\n * @param operator - The operator to be negated to filter with, following\n * PostgREST syntax\n * @param value - The value to filter with, following PostgREST syntax\n */\n not(column: string, operator: string, value: unknown): this {\n this.url.searchParams.append(column, `not.${operator}.${value}`)\n return this\n }\n\n /**\n * Match only rows which satisfy at least one of the filters.\n *\n * Unlike most filters, `filters` is used as-is and needs to follow [PostgREST\n * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n * to make sure it's properly sanitized.\n *\n * It's currently not possible to do an `.or()` filter across multiple tables.\n *\n * @param filters - The filters to use, following PostgREST syntax\n * @param options - Named parameters\n * @param options.referencedTable - Set this to filter on referenced tables\n * instead of the parent table\n * @param options.foreignTable - Deprecated, use `referencedTable` instead\n */\n or(\n filters: string,\n {\n foreignTable,\n referencedTable = foreignTable,\n }: { foreignTable?: string; referencedTable?: string } = {}\n ): this {\n const key = referencedTable ? `${referencedTable}.or` : 'or'\n this.url.searchParams.append(key, `(${filters})`)\n return this\n }\n\n filter(\n column: ColumnName,\n operator: `${'' | 'not.'}${FilterOperator}`,\n value: unknown\n ): this\n filter(column: string, operator: string, value: unknown): this\n /**\n * Match only rows which satisfy the filter. This is an escape hatch - you\n * should use the specific filter methods wherever possible.\n *\n * Unlike most filters, `opearator` and `value` are used as-is and need to\n * follow [PostgREST\n * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n * to make sure they are properly sanitized.\n *\n * @param column - The column to filter on\n * @param operator - The operator to filter with, following PostgREST syntax\n * @param value - The value to filter with, following PostgREST syntax\n */\n filter(column: string, operator: string, value: unknown): this {\n this.url.searchParams.append(column, `${operator}.${value}`)\n return this\n }\n}\n", "import PostgrestBuilder from './PostgrestBuilder'\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder'\nimport { GetResult } from './select-query-parser/result'\nimport { Fetch, GenericSchema, GenericTable, GenericView } from './types'\n\nexport default class PostgrestQueryBuilder<\n Schema extends GenericSchema,\n Relation extends GenericTable | GenericView,\n RelationName = unknown,\n Relationships = Relation extends { Relationships: infer R } ? R : unknown\n> {\n url: URL\n headers: Record\n schema?: string\n signal?: AbortSignal\n fetch?: Fetch\n\n constructor(\n url: URL,\n {\n headers = {},\n schema,\n fetch,\n }: {\n headers?: Record\n schema?: string\n fetch?: Fetch\n }\n ) {\n this.url = url\n this.headers = headers\n this.schema = schema\n this.fetch = fetch\n }\n\n /**\n * Perform a SELECT query on the table or view.\n *\n * @param columns - The columns to retrieve, separated by commas. Columns can be renamed when returned with `customName:columnName`\n *\n * @param options - Named parameters\n *\n * @param options.head - When set to `true`, `data` will not be returned.\n * Useful if you only need the count.\n *\n * @param options.count - Count algorithm to use to count rows in the table or view.\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n */\n select<\n Query extends string = '*',\n ResultOne = GetResult\n >(\n columns?: Query,\n {\n head = false,\n count,\n }: {\n head?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n } = {}\n ): PostgrestFilterBuilder {\n const method = head ? 'HEAD' : 'GET'\n // Remove whitespaces except when quoted\n let quoted = false\n const cleanedColumns = (columns ?? '*')\n .split('')\n .map((c) => {\n if (/\\s/.test(c) && !quoted) {\n return ''\n }\n if (c === '\"') {\n quoted = !quoted\n }\n return c\n })\n .join('')\n this.url.searchParams.set('select', cleanedColumns)\n if (count) {\n this.headers['Prefer'] = `count=${count}`\n }\n\n return new PostgrestFilterBuilder({\n method,\n url: this.url,\n headers: this.headers,\n schema: this.schema,\n fetch: this.fetch,\n allowEmpty: false,\n } as unknown as PostgrestBuilder)\n }\n\n // TODO(v3): Make `defaultToNull` consistent for both single & bulk inserts.\n insert(\n values: Row,\n options?: {\n count?: 'exact' | 'planned' | 'estimated'\n }\n ): PostgrestFilterBuilder\n insert(\n values: Row[],\n options?: {\n count?: 'exact' | 'planned' | 'estimated'\n defaultToNull?: boolean\n }\n ): PostgrestFilterBuilder\n /**\n * Perform an INSERT into the table or view.\n *\n * By default, inserted rows are not returned. To return it, chain the call\n * with `.select()`.\n *\n * @param values - The values to insert. Pass an object to insert a single row\n * or an array to insert multiple rows.\n *\n * @param options - Named parameters\n *\n * @param options.count - Count algorithm to use to count inserted rows.\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n *\n * @param options.defaultToNull - Make missing fields default to `null`.\n * Otherwise, use the default value for the column. Only applies for bulk\n * inserts.\n */\n insert(\n values: Row | Row[],\n {\n count,\n defaultToNull = true,\n }: {\n count?: 'exact' | 'planned' | 'estimated'\n defaultToNull?: boolean\n } = {}\n ): PostgrestFilterBuilder {\n const method = 'POST'\n\n const prefersHeaders = []\n if (this.headers['Prefer']) {\n prefersHeaders.push(this.headers['Prefer'])\n }\n if (count) {\n prefersHeaders.push(`count=${count}`)\n }\n if (!defaultToNull) {\n prefersHeaders.push('missing=default')\n }\n this.headers['Prefer'] = prefersHeaders.join(',')\n\n if (Array.isArray(values)) {\n const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), [] as string[])\n if (columns.length > 0) {\n const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`)\n this.url.searchParams.set('columns', uniqueColumns.join(','))\n }\n }\n\n return new PostgrestFilterBuilder({\n method,\n url: this.url,\n headers: this.headers,\n schema: this.schema,\n body: values,\n fetch: this.fetch,\n allowEmpty: false,\n } as unknown as PostgrestBuilder)\n }\n\n // TODO(v3): Make `defaultToNull` consistent for both single & bulk upserts.\n upsert(\n values: Row,\n options?: {\n onConflict?: string\n ignoreDuplicates?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n }\n ): PostgrestFilterBuilder\n upsert(\n values: Row[],\n options?: {\n onConflict?: string\n ignoreDuplicates?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n defaultToNull?: boolean\n }\n ): PostgrestFilterBuilder\n /**\n * Perform an UPSERT on the table or view. Depending on the column(s) passed\n * to `onConflict`, `.upsert()` allows you to perform the equivalent of\n * `.insert()` if a row with the corresponding `onConflict` columns doesn't\n * exist, or if it does exist, perform an alternative action depending on\n * `ignoreDuplicates`.\n *\n * By default, upserted rows are not returned. To return it, chain the call\n * with `.select()`.\n *\n * @param values - The values to upsert with. Pass an object to upsert a\n * single row or an array to upsert multiple rows.\n *\n * @param options - Named parameters\n *\n * @param options.onConflict - Comma-separated UNIQUE column(s) to specify how\n * duplicate rows are determined. Two rows are duplicates if all the\n * `onConflict` columns are equal.\n *\n * @param options.ignoreDuplicates - If `true`, duplicate rows are ignored. If\n * `false`, duplicate rows are merged with existing rows.\n *\n * @param options.count - Count algorithm to use to count upserted rows.\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n *\n * @param options.defaultToNull - Make missing fields default to `null`.\n * Otherwise, use the default value for the column. This only applies when\n * inserting new rows, not when merging with existing rows under\n * `ignoreDuplicates: false`. This also only applies when doing bulk upserts.\n */\n upsert(\n values: Row | Row[],\n {\n onConflict,\n ignoreDuplicates = false,\n count,\n defaultToNull = true,\n }: {\n onConflict?: string\n ignoreDuplicates?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n defaultToNull?: boolean\n } = {}\n ): PostgrestFilterBuilder {\n const method = 'POST'\n\n const prefersHeaders = [`resolution=${ignoreDuplicates ? 'ignore' : 'merge'}-duplicates`]\n\n if (onConflict !== undefined) this.url.searchParams.set('on_conflict', onConflict)\n if (this.headers['Prefer']) {\n prefersHeaders.push(this.headers['Prefer'])\n }\n if (count) {\n prefersHeaders.push(`count=${count}`)\n }\n if (!defaultToNull) {\n prefersHeaders.push('missing=default')\n }\n this.headers['Prefer'] = prefersHeaders.join(',')\n\n if (Array.isArray(values)) {\n const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), [] as string[])\n if (columns.length > 0) {\n const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`)\n this.url.searchParams.set('columns', uniqueColumns.join(','))\n }\n }\n\n return new PostgrestFilterBuilder({\n method,\n url: this.url,\n headers: this.headers,\n schema: this.schema,\n body: values,\n fetch: this.fetch,\n allowEmpty: false,\n } as unknown as PostgrestBuilder)\n }\n\n /**\n * Perform an UPDATE on the table or view.\n *\n * By default, updated rows are not returned. To return it, chain the call\n * with `.select()` after filters.\n *\n * @param values - The values to update with\n *\n * @param options - Named parameters\n *\n * @param options.count - Count algorithm to use to count updated rows.\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n */\n update(\n values: Row,\n {\n count,\n }: {\n count?: 'exact' | 'planned' | 'estimated'\n } = {}\n ): PostgrestFilterBuilder {\n const method = 'PATCH'\n const prefersHeaders = []\n if (this.headers['Prefer']) {\n prefersHeaders.push(this.headers['Prefer'])\n }\n if (count) {\n prefersHeaders.push(`count=${count}`)\n }\n this.headers['Prefer'] = prefersHeaders.join(',')\n\n return new PostgrestFilterBuilder({\n method,\n url: this.url,\n headers: this.headers,\n schema: this.schema,\n body: values,\n fetch: this.fetch,\n allowEmpty: false,\n } as unknown as PostgrestBuilder)\n }\n\n /**\n * Perform a DELETE on the table or view.\n *\n * By default, deleted rows are not returned. To return it, chain the call\n * with `.select()` after filters.\n *\n * @param options - Named parameters\n *\n * @param options.count - Count algorithm to use to count deleted rows.\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n */\n delete({\n count,\n }: {\n count?: 'exact' | 'planned' | 'estimated'\n } = {}): PostgrestFilterBuilder {\n const method = 'DELETE'\n const prefersHeaders = []\n if (count) {\n prefersHeaders.push(`count=${count}`)\n }\n if (this.headers['Prefer']) {\n prefersHeaders.unshift(this.headers['Prefer'])\n }\n this.headers['Prefer'] = prefersHeaders.join(',')\n\n return new PostgrestFilterBuilder({\n method,\n url: this.url,\n headers: this.headers,\n schema: this.schema,\n fetch: this.fetch,\n allowEmpty: false,\n } as unknown as PostgrestBuilder)\n }\n}\n", "export const version = '1.19.4'\n", "import { version } from './version'\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `postgrest-js/${version}` }\n", "import PostgrestQueryBuilder from './PostgrestQueryBuilder'\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder'\nimport PostgrestBuilder from './PostgrestBuilder'\nimport { DEFAULT_HEADERS } from './constants'\nimport { Fetch, GenericSchema } from './types'\n\n/**\n * PostgREST client.\n *\n * @typeParam Database - Types for the schema from the [type\n * generator](https://supabase.com/docs/reference/javascript/next/typescript-support)\n *\n * @typeParam SchemaName - Postgres schema to switch to. Must be a string\n * literal, the same one passed to the constructor. If the schema is not\n * `\"public\"`, this must be supplied manually.\n */\nexport default class PostgrestClient<\n Database = any,\n SchemaName extends string & keyof Database = 'public' extends keyof Database\n ? 'public'\n : string & keyof Database,\n Schema extends GenericSchema = Database[SchemaName] extends GenericSchema\n ? Database[SchemaName]\n : any\n> {\n url: string\n headers: Record\n schemaName?: SchemaName\n fetch?: Fetch\n\n // TODO: Add back shouldThrowOnError once we figure out the typings\n /**\n * Creates a PostgREST client.\n *\n * @param url - URL of the PostgREST endpoint\n * @param options - Named parameters\n * @param options.headers - Custom headers\n * @param options.schema - Postgres schema to switch to\n * @param options.fetch - Custom fetch\n */\n constructor(\n url: string,\n {\n headers = {},\n schema,\n fetch,\n }: {\n headers?: Record\n schema?: SchemaName\n fetch?: Fetch\n } = {}\n ) {\n this.url = url\n this.headers = { ...DEFAULT_HEADERS, ...headers }\n this.schemaName = schema\n this.fetch = fetch\n }\n\n from<\n TableName extends string & keyof Schema['Tables'],\n Table extends Schema['Tables'][TableName]\n >(relation: TableName): PostgrestQueryBuilder\n from(\n relation: ViewName\n ): PostgrestQueryBuilder\n /**\n * Perform a query on a table or a view.\n *\n * @param relation - The table or view name to query\n */\n from(relation: string): PostgrestQueryBuilder {\n const url = new URL(`${this.url}/${relation}`)\n return new PostgrestQueryBuilder(url, {\n headers: { ...this.headers },\n schema: this.schemaName,\n fetch: this.fetch,\n })\n }\n\n /**\n * Select a schema to query or perform an function (rpc) call.\n *\n * The schema needs to be on the list of exposed schemas inside Supabase.\n *\n * @param schema - The schema to query\n */\n schema(\n schema: DynamicSchema\n ): PostgrestClient<\n Database,\n DynamicSchema,\n Database[DynamicSchema] extends GenericSchema ? Database[DynamicSchema] : any\n > {\n return new PostgrestClient(this.url, {\n headers: this.headers,\n schema,\n fetch: this.fetch,\n })\n }\n\n /**\n * Perform a function call.\n *\n * @param fn - The function name to call\n * @param args - The arguments to pass to the function call\n * @param options - Named parameters\n * @param options.head - When set to `true`, `data` will not be returned.\n * Useful if you only need the count.\n * @param options.get - When set to `true`, the function will be called with\n * read-only access mode.\n * @param options.count - Count algorithm to use to count rows returned by the\n * function. Only applicable for [set-returning\n * functions](https://www.postgresql.org/docs/current/functions-srf.html).\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n */\n rpc(\n fn: FnName,\n args: Fn['Args'] = {},\n {\n head = false,\n get = false,\n count,\n }: {\n head?: boolean\n get?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n } = {}\n ): PostgrestFilterBuilder<\n Schema,\n Fn['Returns'] extends any[]\n ? Fn['Returns'][number] extends Record\n ? Fn['Returns'][number]\n : never\n : never,\n Fn['Returns'],\n FnName,\n null\n > {\n let method: 'HEAD' | 'GET' | 'POST'\n const url = new URL(`${this.url}/rpc/${fn}`)\n let body: unknown | undefined\n if (head || get) {\n method = head ? 'HEAD' : 'GET'\n Object.entries(args)\n // params with undefined value needs to be filtered out, otherwise it'll\n // show up as `?param=undefined`\n .filter(([_, value]) => value !== undefined)\n // array values need special syntax\n .map(([name, value]) => [name, Array.isArray(value) ? `{${value.join(',')}}` : `${value}`])\n .forEach(([name, value]) => {\n url.searchParams.append(name, value)\n })\n } else {\n method = 'POST'\n body = args\n }\n\n const headers = { ...this.headers }\n if (count) {\n headers['Prefer'] = `count=${count}`\n }\n\n return new PostgrestFilterBuilder({\n method,\n url,\n headers,\n schema: this.schemaName,\n body,\n fetch: this.fetch,\n allowEmpty: false,\n } as unknown as PostgrestBuilder)\n }\n}\n", "// Always update wrapper.mjs when updating this file.\nimport PostgrestClient from './PostgrestClient'\nimport PostgrestQueryBuilder from './PostgrestQueryBuilder'\nimport PostgrestFilterBuilder from './PostgrestFilterBuilder'\nimport PostgrestTransformBuilder from './PostgrestTransformBuilder'\nimport PostgrestBuilder from './PostgrestBuilder'\nimport PostgrestError from './PostgrestError'\n\nexport {\n PostgrestClient,\n PostgrestQueryBuilder,\n PostgrestFilterBuilder,\n PostgrestTransformBuilder,\n PostgrestBuilder,\n PostgrestError,\n}\nexport default {\n PostgrestClient,\n PostgrestQueryBuilder,\n PostgrestFilterBuilder,\n PostgrestTransformBuilder,\n PostgrestBuilder,\n PostgrestError,\n}\nexport type {\n PostgrestResponse,\n PostgrestResponseFailure,\n PostgrestResponseSuccess,\n PostgrestSingleResponse,\n PostgrestMaybeSingleResponse,\n} from './types'\n// https://github.com/supabase/postgrest-js/issues/551\n// To be replaced with a helper type that only uses public types\nexport type { GetResult as UnstableGetResult } from './select-query-parser/result'\n", "export const version = '2.11.2'\n", "import { version } from './version'\n\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `realtime-js/${version}` }\n\nexport const VSN: string = '1.0.0'\n\nexport const DEFAULT_TIMEOUT = 10000\n\nexport const WS_CLOSE_NORMAL = 1000\n\nexport enum SOCKET_STATES {\n connecting = 0,\n open = 1,\n closing = 2,\n closed = 3,\n}\n\nexport enum CHANNEL_STATES {\n closed = 'closed',\n errored = 'errored',\n joined = 'joined',\n joining = 'joining',\n leaving = 'leaving',\n}\n\nexport enum CHANNEL_EVENTS {\n close = 'phx_close',\n error = 'phx_error',\n join = 'phx_join',\n reply = 'phx_reply',\n leave = 'phx_leave',\n access_token = 'access_token',\n}\n\nexport enum TRANSPORTS {\n websocket = 'websocket',\n}\n\nexport enum CONNECTION_STATE {\n Connecting = 'connecting',\n Open = 'open',\n Closing = 'closing',\n Closed = 'closed',\n}\n", "// This file draws heavily from https://github.com/phoenixframework/phoenix/commit/cf098e9cf7a44ee6479d31d911a97d3c7430c6fe\n// License: https://github.com/phoenixframework/phoenix/blob/master/LICENSE.md\n\nexport default class Serializer {\n HEADER_LENGTH = 1\n\n decode(rawPayload: ArrayBuffer | string, callback: Function) {\n if (rawPayload.constructor === ArrayBuffer) {\n return callback(this._binaryDecode(rawPayload))\n }\n\n if (typeof rawPayload === 'string') {\n return callback(JSON.parse(rawPayload))\n }\n\n return callback({})\n }\n\n private _binaryDecode(buffer: ArrayBuffer) {\n const view = new DataView(buffer)\n const decoder = new TextDecoder()\n\n return this._decodeBroadcast(buffer, view, decoder)\n }\n\n private _decodeBroadcast(\n buffer: ArrayBuffer,\n view: DataView,\n decoder: TextDecoder\n ): {\n ref: null\n topic: string\n event: string\n payload: { [key: string]: any }\n } {\n const topicSize = view.getUint8(1)\n const eventSize = view.getUint8(2)\n let offset = this.HEADER_LENGTH + 2\n const topic = decoder.decode(buffer.slice(offset, offset + topicSize))\n offset = offset + topicSize\n const event = decoder.decode(buffer.slice(offset, offset + eventSize))\n offset = offset + eventSize\n const data = JSON.parse(\n decoder.decode(buffer.slice(offset, buffer.byteLength))\n )\n\n return { ref: null, topic: topic, event: event, payload: data }\n }\n}\n", "/**\n * Creates a timer that accepts a `timerCalc` function to perform calculated timeout retries, such as exponential backoff.\n *\n * @example\n * let reconnectTimer = new Timer(() => this.connect(), function(tries){\n * return [1000, 5000, 10000][tries - 1] || 10000\n * })\n * reconnectTimer.scheduleTimeout() // fires after 1000\n * reconnectTimer.scheduleTimeout() // fires after 5000\n * reconnectTimer.reset()\n * reconnectTimer.scheduleTimeout() // fires after 1000\n */\nexport default class Timer {\n timer: number | undefined = undefined\n tries: number = 0\n\n constructor(public callback: Function, public timerCalc: Function) {\n this.callback = callback\n this.timerCalc = timerCalc\n }\n\n reset() {\n this.tries = 0\n clearTimeout(this.timer)\n }\n\n // Cancels any previous scheduleTimeout and schedules callback\n scheduleTimeout() {\n clearTimeout(this.timer)\n\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1\n this.callback()\n }, this.timerCalc(this.tries + 1))\n }\n}\n", "/**\n * Helpers to convert the change Payload into native JS types.\n */\n\n// Adapted from epgsql (src/epgsql_binary.erl), this module licensed under\n// 3-clause BSD found here: https://raw.githubusercontent.com/epgsql/epgsql/devel/LICENSE\n\nexport enum PostgresTypes {\n abstime = 'abstime',\n bool = 'bool',\n date = 'date',\n daterange = 'daterange',\n float4 = 'float4',\n float8 = 'float8',\n int2 = 'int2',\n int4 = 'int4',\n int4range = 'int4range',\n int8 = 'int8',\n int8range = 'int8range',\n json = 'json',\n jsonb = 'jsonb',\n money = 'money',\n numeric = 'numeric',\n oid = 'oid',\n reltime = 'reltime',\n text = 'text',\n time = 'time',\n timestamp = 'timestamp',\n timestamptz = 'timestamptz',\n timetz = 'timetz',\n tsrange = 'tsrange',\n tstzrange = 'tstzrange',\n}\n\ntype Columns = {\n name: string // the column name. eg: \"user_id\"\n type: string // the column type. eg: \"uuid\"\n flags?: string[] // any special flags for the column. eg: [\"key\"]\n type_modifier?: number // the type modifier. eg: 4294967295\n}[]\n\ntype BaseValue = null | string | number | boolean\ntype RecordValue = BaseValue | BaseValue[]\n\ntype Record = {\n [key: string]: RecordValue\n}\n\n/**\n * Takes an array of columns and an object of string values then converts each string value\n * to its mapped type.\n *\n * @param {{name: String, type: String}[]} columns\n * @param {Object} record\n * @param {Object} options The map of various options that can be applied to the mapper\n * @param {Array} options.skipTypes The array of types that should not be converted\n *\n * @example convertChangeData([{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age:'33'}, {})\n * //=>{ first_name: 'Paul', age: 33 }\n */\nexport const convertChangeData = (\n columns: Columns,\n record: Record,\n options: { skipTypes?: string[] } = {}\n): Record => {\n const skipTypes = options.skipTypes ?? []\n\n return Object.keys(record).reduce((acc, rec_key) => {\n acc[rec_key] = convertColumn(rec_key, columns, record, skipTypes)\n return acc\n }, {} as Record)\n}\n\n/**\n * Converts the value of an individual column.\n *\n * @param {String} columnName The column that you want to convert\n * @param {{name: String, type: String}[]} columns All of the columns\n * @param {Object} record The map of string values\n * @param {Array} skipTypes An array of types that should not be converted\n * @return {object} Useless information\n *\n * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, [])\n * //=> 33\n * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, ['int4'])\n * //=> \"33\"\n */\nexport const convertColumn = (\n columnName: string,\n columns: Columns,\n record: Record,\n skipTypes: string[]\n): RecordValue => {\n const column = columns.find((x) => x.name === columnName)\n const colType = column?.type\n const value = record[columnName]\n\n if (colType && !skipTypes.includes(colType)) {\n return convertCell(colType, value)\n }\n\n return noop(value)\n}\n\n/**\n * If the value of the cell is `null`, returns null.\n * Otherwise converts the string value to the correct type.\n * @param {String} type A postgres column type\n * @param {String} value The cell value\n *\n * @example convertCell('bool', 't')\n * //=> true\n * @example convertCell('int8', '10')\n * //=> 10\n * @example convertCell('_int4', '{1,2,3,4}')\n * //=> [1,2,3,4]\n */\nexport const convertCell = (type: string, value: RecordValue): RecordValue => {\n // if data type is an array\n if (type.charAt(0) === '_') {\n const dataType = type.slice(1, type.length)\n return toArray(value, dataType)\n }\n\n // If not null, convert to correct type.\n switch (type) {\n case PostgresTypes.bool:\n return toBoolean(value)\n case PostgresTypes.float4:\n case PostgresTypes.float8:\n case PostgresTypes.int2:\n case PostgresTypes.int4:\n case PostgresTypes.int8:\n case PostgresTypes.numeric:\n case PostgresTypes.oid:\n return toNumber(value)\n case PostgresTypes.json:\n case PostgresTypes.jsonb:\n return toJson(value)\n case PostgresTypes.timestamp:\n return toTimestampString(value) // Format to be consistent with PostgREST\n case PostgresTypes.abstime: // To allow users to cast it based on Timezone\n case PostgresTypes.date: // To allow users to cast it based on Timezone\n case PostgresTypes.daterange:\n case PostgresTypes.int4range:\n case PostgresTypes.int8range:\n case PostgresTypes.money:\n case PostgresTypes.reltime: // To allow users to cast it based on Timezone\n case PostgresTypes.text:\n case PostgresTypes.time: // To allow users to cast it based on Timezone\n case PostgresTypes.timestamptz: // To allow users to cast it based on Timezone\n case PostgresTypes.timetz: // To allow users to cast it based on Timezone\n case PostgresTypes.tsrange:\n case PostgresTypes.tstzrange:\n return noop(value)\n default:\n // Return the value for remaining types\n return noop(value)\n }\n}\n\nconst noop = (value: RecordValue): RecordValue => {\n return value\n}\nexport const toBoolean = (value: RecordValue): RecordValue => {\n switch (value) {\n case 't':\n return true\n case 'f':\n return false\n default:\n return value\n }\n}\nexport const toNumber = (value: RecordValue): RecordValue => {\n if (typeof value === 'string') {\n const parsedValue = parseFloat(value)\n if (!Number.isNaN(parsedValue)) {\n return parsedValue\n }\n }\n return value\n}\nexport const toJson = (value: RecordValue): RecordValue => {\n if (typeof value === 'string') {\n try {\n return JSON.parse(value)\n } catch (error) {\n console.log(`JSON parse error: ${error}`)\n return value\n }\n }\n return value\n}\n\n/**\n * Converts a Postgres Array into a native JS array\n *\n * @example toArray('{}', 'int4')\n * //=> []\n * @example toArray('{\"[2021-01-01,2021-12-31)\",\"(2021-01-01,2021-12-32]\"}', 'daterange')\n * //=> ['[2021-01-01,2021-12-31)', '(2021-01-01,2021-12-32]']\n * @example toArray([1,2,3,4], 'int4')\n * //=> [1,2,3,4]\n */\nexport const toArray = (value: RecordValue, type: string): RecordValue => {\n if (typeof value !== 'string') {\n return value\n }\n\n const lastIdx = value.length - 1\n const closeBrace = value[lastIdx]\n const openBrace = value[0]\n\n // Confirm value is a Postgres array by checking curly brackets\n if (openBrace === '{' && closeBrace === '}') {\n let arr\n const valTrim = value.slice(1, lastIdx)\n\n // TODO: find a better solution to separate Postgres array data\n try {\n arr = JSON.parse('[' + valTrim + ']')\n } catch (_) {\n // WARNING: splitting on comma does not cover all edge cases\n arr = valTrim ? valTrim.split(',') : []\n }\n\n return arr.map((val: BaseValue) => convertCell(type, val))\n }\n\n return value\n}\n\n/**\n * Fixes timestamp to be ISO-8601. Swaps the space between the date and time for a 'T'\n * See https://github.com/supabase/supabase/issues/18\n *\n * @example toTimestampString('2019-09-10 00:00:00')\n * //=> '2019-09-10T00:00:00'\n */\nexport const toTimestampString = (value: RecordValue): RecordValue => {\n if (typeof value === 'string') {\n return value.replace(' ', 'T')\n }\n\n return value\n}\n\nexport const httpEndpointURL = (socketUrl: string): string => {\n let url = socketUrl\n url = url.replace(/^ws/i, 'http')\n url = url.replace(/(\\/socket\\/websocket|\\/socket|\\/websocket)\\/?$/i, '')\n return url.replace(/\\/+$/, '')\n}\n", "import { DEFAULT_TIMEOUT } from '../lib/constants'\nimport type RealtimeChannel from '../RealtimeChannel'\n\nexport default class Push {\n sent: boolean = false\n timeoutTimer: number | undefined = undefined\n ref: string = ''\n receivedResp: {\n status: string\n response: { [key: string]: any }\n } | null = null\n recHooks: {\n status: string\n callback: Function\n }[] = []\n refEvent: string | null = null\n\n /**\n * Initializes the Push\n *\n * @param channel The Channel\n * @param event The event, for example `\"phx_join\"`\n * @param payload The payload, for example `{user_id: 123}`\n * @param timeout The push timeout in milliseconds\n */\n constructor(\n public channel: RealtimeChannel,\n public event: string,\n public payload: { [key: string]: any } = {},\n public timeout: number = DEFAULT_TIMEOUT\n ) {}\n\n resend(timeout: number) {\n this.timeout = timeout\n this._cancelRefEvent()\n this.ref = ''\n this.refEvent = null\n this.receivedResp = null\n this.sent = false\n this.send()\n }\n\n send() {\n if (this._hasReceived('timeout')) {\n return\n }\n this.startTimeout()\n this.sent = true\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload,\n ref: this.ref,\n join_ref: this.channel._joinRef(),\n })\n }\n\n updatePayload(payload: { [key: string]: any }): void {\n this.payload = { ...this.payload, ...payload }\n }\n\n receive(status: string, callback: Function) {\n if (this._hasReceived(status)) {\n callback(this.receivedResp?.response)\n }\n\n this.recHooks.push({ status, callback })\n return this\n }\n\n startTimeout() {\n if (this.timeoutTimer) {\n return\n }\n this.ref = this.channel.socket._makeRef()\n this.refEvent = this.channel._replyEventName(this.ref)\n\n const callback = (payload: any) => {\n this._cancelRefEvent()\n this._cancelTimeout()\n this.receivedResp = payload\n this._matchReceive(payload)\n }\n\n this.channel._on(this.refEvent, {}, callback)\n\n this.timeoutTimer = setTimeout(() => {\n this.trigger('timeout', {})\n }, this.timeout)\n }\n\n trigger(status: string, response: any) {\n if (this.refEvent)\n this.channel._trigger(this.refEvent, { status, response })\n }\n\n destroy() {\n this._cancelRefEvent()\n this._cancelTimeout()\n }\n\n private _cancelRefEvent() {\n if (!this.refEvent) {\n return\n }\n\n this.channel._off(this.refEvent, {})\n }\n\n private _cancelTimeout() {\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = undefined\n }\n\n private _matchReceive({\n status,\n response,\n }: {\n status: string\n response: Function\n }) {\n this.recHooks\n .filter((h) => h.status === status)\n .forEach((h) => h.callback(response))\n }\n\n private _hasReceived(status: string) {\n return this.receivedResp && this.receivedResp.status === status\n }\n}\n", "/*\n This file draws heavily from https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/assets/js/phoenix/presence.js\n License: https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/LICENSE.md\n*/\n\nimport type {\n PresenceOpts,\n PresenceOnJoinCallback,\n PresenceOnLeaveCallback,\n} from 'phoenix'\nimport type RealtimeChannel from './RealtimeChannel'\n\ntype Presence = {\n presence_ref: string\n} & T\n\nexport type RealtimePresenceState = {\n [key: string]: Presence[]\n}\n\nexport type RealtimePresenceJoinPayload = {\n event: `${REALTIME_PRESENCE_LISTEN_EVENTS.JOIN}`\n key: string\n currentPresences: Presence[]\n newPresences: Presence[]\n}\n\nexport type RealtimePresenceLeavePayload = {\n event: `${REALTIME_PRESENCE_LISTEN_EVENTS.LEAVE}`\n key: string\n currentPresences: Presence[]\n leftPresences: Presence[]\n}\n\nexport enum REALTIME_PRESENCE_LISTEN_EVENTS {\n SYNC = 'sync',\n JOIN = 'join',\n LEAVE = 'leave',\n}\n\ntype PresenceDiff = {\n joins: RealtimePresenceState\n leaves: RealtimePresenceState\n}\n\ntype RawPresenceState = {\n [key: string]: {\n metas: {\n phx_ref?: string\n phx_ref_prev?: string\n [key: string]: any\n }[]\n }\n}\n\ntype RawPresenceDiff = {\n joins: RawPresenceState\n leaves: RawPresenceState\n}\n\ntype PresenceChooser = (key: string, presences: Presence[]) => T\n\nexport default class RealtimePresence {\n state: RealtimePresenceState = {}\n pendingDiffs: RawPresenceDiff[] = []\n joinRef: string | null = null\n caller: {\n onJoin: PresenceOnJoinCallback\n onLeave: PresenceOnLeaveCallback\n onSync: () => void\n } = {\n onJoin: () => {},\n onLeave: () => {},\n onSync: () => {},\n }\n\n /**\n * Initializes the Presence.\n *\n * @param channel - The RealtimeChannel\n * @param opts - The options,\n * for example `{events: {state: 'state', diff: 'diff'}}`\n */\n constructor(public channel: RealtimeChannel, opts?: PresenceOpts) {\n const events = opts?.events || {\n state: 'presence_state',\n diff: 'presence_diff',\n }\n\n this.channel._on(events.state, {}, (newState: RawPresenceState) => {\n const { onJoin, onLeave, onSync } = this.caller\n\n this.joinRef = this.channel._joinRef()\n\n this.state = RealtimePresence.syncState(\n this.state,\n newState,\n onJoin,\n onLeave\n )\n\n this.pendingDiffs.forEach((diff) => {\n this.state = RealtimePresence.syncDiff(\n this.state,\n diff,\n onJoin,\n onLeave\n )\n })\n\n this.pendingDiffs = []\n\n onSync()\n })\n\n this.channel._on(events.diff, {}, (diff: RawPresenceDiff) => {\n const { onJoin, onLeave, onSync } = this.caller\n\n if (this.inPendingSyncState()) {\n this.pendingDiffs.push(diff)\n } else {\n this.state = RealtimePresence.syncDiff(\n this.state,\n diff,\n onJoin,\n onLeave\n )\n\n onSync()\n }\n })\n\n this.onJoin((key, currentPresences, newPresences) => {\n this.channel._trigger('presence', {\n event: 'join',\n key,\n currentPresences,\n newPresences,\n })\n })\n\n this.onLeave((key, currentPresences, leftPresences) => {\n this.channel._trigger('presence', {\n event: 'leave',\n key,\n currentPresences,\n leftPresences,\n })\n })\n\n this.onSync(() => {\n this.channel._trigger('presence', { event: 'sync' })\n })\n }\n\n /**\n * Used to sync the list of presences on the server with the\n * client's state.\n *\n * An optional `onJoin` and `onLeave` callback can be provided to\n * react to changes in the client's local presences across\n * disconnects and reconnects with the server.\n *\n * @internal\n */\n private static syncState(\n currentState: RealtimePresenceState,\n newState: RawPresenceState | RealtimePresenceState,\n onJoin: PresenceOnJoinCallback,\n onLeave: PresenceOnLeaveCallback\n ): RealtimePresenceState {\n const state = this.cloneDeep(currentState)\n const transformedState = this.transformState(newState)\n const joins: RealtimePresenceState = {}\n const leaves: RealtimePresenceState = {}\n\n this.map(state, (key: string, presences: Presence[]) => {\n if (!transformedState[key]) {\n leaves[key] = presences\n }\n })\n\n this.map(transformedState, (key, newPresences: Presence[]) => {\n const currentPresences: Presence[] = state[key]\n\n if (currentPresences) {\n const newPresenceRefs = newPresences.map(\n (m: Presence) => m.presence_ref\n )\n const curPresenceRefs = currentPresences.map(\n (m: Presence) => m.presence_ref\n )\n const joinedPresences: Presence[] = newPresences.filter(\n (m: Presence) => curPresenceRefs.indexOf(m.presence_ref) < 0\n )\n const leftPresences: Presence[] = currentPresences.filter(\n (m: Presence) => newPresenceRefs.indexOf(m.presence_ref) < 0\n )\n\n if (joinedPresences.length > 0) {\n joins[key] = joinedPresences\n }\n\n if (leftPresences.length > 0) {\n leaves[key] = leftPresences\n }\n } else {\n joins[key] = newPresences\n }\n })\n\n return this.syncDiff(state, { joins, leaves }, onJoin, onLeave)\n }\n\n /**\n * Used to sync a diff of presence join and leave events from the\n * server, as they happen.\n *\n * Like `syncState`, `syncDiff` accepts optional `onJoin` and\n * `onLeave` callbacks to react to a user joining or leaving from a\n * device.\n *\n * @internal\n */\n private static syncDiff(\n state: RealtimePresenceState,\n diff: RawPresenceDiff | PresenceDiff,\n onJoin: PresenceOnJoinCallback,\n onLeave: PresenceOnLeaveCallback\n ): RealtimePresenceState {\n const { joins, leaves } = {\n joins: this.transformState(diff.joins),\n leaves: this.transformState(diff.leaves),\n }\n\n if (!onJoin) {\n onJoin = () => {}\n }\n\n if (!onLeave) {\n onLeave = () => {}\n }\n\n this.map(joins, (key, newPresences: Presence[]) => {\n const currentPresences: Presence[] = state[key] ?? []\n state[key] = this.cloneDeep(newPresences)\n\n if (currentPresences.length > 0) {\n const joinedPresenceRefs = state[key].map(\n (m: Presence) => m.presence_ref\n )\n const curPresences: Presence[] = currentPresences.filter(\n (m: Presence) => joinedPresenceRefs.indexOf(m.presence_ref) < 0\n )\n\n state[key].unshift(...curPresences)\n }\n\n onJoin(key, currentPresences, newPresences)\n })\n\n this.map(leaves, (key, leftPresences: Presence[]) => {\n let currentPresences: Presence[] = state[key]\n\n if (!currentPresences) return\n\n const presenceRefsToRemove = leftPresences.map(\n (m: Presence) => m.presence_ref\n )\n currentPresences = currentPresences.filter(\n (m: Presence) => presenceRefsToRemove.indexOf(m.presence_ref) < 0\n )\n\n state[key] = currentPresences\n\n onLeave(key, currentPresences, leftPresences)\n\n if (currentPresences.length === 0) delete state[key]\n })\n\n return state\n }\n\n /** @internal */\n private static map(\n obj: RealtimePresenceState,\n func: PresenceChooser\n ): T[] {\n return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]))\n }\n\n /**\n * Remove 'metas' key\n * Change 'phx_ref' to 'presence_ref'\n * Remove 'phx_ref' and 'phx_ref_prev'\n *\n * @example\n * // returns {\n * abc123: [\n * { presence_ref: '2', user_id: 1 },\n * { presence_ref: '3', user_id: 2 }\n * ]\n * }\n * RealtimePresence.transformState({\n * abc123: {\n * metas: [\n * { phx_ref: '2', phx_ref_prev: '1' user_id: 1 },\n * { phx_ref: '3', user_id: 2 }\n * ]\n * }\n * })\n *\n * @internal\n */\n private static transformState(\n state: RawPresenceState | RealtimePresenceState\n ): RealtimePresenceState {\n state = this.cloneDeep(state)\n\n return Object.getOwnPropertyNames(state).reduce((newState, key) => {\n const presences = state[key]\n\n if ('metas' in presences) {\n newState[key] = presences.metas.map((presence) => {\n presence['presence_ref'] = presence['phx_ref']\n\n delete presence['phx_ref']\n delete presence['phx_ref_prev']\n\n return presence\n }) as Presence[]\n } else {\n newState[key] = presences\n }\n\n return newState\n }, {} as RealtimePresenceState)\n }\n\n /** @internal */\n private static cloneDeep(obj: { [key: string]: any }) {\n return JSON.parse(JSON.stringify(obj))\n }\n\n /** @internal */\n private onJoin(callback: PresenceOnJoinCallback): void {\n this.caller.onJoin = callback\n }\n\n /** @internal */\n private onLeave(callback: PresenceOnLeaveCallback): void {\n this.caller.onLeave = callback\n }\n\n /** @internal */\n private onSync(callback: () => void): void {\n this.caller.onSync = callback\n }\n\n /** @internal */\n private inPendingSyncState(): boolean {\n return !this.joinRef || this.joinRef !== this.channel._joinRef()\n }\n}\n", "import { CHANNEL_EVENTS, CHANNEL_STATES } from './lib/constants'\nimport Push from './lib/push'\nimport type RealtimeClient from './RealtimeClient'\nimport Timer from './lib/timer'\nimport RealtimePresence, {\n REALTIME_PRESENCE_LISTEN_EVENTS,\n} from './RealtimePresence'\nimport type {\n RealtimePresenceJoinPayload,\n RealtimePresenceLeavePayload,\n RealtimePresenceState,\n} from './RealtimePresence'\nimport * as Transformers from './lib/transformers'\nimport { httpEndpointURL } from './lib/transformers'\n\nexport type RealtimeChannelOptions = {\n config: {\n /**\n * self option enables client to receive message it broadcast\n * ack option instructs server to acknowledge that broadcast message was received\n */\n broadcast?: { self?: boolean; ack?: boolean }\n /**\n * key option is used to track presence payload across clients\n */\n presence?: { key?: string }\n /**\n * defines if the channel is private or not and if RLS policies will be used to check data\n */\n private?: boolean\n }\n}\n\ntype RealtimePostgresChangesPayloadBase = {\n schema: string\n table: string\n commit_timestamp: string\n errors: string[]\n}\n\nexport type RealtimePostgresInsertPayload =\n RealtimePostgresChangesPayloadBase & {\n eventType: `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.INSERT}`\n new: T\n old: {}\n }\n\nexport type RealtimePostgresUpdatePayload =\n RealtimePostgresChangesPayloadBase & {\n eventType: `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.UPDATE}`\n new: T\n old: Partial\n }\n\nexport type RealtimePostgresDeletePayload =\n RealtimePostgresChangesPayloadBase & {\n eventType: `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.DELETE}`\n new: {}\n old: Partial\n }\n\nexport type RealtimePostgresChangesPayload =\n | RealtimePostgresInsertPayload\n | RealtimePostgresUpdatePayload\n | RealtimePostgresDeletePayload\n\nexport type RealtimePostgresChangesFilter<\n T extends `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT}`\n> = {\n /**\n * The type of database change to listen to.\n */\n event: T\n /**\n * The database schema to listen to.\n */\n schema: string\n /**\n * The database table to listen to.\n */\n table?: string\n /**\n * Receive database changes when filter is matched.\n */\n filter?: string\n}\n\nexport type RealtimeChannelSendResponse = 'ok' | 'timed out' | 'error'\n\nexport enum REALTIME_POSTGRES_CHANGES_LISTEN_EVENT {\n ALL = '*',\n INSERT = 'INSERT',\n UPDATE = 'UPDATE',\n DELETE = 'DELETE',\n}\n\nexport enum REALTIME_LISTEN_TYPES {\n BROADCAST = 'broadcast',\n PRESENCE = 'presence',\n POSTGRES_CHANGES = 'postgres_changes',\n SYSTEM = 'system',\n}\n\nexport enum REALTIME_SUBSCRIBE_STATES {\n SUBSCRIBED = 'SUBSCRIBED',\n TIMED_OUT = 'TIMED_OUT',\n CLOSED = 'CLOSED',\n CHANNEL_ERROR = 'CHANNEL_ERROR',\n}\n\nexport const REALTIME_CHANNEL_STATES = CHANNEL_STATES\n\ninterface PostgresChangesFilters {\n postgres_changes: {\n id: string\n event: string\n schema?: string\n table?: string\n filter?: string\n }[]\n}\n/** A channel is the basic building block of Realtime\n * and narrows the scope of data flow to subscribed clients.\n * You can think of a channel as a chatroom where participants are able to see who's online\n * and send and receive messages.\n */\nexport default class RealtimeChannel {\n bindings: {\n [key: string]: {\n type: string\n filter: { [key: string]: any }\n callback: Function\n id?: string\n }[]\n } = {}\n timeout: number\n state = CHANNEL_STATES.closed\n joinedOnce = false\n joinPush: Push\n rejoinTimer: Timer\n pushBuffer: Push[] = []\n presence: RealtimePresence\n broadcastEndpointURL: string\n subTopic: string\n private: boolean\n\n constructor(\n /** Topic name can be any string. */\n public topic: string,\n public params: RealtimeChannelOptions = { config: {} },\n public socket: RealtimeClient\n ) {\n this.subTopic = topic.replace(/^realtime:/i, '')\n this.params.config = {\n ...{\n broadcast: { ack: false, self: false },\n presence: { key: '' },\n private: false,\n },\n ...params.config,\n }\n this.timeout = this.socket.timeout\n this.joinPush = new Push(\n this,\n CHANNEL_EVENTS.join,\n this.params,\n this.timeout\n )\n this.rejoinTimer = new Timer(\n () => this._rejoinUntilConnected(),\n this.socket.reconnectAfterMs\n )\n this.joinPush.receive('ok', () => {\n this.state = CHANNEL_STATES.joined\n this.rejoinTimer.reset()\n this.pushBuffer.forEach((pushEvent: Push) => pushEvent.send())\n this.pushBuffer = []\n })\n this._onClose(() => {\n this.rejoinTimer.reset()\n this.socket.log('channel', `close ${this.topic} ${this._joinRef()}`)\n this.state = CHANNEL_STATES.closed\n this.socket._remove(this)\n })\n this._onError((reason: string) => {\n if (this._isLeaving() || this._isClosed()) {\n return\n }\n this.socket.log('channel', `error ${this.topic}`, reason)\n this.state = CHANNEL_STATES.errored\n this.rejoinTimer.scheduleTimeout()\n })\n this.joinPush.receive('timeout', () => {\n if (!this._isJoining()) {\n return\n }\n this.socket.log('channel', `timeout ${this.topic}`, this.joinPush.timeout)\n this.state = CHANNEL_STATES.errored\n this.rejoinTimer.scheduleTimeout()\n })\n this._on(CHANNEL_EVENTS.reply, {}, (payload: any, ref: string) => {\n this._trigger(this._replyEventName(ref), payload)\n })\n\n this.presence = new RealtimePresence(this)\n\n this.broadcastEndpointURL =\n httpEndpointURL(this.socket.endPoint) + '/api/broadcast'\n this.private = this.params.config.private || false\n }\n\n /** Subscribe registers your client with the server */\n subscribe(\n callback?: (status: REALTIME_SUBSCRIBE_STATES, err?: Error) => void,\n timeout = this.timeout\n ): RealtimeChannel {\n if (!this.socket.isConnected()) {\n this.socket.connect()\n }\n if (this.joinedOnce) {\n throw `tried to subscribe multiple times. 'subscribe' can only be called a single time per channel instance`\n } else {\n const {\n config: { broadcast, presence, private: isPrivate },\n } = this.params\n\n this._onError((e: Error) =>\n callback?.(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, e)\n )\n this._onClose(() => callback?.(REALTIME_SUBSCRIBE_STATES.CLOSED))\n\n const accessTokenPayload: { access_token?: string } = {}\n const config = {\n broadcast,\n presence,\n postgres_changes:\n this.bindings.postgres_changes?.map((r) => r.filter) ?? [],\n private: isPrivate,\n }\n\n if (this.socket.accessTokenValue) {\n accessTokenPayload.access_token = this.socket.accessTokenValue\n }\n\n this.updateJoinPayload({ ...{ config }, ...accessTokenPayload })\n\n this.joinedOnce = true\n this._rejoin(timeout)\n\n this.joinPush\n .receive('ok', async ({ postgres_changes }: PostgresChangesFilters) => {\n this.socket.setAuth()\n if (postgres_changes === undefined) {\n callback?.(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED)\n return\n } else {\n const clientPostgresBindings = this.bindings.postgres_changes\n const bindingsLen = clientPostgresBindings?.length ?? 0\n const newPostgresBindings = []\n\n for (let i = 0; i < bindingsLen; i++) {\n const clientPostgresBinding = clientPostgresBindings[i]\n const {\n filter: { event, schema, table, filter },\n } = clientPostgresBinding\n const serverPostgresFilter =\n postgres_changes && postgres_changes[i]\n\n if (\n serverPostgresFilter &&\n serverPostgresFilter.event === event &&\n serverPostgresFilter.schema === schema &&\n serverPostgresFilter.table === table &&\n serverPostgresFilter.filter === filter\n ) {\n newPostgresBindings.push({\n ...clientPostgresBinding,\n id: serverPostgresFilter.id,\n })\n } else {\n this.unsubscribe()\n callback?.(\n REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR,\n new Error(\n 'mismatch between server and client bindings for postgres changes'\n )\n )\n return\n }\n }\n\n this.bindings.postgres_changes = newPostgresBindings\n\n callback && callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED)\n return\n }\n })\n .receive('error', (error: { [key: string]: any }) => {\n callback?.(\n REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR,\n new Error(\n JSON.stringify(Object.values(error).join(', ') || 'error')\n )\n )\n return\n })\n .receive('timeout', () => {\n callback?.(REALTIME_SUBSCRIBE_STATES.TIMED_OUT)\n return\n })\n }\n return this\n }\n\n presenceState<\n T extends { [key: string]: any } = {}\n >(): RealtimePresenceState {\n return this.presence.state as RealtimePresenceState\n }\n\n async track(\n payload: { [key: string]: any },\n opts: { [key: string]: any } = {}\n ): Promise {\n return await this.send(\n {\n type: 'presence',\n event: 'track',\n payload,\n },\n opts.timeout || this.timeout\n )\n }\n\n async untrack(\n opts: { [key: string]: any } = {}\n ): Promise {\n return await this.send(\n {\n type: 'presence',\n event: 'untrack',\n },\n opts\n )\n }\n\n /**\n * Creates an event handler that listens to changes.\n */\n on(\n type: `${REALTIME_LISTEN_TYPES.PRESENCE}`,\n filter: { event: `${REALTIME_PRESENCE_LISTEN_EVENTS.SYNC}` },\n callback: () => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.PRESENCE}`,\n filter: { event: `${REALTIME_PRESENCE_LISTEN_EVENTS.JOIN}` },\n callback: (payload: RealtimePresenceJoinPayload) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.PRESENCE}`,\n filter: { event: `${REALTIME_PRESENCE_LISTEN_EVENTS.LEAVE}` },\n callback: (payload: RealtimePresenceLeavePayload) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`,\n filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.ALL}`>,\n callback: (payload: RealtimePostgresChangesPayload) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`,\n filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.INSERT}`>,\n callback: (payload: RealtimePostgresInsertPayload) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`,\n filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.UPDATE}`>,\n callback: (payload: RealtimePostgresUpdatePayload) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`,\n filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.DELETE}`>,\n callback: (payload: RealtimePostgresDeletePayload) => void\n ): RealtimeChannel\n /**\n * The following is placed here to display on supabase.com/docs/reference/javascript/subscribe.\n * @param type One of \"broadcast\", \"presence\", or \"postgres_changes\".\n * @param filter Custom object specific to the Realtime feature detailing which payloads to receive.\n * @param callback Function to be invoked when event handler is triggered.\n */\n on(\n type: `${REALTIME_LISTEN_TYPES.BROADCAST}`,\n filter: { event: string },\n callback: (payload: {\n type: `${REALTIME_LISTEN_TYPES.BROADCAST}`\n event: string\n [key: string]: any\n }) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.BROADCAST}`,\n filter: { event: string },\n callback: (payload: {\n type: `${REALTIME_LISTEN_TYPES.BROADCAST}`\n event: string\n payload: T\n }) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES.SYSTEM}`,\n filter: {},\n callback: (payload: any) => void\n ): RealtimeChannel\n on(\n type: `${REALTIME_LISTEN_TYPES}`,\n filter: { event: string; [key: string]: string },\n callback: (payload: any) => void\n ): RealtimeChannel {\n return this._on(type, filter, callback)\n }\n /**\n * Sends a message into the channel.\n *\n * @param args Arguments to send to channel\n * @param args.type The type of event to send\n * @param args.event The name of the event being sent\n * @param args.payload Payload to be sent\n * @param opts Options to be used during the send process\n */\n async send(\n args: {\n type: 'broadcast' | 'presence' | 'postgres_changes'\n event: string\n payload?: any\n [key: string]: any\n },\n opts: { [key: string]: any } = {}\n ): Promise {\n if (!this._canPush() && args.type === 'broadcast') {\n const { event, payload: endpoint_payload } = args\n const authorization = this.socket.accessTokenValue\n ? `Bearer ${this.socket.accessTokenValue}`\n : ''\n const options = {\n method: 'POST',\n headers: {\n Authorization: authorization,\n apikey: this.socket.apiKey ? this.socket.apiKey : '',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n messages: [\n {\n topic: this.subTopic,\n event,\n payload: endpoint_payload,\n private: this.private,\n },\n ],\n }),\n }\n\n try {\n const response = await this._fetchWithTimeout(\n this.broadcastEndpointURL,\n options,\n opts.timeout ?? this.timeout\n )\n\n await response.body?.cancel()\n return response.ok ? 'ok' : 'error'\n } catch (error: any) {\n if (error.name === 'AbortError') {\n return 'timed out'\n } else {\n return 'error'\n }\n }\n } else {\n return new Promise((resolve) => {\n const push = this._push(args.type, args, opts.timeout || this.timeout)\n\n if (args.type === 'broadcast' && !this.params?.config?.broadcast?.ack) {\n resolve('ok')\n }\n\n push.receive('ok', () => resolve('ok'))\n push.receive('error', () => resolve('error'))\n push.receive('timeout', () => resolve('timed out'))\n })\n }\n }\n\n updateJoinPayload(payload: { [key: string]: any }): void {\n this.joinPush.updatePayload(payload)\n }\n\n /**\n * Leaves the channel.\n *\n * Unsubscribes from server events, and instructs channel to terminate on server.\n * Triggers onClose() hooks.\n *\n * To receive leave acknowledgements, use the a `receive` hook to bind to the server ack, ie:\n * channel.unsubscribe().receive(\"ok\", () => alert(\"left!\") )\n */\n unsubscribe(timeout = this.timeout): Promise<'ok' | 'timed out' | 'error'> {\n this.state = CHANNEL_STATES.leaving\n const onClose = () => {\n this.socket.log('channel', `leave ${this.topic}`)\n this._trigger(CHANNEL_EVENTS.close, 'leave', this._joinRef())\n }\n\n this.rejoinTimer.reset()\n // Destroy joinPush to avoid connection timeouts during unscription phase\n this.joinPush.destroy()\n\n return new Promise((resolve) => {\n const leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout)\n leavePush\n .receive('ok', () => {\n onClose()\n resolve('ok')\n })\n .receive('timeout', () => {\n onClose()\n resolve('timed out')\n })\n .receive('error', () => {\n resolve('error')\n })\n\n leavePush.send()\n if (!this._canPush()) {\n leavePush.trigger('ok', {})\n }\n })\n }\n\n /** @internal */\n\n async _fetchWithTimeout(\n url: string,\n options: { [key: string]: any },\n timeout: number\n ) {\n const controller = new AbortController()\n const id = setTimeout(() => controller.abort(), timeout)\n\n const response = await this.socket.fetch(url, {\n ...options,\n signal: controller.signal,\n })\n\n clearTimeout(id)\n\n return response\n }\n\n /** @internal */\n _push(\n event: string,\n payload: { [key: string]: any },\n timeout = this.timeout\n ) {\n if (!this.joinedOnce) {\n throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`\n }\n let pushEvent = new Push(this, event, payload, timeout)\n if (this._canPush()) {\n pushEvent.send()\n } else {\n pushEvent.startTimeout()\n this.pushBuffer.push(pushEvent)\n }\n\n return pushEvent\n }\n\n /**\n * Overridable message hook\n *\n * Receives all events for specialized message handling before dispatching to the channel callbacks.\n * Must return the payload, modified or unmodified.\n *\n * @internal\n */\n _onMessage(_event: string, payload: any, _ref?: string) {\n return payload\n }\n\n /** @internal */\n _isMember(topic: string): boolean {\n return this.topic === topic\n }\n\n /** @internal */\n _joinRef(): string {\n return this.joinPush.ref\n }\n\n /** @internal */\n _trigger(type: string, payload?: any, ref?: string) {\n const typeLower = type.toLocaleLowerCase()\n const { close, error, leave, join } = CHANNEL_EVENTS\n const events: string[] = [close, error, leave, join]\n if (ref && events.indexOf(typeLower) >= 0 && ref !== this._joinRef()) {\n return\n }\n let handledPayload = this._onMessage(typeLower, payload, ref)\n if (payload && !handledPayload) {\n throw 'channel onMessage callbacks must return the payload, modified or unmodified'\n }\n\n if (['insert', 'update', 'delete'].includes(typeLower)) {\n this.bindings.postgres_changes\n ?.filter((bind) => {\n return (\n bind.filter?.event === '*' ||\n bind.filter?.event?.toLocaleLowerCase() === typeLower\n )\n })\n .map((bind) => bind.callback(handledPayload, ref))\n } else {\n this.bindings[typeLower]\n ?.filter((bind) => {\n if (\n ['broadcast', 'presence', 'postgres_changes'].includes(typeLower)\n ) {\n if ('id' in bind) {\n const bindId = bind.id\n const bindEvent = bind.filter?.event\n return (\n bindId &&\n payload.ids?.includes(bindId) &&\n (bindEvent === '*' ||\n bindEvent?.toLocaleLowerCase() ===\n payload.data?.type.toLocaleLowerCase())\n )\n } else {\n const bindEvent = bind?.filter?.event?.toLocaleLowerCase()\n return (\n bindEvent === '*' ||\n bindEvent === payload?.event?.toLocaleLowerCase()\n )\n }\n } else {\n return bind.type.toLocaleLowerCase() === typeLower\n }\n })\n .map((bind) => {\n if (typeof handledPayload === 'object' && 'ids' in handledPayload) {\n const postgresChanges = handledPayload.data\n const { schema, table, commit_timestamp, type, errors } =\n postgresChanges\n const enrichedPayload = {\n schema: schema,\n table: table,\n commit_timestamp: commit_timestamp,\n eventType: type,\n new: {},\n old: {},\n errors: errors,\n }\n handledPayload = {\n ...enrichedPayload,\n ...this._getPayloadRecords(postgresChanges),\n }\n }\n bind.callback(handledPayload, ref)\n })\n }\n }\n\n /** @internal */\n _isClosed(): boolean {\n return this.state === CHANNEL_STATES.closed\n }\n\n /** @internal */\n _isJoined(): boolean {\n return this.state === CHANNEL_STATES.joined\n }\n\n /** @internal */\n _isJoining(): boolean {\n return this.state === CHANNEL_STATES.joining\n }\n\n /** @internal */\n _isLeaving(): boolean {\n return this.state === CHANNEL_STATES.leaving\n }\n\n /** @internal */\n _replyEventName(ref: string): string {\n return `chan_reply_${ref}`\n }\n\n /** @internal */\n _on(type: string, filter: { [key: string]: any }, callback: Function) {\n const typeLower = type.toLocaleLowerCase()\n\n const binding = {\n type: typeLower,\n filter: filter,\n callback: callback,\n }\n\n if (this.bindings[typeLower]) {\n this.bindings[typeLower].push(binding)\n } else {\n this.bindings[typeLower] = [binding]\n }\n\n return this\n }\n\n /** @internal */\n _off(type: string, filter: { [key: string]: any }) {\n const typeLower = type.toLocaleLowerCase()\n\n this.bindings[typeLower] = this.bindings[typeLower].filter((bind) => {\n return !(\n bind.type?.toLocaleLowerCase() === typeLower &&\n RealtimeChannel.isEqual(bind.filter, filter)\n )\n })\n return this\n }\n\n /** @internal */\n private static isEqual(\n obj1: { [key: string]: string },\n obj2: { [key: string]: string }\n ) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n return false\n }\n\n for (const k in obj1) {\n if (obj1[k] !== obj2[k]) {\n return false\n }\n }\n\n return true\n }\n\n /** @internal */\n private _rejoinUntilConnected() {\n this.rejoinTimer.scheduleTimeout()\n if (this.socket.isConnected()) {\n this._rejoin()\n }\n }\n\n /**\n * Registers a callback that will be executed when the channel closes.\n *\n * @internal\n */\n private _onClose(callback: Function) {\n this._on(CHANNEL_EVENTS.close, {}, callback)\n }\n\n /**\n * Registers a callback that will be executed when the channel encounteres an error.\n *\n * @internal\n */\n private _onError(callback: Function) {\n this._on(CHANNEL_EVENTS.error, {}, (reason: string) => callback(reason))\n }\n\n /**\n * Returns `true` if the socket is connected and the channel has been joined.\n *\n * @internal\n */\n private _canPush(): boolean {\n return this.socket.isConnected() && this._isJoined()\n }\n\n /** @internal */\n private _rejoin(timeout = this.timeout): void {\n if (this._isLeaving()) {\n return\n }\n this.socket._leaveOpenTopic(this.topic)\n this.state = CHANNEL_STATES.joining\n this.joinPush.resend(timeout)\n }\n\n /** @internal */\n private _getPayloadRecords(payload: any) {\n const records = {\n new: {},\n old: {},\n }\n\n if (payload.type === 'INSERT' || payload.type === 'UPDATE') {\n records.new = Transformers.convertChangeData(\n payload.columns,\n payload.record\n )\n }\n\n if (payload.type === 'UPDATE' || payload.type === 'DELETE') {\n records.old = Transformers.convertChangeData(\n payload.columns,\n payload.old_record\n )\n }\n\n return records\n }\n}\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "import type { WebSocket as WSWebSocket } from 'ws'\n\nimport {\n CHANNEL_EVENTS,\n CONNECTION_STATE,\n DEFAULT_HEADERS,\n DEFAULT_TIMEOUT,\n SOCKET_STATES,\n TRANSPORTS,\n VSN,\n WS_CLOSE_NORMAL,\n} from './lib/constants'\nimport Serializer from './lib/serializer'\nimport Timer from './lib/timer'\n\nimport { httpEndpointURL } from './lib/transformers'\nimport RealtimeChannel from './RealtimeChannel'\nimport type { RealtimeChannelOptions } from './RealtimeChannel'\n\ntype Fetch = typeof fetch\n\nexport type Channel = {\n name: string\n inserted_at: string\n updated_at: string\n id: number\n}\n\nexport type RealtimeClientOptions = {\n transport?: WebSocketLikeConstructor\n timeout?: number\n heartbeatIntervalMs?: number\n logger?: Function\n encode?: Function\n decode?: Function\n reconnectAfterMs?: Function\n headers?: { [key: string]: string }\n params?: { [key: string]: any }\n log_level?: 'info' | 'debug' | 'warn' | 'error'\n fetch?: Fetch\n worker?: boolean\n workerUrl?: string\n accessToken?: () => Promise\n}\n\nexport type RealtimeMessage = {\n topic: string\n event: string\n payload: any\n ref: string\n join_ref?: string\n}\n\nexport type RealtimeRemoveChannelResponse = 'ok' | 'timed out' | 'error'\n\nconst noop = () => {}\n\nexport interface WebSocketLikeConstructor {\n new (\n address: string | URL,\n _ignored?: any,\n options?: { headers: Object | undefined }\n ): WebSocketLike\n}\n\nexport type WebSocketLike = WebSocket | WSWebSocket | WSWebSocketDummy\n\nexport interface WebSocketLikeError {\n error: any\n message: string\n type: string\n}\n\nconst NATIVE_WEBSOCKET_AVAILABLE = typeof WebSocket !== 'undefined'\nconst WORKER_SCRIPT = `\n addEventListener(\"message\", (e) => {\n if (e.data.event === \"start\") {\n setInterval(() => postMessage({ event: \"keepAlive\" }), e.data.interval);\n }\n });`\nexport default class RealtimeClient {\n accessTokenValue: string | null = null\n apiKey: string | null = null\n channels: RealtimeChannel[] = []\n endPoint: string = ''\n httpEndpoint: string = ''\n headers?: { [key: string]: string } = DEFAULT_HEADERS\n params?: { [key: string]: string } = {}\n timeout: number = DEFAULT_TIMEOUT\n transport: WebSocketLikeConstructor | null\n heartbeatIntervalMs: number = 30000\n heartbeatTimer: ReturnType | undefined = undefined\n pendingHeartbeatRef: string | null = null\n ref: number = 0\n reconnectTimer: Timer\n logger: Function = noop\n encode: Function\n decode: Function\n reconnectAfterMs: Function\n conn: WebSocketLike | null = null\n sendBuffer: Function[] = []\n serializer: Serializer = new Serializer()\n stateChangeCallbacks: {\n open: Function[]\n close: Function[]\n error: Function[]\n message: Function[]\n } = {\n open: [],\n close: [],\n error: [],\n message: [],\n }\n fetch: Fetch\n accessToken: (() => Promise) | null = null\n worker?: boolean\n workerUrl?: string\n workerRef?: Worker\n\n /**\n * Initializes the Socket.\n *\n * @param endPoint The string WebSocket endpoint, ie, \"ws://example.com/socket\", \"wss://example.com\", \"/socket\" (inherited host & protocol)\n * @param httpEndpoint The string HTTP endpoint, ie, \"https://example.com\", \"/\" (inherited host & protocol)\n * @param options.transport The Websocket Transport, for example WebSocket.\n * @param options.timeout The default timeout in milliseconds to trigger push timeouts.\n * @param options.params The optional params to pass when connecting.\n * @param options.headers The optional headers to pass when connecting.\n * @param options.heartbeatIntervalMs The millisec interval to send a heartbeat message.\n * @param options.logger The optional function for specialized logging, ie: logger: (kind, msg, data) => { console.log(`${kind}: ${msg}`, data) }\n * @param options.encode The function to encode outgoing messages. Defaults to JSON: (payload, callback) => callback(JSON.stringify(payload))\n * @param options.decode The function to decode incoming messages. Defaults to Serializer's decode.\n * @param options.reconnectAfterMs he optional function that returns the millsec reconnect interval. Defaults to stepped backoff off.\n * @param options.worker Use Web Worker to set a side flow. Defaults to false.\n * @param options.workerUrl The URL of the worker script. Defaults to https://realtime.supabase.com/worker.js that includes a heartbeat event call to keep the connection alive.\n */\n constructor(endPoint: string, options?: RealtimeClientOptions) {\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`\n this.httpEndpoint = httpEndpointURL(endPoint)\n if (options?.transport) {\n this.transport = options.transport\n } else {\n this.transport = null\n }\n if (options?.params) this.params = options.params\n if (options?.headers) this.headers = { ...this.headers, ...options.headers }\n if (options?.timeout) this.timeout = options.timeout\n if (options?.logger) this.logger = options.logger\n if (options?.heartbeatIntervalMs)\n this.heartbeatIntervalMs = options.heartbeatIntervalMs\n\n const accessTokenValue = options?.params?.apikey\n if (accessTokenValue) {\n this.accessTokenValue = accessTokenValue\n this.apiKey = accessTokenValue\n }\n\n this.reconnectAfterMs = options?.reconnectAfterMs\n ? options.reconnectAfterMs\n : (tries: number) => {\n return [1000, 2000, 5000, 10000][tries - 1] || 10000\n }\n this.encode = options?.encode\n ? options.encode\n : (payload: JSON, callback: Function) => {\n return callback(JSON.stringify(payload))\n }\n this.decode = options?.decode\n ? options.decode\n : this.serializer.decode.bind(this.serializer)\n this.reconnectTimer = new Timer(async () => {\n this.disconnect()\n this.connect()\n }, this.reconnectAfterMs)\n\n this.fetch = this._resolveFetch(options?.fetch)\n if (options?.worker) {\n if (typeof window !== 'undefined' && !window.Worker) {\n throw new Error('Web Worker is not supported')\n }\n this.worker = options?.worker || false\n this.workerUrl = options?.workerUrl\n }\n this.accessToken = options?.accessToken || null\n }\n\n /**\n * Connects the socket, unless already connected.\n */\n connect(): void {\n if (this.conn) {\n return\n }\n\n if (this.transport) {\n this.conn = new this.transport(this.endpointURL(), undefined, {\n headers: this.headers,\n })\n return\n }\n\n if (NATIVE_WEBSOCKET_AVAILABLE) {\n this.conn = new WebSocket(this.endpointURL())\n this.setupConnection()\n return\n }\n\n this.conn = new WSWebSocketDummy(this.endpointURL(), undefined, {\n close: () => {\n this.conn = null\n },\n })\n\n import('ws').then(({ default: WS }) => {\n this.conn = new WS(this.endpointURL(), undefined, {\n headers: this.headers,\n })\n this.setupConnection()\n })\n }\n\n /**\n * Returns the URL of the websocket.\n * @returns string The URL of the websocket.\n */\n endpointURL(): string {\n return this._appendParams(\n this.endPoint,\n Object.assign({}, this.params, { vsn: VSN })\n )\n }\n\n /**\n * Disconnects the socket.\n *\n * @param code A numeric status code to send on disconnect.\n * @param reason A custom reason for the disconnect.\n */\n disconnect(code?: number, reason?: string): void {\n if (this.conn) {\n this.conn.onclose = function () {} // noop\n if (code) {\n this.conn.close(code, reason ?? '')\n } else {\n this.conn.close()\n }\n this.conn = null\n // remove open handles\n this.heartbeatTimer && clearInterval(this.heartbeatTimer)\n this.reconnectTimer.reset()\n }\n }\n\n /**\n * Returns all created channels\n */\n getChannels(): RealtimeChannel[] {\n return this.channels\n }\n\n /**\n * Unsubscribes and removes a single channel\n * @param channel A RealtimeChannel instance\n */\n async removeChannel(\n channel: RealtimeChannel\n ): Promise {\n const status = await channel.unsubscribe()\n if (this.channels.length === 0) {\n this.disconnect()\n }\n return status\n }\n\n /**\n * Unsubscribes and removes all channels\n */\n async removeAllChannels(): Promise {\n const values_1 = await Promise.all(\n this.channels.map((channel) => channel.unsubscribe())\n )\n this.disconnect()\n return values_1\n }\n\n /**\n * Logs the message.\n *\n * For customized logging, `this.logger` can be overridden.\n */\n log(kind: string, msg: string, data?: any) {\n this.logger(kind, msg, data)\n }\n\n /**\n * Returns the current state of the socket.\n */\n connectionState(): CONNECTION_STATE {\n switch (this.conn && this.conn.readyState) {\n case SOCKET_STATES.connecting:\n return CONNECTION_STATE.Connecting\n case SOCKET_STATES.open:\n return CONNECTION_STATE.Open\n case SOCKET_STATES.closing:\n return CONNECTION_STATE.Closing\n default:\n return CONNECTION_STATE.Closed\n }\n }\n\n /**\n * Returns `true` is the connection is open.\n */\n isConnected(): boolean {\n return this.connectionState() === CONNECTION_STATE.Open\n }\n\n channel(\n topic: string,\n params: RealtimeChannelOptions = { config: {} }\n ): RealtimeChannel {\n const chan = new RealtimeChannel(`realtime:${topic}`, params, this)\n this.channels.push(chan)\n return chan\n }\n\n /**\n * Push out a message if the socket is connected.\n *\n * If the socket is not connected, the message gets enqueued within a local buffer, and sent out when a connection is next established.\n */\n push(data: RealtimeMessage): void {\n const { topic, event, payload, ref } = data\n const callback = () => {\n this.encode(data, (result: any) => {\n this.conn?.send(result)\n })\n }\n this.log('push', `${topic} ${event} (${ref})`, payload)\n if (this.isConnected()) {\n callback()\n } else {\n this.sendBuffer.push(callback)\n }\n }\n\n /**\n * Sets the JWT access token used for channel subscription authorization and Realtime RLS.\n *\n * If param is null it will use the `accessToken` callback function or the token set on the client.\n *\n * On callback used, it will set the value of the token internal to the client.\n *\n * @param token A JWT string to override the token set on the client.\n */\n async setAuth(token: string | null = null): Promise {\n let tokenToSend =\n token ||\n (this.accessToken && (await this.accessToken())) ||\n this.accessTokenValue\n\n if (tokenToSend) {\n let parsed = null\n try {\n parsed = JSON.parse(atob(tokenToSend.split('.')[1]))\n } catch (_error) {}\n if (parsed && parsed.exp) {\n let now = Math.floor(Date.now() / 1000)\n let valid = now - parsed.exp < 0\n if (!valid) {\n this.log(\n 'auth',\n `InvalidJWTToken: Invalid value for JWT claim \"exp\" with value ${parsed.exp}`\n )\n return Promise.reject(\n `InvalidJWTToken: Invalid value for JWT claim \"exp\" with value ${parsed.exp}`\n )\n }\n }\n\n this.accessTokenValue = tokenToSend\n this.channels.forEach((channel) => {\n tokenToSend && channel.updateJoinPayload({ access_token: tokenToSend })\n\n if (channel.joinedOnce && channel._isJoined()) {\n channel._push(CHANNEL_EVENTS.access_token, {\n access_token: tokenToSend,\n })\n }\n })\n }\n }\n /**\n * Sends a heartbeat message if the socket is connected.\n */\n async sendHeartbeat() {\n if (!this.isConnected()) {\n return\n }\n if (this.pendingHeartbeatRef) {\n this.pendingHeartbeatRef = null\n this.log(\n 'transport',\n 'heartbeat timeout. Attempting to re-establish connection'\n )\n this.conn?.close(WS_CLOSE_NORMAL, 'hearbeat timeout')\n return\n }\n this.pendingHeartbeatRef = this._makeRef()\n this.push({\n topic: 'phoenix',\n event: 'heartbeat',\n payload: {},\n ref: this.pendingHeartbeatRef,\n })\n this.setAuth()\n }\n\n /**\n * Flushes send buffer\n */\n flushSendBuffer() {\n if (this.isConnected() && this.sendBuffer.length > 0) {\n this.sendBuffer.forEach((callback) => callback())\n this.sendBuffer = []\n }\n }\n\n /**\n * Use either custom fetch, if provided, or default fetch to make HTTP requests\n *\n * @internal\n */\n _resolveFetch = (customFetch?: Fetch): Fetch => {\n let _fetch: Fetch\n if (customFetch) {\n _fetch = customFetch\n } else if (typeof fetch === 'undefined') {\n _fetch = (...args) =>\n import('@supabase/node-fetch' as any).then(({ default: fetch }) =>\n fetch(...args)\n )\n } else {\n _fetch = fetch\n }\n return (...args) => _fetch(...args)\n }\n\n /**\n * Return the next message ref, accounting for overflows\n *\n * @internal\n */\n _makeRef(): string {\n let newRef = this.ref + 1\n if (newRef === this.ref) {\n this.ref = 0\n } else {\n this.ref = newRef\n }\n\n return this.ref.toString()\n }\n\n /**\n * Unsubscribe from channels with the specified topic.\n *\n * @internal\n */\n _leaveOpenTopic(topic: string): void {\n let dupChannel = this.channels.find(\n (c) => c.topic === topic && (c._isJoined() || c._isJoining())\n )\n if (dupChannel) {\n this.log('transport', `leaving duplicate topic \"${topic}\"`)\n dupChannel.unsubscribe()\n }\n }\n\n /**\n * Removes a subscription from the socket.\n *\n * @param channel An open subscription.\n *\n * @internal\n */\n _remove(channel: RealtimeChannel) {\n this.channels = this.channels.filter(\n (c: RealtimeChannel) => c._joinRef() !== channel._joinRef()\n )\n }\n\n /**\n * Sets up connection handlers.\n *\n * @internal\n */\n private setupConnection(): void {\n if (this.conn) {\n this.conn.binaryType = 'arraybuffer'\n this.conn.onopen = () => this._onConnOpen()\n this.conn.onerror = (error: WebSocketLikeError) =>\n this._onConnError(error as WebSocketLikeError)\n this.conn.onmessage = (event: any) => this._onConnMessage(event)\n this.conn.onclose = (event: any) => this._onConnClose(event)\n }\n }\n\n /** @internal */\n private _onConnMessage(rawMessage: { data: any }) {\n this.decode(rawMessage.data, (msg: RealtimeMessage) => {\n let { topic, event, payload, ref } = msg\n\n if (ref && ref === this.pendingHeartbeatRef) {\n this.pendingHeartbeatRef = null\n }\n\n this.log(\n 'receive',\n `${payload.status || ''} ${topic} ${event} ${\n (ref && '(' + ref + ')') || ''\n }`,\n payload\n )\n this.channels\n .filter((channel: RealtimeChannel) => channel._isMember(topic))\n .forEach((channel: RealtimeChannel) =>\n channel._trigger(event, payload, ref)\n )\n this.stateChangeCallbacks.message.forEach((callback) => callback(msg))\n })\n }\n\n /** @internal */\n private async _onConnOpen() {\n this.log('transport', `connected to ${this.endpointURL()}`)\n this.flushSendBuffer()\n this.reconnectTimer.reset()\n if (!this.worker) {\n this.heartbeatTimer && clearInterval(this.heartbeatTimer)\n this.heartbeatTimer = setInterval(\n () => this.sendHeartbeat(),\n this.heartbeatIntervalMs\n )\n } else {\n if (this.workerUrl) {\n this.log('worker', `starting worker for from ${this.workerUrl}`)\n } else {\n this.log('worker', `starting default worker`)\n }\n\n const objectUrl = this._workerObjectUrl(this.workerUrl!)\n this.workerRef = new Worker(objectUrl)\n this.workerRef.onerror = (error) => {\n this.log('worker', 'worker error', error.message)\n this.workerRef!.terminate()\n }\n this.workerRef.onmessage = (event) => {\n if (event.data.event === 'keepAlive') {\n this.sendHeartbeat()\n }\n }\n this.workerRef.postMessage({\n event: 'start',\n interval: this.heartbeatIntervalMs,\n })\n }\n\n this.stateChangeCallbacks.open.forEach((callback) => callback())!\n }\n\n /** @internal */\n\n private _onConnClose(event: any) {\n this.log('transport', 'close', event)\n this._triggerChanError()\n this.heartbeatTimer && clearInterval(this.heartbeatTimer)\n this.reconnectTimer.scheduleTimeout()\n this.stateChangeCallbacks.close.forEach((callback) => callback(event))\n }\n\n /** @internal */\n private _onConnError(error: WebSocketLikeError) {\n this.log('transport', error.message)\n this._triggerChanError()\n this.stateChangeCallbacks.error.forEach((callback) => callback(error))\n }\n\n /** @internal */\n private _triggerChanError() {\n this.channels.forEach((channel: RealtimeChannel) =>\n channel._trigger(CHANNEL_EVENTS.error)\n )\n }\n\n /** @internal */\n private _appendParams(\n url: string,\n params: { [key: string]: string }\n ): string {\n if (Object.keys(params).length === 0) {\n return url\n }\n const prefix = url.match(/\\?/) ? '&' : '?'\n const query = new URLSearchParams(params)\n\n return `${url}${prefix}${query}`\n }\n\n private _workerObjectUrl(url: string | undefined): string {\n let result_url: string\n if (url) {\n result_url = url\n } else {\n const blob = new Blob([WORKER_SCRIPT], { type: 'application/javascript' })\n result_url = URL.createObjectURL(blob)\n }\n return result_url\n }\n}\n\nclass WSWebSocketDummy {\n binaryType: string = 'arraybuffer'\n close: Function\n onclose: Function = () => {}\n onerror: Function = () => {}\n onmessage: Function = () => {}\n onopen: Function = () => {}\n readyState: number = SOCKET_STATES.connecting\n send: Function = () => {}\n url: string | URL | null = null\n\n constructor(\n address: string,\n _protocols: undefined,\n options: { close: Function }\n ) {\n this.url = address\n this.close = options.close\n }\n}\n", "import RealtimeClient, {\n RealtimeClientOptions,\n RealtimeMessage,\n RealtimeRemoveChannelResponse,\n} from './RealtimeClient'\nimport RealtimeChannel, {\n RealtimeChannelOptions,\n RealtimeChannelSendResponse,\n RealtimePostgresChangesFilter,\n RealtimePostgresChangesPayload,\n RealtimePostgresInsertPayload,\n RealtimePostgresUpdatePayload,\n RealtimePostgresDeletePayload,\n REALTIME_LISTEN_TYPES,\n REALTIME_POSTGRES_CHANGES_LISTEN_EVENT,\n REALTIME_SUBSCRIBE_STATES,\n REALTIME_CHANNEL_STATES,\n} from './RealtimeChannel'\nimport RealtimePresence, {\n RealtimePresenceState,\n RealtimePresenceJoinPayload,\n RealtimePresenceLeavePayload,\n REALTIME_PRESENCE_LISTEN_EVENTS,\n} from './RealtimePresence'\n\nexport {\n RealtimePresence,\n RealtimeChannel,\n RealtimeChannelOptions,\n RealtimeChannelSendResponse,\n RealtimeClient,\n RealtimeClientOptions,\n RealtimeMessage,\n RealtimePostgresChangesFilter,\n RealtimePostgresChangesPayload,\n RealtimePostgresInsertPayload,\n RealtimePostgresUpdatePayload,\n RealtimePostgresDeletePayload,\n RealtimePresenceJoinPayload,\n RealtimePresenceLeavePayload,\n RealtimePresenceState,\n RealtimeRemoveChannelResponse,\n REALTIME_LISTEN_TYPES,\n REALTIME_POSTGRES_CHANGES_LISTEN_EVENT,\n REALTIME_PRESENCE_LISTEN_EVENTS,\n REALTIME_SUBSCRIBE_STATES,\n REALTIME_CHANNEL_STATES,\n}\n", "export class StorageError extends Error {\n protected __isStorageError = true\n\n constructor(message: string) {\n super(message)\n this.name = 'StorageError'\n }\n}\n\nexport function isStorageError(error: unknown): error is StorageError {\n return typeof error === 'object' && error !== null && '__isStorageError' in error\n}\n\nexport class StorageApiError extends StorageError {\n status: number\n\n constructor(message: string, status: number) {\n super(message)\n this.name = 'StorageApiError'\n this.status = status\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n status: this.status,\n }\n }\n}\n\nexport class StorageUnknownError extends StorageError {\n originalError: unknown\n\n constructor(message: string, originalError: unknown) {\n super(message)\n this.name = 'StorageUnknownError'\n this.originalError = originalError\n }\n}\n", "type Fetch = typeof fetch\n\nexport const resolveFetch = (customFetch?: Fetch): Fetch => {\n let _fetch: Fetch\n if (customFetch) {\n _fetch = customFetch\n } else if (typeof fetch === 'undefined') {\n _fetch = (...args) =>\n import('@supabase/node-fetch' as any).then(({ default: fetch }) => fetch(...args))\n } else {\n _fetch = fetch\n }\n return (...args) => _fetch(...args)\n}\n\nexport const resolveResponse = async (): Promise => {\n if (typeof Response === 'undefined') {\n // @ts-ignore\n return (await import('@supabase/node-fetch' as any)).Response\n }\n\n return Response\n}\n\nexport const recursiveToCamel = (item: Record): unknown => {\n if (Array.isArray(item)) {\n return item.map((el) => recursiveToCamel(el))\n } else if (typeof item === 'function' || item !== Object(item)) {\n return item\n }\n\n const result: Record = {}\n Object.entries(item).forEach(([key, value]) => {\n const newKey = key.replace(/([-_][a-z])/gi, (c) => c.toUpperCase().replace(/[-_]/g, ''))\n result[newKey] = recursiveToCamel(value)\n })\n\n return result\n}\n", "import { StorageApiError, StorageUnknownError } from './errors'\nimport { resolveResponse } from './helpers'\nimport { FetchParameters } from './types'\n\nexport type Fetch = typeof fetch\n\nexport interface FetchOptions {\n headers?: {\n [key: string]: string\n }\n noResolveJson?: boolean\n}\n\nexport type RequestMethodType = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD'\n\nconst _getErrorMessage = (err: any): string =>\n err.msg || err.message || err.error_description || err.error || JSON.stringify(err)\n\nconst handleError = async (\n error: unknown,\n reject: (reason?: any) => void,\n options?: FetchOptions\n) => {\n const Res = await resolveResponse()\n\n if (error instanceof Res && !options?.noResolveJson) {\n error\n .json()\n .then((err) => {\n reject(new StorageApiError(_getErrorMessage(err), error.status || 500))\n })\n .catch((err) => {\n reject(new StorageUnknownError(_getErrorMessage(err), err))\n })\n } else {\n reject(new StorageUnknownError(_getErrorMessage(error), error))\n }\n}\n\nconst _getRequestParams = (\n method: RequestMethodType,\n options?: FetchOptions,\n parameters?: FetchParameters,\n body?: object\n) => {\n const params: { [k: string]: any } = { method, headers: options?.headers || {} }\n\n if (method === 'GET') {\n return params\n }\n\n params.headers = { 'Content-Type': 'application/json', ...options?.headers }\n\n if (body) {\n params.body = JSON.stringify(body)\n }\n return { ...params, ...parameters }\n}\n\nasync function _handleRequest(\n fetcher: Fetch,\n method: RequestMethodType,\n url: string,\n options?: FetchOptions,\n parameters?: FetchParameters,\n body?: object\n): Promise {\n return new Promise((resolve, reject) => {\n fetcher(url, _getRequestParams(method, options, parameters, body))\n .then((result) => {\n if (!result.ok) throw result\n if (options?.noResolveJson) return result\n return result.json()\n })\n .then((data) => resolve(data))\n .catch((error) => handleError(error, reject, options))\n })\n}\n\nexport async function get(\n fetcher: Fetch,\n url: string,\n options?: FetchOptions,\n parameters?: FetchParameters\n): Promise {\n return _handleRequest(fetcher, 'GET', url, options, parameters)\n}\n\nexport async function post(\n fetcher: Fetch,\n url: string,\n body: object,\n options?: FetchOptions,\n parameters?: FetchParameters\n): Promise {\n return _handleRequest(fetcher, 'POST', url, options, parameters, body)\n}\n\nexport async function put(\n fetcher: Fetch,\n url: string,\n body: object,\n options?: FetchOptions,\n parameters?: FetchParameters\n): Promise {\n return _handleRequest(fetcher, 'PUT', url, options, parameters, body)\n}\n\nexport async function head(\n fetcher: Fetch,\n url: string,\n options?: FetchOptions,\n parameters?: FetchParameters\n): Promise {\n return _handleRequest(\n fetcher,\n 'HEAD',\n url,\n {\n ...options,\n noResolveJson: true,\n },\n parameters\n )\n}\n\nexport async function remove(\n fetcher: Fetch,\n url: string,\n body: object,\n options?: FetchOptions,\n parameters?: FetchParameters\n): Promise {\n return _handleRequest(fetcher, 'DELETE', url, options, parameters, body)\n}\n", "import { isStorageError, StorageError, StorageUnknownError } from '../lib/errors'\nimport { Fetch, get, head, post, remove } from '../lib/fetch'\nimport { recursiveToCamel, resolveFetch } from '../lib/helpers'\nimport {\n FileObject,\n FileOptions,\n SearchOptions,\n FetchParameters,\n TransformOptions,\n DestinationOptions,\n FileObjectV2,\n Camelize,\n} from '../lib/types'\n\nconst DEFAULT_SEARCH_OPTIONS = {\n limit: 100,\n offset: 0,\n sortBy: {\n column: 'name',\n order: 'asc',\n },\n}\n\nconst DEFAULT_FILE_OPTIONS: FileOptions = {\n cacheControl: '3600',\n contentType: 'text/plain;charset=UTF-8',\n upsert: false,\n}\n\ntype FileBody =\n | ArrayBuffer\n | ArrayBufferView\n | Blob\n | Buffer\n | File\n | FormData\n | NodeJS.ReadableStream\n | ReadableStream\n | URLSearchParams\n | string\n\nexport default class StorageFileApi {\n protected url: string\n protected headers: { [key: string]: string }\n protected bucketId?: string\n protected fetch: Fetch\n\n constructor(\n url: string,\n headers: { [key: string]: string } = {},\n bucketId?: string,\n fetch?: Fetch\n ) {\n this.url = url\n this.headers = headers\n this.bucketId = bucketId\n this.fetch = resolveFetch(fetch)\n }\n\n /**\n * Uploads a file to an existing bucket or replaces an existing file at the specified path with a new one.\n *\n * @param method HTTP method.\n * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n * @param fileBody The body of the file to be stored in the bucket.\n */\n private async uploadOrUpdate(\n method: 'POST' | 'PUT',\n path: string,\n fileBody: FileBody,\n fileOptions?: FileOptions\n ): Promise<\n | {\n data: { id: string; path: string; fullPath: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n let body\n const options = { ...DEFAULT_FILE_OPTIONS, ...fileOptions }\n let headers: Record = {\n ...this.headers,\n ...(method === 'POST' && { 'x-upsert': String(options.upsert as boolean) }),\n }\n\n const metadata = options.metadata\n\n if (typeof Blob !== 'undefined' && fileBody instanceof Blob) {\n body = new FormData()\n body.append('cacheControl', options.cacheControl as string)\n if (metadata) {\n body.append('metadata', this.encodeMetadata(metadata))\n }\n body.append('', fileBody)\n } else if (typeof FormData !== 'undefined' && fileBody instanceof FormData) {\n body = fileBody\n body.append('cacheControl', options.cacheControl as string)\n if (metadata) {\n body.append('metadata', this.encodeMetadata(metadata))\n }\n } else {\n body = fileBody\n headers['cache-control'] = `max-age=${options.cacheControl}`\n headers['content-type'] = options.contentType as string\n\n if (metadata) {\n headers['x-metadata'] = this.toBase64(this.encodeMetadata(metadata))\n }\n }\n\n if (fileOptions?.headers) {\n headers = { ...headers, ...fileOptions.headers }\n }\n\n const cleanPath = this._removeEmptyFolders(path)\n const _path = this._getFinalPath(cleanPath)\n const res = await this.fetch(`${this.url}/object/${_path}`, {\n method,\n body: body as BodyInit,\n headers,\n ...(options?.duplex ? { duplex: options.duplex } : {}),\n })\n\n const data = await res.json()\n\n if (res.ok) {\n return {\n data: { path: cleanPath, id: data.Id, fullPath: data.Key },\n error: null,\n }\n } else {\n const error = data\n return { data: null, error }\n }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Uploads a file to an existing bucket.\n *\n * @param path The file path, including the file name. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n * @param fileBody The body of the file to be stored in the bucket.\n */\n async upload(\n path: string,\n fileBody: FileBody,\n fileOptions?: FileOptions\n ): Promise<\n | {\n data: { id: string; path: string; fullPath: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n return this.uploadOrUpdate('POST', path, fileBody, fileOptions)\n }\n\n /**\n * Upload a file with a token generated from `createSignedUploadUrl`.\n * @param path The file path, including the file name. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n * @param token The token generated from `createSignedUploadUrl`\n * @param fileBody The body of the file to be stored in the bucket.\n */\n async uploadToSignedUrl(\n path: string,\n token: string,\n fileBody: FileBody,\n fileOptions?: FileOptions\n ) {\n const cleanPath = this._removeEmptyFolders(path)\n const _path = this._getFinalPath(cleanPath)\n\n const url = new URL(this.url + `/object/upload/sign/${_path}`)\n url.searchParams.set('token', token)\n\n try {\n let body\n const options = { upsert: DEFAULT_FILE_OPTIONS.upsert, ...fileOptions }\n const headers: Record = {\n ...this.headers,\n ...{ 'x-upsert': String(options.upsert as boolean) },\n }\n\n if (typeof Blob !== 'undefined' && fileBody instanceof Blob) {\n body = new FormData()\n body.append('cacheControl', options.cacheControl as string)\n body.append('', fileBody)\n } else if (typeof FormData !== 'undefined' && fileBody instanceof FormData) {\n body = fileBody\n body.append('cacheControl', options.cacheControl as string)\n } else {\n body = fileBody\n headers['cache-control'] = `max-age=${options.cacheControl}`\n headers['content-type'] = options.contentType as string\n }\n\n const res = await this.fetch(url.toString(), {\n method: 'PUT',\n body: body as BodyInit,\n headers,\n })\n\n const data = await res.json()\n\n if (res.ok) {\n return {\n data: { path: cleanPath, fullPath: data.Key },\n error: null,\n }\n } else {\n const error = data\n return { data: null, error }\n }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Creates a signed upload URL.\n * Signed upload URLs can be used to upload files to the bucket without further authentication.\n * They are valid for 2 hours.\n * @param path The file path, including the current file name. For example `folder/image.png`.\n * @param options.upsert If set to true, allows the file to be overwritten if it already exists.\n */\n async createSignedUploadUrl(\n path: string,\n options?: { upsert: boolean }\n ): Promise<\n | {\n data: { signedUrl: string; token: string; path: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n let _path = this._getFinalPath(path)\n\n const headers = { ...this.headers }\n\n if (options?.upsert) {\n headers['x-upsert'] = 'true'\n }\n\n const data = await post(\n this.fetch,\n `${this.url}/object/upload/sign/${_path}`,\n {},\n { headers }\n )\n\n const url = new URL(this.url + data.url)\n\n const token = url.searchParams.get('token')\n\n if (!token) {\n throw new StorageError('No token returned by API')\n }\n\n return { data: { signedUrl: url.toString(), path, token }, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Replaces an existing file at the specified path with a new one.\n *\n * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to update.\n * @param fileBody The body of the file to be stored in the bucket.\n */\n async update(\n path: string,\n fileBody:\n | ArrayBuffer\n | ArrayBufferView\n | Blob\n | Buffer\n | File\n | FormData\n | NodeJS.ReadableStream\n | ReadableStream\n | URLSearchParams\n | string,\n fileOptions?: FileOptions\n ): Promise<\n | {\n data: { id: string; path: string; fullPath: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n return this.uploadOrUpdate('PUT', path, fileBody, fileOptions)\n }\n\n /**\n * Moves an existing file to a new path in the same bucket.\n *\n * @param fromPath The original file path, including the current file name. For example `folder/image.png`.\n * @param toPath The new file path, including the new file name. For example `folder/image-new.png`.\n * @param options The destination options.\n */\n async move(\n fromPath: string,\n toPath: string,\n options?: DestinationOptions\n ): Promise<\n | {\n data: { message: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await post(\n this.fetch,\n `${this.url}/object/move`,\n {\n bucketId: this.bucketId,\n sourceKey: fromPath,\n destinationKey: toPath,\n destinationBucket: options?.destinationBucket,\n },\n { headers: this.headers }\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Copies an existing file to a new path in the same bucket.\n *\n * @param fromPath The original file path, including the current file name. For example `folder/image.png`.\n * @param toPath The new file path, including the new file name. For example `folder/image-copy.png`.\n * @param options The destination options.\n */\n async copy(\n fromPath: string,\n toPath: string,\n options?: DestinationOptions\n ): Promise<\n | {\n data: { path: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await post(\n this.fetch,\n `${this.url}/object/copy`,\n {\n bucketId: this.bucketId,\n sourceKey: fromPath,\n destinationKey: toPath,\n destinationBucket: options?.destinationBucket,\n },\n { headers: this.headers }\n )\n return { data: { path: data.Key }, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Creates a signed URL. Use a signed URL to share a file for a fixed amount of time.\n *\n * @param path The file path, including the current file name. For example `folder/image.png`.\n * @param expiresIn The number of seconds until the signed URL expires. For example, `60` for a URL which is valid for one minute.\n * @param options.download triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n * @param options.transform Transform the asset before serving it to the client.\n */\n async createSignedUrl(\n path: string,\n expiresIn: number,\n options?: { download?: string | boolean; transform?: TransformOptions }\n ): Promise<\n | {\n data: { signedUrl: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n let _path = this._getFinalPath(path)\n\n let data = await post(\n this.fetch,\n `${this.url}/object/sign/${_path}`,\n { expiresIn, ...(options?.transform ? { transform: options.transform } : {}) },\n { headers: this.headers }\n )\n const downloadQueryParam = options?.download\n ? `&download=${options.download === true ? '' : options.download}`\n : ''\n const signedUrl = encodeURI(`${this.url}${data.signedURL}${downloadQueryParam}`)\n data = { signedUrl }\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Creates multiple signed URLs. Use a signed URL to share a file for a fixed amount of time.\n *\n * @param paths The file paths to be downloaded, including the current file names. For example `['folder/image.png', 'folder2/image2.png']`.\n * @param expiresIn The number of seconds until the signed URLs expire. For example, `60` for URLs which are valid for one minute.\n * @param options.download triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n */\n async createSignedUrls(\n paths: string[],\n expiresIn: number,\n options?: { download: string | boolean }\n ): Promise<\n | {\n data: { error: string | null; path: string | null; signedUrl: string }[]\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await post(\n this.fetch,\n `${this.url}/object/sign/${this.bucketId}`,\n { expiresIn, paths },\n { headers: this.headers }\n )\n\n const downloadQueryParam = options?.download\n ? `&download=${options.download === true ? '' : options.download}`\n : ''\n return {\n data: data.map((datum: { signedURL: string }) => ({\n ...datum,\n signedUrl: datum.signedURL\n ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`)\n : null,\n })),\n error: null,\n }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Downloads a file from a private bucket. For public buckets, make a request to the URL returned from `getPublicUrl` instead.\n *\n * @param path The full path and file name of the file to be downloaded. For example `folder/image.png`.\n * @param options.transform Transform the asset before serving it to the client.\n */\n async download(\n path: string,\n options?: { transform?: TransformOptions }\n ): Promise<\n | {\n data: Blob\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n const wantsTransformation = typeof options?.transform !== 'undefined'\n const renderPath = wantsTransformation ? 'render/image/authenticated' : 'object'\n const transformationQuery = this.transformOptsToQueryString(options?.transform || {})\n const queryString = transformationQuery ? `?${transformationQuery}` : ''\n\n try {\n const _path = this._getFinalPath(path)\n const res = await get(this.fetch, `${this.url}/${renderPath}/${_path}${queryString}`, {\n headers: this.headers,\n noResolveJson: true,\n })\n const data = await res.blob()\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Retrieves the details of an existing file.\n * @param path\n */\n async info(\n path: string\n ): Promise<\n | {\n data: Camelize\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n const _path = this._getFinalPath(path)\n\n try {\n const data = await get(this.fetch, `${this.url}/object/info/${_path}`, {\n headers: this.headers,\n })\n\n return { data: recursiveToCamel(data) as Camelize, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Checks the existence of a file.\n * @param path\n */\n async exists(\n path: string\n ): Promise<\n | {\n data: boolean\n error: null\n }\n | {\n data: boolean\n error: StorageError\n }\n > {\n const _path = this._getFinalPath(path)\n\n try {\n await head(this.fetch, `${this.url}/object/${_path}`, {\n headers: this.headers,\n })\n\n return { data: true, error: null }\n } catch (error) {\n if (isStorageError(error) && error instanceof StorageUnknownError) {\n const originalError = (error.originalError as unknown) as { status: number }\n\n if ([400, 404].includes(originalError?.status)) {\n return { data: false, error }\n }\n }\n\n throw error\n }\n }\n\n /**\n * A simple convenience function to get the URL for an asset in a public bucket. If you do not want to use this function, you can construct the public URL by concatenating the bucket URL with the path to the asset.\n * This function does not verify if the bucket is public. If a public URL is created for a bucket which is not public, you will not be able to download the asset.\n *\n * @param path The path and name of the file to generate the public URL for. For example `folder/image.png`.\n * @param options.download Triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n * @param options.transform Transform the asset before serving it to the client.\n */\n getPublicUrl(\n path: string,\n options?: { download?: string | boolean; transform?: TransformOptions }\n ): { data: { publicUrl: string } } {\n const _path = this._getFinalPath(path)\n const _queryString = []\n\n const downloadQueryParam = options?.download\n ? `download=${options.download === true ? '' : options.download}`\n : ''\n\n if (downloadQueryParam !== '') {\n _queryString.push(downloadQueryParam)\n }\n\n const wantsTransformation = typeof options?.transform !== 'undefined'\n const renderPath = wantsTransformation ? 'render/image' : 'object'\n const transformationQuery = this.transformOptsToQueryString(options?.transform || {})\n\n if (transformationQuery !== '') {\n _queryString.push(transformationQuery)\n }\n\n let queryString = _queryString.join('&')\n if (queryString !== '') {\n queryString = `?${queryString}`\n }\n\n return {\n data: { publicUrl: encodeURI(`${this.url}/${renderPath}/public/${_path}${queryString}`) },\n }\n }\n\n /**\n * Deletes files within the same bucket\n *\n * @param paths An array of files to delete, including the path and file name. For example [`'folder/image.png'`].\n */\n async remove(\n paths: string[]\n ): Promise<\n | {\n data: FileObject[]\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await remove(\n this.fetch,\n `${this.url}/object/${this.bucketId}`,\n { prefixes: paths },\n { headers: this.headers }\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Get file metadata\n * @param id the file id to retrieve metadata\n */\n // async getMetadata(\n // id: string\n // ): Promise<\n // | {\n // data: Metadata\n // error: null\n // }\n // | {\n // data: null\n // error: StorageError\n // }\n // > {\n // try {\n // const data = await get(this.fetch, `${this.url}/metadata/${id}`, { headers: this.headers })\n // return { data, error: null }\n // } catch (error) {\n // if (isStorageError(error)) {\n // return { data: null, error }\n // }\n\n // throw error\n // }\n // }\n\n /**\n * Update file metadata\n * @param id the file id to update metadata\n * @param meta the new file metadata\n */\n // async updateMetadata(\n // id: string,\n // meta: Metadata\n // ): Promise<\n // | {\n // data: Metadata\n // error: null\n // }\n // | {\n // data: null\n // error: StorageError\n // }\n // > {\n // try {\n // const data = await post(\n // this.fetch,\n // `${this.url}/metadata/${id}`,\n // { ...meta },\n // { headers: this.headers }\n // )\n // return { data, error: null }\n // } catch (error) {\n // if (isStorageError(error)) {\n // return { data: null, error }\n // }\n\n // throw error\n // }\n // }\n\n /**\n * Lists all the files within a bucket.\n * @param path The folder path.\n */\n async list(\n path?: string,\n options?: SearchOptions,\n parameters?: FetchParameters\n ): Promise<\n | {\n data: FileObject[]\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const body = { ...DEFAULT_SEARCH_OPTIONS, ...options, prefix: path || '' }\n const data = await post(\n this.fetch,\n `${this.url}/object/list/${this.bucketId}`,\n body,\n { headers: this.headers },\n parameters\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n protected encodeMetadata(metadata: Record) {\n return JSON.stringify(metadata)\n }\n\n toBase64(data: string) {\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64')\n }\n return btoa(data)\n }\n\n private _getFinalPath(path: string) {\n return `${this.bucketId}/${path}`\n }\n\n private _removeEmptyFolders(path: string) {\n return path.replace(/^\\/|\\/$/g, '').replace(/\\/+/g, '/')\n }\n\n private transformOptsToQueryString(transform: TransformOptions) {\n const params = []\n if (transform.width) {\n params.push(`width=${transform.width}`)\n }\n\n if (transform.height) {\n params.push(`height=${transform.height}`)\n }\n\n if (transform.resize) {\n params.push(`resize=${transform.resize}`)\n }\n\n if (transform.format) {\n params.push(`format=${transform.format}`)\n }\n\n if (transform.quality) {\n params.push(`quality=${transform.quality}`)\n }\n\n return params.join('&')\n }\n}\n", "// generated by genversion\nexport const version = '2.7.1'\n", "import { version } from './version'\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `storage-js/${version}` }\n", "import { DEFAULT_HEADERS } from '../lib/constants'\nimport { isStorageError, StorageError } from '../lib/errors'\nimport { Fetch, get, post, put, remove } from '../lib/fetch'\nimport { resolveFetch } from '../lib/helpers'\nimport { Bucket } from '../lib/types'\n\nexport default class StorageBucketApi {\n protected url: string\n protected headers: { [key: string]: string }\n protected fetch: Fetch\n\n constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) {\n this.url = url\n this.headers = { ...DEFAULT_HEADERS, ...headers }\n this.fetch = resolveFetch(fetch)\n }\n\n /**\n * Retrieves the details of all Storage buckets within an existing project.\n */\n async listBuckets(): Promise<\n | {\n data: Bucket[]\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await get(this.fetch, `${this.url}/bucket`, { headers: this.headers })\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Retrieves the details of an existing Storage bucket.\n *\n * @param id The unique identifier of the bucket you would like to retrieve.\n */\n async getBucket(\n id: string\n ): Promise<\n | {\n data: Bucket\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await get(this.fetch, `${this.url}/bucket/${id}`, { headers: this.headers })\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Creates a new Storage bucket\n *\n * @param id A unique identifier for the bucket you are creating.\n * @param options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations. By default, buckets are private.\n * @param options.fileSizeLimit specifies the max file size in bytes that can be uploaded to this bucket.\n * The global file size limit takes precedence over this value.\n * The default value is null, which doesn't set a per bucket file size limit.\n * @param options.allowedMimeTypes specifies the allowed mime types that this bucket can accept during upload.\n * The default value is null, which allows files with all mime types to be uploaded.\n * Each mime type specified can be a wildcard, e.g. image/*, or a specific mime type, e.g. image/png.\n * @returns newly created bucket id\n */\n async createBucket(\n id: string,\n options: {\n public: boolean\n fileSizeLimit?: number | string | null\n allowedMimeTypes?: string[] | null\n } = {\n public: false,\n }\n ): Promise<\n | {\n data: Pick\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await post(\n this.fetch,\n `${this.url}/bucket`,\n {\n id,\n name: id,\n public: options.public,\n file_size_limit: options.fileSizeLimit,\n allowed_mime_types: options.allowedMimeTypes,\n },\n { headers: this.headers }\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Updates a Storage bucket\n *\n * @param id A unique identifier for the bucket you are updating.\n * @param options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations.\n * @param options.fileSizeLimit specifies the max file size in bytes that can be uploaded to this bucket.\n * The global file size limit takes precedence over this value.\n * The default value is null, which doesn't set a per bucket file size limit.\n * @param options.allowedMimeTypes specifies the allowed mime types that this bucket can accept during upload.\n * The default value is null, which allows files with all mime types to be uploaded.\n * Each mime type specified can be a wildcard, e.g. image/*, or a specific mime type, e.g. image/png.\n */\n async updateBucket(\n id: string,\n options: {\n public: boolean\n fileSizeLimit?: number | string | null\n allowedMimeTypes?: string[] | null\n }\n ): Promise<\n | {\n data: { message: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await put(\n this.fetch,\n `${this.url}/bucket/${id}`,\n {\n id,\n name: id,\n public: options.public,\n file_size_limit: options.fileSizeLimit,\n allowed_mime_types: options.allowedMimeTypes,\n },\n { headers: this.headers }\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Removes all objects inside a single bucket.\n *\n * @param id The unique identifier of the bucket you would like to empty.\n */\n async emptyBucket(\n id: string\n ): Promise<\n | {\n data: { message: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await post(\n this.fetch,\n `${this.url}/bucket/${id}/empty`,\n {},\n { headers: this.headers }\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Deletes an existing bucket. A bucket can't be deleted with existing objects inside it.\n * You must first `empty()` the bucket.\n *\n * @param id The unique identifier of the bucket you would like to delete.\n */\n async deleteBucket(\n id: string\n ): Promise<\n | {\n data: { message: string }\n error: null\n }\n | {\n data: null\n error: StorageError\n }\n > {\n try {\n const data = await remove(\n this.fetch,\n `${this.url}/bucket/${id}`,\n {},\n { headers: this.headers }\n )\n return { data, error: null }\n } catch (error) {\n if (isStorageError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n}\n", "import StorageFileApi from './packages/StorageFileApi'\nimport StorageBucketApi from './packages/StorageBucketApi'\nimport { Fetch } from './lib/fetch'\n\nexport class StorageClient extends StorageBucketApi {\n constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) {\n super(url, headers, fetch)\n }\n\n /**\n * Perform file operation in a bucket.\n *\n * @param id The bucket id to operate on.\n */\n from(id: string): StorageFileApi {\n return new StorageFileApi(this.url, this.headers, id, this.fetch)\n }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map", "export { StorageClient as StorageClient } from './StorageClient'\nexport * from './lib/types'\nexport * from './lib/errors'\n", "export const version = '2.49.8'\n", "// constants.ts\nimport { RealtimeClientOptions } from '@supabase/realtime-js'\nimport { SupabaseAuthClientOptions } from './types'\nimport { version } from './version'\n\nlet JS_ENV = ''\n// @ts-ignore\nif (typeof Deno !== 'undefined') {\n JS_ENV = 'deno'\n} else if (typeof document !== 'undefined') {\n JS_ENV = 'web'\n} else if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n JS_ENV = 'react-native'\n} else {\n JS_ENV = 'node'\n}\n\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `supabase-js-${JS_ENV}/${version}` }\n\nexport const DEFAULT_GLOBAL_OPTIONS = {\n headers: DEFAULT_HEADERS,\n}\n\nexport const DEFAULT_DB_OPTIONS = {\n schema: 'public',\n}\n\nexport const DEFAULT_AUTH_OPTIONS: SupabaseAuthClientOptions = {\n autoRefreshToken: true,\n persistSession: true,\n detectSessionInUrl: true,\n flowType: 'implicit',\n}\n\nexport const DEFAULT_REALTIME_OPTIONS: RealtimeClientOptions = {}\n", "// @ts-ignore\nimport nodeFetch, { Headers as NodeFetchHeaders } from '@supabase/node-fetch'\n\ntype Fetch = typeof fetch\n\nexport const resolveFetch = (customFetch?: Fetch): Fetch => {\n let _fetch: Fetch\n if (customFetch) {\n _fetch = customFetch\n } else if (typeof fetch === 'undefined') {\n _fetch = nodeFetch as unknown as Fetch\n } else {\n _fetch = fetch\n }\n return (...args: Parameters) => _fetch(...args)\n}\n\nexport const resolveHeadersConstructor = () => {\n if (typeof Headers === 'undefined') {\n return NodeFetchHeaders\n }\n\n return Headers\n}\n\nexport const fetchWithAuth = (\n supabaseKey: string,\n getAccessToken: () => Promise,\n customFetch?: Fetch\n): Fetch => {\n const fetch = resolveFetch(customFetch)\n const HeadersConstructor = resolveHeadersConstructor()\n\n return async (input, init) => {\n const accessToken = (await getAccessToken()) ?? supabaseKey\n let headers = new HeadersConstructor(init?.headers)\n\n if (!headers.has('apikey')) {\n headers.set('apikey', supabaseKey)\n }\n\n if (!headers.has('Authorization')) {\n headers.set('Authorization', `Bearer ${accessToken}`)\n }\n\n return fetch(input, { ...init, headers })\n }\n}\n", "// helpers.ts\nimport { SupabaseClientOptions } from './types'\n\nexport function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\nexport function ensureTrailingSlash(url: string): string {\n return url.endsWith('/') ? url : url + '/'\n}\n\nexport const isBrowser = () => typeof window !== 'undefined'\n\nexport function applySettingDefaults<\n Database = any,\n SchemaName extends string & keyof Database = 'public' extends keyof Database\n ? 'public'\n : string & keyof Database\n>(\n options: SupabaseClientOptions,\n defaults: SupabaseClientOptions\n): Required> {\n const {\n db: dbOptions,\n auth: authOptions,\n realtime: realtimeOptions,\n global: globalOptions,\n } = options\n const {\n db: DEFAULT_DB_OPTIONS,\n auth: DEFAULT_AUTH_OPTIONS,\n realtime: DEFAULT_REALTIME_OPTIONS,\n global: DEFAULT_GLOBAL_OPTIONS,\n } = defaults\n\n const result: Required> = {\n db: {\n ...DEFAULT_DB_OPTIONS,\n ...dbOptions,\n },\n auth: {\n ...DEFAULT_AUTH_OPTIONS,\n ...authOptions,\n },\n realtime: {\n ...DEFAULT_REALTIME_OPTIONS,\n ...realtimeOptions,\n },\n global: {\n ...DEFAULT_GLOBAL_OPTIONS,\n ...globalOptions,\n headers: {\n ...(DEFAULT_GLOBAL_OPTIONS?.headers ?? {}),\n ...(globalOptions?.headers ?? {}),\n },\n },\n accessToken: async () => '',\n }\n\n if (options.accessToken) {\n result.accessToken = options.accessToken\n } else {\n // hack around Required<>\n delete (result as any).accessToken\n }\n\n return result\n}\n", "export const version = '2.69.1'\n", "import { version } from './version'\n\n/** Current session will be checked for refresh at this interval. */\nexport const AUTO_REFRESH_TICK_DURATION_MS = 30 * 1000\n\n/**\n * A token refresh will be attempted this many ticks before the current session expires. */\nexport const AUTO_REFRESH_TICK_THRESHOLD = 3\n\n/*\n * Earliest time before an access token expires that the session should be refreshed.\n */\nexport const EXPIRY_MARGIN_MS = AUTO_REFRESH_TICK_THRESHOLD * AUTO_REFRESH_TICK_DURATION_MS\n\nexport const GOTRUE_URL = 'http://localhost:9999'\nexport const STORAGE_KEY = 'supabase.auth.token'\nexport const AUDIENCE = ''\nexport const DEFAULT_HEADERS = { 'X-Client-Info': `gotrue-js/${version}` }\nexport const NETWORK_FAILURE = {\n MAX_RETRIES: 10,\n RETRY_INTERVAL: 2, // in deciseconds\n}\n\nexport const API_VERSION_HEADER_NAME = 'X-Supabase-Api-Version'\nexport const API_VERSIONS = {\n '2024-01-01': {\n timestamp: Date.parse('2024-01-01T00:00:00.0Z'),\n name: '2024-01-01',\n },\n}\n\nexport const BASE64URL_REGEX = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i\n\nexport const JWKS_TTL = 600000 // 10 minutes\n", "import { WeakPasswordReasons } from './types'\nimport { ErrorCode } from './error-codes'\n\nexport class AuthError extends Error {\n /**\n * Error code associated with the error. Most errors coming from\n * HTTP responses will have a code, though some errors that occur\n * before a response is received will not have one present. In that\n * case {@link #status} will also be undefined.\n */\n code: ErrorCode | (string & {}) | undefined\n\n /** HTTP status code that caused the error. */\n status: number | undefined\n\n protected __isAuthError = true\n\n constructor(message: string, status?: number, code?: string) {\n super(message)\n this.name = 'AuthError'\n this.status = status\n this.code = code\n }\n}\n\nexport function isAuthError(error: unknown): error is AuthError {\n return typeof error === 'object' && error !== null && '__isAuthError' in error\n}\n\nexport class AuthApiError extends AuthError {\n status: number\n\n constructor(message: string, status: number, code: string | undefined) {\n super(message, status, code)\n this.name = 'AuthApiError'\n this.status = status\n this.code = code\n }\n}\n\nexport function isAuthApiError(error: unknown): error is AuthApiError {\n return isAuthError(error) && error.name === 'AuthApiError'\n}\n\nexport class AuthUnknownError extends AuthError {\n originalError: unknown\n\n constructor(message: string, originalError: unknown) {\n super(message)\n this.name = 'AuthUnknownError'\n this.originalError = originalError\n }\n}\n\nexport class CustomAuthError extends AuthError {\n name: string\n status: number\n\n constructor(message: string, name: string, status: number, code: string | undefined) {\n super(message, status, code)\n this.name = name\n this.status = status\n }\n}\n\nexport class AuthSessionMissingError extends CustomAuthError {\n constructor() {\n super('Auth session missing!', 'AuthSessionMissingError', 400, undefined)\n }\n}\n\nexport function isAuthSessionMissingError(error: any): error is AuthSessionMissingError {\n return isAuthError(error) && error.name === 'AuthSessionMissingError'\n}\n\nexport class AuthInvalidTokenResponseError extends CustomAuthError {\n constructor() {\n super('Auth session or user missing', 'AuthInvalidTokenResponseError', 500, undefined)\n }\n}\n\nexport class AuthInvalidCredentialsError extends CustomAuthError {\n constructor(message: string) {\n super(message, 'AuthInvalidCredentialsError', 400, undefined)\n }\n}\n\nexport class AuthImplicitGrantRedirectError extends CustomAuthError {\n details: { error: string; code: string } | null = null\n constructor(message: string, details: { error: string; code: string } | null = null) {\n super(message, 'AuthImplicitGrantRedirectError', 500, undefined)\n this.details = details\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n status: this.status,\n details: this.details,\n }\n }\n}\n\nexport function isAuthImplicitGrantRedirectError(\n error: any\n): error is AuthImplicitGrantRedirectError {\n return isAuthError(error) && error.name === 'AuthImplicitGrantRedirectError'\n}\n\nexport class AuthPKCEGrantCodeExchangeError extends CustomAuthError {\n details: { error: string; code: string } | null = null\n\n constructor(message: string, details: { error: string; code: string } | null = null) {\n super(message, 'AuthPKCEGrantCodeExchangeError', 500, undefined)\n this.details = details\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n status: this.status,\n details: this.details,\n }\n }\n}\n\nexport class AuthRetryableFetchError extends CustomAuthError {\n constructor(message: string, status: number) {\n super(message, 'AuthRetryableFetchError', status, undefined)\n }\n}\n\nexport function isAuthRetryableFetchError(error: unknown): error is AuthRetryableFetchError {\n return isAuthError(error) && error.name === 'AuthRetryableFetchError'\n}\n\n/**\n * This error is thrown on certain methods when the password used is deemed\n * weak. Inspect the reasons to identify what password strength rules are\n * inadequate.\n */\nexport class AuthWeakPasswordError extends CustomAuthError {\n /**\n * Reasons why the password is deemed weak.\n */\n reasons: WeakPasswordReasons[]\n\n constructor(message: string, status: number, reasons: string[]) {\n super(message, 'AuthWeakPasswordError', status, 'weak_password')\n\n this.reasons = reasons\n }\n}\n\nexport function isAuthWeakPasswordError(error: unknown): error is AuthWeakPasswordError {\n return isAuthError(error) && error.name === 'AuthWeakPasswordError'\n}\n\nexport class AuthInvalidJwtError extends CustomAuthError {\n constructor(message: string) {\n super(message, 'AuthInvalidJwtError', 400, 'invalid_jwt')\n }\n}\n", "/**\n * Avoid modifying this file. It's part of\n * https://github.com/supabase-community/base64url-js. Submit all fixes on\n * that repo!\n */\n\n/**\n * An array of characters that encode 6 bits into a Base64-URL alphabet\n * character.\n */\nconst TO_BASE64URL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'.split('')\n\n/**\n * An array of characters that can appear in a Base64-URL encoded string but\n * should be ignored.\n */\nconst IGNORE_BASE64URL = ' \\t\\n\\r='.split('')\n\n/**\n * An array of 128 numbers that map a Base64-URL character to 6 bits, or if -2\n * used to skip the character, or if -1 used to error out.\n */\nconst FROM_BASE64URL = (() => {\n const charMap: number[] = new Array(128)\n\n for (let i = 0; i < charMap.length; i += 1) {\n charMap[i] = -1\n }\n\n for (let i = 0; i < IGNORE_BASE64URL.length; i += 1) {\n charMap[IGNORE_BASE64URL[i].charCodeAt(0)] = -2\n }\n\n for (let i = 0; i < TO_BASE64URL.length; i += 1) {\n charMap[TO_BASE64URL[i].charCodeAt(0)] = i\n }\n\n return charMap\n})()\n\n/**\n * Converts a byte to a Base64-URL string.\n *\n * @param byte The byte to convert, or null to flush at the end of the byte sequence.\n * @param state The Base64 conversion state. Pass an initial value of `{ queue: 0, queuedBits: 0 }`.\n * @param emit A function called with the next Base64 character when ready.\n */\nexport function byteToBase64URL(\n byte: number | null,\n state: { queue: number; queuedBits: number },\n emit: (char: string) => void\n) {\n if (byte !== null) {\n state.queue = (state.queue << 8) | byte\n state.queuedBits += 8\n\n while (state.queuedBits >= 6) {\n const pos = (state.queue >> (state.queuedBits - 6)) & 63\n emit(TO_BASE64URL[pos])\n state.queuedBits -= 6\n }\n } else if (state.queuedBits > 0) {\n state.queue = state.queue << (6 - state.queuedBits)\n state.queuedBits = 6\n\n while (state.queuedBits >= 6) {\n const pos = (state.queue >> (state.queuedBits - 6)) & 63\n emit(TO_BASE64URL[pos])\n state.queuedBits -= 6\n }\n }\n}\n\n/**\n * Converts a String char code (extracted using `string.charCodeAt(position)`) to a sequence of Base64-URL characters.\n *\n * @param charCode The char code of the JavaScript string.\n * @param state The Base64 state. Pass an initial value of `{ queue: 0, queuedBits: 0 }`.\n * @param emit A function called with the next byte.\n */\nexport function byteFromBase64URL(\n charCode: number,\n state: { queue: number; queuedBits: number },\n emit: (byte: number) => void\n) {\n const bits = FROM_BASE64URL[charCode]\n\n if (bits > -1) {\n // valid Base64-URL character\n state.queue = (state.queue << 6) | bits\n state.queuedBits += 6\n\n while (state.queuedBits >= 8) {\n emit((state.queue >> (state.queuedBits - 8)) & 0xff)\n state.queuedBits -= 8\n }\n } else if (bits === -2) {\n // ignore spaces, tabs, newlines, =\n return\n } else {\n throw new Error(`Invalid Base64-URL character \"${String.fromCharCode(charCode)}\"`)\n }\n}\n\n/**\n * Converts a JavaScript string (which may include any valid character) into a\n * Base64-URL encoded string. The string is first encoded in UTF-8 which is\n * then encoded as Base64-URL.\n *\n * @param str The string to convert.\n */\nexport function stringToBase64URL(str: string) {\n const base64: string[] = []\n\n const emitter = (char: string) => {\n base64.push(char)\n }\n\n const state = { queue: 0, queuedBits: 0 }\n\n stringToUTF8(str, (byte: number) => {\n byteToBase64URL(byte, state, emitter)\n })\n\n byteToBase64URL(null, state, emitter)\n\n return base64.join('')\n}\n\n/**\n * Converts a Base64-URL encoded string into a JavaScript string. It is assumed\n * that the underlying string has been encoded as UTF-8.\n *\n * @param str The Base64-URL encoded string.\n */\nexport function stringFromBase64URL(str: string) {\n const conv: string[] = []\n\n const utf8Emit = (codepoint: number) => {\n conv.push(String.fromCodePoint(codepoint))\n }\n\n const utf8State = {\n utf8seq: 0,\n codepoint: 0,\n }\n\n const b64State = { queue: 0, queuedBits: 0 }\n\n const byteEmit = (byte: number) => {\n stringFromUTF8(byte, utf8State, utf8Emit)\n }\n\n for (let i = 0; i < str.length; i += 1) {\n byteFromBase64URL(str.charCodeAt(i), b64State, byteEmit)\n }\n\n return conv.join('')\n}\n\n/**\n * Converts a Unicode codepoint to a multi-byte UTF-8 sequence.\n *\n * @param codepoint The Unicode codepoint.\n * @param emit Function which will be called for each UTF-8 byte that represents the codepoint.\n */\nexport function codepointToUTF8(codepoint: number, emit: (byte: number) => void) {\n if (codepoint <= 0x7f) {\n emit(codepoint)\n return\n } else if (codepoint <= 0x7ff) {\n emit(0xc0 | (codepoint >> 6))\n emit(0x80 | (codepoint & 0x3f))\n return\n } else if (codepoint <= 0xffff) {\n emit(0xe0 | (codepoint >> 12))\n emit(0x80 | ((codepoint >> 6) & 0x3f))\n emit(0x80 | (codepoint & 0x3f))\n return\n } else if (codepoint <= 0x10ffff) {\n emit(0xf0 | (codepoint >> 18))\n emit(0x80 | ((codepoint >> 12) & 0x3f))\n emit(0x80 | ((codepoint >> 6) & 0x3f))\n emit(0x80 | (codepoint & 0x3f))\n return\n }\n\n throw new Error(`Unrecognized Unicode codepoint: ${codepoint.toString(16)}`)\n}\n\n/**\n * Converts a JavaScript string to a sequence of UTF-8 bytes.\n *\n * @param str The string to convert to UTF-8.\n * @param emit Function which will be called for each UTF-8 byte of the string.\n */\nexport function stringToUTF8(str: string, emit: (byte: number) => void) {\n for (let i = 0; i < str.length; i += 1) {\n let codepoint = str.charCodeAt(i)\n\n if (codepoint > 0xd7ff && codepoint <= 0xdbff) {\n // most UTF-16 codepoints are Unicode codepoints, except values in this\n // range where the next UTF-16 codepoint needs to be combined with the\n // current one to get the Unicode codepoint\n const highSurrogate = ((codepoint - 0xd800) * 0x400) & 0xffff\n const lowSurrogate = (str.charCodeAt(i + 1) - 0xdc00) & 0xffff\n codepoint = (lowSurrogate | highSurrogate) + 0x10000\n i += 1\n }\n\n codepointToUTF8(codepoint, emit)\n }\n}\n\n/**\n * Converts a UTF-8 byte to a Unicode codepoint.\n *\n * @param byte The UTF-8 byte next in the sequence.\n * @param state The shared state between consecutive UTF-8 bytes in the\n * sequence, an object with the shape `{ utf8seq: 0, codepoint: 0 }`.\n * @param emit Function which will be called for each codepoint.\n */\nexport function stringFromUTF8(\n byte: number,\n state: { utf8seq: number; codepoint: number },\n emit: (codepoint: number) => void\n) {\n if (state.utf8seq === 0) {\n if (byte <= 0x7f) {\n emit(byte)\n return\n }\n\n // count the number of 1 leading bits until you reach 0\n for (let leadingBit = 1; leadingBit < 6; leadingBit += 1) {\n if (((byte >> (7 - leadingBit)) & 1) === 0) {\n state.utf8seq = leadingBit\n break\n }\n }\n\n if (state.utf8seq === 2) {\n state.codepoint = byte & 31\n } else if (state.utf8seq === 3) {\n state.codepoint = byte & 15\n } else if (state.utf8seq === 4) {\n state.codepoint = byte & 7\n } else {\n throw new Error('Invalid UTF-8 sequence')\n }\n\n state.utf8seq -= 1\n } else if (state.utf8seq > 0) {\n if (byte <= 0x7f) {\n throw new Error('Invalid UTF-8 sequence')\n }\n\n state.codepoint = (state.codepoint << 6) | (byte & 63)\n state.utf8seq -= 1\n\n if (state.utf8seq === 0) {\n emit(state.codepoint)\n }\n }\n}\n\n/**\n * Helper functions to convert different types of strings to Uint8Array\n */\n\nexport function base64UrlToUint8Array(str: string): Uint8Array {\n const result: number[] = []\n const state = { queue: 0, queuedBits: 0 }\n\n const onByte = (byte: number) => {\n result.push(byte)\n }\n\n for (let i = 0; i < str.length; i += 1) {\n byteFromBase64URL(str.charCodeAt(i), state, onByte)\n }\n\n return new Uint8Array(result)\n}\n\nexport function stringToUint8Array(str: string): Uint8Array {\n const result: number[] = []\n stringToUTF8(str, (byte: number) => result.push(byte))\n return new Uint8Array(result)\n}\n", "import { API_VERSION_HEADER_NAME, BASE64URL_REGEX } from './constants'\nimport { AuthInvalidJwtError } from './errors'\nimport { base64UrlToUint8Array, stringFromBase64URL, stringToBase64URL } from './base64url'\nimport { JwtHeader, JwtPayload, SupportedStorage } from './types'\n\nexport function expiresAt(expiresIn: number) {\n const timeNow = Math.round(Date.now() / 1000)\n return timeNow + expiresIn\n}\n\nexport function uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\nexport const isBrowser = () => typeof window !== 'undefined' && typeof document !== 'undefined'\n\nconst localStorageWriteTests = {\n tested: false,\n writable: false,\n}\n\n/**\n * Checks whether localStorage is supported on this browser.\n */\nexport const supportsLocalStorage = () => {\n if (!isBrowser()) {\n return false\n }\n\n try {\n if (typeof globalThis.localStorage !== 'object') {\n return false\n }\n } catch (e) {\n // DOM exception when accessing `localStorage`\n return false\n }\n\n if (localStorageWriteTests.tested) {\n return localStorageWriteTests.writable\n }\n\n const randomKey = `lswt-${Math.random()}${Math.random()}`\n\n try {\n globalThis.localStorage.setItem(randomKey, randomKey)\n globalThis.localStorage.removeItem(randomKey)\n\n localStorageWriteTests.tested = true\n localStorageWriteTests.writable = true\n } catch (e) {\n // localStorage can't be written to\n // https://www.chromium.org/for-testers/bug-reporting-guidelines/uncaught-securityerror-failed-to-read-the-localstorage-property-from-window-access-is-denied-for-this-document\n\n localStorageWriteTests.tested = true\n localStorageWriteTests.writable = false\n }\n\n return localStorageWriteTests.writable\n}\n\n/**\n * Extracts parameters encoded in the URL both in the query and fragment.\n */\nexport function parseParametersFromURL(href: string) {\n const result: { [parameter: string]: string } = {}\n\n const url = new URL(href)\n\n if (url.hash && url.hash[0] === '#') {\n try {\n const hashSearchParams = new URLSearchParams(url.hash.substring(1))\n hashSearchParams.forEach((value, key) => {\n result[key] = value\n })\n } catch (e: any) {\n // hash is not a query string\n }\n }\n\n // search parameters take precedence over hash parameters\n url.searchParams.forEach((value, key) => {\n result[key] = value\n })\n\n return result\n}\n\ntype Fetch = typeof fetch\n\nexport const resolveFetch = (customFetch?: Fetch): Fetch => {\n let _fetch: Fetch\n if (customFetch) {\n _fetch = customFetch\n } else if (typeof fetch === 'undefined') {\n _fetch = (...args) =>\n import('@supabase/node-fetch' as any).then(({ default: fetch }) => fetch(...args))\n } else {\n _fetch = fetch\n }\n return (...args) => _fetch(...args)\n}\n\nexport const looksLikeFetchResponse = (maybeResponse: unknown): maybeResponse is Response => {\n return (\n typeof maybeResponse === 'object' &&\n maybeResponse !== null &&\n 'status' in maybeResponse &&\n 'ok' in maybeResponse &&\n 'json' in maybeResponse &&\n typeof (maybeResponse as any).json === 'function'\n )\n}\n\n// Storage helpers\nexport const setItemAsync = async (\n storage: SupportedStorage,\n key: string,\n data: any\n): Promise => {\n await storage.setItem(key, JSON.stringify(data))\n}\n\nexport const getItemAsync = async (storage: SupportedStorage, key: string): Promise => {\n const value = await storage.getItem(key)\n\n if (!value) {\n return null\n }\n\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport const removeItemAsync = async (storage: SupportedStorage, key: string): Promise => {\n await storage.removeItem(key)\n}\n\n/**\n * A deferred represents some asynchronous work that is not yet finished, which\n * may or may not culminate in a value.\n * Taken from: https://github.com/mike-north/types/blob/master/src/async.ts\n */\nexport class Deferred {\n public static promiseConstructor: PromiseConstructor = Promise\n\n public readonly promise!: PromiseLike\n\n public readonly resolve!: (value?: T | PromiseLike) => void\n\n public readonly reject!: (reason?: any) => any\n\n public constructor() {\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;(this as any).promise = new Deferred.promiseConstructor((res, rej) => {\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;(this as any).resolve = res\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;(this as any).reject = rej\n })\n }\n}\n\nexport function decodeJWT(token: string): {\n header: JwtHeader\n payload: JwtPayload\n signature: Uint8Array\n raw: {\n header: string\n payload: string\n }\n} {\n const parts = token.split('.')\n\n if (parts.length !== 3) {\n throw new AuthInvalidJwtError('Invalid JWT structure')\n }\n\n // Regex checks for base64url format\n for (let i = 0; i < parts.length; i++) {\n if (!BASE64URL_REGEX.test(parts[i] as string)) {\n throw new AuthInvalidJwtError('JWT not in base64url format')\n }\n }\n const data = {\n // using base64url lib\n header: JSON.parse(stringFromBase64URL(parts[0])),\n payload: JSON.parse(stringFromBase64URL(parts[1])),\n signature: base64UrlToUint8Array(parts[2]),\n raw: {\n header: parts[0],\n payload: parts[1],\n },\n }\n return data\n}\n\n/**\n * Creates a promise that resolves to null after some time.\n */\nexport async function sleep(time: number): Promise {\n return await new Promise((accept) => {\n setTimeout(() => accept(null), time)\n })\n}\n\n/**\n * Converts the provided async function into a retryable function. Each result\n * or thrown error is sent to the isRetryable function which should return true\n * if the function should run again.\n */\nexport function retryable(\n fn: (attempt: number) => Promise,\n isRetryable: (attempt: number, error: any | null, result?: T) => boolean\n): Promise {\n const promise = new Promise((accept, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-extra-semi\n ;(async () => {\n for (let attempt = 0; attempt < Infinity; attempt++) {\n try {\n const result = await fn(attempt)\n\n if (!isRetryable(attempt, null, result)) {\n accept(result)\n return\n }\n } catch (e: any) {\n if (!isRetryable(attempt, e)) {\n reject(e)\n return\n }\n }\n }\n })()\n })\n\n return promise\n}\n\nfunction dec2hex(dec: number) {\n return ('0' + dec.toString(16)).substr(-2)\n}\n\n// Functions below taken from: https://stackoverflow.com/questions/63309409/creating-a-code-verifier-and-challenge-for-pkce-auth-on-spotify-api-in-reactjs\nexport function generatePKCEVerifier() {\n const verifierLength = 56\n const array = new Uint32Array(verifierLength)\n if (typeof crypto === 'undefined') {\n const charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~'\n const charSetLen = charSet.length\n let verifier = ''\n for (let i = 0; i < verifierLength; i++) {\n verifier += charSet.charAt(Math.floor(Math.random() * charSetLen))\n }\n return verifier\n }\n crypto.getRandomValues(array)\n return Array.from(array, dec2hex).join('')\n}\n\nasync function sha256(randomString: string) {\n const encoder = new TextEncoder()\n const encodedData = encoder.encode(randomString)\n const hash = await crypto.subtle.digest('SHA-256', encodedData)\n const bytes = new Uint8Array(hash)\n\n return Array.from(bytes)\n .map((c) => String.fromCharCode(c))\n .join('')\n}\n\nexport async function generatePKCEChallenge(verifier: string) {\n const hasCryptoSupport =\n typeof crypto !== 'undefined' &&\n typeof crypto.subtle !== 'undefined' &&\n typeof TextEncoder !== 'undefined'\n\n if (!hasCryptoSupport) {\n console.warn(\n 'WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256.'\n )\n return verifier\n }\n const hashed = await sha256(verifier)\n return btoa(hashed).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\nexport async function getCodeChallengeAndMethod(\n storage: SupportedStorage,\n storageKey: string,\n isPasswordRecovery = false\n) {\n const codeVerifier = generatePKCEVerifier()\n let storedCodeVerifier = codeVerifier\n if (isPasswordRecovery) {\n storedCodeVerifier += '/PASSWORD_RECOVERY'\n }\n await setItemAsync(storage, `${storageKey}-code-verifier`, storedCodeVerifier)\n const codeChallenge = await generatePKCEChallenge(codeVerifier)\n const codeChallengeMethod = codeVerifier === codeChallenge ? 'plain' : 's256'\n return [codeChallenge, codeChallengeMethod]\n}\n\n/** Parses the API version which is 2YYY-MM-DD. */\nconst API_VERSION_REGEX = /^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i\n\nexport function parseResponseAPIVersion(response: Response) {\n const apiVersion = response.headers.get(API_VERSION_HEADER_NAME)\n\n if (!apiVersion) {\n return null\n }\n\n if (!apiVersion.match(API_VERSION_REGEX)) {\n return null\n }\n\n try {\n const date = new Date(`${apiVersion}T00:00:00.0Z`)\n return date\n } catch (e: any) {\n return null\n }\n}\n\nexport function validateExp(exp: number) {\n if (!exp) {\n throw new Error('Missing exp claim')\n }\n const timeNow = Math.floor(Date.now() / 1000)\n if (exp <= timeNow) {\n throw new Error('JWT has expired')\n }\n}\n\nexport function getAlgorithm(alg: 'RS256' | 'ES256'): RsaHashedImportParams | EcKeyImportParams {\n switch (alg) {\n case 'RS256':\n return {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' },\n }\n case 'ES256':\n return {\n name: 'ECDSA',\n namedCurve: 'P-256',\n hash: { name: 'SHA-256' },\n }\n default:\n throw new Error('Invalid alg claim')\n }\n}\n", "import { API_VERSIONS, API_VERSION_HEADER_NAME } from './constants'\nimport { expiresAt, looksLikeFetchResponse, parseResponseAPIVersion } from './helpers'\nimport {\n AuthResponse,\n AuthResponsePassword,\n SSOResponse,\n GenerateLinkProperties,\n GenerateLinkResponse,\n User,\n UserResponse,\n} from './types'\nimport {\n AuthApiError,\n AuthRetryableFetchError,\n AuthWeakPasswordError,\n AuthUnknownError,\n AuthSessionMissingError,\n} from './errors'\n\nexport type Fetch = typeof fetch\n\nexport interface FetchOptions {\n headers?: {\n [key: string]: string\n }\n noResolveJson?: boolean\n}\n\nexport interface FetchParameters {\n signal?: AbortSignal\n}\n\nexport type RequestMethodType = 'GET' | 'POST' | 'PUT' | 'DELETE'\n\nconst _getErrorMessage = (err: any): string =>\n err.msg || err.message || err.error_description || err.error || JSON.stringify(err)\n\nconst NETWORK_ERROR_CODES = [502, 503, 504]\n\nexport async function handleError(error: unknown) {\n if (!looksLikeFetchResponse(error)) {\n throw new AuthRetryableFetchError(_getErrorMessage(error), 0)\n }\n\n if (NETWORK_ERROR_CODES.includes(error.status)) {\n // status in 500...599 range - server had an error, request might be retryed.\n throw new AuthRetryableFetchError(_getErrorMessage(error), error.status)\n }\n\n let data: any\n try {\n data = await error.json()\n } catch (e: any) {\n throw new AuthUnknownError(_getErrorMessage(e), e)\n }\n\n let errorCode: string | undefined = undefined\n\n const responseAPIVersion = parseResponseAPIVersion(error)\n if (\n responseAPIVersion &&\n responseAPIVersion.getTime() >= API_VERSIONS['2024-01-01'].timestamp &&\n typeof data === 'object' &&\n data &&\n typeof data.code === 'string'\n ) {\n errorCode = data.code\n } else if (typeof data === 'object' && data && typeof data.error_code === 'string') {\n errorCode = data.error_code\n }\n\n if (!errorCode) {\n // Legacy support for weak password errors, when there were no error codes\n if (\n typeof data === 'object' &&\n data &&\n typeof data.weak_password === 'object' &&\n data.weak_password &&\n Array.isArray(data.weak_password.reasons) &&\n data.weak_password.reasons.length &&\n data.weak_password.reasons.reduce((a: boolean, i: any) => a && typeof i === 'string', true)\n ) {\n throw new AuthWeakPasswordError(\n _getErrorMessage(data),\n error.status,\n data.weak_password.reasons\n )\n }\n } else if (errorCode === 'weak_password') {\n throw new AuthWeakPasswordError(\n _getErrorMessage(data),\n error.status,\n data.weak_password?.reasons || []\n )\n } else if (errorCode === 'session_not_found') {\n // The `session_id` inside the JWT does not correspond to a row in the\n // `sessions` table. This usually means the user has signed out, has been\n // deleted, or their session has somehow been terminated.\n throw new AuthSessionMissingError()\n }\n\n throw new AuthApiError(_getErrorMessage(data), error.status || 500, errorCode)\n}\n\nconst _getRequestParams = (\n method: RequestMethodType,\n options?: FetchOptions,\n parameters?: FetchParameters,\n body?: object\n) => {\n const params: { [k: string]: any } = { method, headers: options?.headers || {} }\n\n if (method === 'GET') {\n return params\n }\n\n params.headers = { 'Content-Type': 'application/json;charset=UTF-8', ...options?.headers }\n params.body = JSON.stringify(body)\n return { ...params, ...parameters }\n}\n\ninterface GotrueRequestOptions extends FetchOptions {\n jwt?: string\n redirectTo?: string\n body?: object\n query?: { [key: string]: string }\n /**\n * Function that transforms api response from gotrue into a desirable / standardised format\n */\n xform?: (data: any) => any\n}\n\nexport async function _request(\n fetcher: Fetch,\n method: RequestMethodType,\n url: string,\n options?: GotrueRequestOptions\n) {\n const headers = {\n ...options?.headers,\n }\n\n if (!headers[API_VERSION_HEADER_NAME]) {\n headers[API_VERSION_HEADER_NAME] = API_VERSIONS['2024-01-01'].name\n }\n\n if (options?.jwt) {\n headers['Authorization'] = `Bearer ${options.jwt}`\n }\n\n const qs = options?.query ?? {}\n if (options?.redirectTo) {\n qs['redirect_to'] = options.redirectTo\n }\n\n const queryString = Object.keys(qs).length ? '?' + new URLSearchParams(qs).toString() : ''\n const data = await _handleRequest(\n fetcher,\n method,\n url + queryString,\n {\n headers,\n noResolveJson: options?.noResolveJson,\n },\n {},\n options?.body\n )\n return options?.xform ? options?.xform(data) : { data: { ...data }, error: null }\n}\n\nasync function _handleRequest(\n fetcher: Fetch,\n method: RequestMethodType,\n url: string,\n options?: FetchOptions,\n parameters?: FetchParameters,\n body?: object\n): Promise {\n const requestParams = _getRequestParams(method, options, parameters, body)\n\n let result: any\n\n try {\n result = await fetcher(url, {\n ...requestParams,\n })\n } catch (e) {\n console.error(e)\n\n // fetch failed, likely due to a network or CORS error\n throw new AuthRetryableFetchError(_getErrorMessage(e), 0)\n }\n\n if (!result.ok) {\n await handleError(result)\n }\n\n if (options?.noResolveJson) {\n return result\n }\n\n try {\n return await result.json()\n } catch (e: any) {\n await handleError(e)\n }\n}\n\nexport function _sessionResponse(data: any): AuthResponse {\n let session = null\n if (hasSession(data)) {\n session = { ...data }\n\n if (!data.expires_at) {\n session.expires_at = expiresAt(data.expires_in)\n }\n }\n\n const user: User = data.user ?? (data as User)\n return { data: { session, user }, error: null }\n}\n\nexport function _sessionResponsePassword(data: any): AuthResponsePassword {\n const response = _sessionResponse(data) as AuthResponsePassword\n\n if (\n !response.error &&\n data.weak_password &&\n typeof data.weak_password === 'object' &&\n Array.isArray(data.weak_password.reasons) &&\n data.weak_password.reasons.length &&\n data.weak_password.message &&\n typeof data.weak_password.message === 'string' &&\n data.weak_password.reasons.reduce((a: boolean, i: any) => a && typeof i === 'string', true)\n ) {\n response.data.weak_password = data.weak_password\n }\n\n return response\n}\n\nexport function _userResponse(data: any): UserResponse {\n const user: User = data.user ?? (data as User)\n return { data: { user }, error: null }\n}\n\nexport function _ssoResponse(data: any): SSOResponse {\n return { data, error: null }\n}\n\nexport function _generateLinkResponse(data: any): GenerateLinkResponse {\n const { action_link, email_otp, hashed_token, redirect_to, verification_type, ...rest } = data\n\n const properties: GenerateLinkProperties = {\n action_link,\n email_otp,\n hashed_token,\n redirect_to,\n verification_type,\n }\n\n const user: User = { ...rest }\n return {\n data: {\n properties,\n user,\n },\n error: null,\n }\n}\n\nexport function _noResolveJsonResponse(data: any): Response {\n return data\n}\n\n/**\n * hasSession checks if the response object contains a valid session\n * @param data A response object\n * @returns true if a session is in the response\n */\nfunction hasSession(data: any): boolean {\n return data.access_token && data.refresh_token && data.expires_in\n}\n", "import {\n Fetch,\n _generateLinkResponse,\n _noResolveJsonResponse,\n _request,\n _userResponse,\n} from './lib/fetch'\nimport { resolveFetch } from './lib/helpers'\nimport {\n AdminUserAttributes,\n GenerateLinkParams,\n GenerateLinkResponse,\n Pagination,\n User,\n UserResponse,\n GoTrueAdminMFAApi,\n AuthMFAAdminDeleteFactorParams,\n AuthMFAAdminDeleteFactorResponse,\n AuthMFAAdminListFactorsParams,\n AuthMFAAdminListFactorsResponse,\n PageParams,\n} from './lib/types'\nimport { AuthError, isAuthError } from './lib/errors'\n\nexport default class GoTrueAdminApi {\n /** Contains all MFA administration methods. */\n mfa: GoTrueAdminMFAApi\n\n protected url: string\n protected headers: {\n [key: string]: string\n }\n protected fetch: Fetch\n\n constructor({\n url = '',\n headers = {},\n fetch,\n }: {\n url: string\n headers?: {\n [key: string]: string\n }\n fetch?: Fetch\n }) {\n this.url = url\n this.headers = headers\n this.fetch = resolveFetch(fetch)\n this.mfa = {\n listFactors: this._listFactors.bind(this),\n deleteFactor: this._deleteFactor.bind(this),\n }\n }\n\n /**\n * Removes a logged-in session.\n * @param jwt A valid, logged-in JWT.\n * @param scope The logout sope.\n */\n async signOut(\n jwt: string,\n scope: 'global' | 'local' | 'others' = 'global'\n ): Promise<{ data: null; error: AuthError | null }> {\n try {\n await _request(this.fetch, 'POST', `${this.url}/logout?scope=${scope}`, {\n headers: this.headers,\n jwt,\n noResolveJson: true,\n })\n return { data: null, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Sends an invite link to an email address.\n * @param email The email address of the user.\n * @param options Additional options to be included when inviting.\n */\n async inviteUserByEmail(\n email: string,\n options: {\n /** A custom data object to store additional metadata about the user. This maps to the `auth.users.user_metadata` column. */\n data?: object\n\n /** The URL which will be appended to the email link sent to the user's email address. Once clicked the user will end up on this URL. */\n redirectTo?: string\n } = {}\n ): Promise {\n try {\n return await _request(this.fetch, 'POST', `${this.url}/invite`, {\n body: { email, data: options.data },\n headers: this.headers,\n redirectTo: options.redirectTo,\n xform: _userResponse,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Generates email links and OTPs to be sent via a custom email provider.\n * @param email The user's email.\n * @param options.password User password. For signup only.\n * @param options.data Optional user metadata. For signup only.\n * @param options.redirectTo The redirect url which should be appended to the generated link\n */\n async generateLink(params: GenerateLinkParams): Promise {\n try {\n const { options, ...rest } = params\n const body: any = { ...rest, ...options }\n if ('newEmail' in rest) {\n // replace newEmail with new_email in request body\n body.new_email = rest?.newEmail\n delete body['newEmail']\n }\n return await _request(this.fetch, 'POST', `${this.url}/admin/generate_link`, {\n body: body,\n headers: this.headers,\n xform: _generateLinkResponse,\n redirectTo: options?.redirectTo,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return {\n data: {\n properties: null,\n user: null,\n },\n error,\n }\n }\n throw error\n }\n }\n\n // User Admin API\n /**\n * Creates a new user.\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n async createUser(attributes: AdminUserAttributes): Promise {\n try {\n return await _request(this.fetch, 'POST', `${this.url}/admin/users`, {\n body: attributes,\n headers: this.headers,\n xform: _userResponse,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Get a list of users.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n * @param params An object which supports `page` and `perPage` as numbers, to alter the paginated results.\n */\n async listUsers(\n params?: PageParams\n ): Promise<\n | { data: { users: User[]; aud: string } & Pagination; error: null }\n | { data: { users: [] }; error: AuthError }\n > {\n try {\n const pagination: Pagination = { nextPage: null, lastPage: 0, total: 0 }\n const response = await _request(this.fetch, 'GET', `${this.url}/admin/users`, {\n headers: this.headers,\n noResolveJson: true,\n query: {\n page: params?.page?.toString() ?? '',\n per_page: params?.perPage?.toString() ?? '',\n },\n xform: _noResolveJsonResponse,\n })\n if (response.error) throw response.error\n\n const users = await response.json()\n const total = response.headers.get('x-total-count') ?? 0\n const links = response.headers.get('link')?.split(',') ?? []\n if (links.length > 0) {\n links.forEach((link: string) => {\n const page = parseInt(link.split(';')[0].split('=')[1].substring(0, 1))\n const rel = JSON.parse(link.split(';')[1].split('=')[1])\n pagination[`${rel}Page`] = page\n })\n\n pagination.total = parseInt(total)\n }\n return { data: { ...users, ...pagination }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { users: [] }, error }\n }\n throw error\n }\n }\n\n /**\n * Get user by id.\n *\n * @param uid The user's unique identifier\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n async getUserById(uid: string): Promise {\n try {\n return await _request(this.fetch, 'GET', `${this.url}/admin/users/${uid}`, {\n headers: this.headers,\n xform: _userResponse,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Updates the user data.\n *\n * @param attributes The data you want to update.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n async updateUserById(uid: string, attributes: AdminUserAttributes): Promise {\n try {\n return await _request(this.fetch, 'PUT', `${this.url}/admin/users/${uid}`, {\n body: attributes,\n headers: this.headers,\n xform: _userResponse,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Delete a user. Requires a `service_role` key.\n *\n * @param id The user id you want to remove.\n * @param shouldSoftDelete If true, then the user will be soft-deleted from the auth schema. Soft deletion allows user identification from the hashed user ID but is not reversible.\n * Defaults to false for backward compatibility.\n *\n * This function should only be called on a server. Never expose your `service_role` key in the browser.\n */\n async deleteUser(id: string, shouldSoftDelete = false): Promise {\n try {\n return await _request(this.fetch, 'DELETE', `${this.url}/admin/users/${id}`, {\n headers: this.headers,\n body: {\n should_soft_delete: shouldSoftDelete,\n },\n xform: _userResponse,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n private async _listFactors(\n params: AuthMFAAdminListFactorsParams\n ): Promise {\n try {\n const { data, error } = await _request(\n this.fetch,\n 'GET',\n `${this.url}/admin/users/${params.userId}/factors`,\n {\n headers: this.headers,\n xform: (factors: any) => {\n return { data: { factors }, error: null }\n },\n }\n )\n return { data, error }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n private async _deleteFactor(\n params: AuthMFAAdminDeleteFactorParams\n ): Promise {\n try {\n const data = await _request(\n this.fetch,\n 'DELETE',\n `${this.url}/admin/users/${params.userId}/factors/${params.id}`,\n {\n headers: this.headers,\n }\n )\n\n return { data, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n}\n", "import { supportsLocalStorage } from './helpers'\nimport { SupportedStorage } from './types'\n\n/**\n * Provides safe access to the globalThis.localStorage property.\n */\nexport const localStorageAdapter: SupportedStorage = {\n getItem: (key) => {\n if (!supportsLocalStorage()) {\n return null\n }\n\n return globalThis.localStorage.getItem(key)\n },\n setItem: (key, value) => {\n if (!supportsLocalStorage()) {\n return\n }\n\n globalThis.localStorage.setItem(key, value)\n },\n removeItem: (key) => {\n if (!supportsLocalStorage()) {\n return\n }\n\n globalThis.localStorage.removeItem(key)\n },\n}\n\n/**\n * Returns a localStorage-like object that stores the key-value pairs in\n * memory.\n */\nexport function memoryLocalStorageAdapter(store: { [key: string]: string } = {}): SupportedStorage {\n return {\n getItem: (key) => {\n return store[key] || null\n },\n\n setItem: (key, value) => {\n store[key] = value\n },\n\n removeItem: (key) => {\n delete store[key]\n },\n }\n}\n", "/**\n * https://mathiasbynens.be/notes/globalthis\n */\nexport function polyfillGlobalThis() {\n if (typeof globalThis === 'object') return\n try {\n Object.defineProperty(Object.prototype, '__magic__', {\n get: function () {\n return this\n },\n configurable: true,\n })\n // @ts-expect-error 'Allow access to magic'\n __magic__.globalThis = __magic__\n // @ts-expect-error 'Allow access to magic'\n delete Object.prototype.__magic__\n } catch (e) {\n if (typeof self !== 'undefined') {\n // @ts-expect-error 'Allow access to globals'\n self.globalThis = self\n }\n }\n}\n", "import { supportsLocalStorage } from './helpers'\n\n/**\n * @experimental\n */\nexport const internals = {\n /**\n * @experimental\n */\n debug: !!(\n globalThis &&\n supportsLocalStorage() &&\n globalThis.localStorage &&\n globalThis.localStorage.getItem('supabase.gotrue-js.locks.debug') === 'true'\n ),\n}\n\n/**\n * An error thrown when a lock cannot be acquired after some amount of time.\n *\n * Use the {@link #isAcquireTimeout} property instead of checking with `instanceof`.\n */\nexport abstract class LockAcquireTimeoutError extends Error {\n public readonly isAcquireTimeout = true\n\n constructor(message: string) {\n super(message)\n }\n}\n\nexport class NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {}\nexport class ProcessLockAcquireTimeoutError extends LockAcquireTimeoutError {}\n\n/**\n * Implements a global exclusive lock using the Navigator LockManager API. It\n * is available on all browsers released after 2022-03-15 with Safari being the\n * last one to release support. If the API is not available, this function will\n * throw. Make sure you check availablility before configuring {@link\n * GoTrueClient}.\n *\n * You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`\n * local storage item to `true`.\n *\n * Internals:\n *\n * Since the LockManager API does not preserve stack traces for the async\n * function passed in the `request` method, a trick is used where acquiring the\n * lock releases a previously started promise to run the operation in the `fn`\n * function. The lock waits for that promise to finish (with or without error),\n * while the function will finally wait for the result anyway.\n *\n * @param name Name of the lock to be acquired.\n * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if\n * the lock can't be acquired without waiting. If positive, the lock acquire\n * will time out after so many milliseconds. An error is\n * a timeout if it has `isAcquireTimeout` set to true.\n * @param fn The operation to run once the lock is acquired.\n */\nexport async function navigatorLock(\n name: string,\n acquireTimeout: number,\n fn: () => Promise\n): Promise {\n if (internals.debug) {\n console.log('@supabase/gotrue-js: navigatorLock: acquire lock', name, acquireTimeout)\n }\n\n const abortController = new globalThis.AbortController()\n\n if (acquireTimeout > 0) {\n setTimeout(() => {\n abortController.abort()\n if (internals.debug) {\n console.log('@supabase/gotrue-js: navigatorLock acquire timed out', name)\n }\n }, acquireTimeout)\n }\n\n // MDN article: https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request\n\n // Wrapping navigator.locks.request() with a plain Promise is done as some\n // libraries like zone.js patch the Promise object to track the execution\n // context. However, it appears that most browsers use an internal promise\n // implementation when using the navigator.locks.request() API causing them\n // to lose context and emit confusing log messages or break certain features.\n // This wrapping is believed to help zone.js track the execution context\n // better.\n return await Promise.resolve().then(() =>\n globalThis.navigator.locks.request(\n name,\n acquireTimeout === 0\n ? {\n mode: 'exclusive',\n ifAvailable: true,\n }\n : {\n mode: 'exclusive',\n signal: abortController.signal,\n },\n async (lock) => {\n if (lock) {\n if (internals.debug) {\n console.log('@supabase/gotrue-js: navigatorLock: acquired', name, lock.name)\n }\n\n try {\n return await fn()\n } finally {\n if (internals.debug) {\n console.log('@supabase/gotrue-js: navigatorLock: released', name, lock.name)\n }\n }\n } else {\n if (acquireTimeout === 0) {\n if (internals.debug) {\n console.log('@supabase/gotrue-js: navigatorLock: not immediately available', name)\n }\n\n throw new NavigatorLockAcquireTimeoutError(\n `Acquiring an exclusive Navigator LockManager lock \"${name}\" immediately failed`\n )\n } else {\n if (internals.debug) {\n try {\n const result = await globalThis.navigator.locks.query()\n\n console.log(\n '@supabase/gotrue-js: Navigator LockManager state',\n JSON.stringify(result, null, ' ')\n )\n } catch (e: any) {\n console.warn(\n '@supabase/gotrue-js: Error when querying Navigator LockManager state',\n e\n )\n }\n }\n\n // Browser is not following the Navigator LockManager spec, it\n // returned a null lock when we didn't use ifAvailable. So we can\n // pretend the lock is acquired in the name of backward compatibility\n // and user experience and just run the function.\n console.warn(\n '@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request'\n )\n\n return await fn()\n }\n }\n }\n )\n )\n}\n\nconst PROCESS_LOCKS: { [name: string]: Promise } = {}\n\n/**\n * Implements a global exclusive lock that works only in the current process.\n * Useful for environments like React Native or other non-browser\n * single-process (i.e. no concept of \"tabs\") environments.\n *\n * Use {@link #navigatorLock} in browser environments.\n *\n * @param name Name of the lock to be acquired.\n * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if\n * the lock can't be acquired without waiting. If positive, the lock acquire\n * will time out after so many milliseconds. An error is\n * a timeout if it has `isAcquireTimeout` set to true.\n * @param fn The operation to run once the lock is acquired.\n */\nexport async function processLock(\n name: string,\n acquireTimeout: number,\n fn: () => Promise\n): Promise {\n const previousOperation = PROCESS_LOCKS[name] ?? Promise.resolve()\n\n const currentOperation = Promise.race(\n [\n previousOperation.catch(() => {\n // ignore error of previous operation that we're waiting to finish\n return null\n }),\n acquireTimeout >= 0\n ? new Promise((_, reject) => {\n setTimeout(() => {\n reject(\n new ProcessLockAcquireTimeoutError(\n `Acquring process lock with name \"${name}\" timed out`\n )\n )\n }, acquireTimeout)\n })\n : null,\n ].filter((x) => x)\n )\n .catch((e: any) => {\n if (e && e.isAcquireTimeout) {\n throw e\n }\n\n return null\n })\n .then(async () => {\n // previous operations finished and we didn't get a race on the acquire\n // timeout, so the current operation can finally start\n return await fn()\n })\n\n PROCESS_LOCKS[name] = currentOperation.catch(async (e: any) => {\n if (e && e.isAcquireTimeout) {\n // if the current operation timed out, it doesn't mean that the previous\n // operation finished, so we need contnue waiting for it to finish\n await previousOperation\n\n return null\n }\n\n throw e\n })\n\n // finally wait for the current operation to finish successfully, with an\n // error or with an acquire timeout error\n return await currentOperation\n}\n", "import GoTrueAdminApi from './GoTrueAdminApi'\nimport {\n DEFAULT_HEADERS,\n EXPIRY_MARGIN_MS,\n AUTO_REFRESH_TICK_DURATION_MS,\n AUTO_REFRESH_TICK_THRESHOLD,\n GOTRUE_URL,\n STORAGE_KEY,\n JWKS_TTL,\n} from './lib/constants'\nimport {\n AuthError,\n AuthImplicitGrantRedirectError,\n AuthPKCEGrantCodeExchangeError,\n AuthInvalidCredentialsError,\n AuthSessionMissingError,\n AuthInvalidTokenResponseError,\n AuthUnknownError,\n isAuthApiError,\n isAuthError,\n isAuthRetryableFetchError,\n isAuthSessionMissingError,\n isAuthImplicitGrantRedirectError,\n AuthInvalidJwtError,\n} from './lib/errors'\nimport {\n Fetch,\n _request,\n _sessionResponse,\n _sessionResponsePassword,\n _userResponse,\n _ssoResponse,\n} from './lib/fetch'\nimport {\n Deferred,\n getItemAsync,\n isBrowser,\n removeItemAsync,\n resolveFetch,\n setItemAsync,\n uuid,\n retryable,\n sleep,\n supportsLocalStorage,\n parseParametersFromURL,\n getCodeChallengeAndMethod,\n getAlgorithm,\n validateExp,\n decodeJWT,\n} from './lib/helpers'\nimport { localStorageAdapter, memoryLocalStorageAdapter } from './lib/local-storage'\nimport { polyfillGlobalThis } from './lib/polyfills'\nimport { version } from './lib/version'\nimport { LockAcquireTimeoutError, navigatorLock } from './lib/locks'\n\nimport type {\n AuthChangeEvent,\n AuthResponse,\n AuthResponsePassword,\n AuthTokenResponse,\n AuthTokenResponsePassword,\n AuthOtpResponse,\n CallRefreshTokenResult,\n GoTrueClientOptions,\n InitializeResult,\n OAuthResponse,\n SSOResponse,\n Provider,\n Session,\n SignInWithIdTokenCredentials,\n SignInWithOAuthCredentials,\n SignInWithPasswordCredentials,\n SignInWithPasswordlessCredentials,\n SignUpWithPasswordCredentials,\n SignInWithSSO,\n SignOut,\n Subscription,\n SupportedStorage,\n User,\n UserAttributes,\n UserResponse,\n VerifyOtpParams,\n GoTrueMFAApi,\n MFAEnrollParams,\n AuthMFAEnrollResponse,\n MFAChallengeParams,\n AuthMFAChallengeResponse,\n MFAUnenrollParams,\n AuthMFAUnenrollResponse,\n MFAVerifyParams,\n AuthMFAVerifyResponse,\n AuthMFAListFactorsResponse,\n AuthMFAGetAuthenticatorAssuranceLevelResponse,\n AuthenticatorAssuranceLevels,\n Factor,\n MFAChallengeAndVerifyParams,\n ResendParams,\n AuthFlowType,\n LockFunc,\n UserIdentity,\n SignInAnonymouslyCredentials,\n MFAEnrollTOTPParams,\n MFAEnrollPhoneParams,\n AuthMFAEnrollTOTPResponse,\n AuthMFAEnrollPhoneResponse,\n JWK,\n JwtPayload,\n JwtHeader,\n} from './lib/types'\nimport { stringToUint8Array } from './lib/base64url'\n\npolyfillGlobalThis() // Make \"globalThis\" available\n\nconst DEFAULT_OPTIONS: Omit, 'fetch' | 'storage' | 'lock'> = {\n url: GOTRUE_URL,\n storageKey: STORAGE_KEY,\n autoRefreshToken: true,\n persistSession: true,\n detectSessionInUrl: true,\n headers: DEFAULT_HEADERS,\n flowType: 'implicit',\n debug: false,\n hasCustomAuthorizationHeader: false,\n}\n\nasync function lockNoOp(name: string, acquireTimeout: number, fn: () => Promise): Promise {\n return await fn()\n}\n\nexport default class GoTrueClient {\n private static nextInstanceID = 0\n\n private instanceID: number\n\n /**\n * Namespace for the GoTrue admin methods.\n * These methods should only be used in a trusted server-side environment.\n */\n admin: GoTrueAdminApi\n /**\n * Namespace for the MFA methods.\n */\n mfa: GoTrueMFAApi\n /**\n * The storage key used to identify the values saved in localStorage\n */\n protected storageKey: string\n\n protected flowType: AuthFlowType\n /**\n * The JWKS used for verifying asymmetric JWTs\n */\n protected jwks: { keys: JWK[] }\n protected jwks_cached_at: number\n protected autoRefreshToken: boolean\n protected persistSession: boolean\n protected storage: SupportedStorage\n protected memoryStorage: { [key: string]: string } | null = null\n protected stateChangeEmitters: Map = new Map()\n protected autoRefreshTicker: ReturnType | null = null\n protected visibilityChangedCallback: (() => Promise) | null = null\n protected refreshingDeferred: Deferred | null = null\n /**\n * Keeps track of the async client initialization.\n * When null or not yet resolved the auth state is `unknown`\n * Once resolved the the auth state is known and it's save to call any further client methods.\n * Keep extra care to never reject or throw uncaught errors\n */\n protected initializePromise: Promise | null = null\n protected detectSessionInUrl = true\n protected url: string\n protected headers: {\n [key: string]: string\n }\n protected hasCustomAuthorizationHeader = false\n protected suppressGetSessionWarning = false\n protected fetch: Fetch\n protected lock: LockFunc\n protected lockAcquired = false\n protected pendingInLock: Promise[] = []\n\n /**\n * Used to broadcast state change events to other tabs listening.\n */\n protected broadcastChannel: BroadcastChannel | null = null\n\n protected logDebugMessages: boolean\n protected logger: (message: string, ...args: any[]) => void = console.log\n\n /**\n * Create a new client for use in the browser.\n */\n constructor(options: GoTrueClientOptions) {\n this.instanceID = GoTrueClient.nextInstanceID\n GoTrueClient.nextInstanceID += 1\n\n if (this.instanceID > 0 && isBrowser()) {\n console.warn(\n 'Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.'\n )\n }\n\n const settings = { ...DEFAULT_OPTIONS, ...options }\n\n this.logDebugMessages = !!settings.debug\n if (typeof settings.debug === 'function') {\n this.logger = settings.debug\n }\n\n this.persistSession = settings.persistSession\n this.storageKey = settings.storageKey\n this.autoRefreshToken = settings.autoRefreshToken\n this.admin = new GoTrueAdminApi({\n url: settings.url,\n headers: settings.headers,\n fetch: settings.fetch,\n })\n\n this.url = settings.url\n this.headers = settings.headers\n this.fetch = resolveFetch(settings.fetch)\n this.lock = settings.lock || lockNoOp\n this.detectSessionInUrl = settings.detectSessionInUrl\n this.flowType = settings.flowType\n this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader\n\n if (settings.lock) {\n this.lock = settings.lock\n } else if (isBrowser() && globalThis?.navigator?.locks) {\n this.lock = navigatorLock\n } else {\n this.lock = lockNoOp\n }\n this.jwks = { keys: [] }\n this.jwks_cached_at = Number.MIN_SAFE_INTEGER\n this.mfa = {\n verify: this._verify.bind(this),\n enroll: this._enroll.bind(this),\n unenroll: this._unenroll.bind(this),\n challenge: this._challenge.bind(this),\n listFactors: this._listFactors.bind(this),\n challengeAndVerify: this._challengeAndVerify.bind(this),\n getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this),\n }\n\n if (this.persistSession) {\n if (settings.storage) {\n this.storage = settings.storage\n } else {\n if (supportsLocalStorage()) {\n this.storage = localStorageAdapter\n } else {\n this.memoryStorage = {}\n this.storage = memoryLocalStorageAdapter(this.memoryStorage)\n }\n }\n } else {\n this.memoryStorage = {}\n this.storage = memoryLocalStorageAdapter(this.memoryStorage)\n }\n\n if (isBrowser() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) {\n try {\n this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey)\n } catch (e: any) {\n console.error(\n 'Failed to create a new BroadcastChannel, multi-tab state changes will not be available',\n e\n )\n }\n\n this.broadcastChannel?.addEventListener('message', async (event) => {\n this._debug('received broadcast notification from other tab or client', event)\n\n await this._notifyAllSubscribers(event.data.event, event.data.session, false) // broadcast = false so we don't get an endless loop of messages\n })\n }\n\n this.initialize()\n }\n\n private _debug(...args: any[]): GoTrueClient {\n if (this.logDebugMessages) {\n this.logger(\n `GoTrueClient@${this.instanceID} (${version}) ${new Date().toISOString()}`,\n ...args\n )\n }\n\n return this\n }\n\n /**\n * Initializes the client session either from the url or from storage.\n * This method is automatically called when instantiating the client, but should also be called\n * manually when checking for an error from an auth redirect (oauth, magiclink, password recovery, etc).\n */\n async initialize(): Promise {\n if (this.initializePromise) {\n return await this.initializePromise\n }\n\n this.initializePromise = (async () => {\n return await this._acquireLock(-1, async () => {\n return await this._initialize()\n })\n })()\n\n return await this.initializePromise\n }\n\n /**\n * IMPORTANT:\n * 1. Never throw in this method, as it is called from the constructor\n * 2. Never return a session from this method as it would be cached over\n * the whole lifetime of the client\n */\n private async _initialize(): Promise {\n try {\n const params = parseParametersFromURL(window.location.href)\n let callbackUrlType = 'none'\n if (this._isImplicitGrantCallback(params)) {\n callbackUrlType = 'implicit'\n } else if (await this._isPKCECallback(params)) {\n callbackUrlType = 'pkce'\n }\n\n /**\n * Attempt to get the session from the URL only if these conditions are fulfilled\n *\n * Note: If the URL isn't one of the callback url types (implicit or pkce),\n * then there could be an existing session so we don't want to prematurely remove it\n */\n if (isBrowser() && this.detectSessionInUrl && callbackUrlType !== 'none') {\n const { data, error } = await this._getSessionFromURL(params, callbackUrlType)\n if (error) {\n this._debug('#_initialize()', 'error detecting session from URL', error)\n\n if (isAuthImplicitGrantRedirectError(error)) {\n const errorCode = error.details?.code\n if (\n errorCode === 'identity_already_exists' ||\n errorCode === 'identity_not_found' ||\n errorCode === 'single_identity_not_deletable'\n ) {\n return { error }\n }\n }\n\n // failed login attempt via url,\n // remove old session as in verifyOtp, signUp and signInWith*\n await this._removeSession()\n\n return { error }\n }\n\n const { session, redirectType } = data\n\n this._debug(\n '#_initialize()',\n 'detected session in URL',\n session,\n 'redirect type',\n redirectType\n )\n\n await this._saveSession(session)\n\n setTimeout(async () => {\n if (redirectType === 'recovery') {\n await this._notifyAllSubscribers('PASSWORD_RECOVERY', session)\n } else {\n await this._notifyAllSubscribers('SIGNED_IN', session)\n }\n }, 0)\n\n return { error: null }\n }\n // no login attempt via callback url try to recover session from storage\n await this._recoverAndRefresh()\n return { error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { error }\n }\n\n return {\n error: new AuthUnknownError('Unexpected error during initialization', error),\n }\n } finally {\n await this._handleVisibilityChange()\n this._debug('#_initialize()', 'end')\n }\n }\n\n /**\n * Creates a new anonymous user.\n *\n * @returns A session where the is_anonymous claim in the access token JWT set to true\n */\n async signInAnonymously(credentials?: SignInAnonymouslyCredentials): Promise {\n try {\n const res = await _request(this.fetch, 'POST', `${this.url}/signup`, {\n headers: this.headers,\n body: {\n data: credentials?.options?.data ?? {},\n gotrue_meta_security: { captcha_token: credentials?.options?.captchaToken },\n },\n xform: _sessionResponse,\n })\n const { data, error } = res\n\n if (error || !data) {\n return { data: { user: null, session: null }, error: error }\n }\n const session: Session | null = data.session\n const user: User | null = data.user\n\n if (data.session) {\n await this._saveSession(data.session)\n await this._notifyAllSubscribers('SIGNED_IN', session)\n }\n\n return { data: { user, session }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Creates a new user.\n *\n * Be aware that if a user account exists in the system you may get back an\n * error message that attempts to hide this information from the user.\n * This method has support for PKCE via email signups. The PKCE flow cannot be used when autoconfirm is enabled.\n *\n * @returns A logged-in session if the server has \"autoconfirm\" ON\n * @returns A user if the server has \"autoconfirm\" OFF\n */\n async signUp(credentials: SignUpWithPasswordCredentials): Promise {\n try {\n let res: AuthResponse\n if ('email' in credentials) {\n const { email, password, options } = credentials\n let codeChallenge: string | null = null\n let codeChallengeMethod: string | null = null\n if (this.flowType === 'pkce') {\n ;[codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(\n this.storage,\n this.storageKey\n )\n }\n res = await _request(this.fetch, 'POST', `${this.url}/signup`, {\n headers: this.headers,\n redirectTo: options?.emailRedirectTo,\n body: {\n email,\n password,\n data: options?.data ?? {},\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n },\n xform: _sessionResponse,\n })\n } else if ('phone' in credentials) {\n const { phone, password, options } = credentials\n res = await _request(this.fetch, 'POST', `${this.url}/signup`, {\n headers: this.headers,\n body: {\n phone,\n password,\n data: options?.data ?? {},\n channel: options?.channel ?? 'sms',\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n },\n xform: _sessionResponse,\n })\n } else {\n throw new AuthInvalidCredentialsError(\n 'You must provide either an email or phone number and a password'\n )\n }\n\n const { data, error } = res\n\n if (error || !data) {\n return { data: { user: null, session: null }, error: error }\n }\n\n const session: Session | null = data.session\n const user: User | null = data.user\n\n if (data.session) {\n await this._saveSession(data.session)\n await this._notifyAllSubscribers('SIGNED_IN', session)\n }\n\n return { data: { user, session }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Log in an existing user with an email and password or phone and password.\n *\n * Be aware that you may get back an error message that will not distinguish\n * between the cases where the account does not exist or that the\n * email/phone and password combination is wrong or that the account can only\n * be accessed via social login.\n */\n async signInWithPassword(\n credentials: SignInWithPasswordCredentials\n ): Promise {\n try {\n let res: AuthResponsePassword\n if ('email' in credentials) {\n const { email, password, options } = credentials\n res = await _request(this.fetch, 'POST', `${this.url}/token?grant_type=password`, {\n headers: this.headers,\n body: {\n email,\n password,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n },\n xform: _sessionResponsePassword,\n })\n } else if ('phone' in credentials) {\n const { phone, password, options } = credentials\n res = await _request(this.fetch, 'POST', `${this.url}/token?grant_type=password`, {\n headers: this.headers,\n body: {\n phone,\n password,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n },\n xform: _sessionResponsePassword,\n })\n } else {\n throw new AuthInvalidCredentialsError(\n 'You must provide either an email or phone number and a password'\n )\n }\n const { data, error } = res\n\n if (error) {\n return { data: { user: null, session: null }, error }\n } else if (!data || !data.session || !data.user) {\n return { data: { user: null, session: null }, error: new AuthInvalidTokenResponseError() }\n }\n if (data.session) {\n await this._saveSession(data.session)\n await this._notifyAllSubscribers('SIGNED_IN', data.session)\n }\n return {\n data: {\n user: data.user,\n session: data.session,\n ...(data.weak_password ? { weakPassword: data.weak_password } : null),\n },\n error,\n }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n throw error\n }\n }\n\n /**\n * Log in an existing user via a third-party provider.\n * This method supports the PKCE flow.\n */\n async signInWithOAuth(credentials: SignInWithOAuthCredentials): Promise {\n return await this._handleProviderSignIn(credentials.provider, {\n redirectTo: credentials.options?.redirectTo,\n scopes: credentials.options?.scopes,\n queryParams: credentials.options?.queryParams,\n skipBrowserRedirect: credentials.options?.skipBrowserRedirect,\n })\n }\n\n /**\n * Log in an existing user by exchanging an Auth Code issued during the PKCE flow.\n */\n async exchangeCodeForSession(authCode: string): Promise {\n await this.initializePromise\n\n return this._acquireLock(-1, async () => {\n return this._exchangeCodeForSession(authCode)\n })\n }\n\n private async _exchangeCodeForSession(authCode: string): Promise<\n | {\n data: { session: Session; user: User; redirectType: string | null }\n error: null\n }\n | { data: { session: null; user: null; redirectType: null }; error: AuthError }\n > {\n const storageItem = await getItemAsync(this.storage, `${this.storageKey}-code-verifier`)\n const [codeVerifier, redirectType] = ((storageItem ?? '') as string).split('/')\n\n try {\n const { data, error } = await _request(\n this.fetch,\n 'POST',\n `${this.url}/token?grant_type=pkce`,\n {\n headers: this.headers,\n body: {\n auth_code: authCode,\n code_verifier: codeVerifier,\n },\n xform: _sessionResponse,\n }\n )\n await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`)\n if (error) {\n throw error\n }\n if (!data || !data.session || !data.user) {\n return {\n data: { user: null, session: null, redirectType: null },\n error: new AuthInvalidTokenResponseError(),\n }\n }\n if (data.session) {\n await this._saveSession(data.session)\n await this._notifyAllSubscribers('SIGNED_IN', data.session)\n }\n return { data: { ...data, redirectType: redirectType ?? null }, error }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null, redirectType: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Allows signing in with an OIDC ID token. The authentication provider used\n * should be enabled and configured.\n */\n async signInWithIdToken(credentials: SignInWithIdTokenCredentials): Promise {\n try {\n const { options, provider, token, access_token, nonce } = credentials\n\n const res = await _request(this.fetch, 'POST', `${this.url}/token?grant_type=id_token`, {\n headers: this.headers,\n body: {\n provider,\n id_token: token,\n access_token,\n nonce,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n },\n xform: _sessionResponse,\n })\n\n const { data, error } = res\n if (error) {\n return { data: { user: null, session: null }, error }\n } else if (!data || !data.session || !data.user) {\n return {\n data: { user: null, session: null },\n error: new AuthInvalidTokenResponseError(),\n }\n }\n if (data.session) {\n await this._saveSession(data.session)\n await this._notifyAllSubscribers('SIGNED_IN', data.session)\n }\n return { data, error }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n throw error\n }\n }\n\n /**\n * Log in a user using magiclink or a one-time password (OTP).\n *\n * If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent.\n * If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent.\n * If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins.\n *\n * Be aware that you may get back an error message that will not distinguish\n * between the cases where the account does not exist or, that the account\n * can only be accessed via social login.\n *\n * Do note that you will need to configure a Whatsapp sender on Twilio\n * if you are using phone sign in with the 'whatsapp' channel. The whatsapp\n * channel is not supported on other providers\n * at this time.\n * This method supports PKCE when an email is passed.\n */\n async signInWithOtp(credentials: SignInWithPasswordlessCredentials): Promise {\n try {\n if ('email' in credentials) {\n const { email, options } = credentials\n let codeChallenge: string | null = null\n let codeChallengeMethod: string | null = null\n if (this.flowType === 'pkce') {\n ;[codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(\n this.storage,\n this.storageKey\n )\n }\n const { error } = await _request(this.fetch, 'POST', `${this.url}/otp`, {\n headers: this.headers,\n body: {\n email,\n data: options?.data ?? {},\n create_user: options?.shouldCreateUser ?? true,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n },\n redirectTo: options?.emailRedirectTo,\n })\n return { data: { user: null, session: null }, error }\n }\n if ('phone' in credentials) {\n const { phone, options } = credentials\n const { data, error } = await _request(this.fetch, 'POST', `${this.url}/otp`, {\n headers: this.headers,\n body: {\n phone,\n data: options?.data ?? {},\n create_user: options?.shouldCreateUser ?? true,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n channel: options?.channel ?? 'sms',\n },\n })\n return { data: { user: null, session: null, messageId: data?.message_id }, error }\n }\n throw new AuthInvalidCredentialsError('You must provide either an email or phone number.')\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Log in a user given a User supplied OTP or TokenHash received through mobile or email.\n */\n async verifyOtp(params: VerifyOtpParams): Promise {\n try {\n let redirectTo: string | undefined = undefined\n let captchaToken: string | undefined = undefined\n if ('options' in params) {\n redirectTo = params.options?.redirectTo\n captchaToken = params.options?.captchaToken\n }\n const { data, error } = await _request(this.fetch, 'POST', `${this.url}/verify`, {\n headers: this.headers,\n body: {\n ...params,\n gotrue_meta_security: { captcha_token: captchaToken },\n },\n redirectTo,\n xform: _sessionResponse,\n })\n\n if (error) {\n throw error\n }\n\n if (!data) {\n throw new Error('An error occurred on token verification.')\n }\n\n const session: Session | null = data.session\n const user: User = data.user\n\n if (session?.access_token) {\n await this._saveSession(session as Session)\n await this._notifyAllSubscribers(\n params.type == 'recovery' ? 'PASSWORD_RECOVERY' : 'SIGNED_IN',\n session\n )\n }\n\n return { data: { user, session }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Attempts a single-sign on using an enterprise Identity Provider. A\n * successful SSO attempt will redirect the current page to the identity\n * provider authorization page. The redirect URL is implementation and SSO\n * protocol specific.\n *\n * You can use it by providing a SSO domain. Typically you can extract this\n * domain by asking users for their email address. If this domain is\n * registered on the Auth instance the redirect will use that organization's\n * currently active SSO Identity Provider for the login.\n *\n * If you have built an organization-specific login page, you can use the\n * organization's SSO Identity Provider UUID directly instead.\n */\n async signInWithSSO(params: SignInWithSSO): Promise {\n try {\n let codeChallenge: string | null = null\n let codeChallengeMethod: string | null = null\n if (this.flowType === 'pkce') {\n ;[codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(\n this.storage,\n this.storageKey\n )\n }\n\n return await _request(this.fetch, 'POST', `${this.url}/sso`, {\n body: {\n ...('providerId' in params ? { provider_id: params.providerId } : null),\n ...('domain' in params ? { domain: params.domain } : null),\n redirect_to: params.options?.redirectTo ?? undefined,\n ...(params?.options?.captchaToken\n ? { gotrue_meta_security: { captcha_token: params.options.captchaToken } }\n : null),\n skip_http_redirect: true, // fetch does not handle redirects\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n },\n headers: this.headers,\n xform: _ssoResponse,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n\n /**\n * Sends a reauthentication OTP to the user's email or phone number.\n * Requires the user to be signed-in.\n */\n async reauthenticate(): Promise {\n await this.initializePromise\n\n return await this._acquireLock(-1, async () => {\n return await this._reauthenticate()\n })\n }\n\n private async _reauthenticate(): Promise {\n try {\n return await this._useSession(async (result) => {\n const {\n data: { session },\n error: sessionError,\n } = result\n if (sessionError) throw sessionError\n if (!session) throw new AuthSessionMissingError()\n\n const { error } = await _request(this.fetch, 'GET', `${this.url}/reauthenticate`, {\n headers: this.headers,\n jwt: session.access_token,\n })\n return { data: { user: null, session: null }, error }\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n throw error\n }\n }\n\n /**\n * Resends an existing signup confirmation email, email change email, SMS OTP or phone change OTP.\n */\n async resend(credentials: ResendParams): Promise {\n try {\n const endpoint = `${this.url}/resend`\n if ('email' in credentials) {\n const { email, type, options } = credentials\n const { error } = await _request(this.fetch, 'POST', endpoint, {\n headers: this.headers,\n body: {\n email,\n type,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n },\n redirectTo: options?.emailRedirectTo,\n })\n return { data: { user: null, session: null }, error }\n } else if ('phone' in credentials) {\n const { phone, type, options } = credentials\n const { data, error } = await _request(this.fetch, 'POST', endpoint, {\n headers: this.headers,\n body: {\n phone,\n type,\n gotrue_meta_security: { captcha_token: options?.captchaToken },\n },\n })\n return { data: { user: null, session: null, messageId: data?.message_id }, error }\n }\n throw new AuthInvalidCredentialsError(\n 'You must provide either an email or phone number and a type'\n )\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n throw error\n }\n }\n\n /**\n * Returns the session, refreshing it if necessary.\n *\n * The session returned can be null if the session is not detected which can happen in the event a user is not signed-in or has logged out.\n *\n * **IMPORTANT:** This method loads values directly from the storage attached\n * to the client. If that storage is based on request cookies for example,\n * the values in it may not be authentic and therefore it's strongly advised\n * against using this method and its results in such circumstances. A warning\n * will be emitted if this is detected. Use {@link #getUser()} instead.\n */\n async getSession() {\n await this.initializePromise\n\n const result = await this._acquireLock(-1, async () => {\n return this._useSession(async (result) => {\n return result\n })\n })\n\n return result\n }\n\n /**\n * Acquires a global lock based on the storage key.\n */\n private async _acquireLock(acquireTimeout: number, fn: () => Promise): Promise {\n this._debug('#_acquireLock', 'begin', acquireTimeout)\n\n try {\n if (this.lockAcquired) {\n const last = this.pendingInLock.length\n ? this.pendingInLock[this.pendingInLock.length - 1]\n : Promise.resolve()\n\n const result = (async () => {\n await last\n return await fn()\n })()\n\n this.pendingInLock.push(\n (async () => {\n try {\n await result\n } catch (e: any) {\n // we just care if it finished\n }\n })()\n )\n\n return result\n }\n\n return await this.lock(`lock:${this.storageKey}`, acquireTimeout, async () => {\n this._debug('#_acquireLock', 'lock acquired for storage key', this.storageKey)\n\n try {\n this.lockAcquired = true\n\n const result = fn()\n\n this.pendingInLock.push(\n (async () => {\n try {\n await result\n } catch (e: any) {\n // we just care if it finished\n }\n })()\n )\n\n await result\n\n // keep draining the queue until there's nothing to wait on\n while (this.pendingInLock.length) {\n const waitOn = [...this.pendingInLock]\n\n await Promise.all(waitOn)\n\n this.pendingInLock.splice(0, waitOn.length)\n }\n\n return await result\n } finally {\n this._debug('#_acquireLock', 'lock released for storage key', this.storageKey)\n\n this.lockAcquired = false\n }\n })\n } finally {\n this._debug('#_acquireLock', 'end')\n }\n }\n\n /**\n * Use instead of {@link #getSession} inside the library. It is\n * semantically usually what you want, as getting a session involves some\n * processing afterwards that requires only one client operating on the\n * session at once across multiple tabs or processes.\n */\n private async _useSession(\n fn: (\n result:\n | {\n data: {\n session: Session\n }\n error: null\n }\n | {\n data: {\n session: null\n }\n error: AuthError\n }\n | {\n data: {\n session: null\n }\n error: null\n }\n ) => Promise\n ): Promise {\n this._debug('#_useSession', 'begin')\n\n try {\n // the use of __loadSession here is the only correct use of the function!\n const result = await this.__loadSession()\n\n return await fn(result)\n } finally {\n this._debug('#_useSession', 'end')\n }\n }\n\n /**\n * NEVER USE DIRECTLY!\n *\n * Always use {@link #_useSession}.\n */\n private async __loadSession(): Promise<\n | {\n data: {\n session: Session\n }\n error: null\n }\n | {\n data: {\n session: null\n }\n error: AuthError\n }\n | {\n data: {\n session: null\n }\n error: null\n }\n > {\n this._debug('#__loadSession()', 'begin')\n\n if (!this.lockAcquired) {\n this._debug('#__loadSession()', 'used outside of an acquired lock!', new Error().stack)\n }\n\n try {\n let currentSession: Session | null = null\n\n const maybeSession = await getItemAsync(this.storage, this.storageKey)\n\n this._debug('#getSession()', 'session from storage', maybeSession)\n\n if (maybeSession !== null) {\n if (this._isValidSession(maybeSession)) {\n currentSession = maybeSession\n } else {\n this._debug('#getSession()', 'session from storage is not valid')\n await this._removeSession()\n }\n }\n\n if (!currentSession) {\n return { data: { session: null }, error: null }\n }\n\n // A session is considered expired before the access token _actually_\n // expires. When the autoRefreshToken option is off (or when the tab is\n // in the background), very eager users of getSession() -- like\n // realtime-js -- might send a valid JWT which will expire by the time it\n // reaches the server.\n const hasExpired = currentSession.expires_at\n ? currentSession.expires_at * 1000 - Date.now() < EXPIRY_MARGIN_MS\n : false\n\n this._debug(\n '#__loadSession()',\n `session has${hasExpired ? '' : ' not'} expired`,\n 'expires_at',\n currentSession.expires_at\n )\n\n if (!hasExpired) {\n if (this.storage.isServer) {\n let suppressWarning = this.suppressGetSessionWarning\n const proxySession: Session = new Proxy(currentSession, {\n get: (target: any, prop: string, receiver: any) => {\n if (!suppressWarning && prop === 'user') {\n // only show warning when the user object is being accessed from the server\n console.warn(\n 'Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server.'\n )\n suppressWarning = true // keeps this proxy instance from logging additional warnings\n this.suppressGetSessionWarning = true // keeps this client's future proxy instances from warning\n }\n return Reflect.get(target, prop, receiver)\n },\n })\n currentSession = proxySession\n }\n\n return { data: { session: currentSession }, error: null }\n }\n\n const { session, error } = await this._callRefreshToken(currentSession.refresh_token)\n if (error) {\n return { data: { session: null }, error }\n }\n\n return { data: { session }, error: null }\n } finally {\n this._debug('#__loadSession()', 'end')\n }\n }\n\n /**\n * Gets the current user details if there is an existing session. This method\n * performs a network request to the Supabase Auth server, so the returned\n * value is authentic and can be used to base authorization rules on.\n *\n * @param jwt Takes in an optional access token JWT. If no JWT is provided, the JWT from the current session is used.\n */\n async getUser(jwt?: string): Promise {\n if (jwt) {\n return await this._getUser(jwt)\n }\n\n await this.initializePromise\n\n const result = await this._acquireLock(-1, async () => {\n return await this._getUser()\n })\n\n return result\n }\n\n private async _getUser(jwt?: string): Promise {\n try {\n if (jwt) {\n return await _request(this.fetch, 'GET', `${this.url}/user`, {\n headers: this.headers,\n jwt: jwt,\n xform: _userResponse,\n })\n }\n\n return await this._useSession(async (result) => {\n const { data, error } = result\n if (error) {\n throw error\n }\n\n // returns an error if there is no access_token or custom authorization header\n if (!data.session?.access_token && !this.hasCustomAuthorizationHeader) {\n return { data: { user: null }, error: new AuthSessionMissingError() }\n }\n\n return await _request(this.fetch, 'GET', `${this.url}/user`, {\n headers: this.headers,\n jwt: data.session?.access_token ?? undefined,\n xform: _userResponse,\n })\n })\n } catch (error) {\n if (isAuthError(error)) {\n if (isAuthSessionMissingError(error)) {\n // JWT contains a `session_id` which does not correspond to an active\n // session in the database, indicating the user is signed out.\n\n await this._removeSession()\n await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`)\n }\n\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Updates user data for a logged in user.\n */\n async updateUser(\n attributes: UserAttributes,\n options: {\n emailRedirectTo?: string | undefined\n } = {}\n ): Promise {\n await this.initializePromise\n\n return await this._acquireLock(-1, async () => {\n return await this._updateUser(attributes, options)\n })\n }\n\n protected async _updateUser(\n attributes: UserAttributes,\n options: {\n emailRedirectTo?: string | undefined\n } = {}\n ): Promise {\n try {\n return await this._useSession(async (result) => {\n const { data: sessionData, error: sessionError } = result\n if (sessionError) {\n throw sessionError\n }\n if (!sessionData.session) {\n throw new AuthSessionMissingError()\n }\n const session: Session = sessionData.session\n let codeChallenge: string | null = null\n let codeChallengeMethod: string | null = null\n if (this.flowType === 'pkce' && attributes.email != null) {\n ;[codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(\n this.storage,\n this.storageKey\n )\n }\n\n const { data, error: userError } = await _request(this.fetch, 'PUT', `${this.url}/user`, {\n headers: this.headers,\n redirectTo: options?.emailRedirectTo,\n body: {\n ...attributes,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n },\n jwt: session.access_token,\n xform: _userResponse,\n })\n if (userError) throw userError\n session.user = data.user as User\n await this._saveSession(session)\n await this._notifyAllSubscribers('USER_UPDATED', session)\n return { data: { user: session.user }, error: null }\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Sets the session data from the current session. If the current session is expired, setSession will take care of refreshing it to obtain a new session.\n * If the refresh token or access token in the current session is invalid, an error will be thrown.\n * @param currentSession The current session that minimally contains an access token and refresh token.\n */\n async setSession(currentSession: {\n access_token: string\n refresh_token: string\n }): Promise {\n await this.initializePromise\n\n return await this._acquireLock(-1, async () => {\n return await this._setSession(currentSession)\n })\n }\n\n protected async _setSession(currentSession: {\n access_token: string\n refresh_token: string\n }): Promise {\n try {\n if (!currentSession.access_token || !currentSession.refresh_token) {\n throw new AuthSessionMissingError()\n }\n\n const timeNow = Date.now() / 1000\n let expiresAt = timeNow\n let hasExpired = true\n let session: Session | null = null\n const { payload } = decodeJWT(currentSession.access_token)\n if (payload.exp) {\n expiresAt = payload.exp\n hasExpired = expiresAt <= timeNow\n }\n\n if (hasExpired) {\n const { session: refreshedSession, error } = await this._callRefreshToken(\n currentSession.refresh_token\n )\n if (error) {\n return { data: { user: null, session: null }, error: error }\n }\n\n if (!refreshedSession) {\n return { data: { user: null, session: null }, error: null }\n }\n session = refreshedSession\n } else {\n const { data, error } = await this._getUser(currentSession.access_token)\n if (error) {\n throw error\n }\n session = {\n access_token: currentSession.access_token,\n refresh_token: currentSession.refresh_token,\n user: data.user,\n token_type: 'bearer',\n expires_in: expiresAt - timeNow,\n expires_at: expiresAt,\n }\n await this._saveSession(session)\n await this._notifyAllSubscribers('SIGNED_IN', session)\n }\n\n return { data: { user: session.user, session }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { session: null, user: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Returns a new session, regardless of expiry status.\n * Takes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession().\n * If the current session's refresh token is invalid, an error will be thrown.\n * @param currentSession The current session. If passed in, it must contain a refresh token.\n */\n async refreshSession(currentSession?: { refresh_token: string }): Promise {\n await this.initializePromise\n\n return await this._acquireLock(-1, async () => {\n return await this._refreshSession(currentSession)\n })\n }\n\n protected async _refreshSession(currentSession?: {\n refresh_token: string\n }): Promise {\n try {\n return await this._useSession(async (result) => {\n if (!currentSession) {\n const { data, error } = result\n if (error) {\n throw error\n }\n\n currentSession = data.session ?? undefined\n }\n\n if (!currentSession?.refresh_token) {\n throw new AuthSessionMissingError()\n }\n\n const { session, error } = await this._callRefreshToken(currentSession.refresh_token)\n if (error) {\n return { data: { user: null, session: null }, error: error }\n }\n\n if (!session) {\n return { data: { user: null, session: null }, error: null }\n }\n\n return { data: { user: session.user, session }, error: null }\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { user: null, session: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Gets the session data from a URL string\n */\n private async _getSessionFromURL(\n params: { [parameter: string]: string },\n callbackUrlType: string\n ): Promise<\n | {\n data: { session: Session; redirectType: string | null }\n error: null\n }\n | { data: { session: null; redirectType: null }; error: AuthError }\n > {\n try {\n if (!isBrowser()) throw new AuthImplicitGrantRedirectError('No browser detected.')\n\n // If there's an error in the URL, it doesn't matter what flow it is, we just return the error.\n if (params.error || params.error_description || params.error_code) {\n // The error class returned implies that the redirect is from an implicit grant flow\n // but it could also be from a redirect error from a PKCE flow.\n throw new AuthImplicitGrantRedirectError(\n params.error_description || 'Error in URL with unspecified error_description',\n {\n error: params.error || 'unspecified_error',\n code: params.error_code || 'unspecified_code',\n }\n )\n }\n\n // Checks for mismatches between the flowType initialised in the client and the URL parameters\n switch (callbackUrlType) {\n case 'implicit':\n if (this.flowType === 'pkce') {\n throw new AuthPKCEGrantCodeExchangeError('Not a valid PKCE flow url.')\n }\n break\n case 'pkce':\n if (this.flowType === 'implicit') {\n throw new AuthImplicitGrantRedirectError('Not a valid implicit grant flow url.')\n }\n break\n default:\n // there's no mismatch so we continue\n }\n\n // Since this is a redirect for PKCE, we attempt to retrieve the code from the URL for the code exchange\n if (callbackUrlType === 'pkce') {\n this._debug('#_initialize()', 'begin', 'is PKCE flow', true)\n if (!params.code) throw new AuthPKCEGrantCodeExchangeError('No code detected.')\n const { data, error } = await this._exchangeCodeForSession(params.code)\n if (error) throw error\n\n const url = new URL(window.location.href)\n url.searchParams.delete('code')\n\n window.history.replaceState(window.history.state, '', url.toString())\n\n return { data: { session: data.session, redirectType: null }, error: null }\n }\n\n const {\n provider_token,\n provider_refresh_token,\n access_token,\n refresh_token,\n expires_in,\n expires_at,\n token_type,\n } = params\n\n if (!access_token || !expires_in || !refresh_token || !token_type) {\n throw new AuthImplicitGrantRedirectError('No session defined in URL')\n }\n\n const timeNow = Math.round(Date.now() / 1000)\n const expiresIn = parseInt(expires_in)\n let expiresAt = timeNow + expiresIn\n\n if (expires_at) {\n expiresAt = parseInt(expires_at)\n }\n\n const actuallyExpiresIn = expiresAt - timeNow\n if (actuallyExpiresIn * 1000 <= AUTO_REFRESH_TICK_DURATION_MS) {\n console.warn(\n `@supabase/gotrue-js: Session as retrieved from URL expires in ${actuallyExpiresIn}s, should have been closer to ${expiresIn}s`\n )\n }\n\n const issuedAt = expiresAt - expiresIn\n if (timeNow - issuedAt >= 120) {\n console.warn(\n '@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale',\n issuedAt,\n expiresAt,\n timeNow\n )\n } else if (timeNow - issuedAt < 0) {\n console.warn(\n '@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew',\n issuedAt,\n expiresAt,\n timeNow\n )\n }\n\n const { data, error } = await this._getUser(access_token)\n if (error) throw error\n\n const session: Session = {\n provider_token,\n provider_refresh_token,\n access_token,\n expires_in: expiresIn,\n expires_at: expiresAt,\n refresh_token,\n token_type,\n user: data.user,\n }\n\n // Remove tokens from URL\n window.location.hash = ''\n this._debug('#_getSessionFromURL()', 'clearing window.location.hash')\n\n return { data: { session, redirectType: params.type }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { session: null, redirectType: null }, error }\n }\n\n throw error\n }\n }\n\n /**\n * Checks if the current URL contains parameters given by an implicit oauth grant flow (https://www.rfc-editor.org/rfc/rfc6749.html#section-4.2)\n */\n private _isImplicitGrantCallback(params: { [parameter: string]: string }): boolean {\n return Boolean(params.access_token || params.error_description)\n }\n\n /**\n * Checks if the current URL and backing storage contain parameters given by a PKCE flow\n */\n private async _isPKCECallback(params: { [parameter: string]: string }): Promise {\n const currentStorageContent = await getItemAsync(\n this.storage,\n `${this.storageKey}-code-verifier`\n )\n\n return !!(params.code && currentStorageContent)\n }\n\n /**\n * Inside a browser context, `signOut()` will remove the logged in user from the browser session and log them out - removing all items from localstorage and then trigger a `\"SIGNED_OUT\"` event.\n *\n * For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`.\n * There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.\n *\n * If using `others` scope, no `SIGNED_OUT` event is fired!\n */\n async signOut(options: SignOut = { scope: 'global' }): Promise<{ error: AuthError | null }> {\n await this.initializePromise\n\n return await this._acquireLock(-1, async () => {\n return await this._signOut(options)\n })\n }\n\n protected async _signOut(\n { scope }: SignOut = { scope: 'global' }\n ): Promise<{ error: AuthError | null }> {\n return await this._useSession(async (result) => {\n const { data, error: sessionError } = result\n if (sessionError) {\n return { error: sessionError }\n }\n const accessToken = data.session?.access_token\n if (accessToken) {\n const { error } = await this.admin.signOut(accessToken, scope)\n if (error) {\n // ignore 404s since user might not exist anymore\n // ignore 401s since an invalid or expired JWT should sign out the current session\n if (\n !(\n isAuthApiError(error) &&\n (error.status === 404 || error.status === 401 || error.status === 403)\n )\n ) {\n return { error }\n }\n }\n }\n if (scope !== 'others') {\n await this._removeSession()\n await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`)\n }\n return { error: null }\n })\n }\n\n /**\n * Receive a notification every time an auth event happens.\n * @param callback A callback function to be invoked when an auth event happens.\n */\n onAuthStateChange(\n callback: (event: AuthChangeEvent, session: Session | null) => void | Promise\n ): {\n data: { subscription: Subscription }\n } {\n const id: string = uuid()\n const subscription: Subscription = {\n id,\n callback,\n unsubscribe: () => {\n this._debug('#unsubscribe()', 'state change callback with id removed', id)\n\n this.stateChangeEmitters.delete(id)\n },\n }\n\n this._debug('#onAuthStateChange()', 'registered callback with id', id)\n\n this.stateChangeEmitters.set(id, subscription)\n ;(async () => {\n await this.initializePromise\n\n await this._acquireLock(-1, async () => {\n this._emitInitialSession(id)\n })\n })()\n\n return { data: { subscription } }\n }\n\n private async _emitInitialSession(id: string): Promise {\n return await this._useSession(async (result) => {\n try {\n const {\n data: { session },\n error,\n } = result\n if (error) throw error\n\n await this.stateChangeEmitters.get(id)?.callback('INITIAL_SESSION', session)\n this._debug('INITIAL_SESSION', 'callback id', id, 'session', session)\n } catch (err) {\n await this.stateChangeEmitters.get(id)?.callback('INITIAL_SESSION', null)\n this._debug('INITIAL_SESSION', 'callback id', id, 'error', err)\n console.error(err)\n }\n })\n }\n\n /**\n * Sends a password reset request to an email address. This method supports the PKCE flow.\n *\n * @param email The email address of the user.\n * @param options.redirectTo The URL to send the user to after they click the password reset link.\n * @param options.captchaToken Verification token received when the user completes the captcha on the site.\n */\n async resetPasswordForEmail(\n email: string,\n options: {\n redirectTo?: string\n captchaToken?: string\n } = {}\n ): Promise<\n | {\n data: {}\n error: null\n }\n | { data: null; error: AuthError }\n > {\n let codeChallenge: string | null = null\n let codeChallengeMethod: string | null = null\n\n if (this.flowType === 'pkce') {\n ;[codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(\n this.storage,\n this.storageKey,\n true // isPasswordRecovery\n )\n }\n try {\n return await _request(this.fetch, 'POST', `${this.url}/recover`, {\n body: {\n email,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n gotrue_meta_security: { captcha_token: options.captchaToken },\n },\n headers: this.headers,\n redirectTo: options.redirectTo,\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n\n throw error\n }\n }\n\n /**\n * Gets all the identities linked to a user.\n */\n async getUserIdentities(): Promise<\n | {\n data: {\n identities: UserIdentity[]\n }\n error: null\n }\n | { data: null; error: AuthError }\n > {\n try {\n const { data, error } = await this.getUser()\n if (error) throw error\n return { data: { identities: data.user.identities ?? [] }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n /**\n * Links an oauth identity to an existing user.\n * This method supports the PKCE flow.\n */\n async linkIdentity(credentials: SignInWithOAuthCredentials): Promise {\n try {\n const { data, error } = await this._useSession(async (result) => {\n const { data, error } = result\n if (error) throw error\n const url: string = await this._getUrlForProvider(\n `${this.url}/user/identities/authorize`,\n credentials.provider,\n {\n redirectTo: credentials.options?.redirectTo,\n scopes: credentials.options?.scopes,\n queryParams: credentials.options?.queryParams,\n skipBrowserRedirect: true,\n }\n )\n return await _request(this.fetch, 'GET', url, {\n headers: this.headers,\n jwt: data.session?.access_token ?? undefined,\n })\n })\n if (error) throw error\n if (isBrowser() && !credentials.options?.skipBrowserRedirect) {\n window.location.assign(data?.url)\n }\n return { data: { provider: credentials.provider, url: data?.url }, error: null }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: { provider: credentials.provider, url: null }, error }\n }\n throw error\n }\n }\n\n /**\n * Unlinks an identity from a user by deleting it. The user will no longer be able to sign in with that identity once it's unlinked.\n */\n async unlinkIdentity(identity: UserIdentity): Promise<\n | {\n data: {}\n error: null\n }\n | { data: null; error: AuthError }\n > {\n try {\n return await this._useSession(async (result) => {\n const { data, error } = result\n if (error) {\n throw error\n }\n return await _request(\n this.fetch,\n 'DELETE',\n `${this.url}/user/identities/${identity.identity_id}`,\n {\n headers: this.headers,\n jwt: data.session?.access_token ?? undefined,\n }\n )\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n\n /**\n * Generates a new JWT.\n * @param refreshToken A valid refresh token that was returned on login.\n */\n private async _refreshAccessToken(refreshToken: string): Promise {\n const debugName = `#_refreshAccessToken(${refreshToken.substring(0, 5)}...)`\n this._debug(debugName, 'begin')\n\n try {\n const startedAt = Date.now()\n\n // will attempt to refresh the token with exponential backoff\n return await retryable(\n async (attempt) => {\n if (attempt > 0) {\n await sleep(200 * Math.pow(2, attempt - 1)) // 200, 400, 800, ...\n }\n\n this._debug(debugName, 'refreshing attempt', attempt)\n\n return await _request(this.fetch, 'POST', `${this.url}/token?grant_type=refresh_token`, {\n body: { refresh_token: refreshToken },\n headers: this.headers,\n xform: _sessionResponse,\n })\n },\n (attempt, error) => {\n const nextBackOffInterval = 200 * Math.pow(2, attempt)\n return (\n error &&\n isAuthRetryableFetchError(error) &&\n // retryable only if the request can be sent before the backoff overflows the tick duration\n Date.now() + nextBackOffInterval - startedAt < AUTO_REFRESH_TICK_DURATION_MS\n )\n }\n )\n } catch (error) {\n this._debug(debugName, 'error', error)\n\n if (isAuthError(error)) {\n return { data: { session: null, user: null }, error }\n }\n throw error\n } finally {\n this._debug(debugName, 'end')\n }\n }\n\n private _isValidSession(maybeSession: unknown): maybeSession is Session {\n const isValidSession =\n typeof maybeSession === 'object' &&\n maybeSession !== null &&\n 'access_token' in maybeSession &&\n 'refresh_token' in maybeSession &&\n 'expires_at' in maybeSession\n\n return isValidSession\n }\n\n private async _handleProviderSignIn(\n provider: Provider,\n options: {\n redirectTo?: string\n scopes?: string\n queryParams?: { [key: string]: string }\n skipBrowserRedirect?: boolean\n }\n ) {\n const url: string = await this._getUrlForProvider(`${this.url}/authorize`, provider, {\n redirectTo: options.redirectTo,\n scopes: options.scopes,\n queryParams: options.queryParams,\n })\n\n this._debug('#_handleProviderSignIn()', 'provider', provider, 'options', options, 'url', url)\n\n // try to open on the browser\n if (isBrowser() && !options.skipBrowserRedirect) {\n window.location.assign(url)\n }\n\n return { data: { provider, url }, error: null }\n }\n\n /**\n * Recovers the session from LocalStorage and refreshes the token\n * Note: this method is async to accommodate for AsyncStorage e.g. in React native.\n */\n private async _recoverAndRefresh() {\n const debugName = '#_recoverAndRefresh()'\n this._debug(debugName, 'begin')\n\n try {\n const currentSession = await getItemAsync(this.storage, this.storageKey)\n this._debug(debugName, 'session from storage', currentSession)\n\n if (!this._isValidSession(currentSession)) {\n this._debug(debugName, 'session is not valid')\n if (currentSession !== null) {\n await this._removeSession()\n }\n\n return\n }\n\n const expiresWithMargin =\n (currentSession.expires_at ?? Infinity) * 1000 - Date.now() < EXPIRY_MARGIN_MS\n\n this._debug(\n debugName,\n `session has${expiresWithMargin ? '' : ' not'} expired with margin of ${EXPIRY_MARGIN_MS}s`\n )\n\n if (expiresWithMargin) {\n if (this.autoRefreshToken && currentSession.refresh_token) {\n const { error } = await this._callRefreshToken(currentSession.refresh_token)\n\n if (error) {\n console.error(error)\n\n if (!isAuthRetryableFetchError(error)) {\n this._debug(\n debugName,\n 'refresh failed with a non-retryable error, removing the session',\n error\n )\n await this._removeSession()\n }\n }\n }\n } else {\n // no need to persist currentSession again, as we just loaded it from\n // local storage; persisting it again may overwrite a value saved by\n // another client with access to the same local storage\n await this._notifyAllSubscribers('SIGNED_IN', currentSession)\n }\n } catch (err) {\n this._debug(debugName, 'error', err)\n\n console.error(err)\n return\n } finally {\n this._debug(debugName, 'end')\n }\n }\n\n private async _callRefreshToken(refreshToken: string): Promise {\n if (!refreshToken) {\n throw new AuthSessionMissingError()\n }\n\n // refreshing is already in progress\n if (this.refreshingDeferred) {\n return this.refreshingDeferred.promise\n }\n\n const debugName = `#_callRefreshToken(${refreshToken.substring(0, 5)}...)`\n\n this._debug(debugName, 'begin')\n\n try {\n this.refreshingDeferred = new Deferred()\n\n const { data, error } = await this._refreshAccessToken(refreshToken)\n if (error) throw error\n if (!data.session) throw new AuthSessionMissingError()\n\n await this._saveSession(data.session)\n await this._notifyAllSubscribers('TOKEN_REFRESHED', data.session)\n\n const result = { session: data.session, error: null }\n\n this.refreshingDeferred.resolve(result)\n\n return result\n } catch (error) {\n this._debug(debugName, 'error', error)\n\n if (isAuthError(error)) {\n const result = { session: null, error }\n\n if (!isAuthRetryableFetchError(error)) {\n await this._removeSession()\n }\n\n this.refreshingDeferred?.resolve(result)\n\n return result\n }\n\n this.refreshingDeferred?.reject(error)\n throw error\n } finally {\n this.refreshingDeferred = null\n this._debug(debugName, 'end')\n }\n }\n\n private async _notifyAllSubscribers(\n event: AuthChangeEvent,\n session: Session | null,\n broadcast = true\n ) {\n const debugName = `#_notifyAllSubscribers(${event})`\n this._debug(debugName, 'begin', session, `broadcast = ${broadcast}`)\n\n try {\n if (this.broadcastChannel && broadcast) {\n this.broadcastChannel.postMessage({ event, session })\n }\n\n const errors: any[] = []\n const promises = Array.from(this.stateChangeEmitters.values()).map(async (x) => {\n try {\n await x.callback(event, session)\n } catch (e: any) {\n errors.push(e)\n }\n })\n\n await Promise.all(promises)\n\n if (errors.length > 0) {\n for (let i = 0; i < errors.length; i += 1) {\n console.error(errors[i])\n }\n\n throw errors[0]\n }\n } finally {\n this._debug(debugName, 'end')\n }\n }\n\n /**\n * set currentSession and currentUser\n * process to _startAutoRefreshToken if possible\n */\n private async _saveSession(session: Session) {\n this._debug('#_saveSession()', session)\n // _saveSession is always called whenever a new session has been acquired\n // so we can safely suppress the warning returned by future getSession calls\n this.suppressGetSessionWarning = true\n await setItemAsync(this.storage, this.storageKey, session)\n }\n\n private async _removeSession() {\n this._debug('#_removeSession()')\n\n await removeItemAsync(this.storage, this.storageKey)\n await this._notifyAllSubscribers('SIGNED_OUT', null)\n }\n\n /**\n * Removes any registered visibilitychange callback.\n *\n * {@see #startAutoRefresh}\n * {@see #stopAutoRefresh}\n */\n private _removeVisibilityChangedCallback() {\n this._debug('#_removeVisibilityChangedCallback()')\n\n const callback = this.visibilityChangedCallback\n this.visibilityChangedCallback = null\n\n try {\n if (callback && isBrowser() && window?.removeEventListener) {\n window.removeEventListener('visibilitychange', callback)\n }\n } catch (e) {\n console.error('removing visibilitychange callback failed', e)\n }\n }\n\n /**\n * This is the private implementation of {@link #startAutoRefresh}. Use this\n * within the library.\n */\n private async _startAutoRefresh() {\n await this._stopAutoRefresh()\n\n this._debug('#_startAutoRefresh()')\n\n const ticker = setInterval(() => this._autoRefreshTokenTick(), AUTO_REFRESH_TICK_DURATION_MS)\n this.autoRefreshTicker = ticker\n\n if (ticker && typeof ticker === 'object' && typeof ticker.unref === 'function') {\n // ticker is a NodeJS Timeout object that has an `unref` method\n // https://nodejs.org/api/timers.html#timeoutunref\n // When auto refresh is used in NodeJS (like for testing) the\n // `setInterval` is preventing the process from being marked as\n // finished and tests run endlessly. This can be prevented by calling\n // `unref()` on the returned object.\n ticker.unref()\n // @ts-expect-error TS has no context of Deno\n } else if (typeof Deno !== 'undefined' && typeof Deno.unrefTimer === 'function') {\n // similar like for NodeJS, but with the Deno API\n // https://deno.land/api@latest?unstable&s=Deno.unrefTimer\n // @ts-expect-error TS has no context of Deno\n Deno.unrefTimer(ticker)\n }\n\n // run the tick immediately, but in the next pass of the event loop so that\n // #_initialize can be allowed to complete without recursively waiting on\n // itself\n setTimeout(async () => {\n await this.initializePromise\n await this._autoRefreshTokenTick()\n }, 0)\n }\n\n /**\n * This is the private implementation of {@link #stopAutoRefresh}. Use this\n * within the library.\n */\n private async _stopAutoRefresh() {\n this._debug('#_stopAutoRefresh()')\n\n const ticker = this.autoRefreshTicker\n this.autoRefreshTicker = null\n\n if (ticker) {\n clearInterval(ticker)\n }\n }\n\n /**\n * Starts an auto-refresh process in the background. The session is checked\n * every few seconds. Close to the time of expiration a process is started to\n * refresh the session. If refreshing fails it will be retried for as long as\n * necessary.\n *\n * If you set the {@link GoTrueClientOptions#autoRefreshToken} you don't need\n * to call this function, it will be called for you.\n *\n * On browsers the refresh process works only when the tab/window is in the\n * foreground to conserve resources as well as prevent race conditions and\n * flooding auth with requests. If you call this method any managed\n * visibility change callback will be removed and you must manage visibility\n * changes on your own.\n *\n * On non-browser platforms the refresh process works *continuously* in the\n * background, which may not be desirable. You should hook into your\n * platform's foreground indication mechanism and call these methods\n * appropriately to conserve resources.\n *\n * {@see #stopAutoRefresh}\n */\n async startAutoRefresh() {\n this._removeVisibilityChangedCallback()\n await this._startAutoRefresh()\n }\n\n /**\n * Stops an active auto refresh process running in the background (if any).\n *\n * If you call this method any managed visibility change callback will be\n * removed and you must manage visibility changes on your own.\n *\n * See {@link #startAutoRefresh} for more details.\n */\n async stopAutoRefresh() {\n this._removeVisibilityChangedCallback()\n await this._stopAutoRefresh()\n }\n\n /**\n * Runs the auto refresh token tick.\n */\n private async _autoRefreshTokenTick() {\n this._debug('#_autoRefreshTokenTick()', 'begin')\n\n try {\n await this._acquireLock(0, async () => {\n try {\n const now = Date.now()\n\n try {\n return await this._useSession(async (result) => {\n const {\n data: { session },\n } = result\n\n if (!session || !session.refresh_token || !session.expires_at) {\n this._debug('#_autoRefreshTokenTick()', 'no session')\n return\n }\n\n // session will expire in this many ticks (or has already expired if <= 0)\n const expiresInTicks = Math.floor(\n (session.expires_at * 1000 - now) / AUTO_REFRESH_TICK_DURATION_MS\n )\n\n this._debug(\n '#_autoRefreshTokenTick()',\n `access token expires in ${expiresInTicks} ticks, a tick lasts ${AUTO_REFRESH_TICK_DURATION_MS}ms, refresh threshold is ${AUTO_REFRESH_TICK_THRESHOLD} ticks`\n )\n\n if (expiresInTicks <= AUTO_REFRESH_TICK_THRESHOLD) {\n await this._callRefreshToken(session.refresh_token)\n }\n })\n } catch (e: any) {\n console.error(\n 'Auto refresh tick failed with error. This is likely a transient error.',\n e\n )\n }\n } finally {\n this._debug('#_autoRefreshTokenTick()', 'end')\n }\n })\n } catch (e: any) {\n if (e.isAcquireTimeout || e instanceof LockAcquireTimeoutError) {\n this._debug('auto refresh token tick lock not available')\n } else {\n throw e\n }\n }\n }\n\n /**\n * Registers callbacks on the browser / platform, which in-turn run\n * algorithms when the browser window/tab are in foreground. On non-browser\n * platforms it assumes always foreground.\n */\n private async _handleVisibilityChange() {\n this._debug('#_handleVisibilityChange()')\n\n if (!isBrowser() || !window?.addEventListener) {\n if (this.autoRefreshToken) {\n // in non-browser environments the refresh token ticker runs always\n this.startAutoRefresh()\n }\n\n return false\n }\n\n try {\n this.visibilityChangedCallback = async () => await this._onVisibilityChanged(false)\n\n window?.addEventListener('visibilitychange', this.visibilityChangedCallback)\n\n // now immediately call the visbility changed callback to setup with the\n // current visbility state\n await this._onVisibilityChanged(true) // initial call\n } catch (error) {\n console.error('_handleVisibilityChange', error)\n }\n }\n\n /**\n * Callback registered with `window.addEventListener('visibilitychange')`.\n */\n private async _onVisibilityChanged(calledFromInitialize: boolean) {\n const methodName = `#_onVisibilityChanged(${calledFromInitialize})`\n this._debug(methodName, 'visibilityState', document.visibilityState)\n\n if (document.visibilityState === 'visible') {\n if (this.autoRefreshToken) {\n // in browser environments the refresh token ticker runs only on focused tabs\n // which prevents race conditions\n this._startAutoRefresh()\n }\n\n if (!calledFromInitialize) {\n // called when the visibility has changed, i.e. the browser\n // transitioned from hidden -> visible so we need to see if the session\n // should be recovered immediately... but to do that we need to acquire\n // the lock first asynchronously\n await this.initializePromise\n\n await this._acquireLock(-1, async () => {\n if (document.visibilityState !== 'visible') {\n this._debug(\n methodName,\n 'acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting'\n )\n\n // visibility has changed while waiting for the lock, abort\n return\n }\n\n // recover the session\n await this._recoverAndRefresh()\n })\n }\n } else if (document.visibilityState === 'hidden') {\n if (this.autoRefreshToken) {\n this._stopAutoRefresh()\n }\n }\n }\n\n /**\n * Generates the relevant login URL for a third-party provider.\n * @param options.redirectTo A URL or mobile address to send the user to after they are confirmed.\n * @param options.scopes A space-separated list of scopes granted to the OAuth application.\n * @param options.queryParams An object of key-value pairs containing query parameters granted to the OAuth application.\n */\n private async _getUrlForProvider(\n url: string,\n provider: Provider,\n options: {\n redirectTo?: string\n scopes?: string\n queryParams?: { [key: string]: string }\n skipBrowserRedirect?: boolean\n }\n ) {\n const urlParams: string[] = [`provider=${encodeURIComponent(provider)}`]\n if (options?.redirectTo) {\n urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`)\n }\n if (options?.scopes) {\n urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`)\n }\n if (this.flowType === 'pkce') {\n const [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(\n this.storage,\n this.storageKey\n )\n\n const flowParams = new URLSearchParams({\n code_challenge: `${encodeURIComponent(codeChallenge)}`,\n code_challenge_method: `${encodeURIComponent(codeChallengeMethod)}`,\n })\n urlParams.push(flowParams.toString())\n }\n if (options?.queryParams) {\n const query = new URLSearchParams(options.queryParams)\n urlParams.push(query.toString())\n }\n if (options?.skipBrowserRedirect) {\n urlParams.push(`skip_http_redirect=${options.skipBrowserRedirect}`)\n }\n\n return `${url}?${urlParams.join('&')}`\n }\n\n private async _unenroll(params: MFAUnenrollParams): Promise {\n try {\n return await this._useSession(async (result) => {\n const { data: sessionData, error: sessionError } = result\n if (sessionError) {\n return { data: null, error: sessionError }\n }\n\n return await _request(this.fetch, 'DELETE', `${this.url}/factors/${params.factorId}`, {\n headers: this.headers,\n jwt: sessionData?.session?.access_token,\n })\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n\n /**\n * {@see GoTrueMFAApi#enroll}\n */\n private async _enroll(params: MFAEnrollTOTPParams): Promise\n private async _enroll(params: MFAEnrollPhoneParams): Promise\n private async _enroll(params: MFAEnrollParams): Promise {\n try {\n return await this._useSession(async (result) => {\n const { data: sessionData, error: sessionError } = result\n if (sessionError) {\n return { data: null, error: sessionError }\n }\n\n const body = {\n friendly_name: params.friendlyName,\n factor_type: params.factorType,\n ...(params.factorType === 'phone' ? { phone: params.phone } : { issuer: params.issuer }),\n }\n\n const { data, error } = await _request(this.fetch, 'POST', `${this.url}/factors`, {\n body,\n headers: this.headers,\n jwt: sessionData?.session?.access_token,\n })\n\n if (error) {\n return { data: null, error }\n }\n\n if (params.factorType === 'totp' && data?.totp?.qr_code) {\n data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`\n }\n\n return { data, error: null }\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n\n /**\n * {@see GoTrueMFAApi#verify}\n */\n private async _verify(params: MFAVerifyParams): Promise {\n return this._acquireLock(-1, async () => {\n try {\n return await this._useSession(async (result) => {\n const { data: sessionData, error: sessionError } = result\n if (sessionError) {\n return { data: null, error: sessionError }\n }\n\n const { data, error } = await _request(\n this.fetch,\n 'POST',\n `${this.url}/factors/${params.factorId}/verify`,\n {\n body: { code: params.code, challenge_id: params.challengeId },\n headers: this.headers,\n jwt: sessionData?.session?.access_token,\n }\n )\n if (error) {\n return { data: null, error }\n }\n\n await this._saveSession({\n expires_at: Math.round(Date.now() / 1000) + data.expires_in,\n ...data,\n })\n await this._notifyAllSubscribers('MFA_CHALLENGE_VERIFIED', data)\n\n return { data, error }\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n })\n }\n\n /**\n * {@see GoTrueMFAApi#challenge}\n */\n private async _challenge(params: MFAChallengeParams): Promise {\n return this._acquireLock(-1, async () => {\n try {\n return await this._useSession(async (result) => {\n const { data: sessionData, error: sessionError } = result\n if (sessionError) {\n return { data: null, error: sessionError }\n }\n\n return await _request(\n this.fetch,\n 'POST',\n `${this.url}/factors/${params.factorId}/challenge`,\n {\n body: { channel: params.channel },\n headers: this.headers,\n jwt: sessionData?.session?.access_token,\n }\n )\n })\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n })\n }\n\n /**\n * {@see GoTrueMFAApi#challengeAndVerify}\n */\n private async _challengeAndVerify(\n params: MFAChallengeAndVerifyParams\n ): Promise {\n // both _challenge and _verify independently acquire the lock, so no need\n // to acquire it here\n\n const { data: challengeData, error: challengeError } = await this._challenge({\n factorId: params.factorId,\n })\n if (challengeError) {\n return { data: null, error: challengeError }\n }\n\n return await this._verify({\n factorId: params.factorId,\n challengeId: challengeData.id,\n code: params.code,\n })\n }\n\n /**\n * {@see GoTrueMFAApi#listFactors}\n */\n private async _listFactors(): Promise {\n // use #getUser instead of #_getUser as the former acquires a lock\n const {\n data: { user },\n error: userError,\n } = await this.getUser()\n if (userError) {\n return { data: null, error: userError }\n }\n\n const factors = user?.factors || []\n const totp = factors.filter(\n (factor) => factor.factor_type === 'totp' && factor.status === 'verified'\n )\n const phone = factors.filter(\n (factor) => factor.factor_type === 'phone' && factor.status === 'verified'\n )\n\n return {\n data: {\n all: factors,\n totp,\n phone,\n },\n error: null,\n }\n }\n\n /**\n * {@see GoTrueMFAApi#getAuthenticatorAssuranceLevel}\n */\n private async _getAuthenticatorAssuranceLevel(): Promise {\n return this._acquireLock(-1, async () => {\n return await this._useSession(async (result) => {\n const {\n data: { session },\n error: sessionError,\n } = result\n if (sessionError) {\n return { data: null, error: sessionError }\n }\n if (!session) {\n return {\n data: { currentLevel: null, nextLevel: null, currentAuthenticationMethods: [] },\n error: null,\n }\n }\n\n const { payload } = decodeJWT(session.access_token)\n\n let currentLevel: AuthenticatorAssuranceLevels | null = null\n\n if (payload.aal) {\n currentLevel = payload.aal\n }\n\n let nextLevel: AuthenticatorAssuranceLevels | null = currentLevel\n\n const verifiedFactors =\n session.user.factors?.filter((factor: Factor) => factor.status === 'verified') ?? []\n\n if (verifiedFactors.length > 0) {\n nextLevel = 'aal2'\n }\n\n const currentAuthenticationMethods = payload.amr || []\n\n return { data: { currentLevel, nextLevel, currentAuthenticationMethods }, error: null }\n })\n })\n }\n\n private async fetchJwk(kid: string, jwks: { keys: JWK[] } = { keys: [] }): Promise {\n // try fetching from the supplied jwks\n let jwk = jwks.keys.find((key) => key.kid === kid)\n if (jwk) {\n return jwk\n }\n\n // try fetching from cache\n jwk = this.jwks.keys.find((key) => key.kid === kid)\n\n // jwk exists and jwks isn't stale\n if (jwk && this.jwks_cached_at + JWKS_TTL > Date.now()) {\n return jwk\n }\n // jwk isn't cached in memory so we need to fetch it from the well-known endpoint\n const { data, error } = await _request(this.fetch, 'GET', `${this.url}/.well-known/jwks.json`, {\n headers: this.headers,\n })\n if (error) {\n throw error\n }\n if (!data.keys || data.keys.length === 0) {\n throw new AuthInvalidJwtError('JWKS is empty')\n }\n this.jwks = data\n this.jwks_cached_at = Date.now()\n // Find the signing key\n jwk = data.keys.find((key: any) => key.kid === kid)\n if (!jwk) {\n throw new AuthInvalidJwtError('No matching signing key found in JWKS')\n }\n return jwk\n }\n\n /**\n * @experimental This method may change in future versions.\n * @description Gets the claims from a JWT. If the JWT is symmetric JWTs, it will call getUser() to verify against the server. If the JWT is asymmetric, it will be verified against the JWKS using the WebCrypto API.\n */\n async getClaims(\n jwt?: string,\n jwks: { keys: JWK[] } = { keys: [] }\n ): Promise<\n | {\n data: { claims: JwtPayload; header: JwtHeader; signature: Uint8Array }\n error: null\n }\n | { data: null; error: AuthError }\n | { data: null; error: null }\n > {\n try {\n let token = jwt\n if (!token) {\n const { data, error } = await this.getSession()\n if (error || !data.session) {\n return { data: null, error }\n }\n token = data.session.access_token\n }\n\n const {\n header,\n payload,\n signature,\n raw: { header: rawHeader, payload: rawPayload },\n } = decodeJWT(token)\n\n // Reject expired JWTs\n validateExp(payload.exp)\n\n // If symmetric algorithm or WebCrypto API is unavailable, fallback to getUser()\n if (\n !header.kid ||\n header.alg === 'HS256' ||\n !('crypto' in globalThis && 'subtle' in globalThis.crypto)\n ) {\n const { error } = await this.getUser(token)\n if (error) {\n throw error\n }\n // getUser succeeds so the claims in the JWT can be trusted\n return {\n data: {\n claims: payload,\n header,\n signature,\n },\n error: null,\n }\n }\n\n const algorithm = getAlgorithm(header.alg)\n const signingKey = await this.fetchJwk(header.kid, jwks)\n\n // Convert JWK to CryptoKey\n const publicKey = await crypto.subtle.importKey('jwk', signingKey, algorithm, true, [\n 'verify',\n ])\n\n // Verify the signature\n const isValid = await crypto.subtle.verify(\n algorithm,\n publicKey,\n signature,\n stringToUint8Array(`${rawHeader}.${rawPayload}`)\n )\n\n if (!isValid) {\n throw new AuthInvalidJwtError('Invalid JWT signature')\n }\n\n // If verification succeeds, decode and return claims\n return {\n data: {\n claims: payload,\n header,\n signature,\n },\n error: null,\n }\n } catch (error) {\n if (isAuthError(error)) {\n return { data: null, error }\n }\n throw error\n }\n }\n}\n", "import GoTrueAdminApi from './GoTrueAdminApi'\n\nconst AuthAdminApi = GoTrueAdminApi\n\nexport default AuthAdminApi\n", "import GoTrueClient from './GoTrueClient'\n\nconst AuthClient = GoTrueClient\n\nexport default AuthClient\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map", "import GoTrueAdminApi from './GoTrueAdminApi'\nimport GoTrueClient from './GoTrueClient'\nimport AuthAdminApi from './AuthAdminApi'\nimport AuthClient from './AuthClient'\nexport { GoTrueAdminApi, GoTrueClient, AuthAdminApi, AuthClient }\nexport * from './lib/types'\nexport * from './lib/errors'\nexport {\n navigatorLock,\n NavigatorLockAcquireTimeoutError,\n internals as lockInternals,\n} from './lib/locks'\n", "import { AuthClient } from '@supabase/auth-js'\nimport { SupabaseAuthClientOptions } from './types'\n\nexport class SupabaseAuthClient extends AuthClient {\n constructor(options: SupabaseAuthClientOptions) {\n super(options)\n }\n}\n", "import { FunctionsClient } from '@supabase/functions-js'\nimport { AuthChangeEvent } from '@supabase/auth-js'\nimport {\n PostgrestClient,\n PostgrestFilterBuilder,\n PostgrestQueryBuilder,\n} from '@supabase/postgrest-js'\nimport {\n RealtimeChannel,\n RealtimeChannelOptions,\n RealtimeClient,\n RealtimeClientOptions,\n} from '@supabase/realtime-js'\nimport { StorageClient as SupabaseStorageClient } from '@supabase/storage-js'\nimport {\n DEFAULT_GLOBAL_OPTIONS,\n DEFAULT_DB_OPTIONS,\n DEFAULT_AUTH_OPTIONS,\n DEFAULT_REALTIME_OPTIONS,\n} from './lib/constants'\nimport { fetchWithAuth } from './lib/fetch'\nimport { ensureTrailingSlash, applySettingDefaults } from './lib/helpers'\nimport { SupabaseAuthClient } from './lib/SupabaseAuthClient'\nimport { Fetch, GenericSchema, SupabaseClientOptions, SupabaseAuthClientOptions } from './lib/types'\n\n/**\n * Supabase Client.\n *\n * An isomorphic Javascript client for interacting with Postgres.\n */\nexport default class SupabaseClient<\n Database = any,\n SchemaName extends string & keyof Database = 'public' extends keyof Database\n ? 'public'\n : string & keyof Database,\n Schema extends GenericSchema = Database[SchemaName] extends GenericSchema\n ? Database[SchemaName]\n : any\n> {\n /**\n * Supabase Auth allows you to create and manage user sessions for access to data that is secured by access policies.\n */\n auth: SupabaseAuthClient\n realtime: RealtimeClient\n\n protected realtimeUrl: URL\n protected authUrl: URL\n protected storageUrl: URL\n protected functionsUrl: URL\n protected rest: PostgrestClient\n protected storageKey: string\n protected fetch?: Fetch\n protected changedAccessToken?: string\n protected accessToken?: () => Promise\n\n protected headers: Record\n\n /**\n * Create a new client for use in the browser.\n * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard.\n * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard.\n * @param options.db.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase.\n * @param options.auth.autoRefreshToken Set to \"true\" if you want to automatically refresh the token before expiring.\n * @param options.auth.persistSession Set to \"true\" if you want to automatically save the user session into local storage.\n * @param options.auth.detectSessionInUrl Set to \"true\" if you want to automatically detects OAuth grants in the URL and signs in the user.\n * @param options.realtime Options passed along to realtime-js constructor.\n * @param options.global.fetch A custom fetch implementation.\n * @param options.global.headers Any additional headers to send with each network request.\n */\n constructor(\n protected supabaseUrl: string,\n protected supabaseKey: string,\n options?: SupabaseClientOptions\n ) {\n if (!supabaseUrl) throw new Error('supabaseUrl is required.')\n if (!supabaseKey) throw new Error('supabaseKey is required.')\n\n const _supabaseUrl = ensureTrailingSlash(supabaseUrl)\n const baseUrl = new URL(_supabaseUrl)\n\n this.realtimeUrl = new URL('realtime/v1', baseUrl)\n this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace('http', 'ws')\n this.authUrl = new URL('auth/v1', baseUrl)\n this.storageUrl = new URL('storage/v1', baseUrl)\n this.functionsUrl = new URL('functions/v1', baseUrl)\n\n // default storage key uses the supabase project ref as a namespace\n const defaultStorageKey = `sb-${baseUrl.hostname.split('.')[0]}-auth-token`\n const DEFAULTS = {\n db: DEFAULT_DB_OPTIONS,\n realtime: DEFAULT_REALTIME_OPTIONS,\n auth: { ...DEFAULT_AUTH_OPTIONS, storageKey: defaultStorageKey },\n global: DEFAULT_GLOBAL_OPTIONS,\n }\n\n const settings = applySettingDefaults(options ?? {}, DEFAULTS)\n\n this.storageKey = settings.auth.storageKey ?? ''\n this.headers = settings.global.headers ?? {}\n\n if (!settings.accessToken) {\n this.auth = this._initSupabaseAuthClient(\n settings.auth ?? {},\n this.headers,\n settings.global.fetch\n )\n } else {\n this.accessToken = settings.accessToken\n\n this.auth = new Proxy({} as any, {\n get: (_, prop) => {\n throw new Error(\n `@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(\n prop\n )} is not possible`\n )\n },\n })\n }\n\n this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch)\n this.realtime = this._initRealtimeClient({\n headers: this.headers,\n accessToken: this._getAccessToken.bind(this),\n ...settings.realtime,\n })\n this.rest = new PostgrestClient(new URL('rest/v1', baseUrl).href, {\n headers: this.headers,\n schema: settings.db.schema,\n fetch: this.fetch,\n })\n\n if (!settings.accessToken) {\n this._listenForAuthEvents()\n }\n }\n\n /**\n * Supabase Functions allows you to deploy and invoke edge functions.\n */\n get functions(): FunctionsClient {\n return new FunctionsClient(this.functionsUrl.href, {\n headers: this.headers,\n customFetch: this.fetch,\n })\n }\n\n /**\n * Supabase Storage allows you to manage user-generated content, such as photos or videos.\n */\n get storage(): SupabaseStorageClient {\n return new SupabaseStorageClient(this.storageUrl.href, this.headers, this.fetch)\n }\n\n // NOTE: signatures must be kept in sync with PostgrestClient.from\n from<\n TableName extends string & keyof Schema['Tables'],\n Table extends Schema['Tables'][TableName]\n >(relation: TableName): PostgrestQueryBuilder\n from(\n relation: ViewName\n ): PostgrestQueryBuilder\n /**\n * Perform a query on a table or a view.\n *\n * @param relation - The table or view name to query\n */\n from(relation: string): PostgrestQueryBuilder {\n return this.rest.from(relation)\n }\n\n // NOTE: signatures must be kept in sync with PostgrestClient.schema\n /**\n * Select a schema to query or perform an function (rpc) call.\n *\n * The schema needs to be on the list of exposed schemas inside Supabase.\n *\n * @param schema - The schema to query\n */\n schema(\n schema: DynamicSchema\n ): PostgrestClient<\n Database,\n DynamicSchema,\n Database[DynamicSchema] extends GenericSchema ? Database[DynamicSchema] : any\n > {\n return this.rest.schema(schema)\n }\n\n // NOTE: signatures must be kept in sync with PostgrestClient.rpc\n /**\n * Perform a function call.\n *\n * @param fn - The function name to call\n * @param args - The arguments to pass to the function call\n * @param options - Named parameters\n * @param options.head - When set to `true`, `data` will not be returned.\n * Useful if you only need the count.\n * @param options.get - When set to `true`, the function will be called with\n * read-only access mode.\n * @param options.count - Count algorithm to use to count rows returned by the\n * function. Only applicable for [set-returning\n * functions](https://www.postgresql.org/docs/current/functions-srf.html).\n *\n * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n * hood.\n *\n * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n * statistics under the hood.\n *\n * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n * numbers.\n */\n rpc(\n fn: FnName,\n args: Fn['Args'] = {},\n options: {\n head?: boolean\n get?: boolean\n count?: 'exact' | 'planned' | 'estimated'\n } = {}\n ): PostgrestFilterBuilder<\n Schema,\n Fn['Returns'] extends any[]\n ? Fn['Returns'][number] extends Record\n ? Fn['Returns'][number]\n : never\n : never,\n Fn['Returns'],\n FnName,\n null\n > {\n return this.rest.rpc(fn, args, options)\n }\n\n /**\n * Creates a Realtime channel with Broadcast, Presence, and Postgres Changes.\n *\n * @param {string} name - The name of the Realtime channel.\n * @param {Object} opts - The options to pass to the Realtime channel.\n *\n */\n channel(name: string, opts: RealtimeChannelOptions = { config: {} }): RealtimeChannel {\n return this.realtime.channel(name, opts)\n }\n\n /**\n * Returns all Realtime channels.\n */\n getChannels(): RealtimeChannel[] {\n return this.realtime.getChannels()\n }\n\n /**\n * Unsubscribes and removes Realtime channel from Realtime client.\n *\n * @param {RealtimeChannel} channel - The name of the Realtime channel.\n *\n */\n removeChannel(channel: RealtimeChannel): Promise<'ok' | 'timed out' | 'error'> {\n return this.realtime.removeChannel(channel)\n }\n\n /**\n * Unsubscribes and removes all Realtime channels from Realtime client.\n */\n removeAllChannels(): Promise<('ok' | 'timed out' | 'error')[]> {\n return this.realtime.removeAllChannels()\n }\n\n private async _getAccessToken() {\n if (this.accessToken) {\n return await this.accessToken()\n }\n\n const { data } = await this.auth.getSession()\n\n return data.session?.access_token ?? null\n }\n\n private _initSupabaseAuthClient(\n {\n autoRefreshToken,\n persistSession,\n detectSessionInUrl,\n storage,\n storageKey,\n flowType,\n lock,\n debug,\n }: SupabaseAuthClientOptions,\n headers?: Record,\n fetch?: Fetch\n ) {\n const authHeaders = {\n Authorization: `Bearer ${this.supabaseKey}`,\n apikey: `${this.supabaseKey}`,\n }\n return new SupabaseAuthClient({\n url: this.authUrl.href,\n headers: { ...authHeaders, ...headers },\n storageKey: storageKey,\n autoRefreshToken,\n persistSession,\n detectSessionInUrl,\n storage,\n flowType,\n lock,\n debug,\n fetch,\n // auth checks if there is a custom authorizaiton header using this flag\n // so it knows whether to return an error when getUser is called with no session\n hasCustomAuthorizationHeader: 'Authorization' in this.headers,\n })\n }\n\n private _initRealtimeClient(options: RealtimeClientOptions) {\n return new RealtimeClient(this.realtimeUrl.href, {\n ...options,\n params: { ...{ apikey: this.supabaseKey }, ...options?.params },\n })\n }\n\n private _listenForAuthEvents() {\n let data = this.auth.onAuthStateChange((event, session) => {\n this._handleTokenChanged(event, 'CLIENT', session?.access_token)\n })\n return data\n }\n\n private _handleTokenChanged(\n event: AuthChangeEvent,\n source: 'CLIENT' | 'STORAGE',\n token?: string\n ) {\n if (\n (event === 'TOKEN_REFRESHED' || event === 'SIGNED_IN') &&\n this.changedAccessToken !== token\n ) {\n this.changedAccessToken = token\n } else if (event === 'SIGNED_OUT') {\n this.realtime.setAuth()\n if (source == 'STORAGE') this.auth.signOut()\n this.changedAccessToken = undefined\n }\n }\n}\n", "import SupabaseClient from './SupabaseClient'\nimport type { GenericSchema, SupabaseClientOptions } from './lib/types'\n\nexport * from '@supabase/auth-js'\nexport type { User as AuthUser, Session as AuthSession } from '@supabase/auth-js'\nexport {\n type PostgrestResponse,\n type PostgrestSingleResponse,\n type PostgrestMaybeSingleResponse,\n PostgrestError,\n} from '@supabase/postgrest-js'\nexport {\n FunctionsHttpError,\n FunctionsFetchError,\n FunctionsRelayError,\n FunctionsError,\n type FunctionInvokeOptions,\n FunctionRegion,\n} from '@supabase/functions-js'\nexport * from '@supabase/realtime-js'\nexport { default as SupabaseClient } from './SupabaseClient'\nexport type { SupabaseClientOptions, QueryResult, QueryData, QueryError } from './lib/types'\n\n/**\n * Creates a new Supabase Client.\n */\nexport const createClient = <\n Database = any,\n SchemaName extends string & keyof Database = 'public' extends keyof Database\n ? 'public'\n : string & keyof Database,\n Schema extends GenericSchema = Database[SchemaName] extends GenericSchema\n ? Database[SchemaName]\n : any\n>(\n supabaseUrl: string,\n supabaseKey: string,\n options?: SupabaseClientOptions\n): SupabaseClient => {\n return new SupabaseClient(supabaseUrl, supabaseKey, options)\n}\n", "// netlify/functions/data-handler.js - Consolidated handler for all data operations\n\nimport {\n getSupabaseClient,\n checkRateLimit,\n validateFileUpload,\n validateSurveyCode,\n validateCompletionData,\n isCodeExpired,\n findCompletionFileByCode,\n markCodeAsUsed,\n createResponse,\n createErrorResponse,\n getClientInfo,\n corsHeaders,\n CONFIG\n} from './utils/supabase-utils.js';\n\n/* ------------------------------------------------------------------ */\n/* 1. Main Handler - Route based on action parameter */\n/* ------------------------------------------------------------------ */\nexport const handler = async (event) => {\n const startTime = Date.now();\n const { httpMethod, queryStringParameters } = event;\n const clientInfo = getClientInfo(event);\n \n console.log(`[${new Date().toISOString()}] ${httpMethod} request from ${clientInfo.ip}`);\n\n // Handle CORS preflight for all actions\n if (httpMethod === \"OPTIONS\") {\n // For OPTIONS requests, we need to be more explicit about CORS headers\n return createResponse(200, { message: \"CORS preflight successful\" }, {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization, X-Requested-With, Accept, Origin\",\n \"Access-Control-Max-Age\": \"86400\"\n }, event);\n }\n\n // Only allow POST requests\n if (httpMethod !== \"POST\") {\n return createResponse(405, { \n error: \"Method not allowed\", \n allowed: [\"POST\", \"OPTIONS\"] \n }, {}, event);\n }\n\n // Get action from query parameters\n const action = queryStringParameters?.action;\n if (!action) {\n return createResponse(400, {\n error: \"Missing required 'action' parameter\",\n available_actions: [\"upload-file\", \"store-completion\", \"validate-code\"]\n }, {}, event);\n }\n\n // Rate limiting check\n if (!checkRateLimit(clientInfo.ip)) {\n console.warn(`Rate limit exceeded for IP: ${clientInfo.ip}`);\n return createResponse(429, { \n error: \"Rate limit exceeded\",\n message: \"Too many requests. Please try again later.\",\n retryAfter: CONFIG.RATE_LIMIT_WINDOW / 1000\n }, {}, event);\n }\n\n // Route to appropriate handler\n try {\n let result;\n \n switch (action) {\n case 'upload-file':\n result = await handleFileUpload(event, clientInfo);\n break;\n case 'store-completion':\n result = await handleStoreCompletion(event, clientInfo);\n break;\n case 'validate-code':\n result = await handleValidateCode(event, clientInfo);\n break;\n default:\n return createResponse(400, {\n error: `Unknown action: ${action}`,\n available_actions: [\"upload-file\", \"store-completion\", \"validate-code\"]\n }, {}, event);\n }\n\n const processingTime = Date.now() - startTime;\n console.log(`[${new Date().toISOString()}] ${action} completed successfully (${processingTime}ms)`);\n \n return createResponse(200, {\n ...result,\n processingTime\n }, {}, event);\n\n } catch (error) {\n const processingTime = Date.now() - startTime;\n console.error(`[${new Date().toISOString()}] ${action} error (${processingTime}ms):`, {\n error: error.message,\n stack: error.stack,\n clientIP: clientInfo.ip\n });\n\n return createErrorResponse(error, 500, processingTime, event);\n }\n};\n\n/* ------------------------------------------------------------------ */\n/* 2. File Upload Handler */\n/* ------------------------------------------------------------------ */\nasync function handleFileUpload(event, clientInfo) {\n const { headers, body } = event;\n \n // Validate content type\n const contentType = headers[\"content-type\"] || headers[\"Content-Type\"] || \"\";\n if (!contentType.includes(\"multipart/form-data\")) {\n throw new Error(\"Content-Type must be multipart/form-data\");\n }\n \n // Extract boundary\n const boundary = contentType.split(\"boundary=\")[1];\n if (!boundary) {\n throw new Error(\"Missing multipart boundary\");\n }\n \n // Parse multipart data\n const bodyBuffer = Buffer.from(body, \"base64\");\n const parts = bodyBuffer.toString().split(`--${boundary}`);\n \n // Find file part\n const filePart = parts.find(part => \n part.includes(\"Content-Disposition\") && \n part.includes(\"filename=\")\n );\n \n if (!filePart) {\n throw new Error(\"No file found in request\");\n }\n \n // Extract filename with validation\n const fileNameMatch = filePart.match(/filename=\"(.+?)\"/);\n if (!fileNameMatch) {\n throw new Error(\"Invalid filename format\");\n }\n \n const originalFileName = fileNameMatch[1];\n \n // Extract file data\n const fileDataMatch = filePart.split(\"\\r\\n\\r\\n\");\n if (fileDataMatch.length < 2) {\n throw new Error(\"Invalid file data format\");\n }\n \n const fileData = fileDataMatch[1].split(\"\\r\\n\")[0];\n const fileBuffer = Buffer.from(fileData, \"binary\");\n \n // Determine content type from file extension\n let detectedContentType = 'text/plain'; // Safe default for research data\n const lowerFileName = originalFileName.toLowerCase();\n \n if (lowerFileName.endsWith('.json')) {\n detectedContentType = 'application/json';\n } else if (lowerFileName.endsWith('.csv')) {\n detectedContentType = 'text/csv';\n } else if (lowerFileName.endsWith('.txt')) {\n detectedContentType = 'text/plain';\n }\n \n // Validate file\n const validationErrors = validateFileUpload(originalFileName, fileBuffer, detectedContentType);\n if (validationErrors.length > 0) {\n throw new Error(`Validation failed: ${validationErrors.join(', ')}`);\n }\n \n // Extract user ID from filename for additional validation\n // Support two formats:\n // 1. Task files: {platform_prefix}_{userId}_{taskId}.ext (e.g., i_abc123_1.csv)\n // 2. Form files: {userId}_{formType}.ext (e.g., abc123_consent.json)\n \n let userId;\n const taskFileMatch = originalFileName.match(/^[a-z]_([a-f0-9]{8,32})_/);\n const formFileMatch = originalFileName.match(/^([a-f0-9]{8,32})_(consent|demographics|start_time|completion)/);\n \n if (taskFileMatch) {\n userId = taskFileMatch[1];\n } else if (formFileMatch) {\n userId = formFileMatch[1];\n } else {\n throw new Error(\"Invalid filename format - expected: {platform_prefix}_{userId}_{taskId}.ext or {userId}_{formType}.ext\");\n }\n \n // Use original filename as-is (frontend already generates correct format)\n const secureFileName = originalFileName;\n \n // Upload to Supabase\n const supabase = getSupabaseClient();\n const { error } = await supabase.storage\n .from(\"data-collection-files\")\n .upload(`uploads/${secureFileName}`, fileBuffer, {\n contentType: detectedContentType,\n upsert: true, // Allow overwriting for legitimate retries\n cacheControl: '3600'\n });\n \n if (error) {\n console.error('Supabase upload error:', error);\n throw new Error(`Upload failed: ${error.message}`);\n }\n \n const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${secureFileName}`;\n \n return {\n success: true,\n url: publicUrl,\n fileName: secureFileName,\n originalName: originalFileName,\n size: fileBuffer.length\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* 3. Store Completion Handler */\n/* ------------------------------------------------------------------ */\nasync function handleStoreCompletion(event, clientInfo) {\n const { body } = event;\n \n if (!body) {\n throw new Error('Request body is required');\n }\n\n const completionData = JSON.parse(body);\n\n // Validate completion data\n const validationErrors = validateCompletionData(completionData);\n if (validationErrors.length > 0) {\n throw new Error(`Validation failed: ${validationErrors.join(', ')}`);\n }\n\n // Ensure required fields are set correctly\n const finalCompletionData = {\n completion_timestamp: new Date().toISOString(),\n user_id: completionData.user_id,\n study_version: completionData.study_version || '1.0',\n completion_status: 'success',\n survey_code: completionData.survey_code.toUpperCase(),\n code_used: false,\n code_used_timestamp: null,\n mturk_worker_id: null,\n code_expires_at: new Date(Date.now() + (CONFIG.CODE_EXPIRY_HOURS * 60 * 60 * 1000)).toISOString(),\n client_info: {\n ip_address: clientInfo.ip,\n user_agent: clientInfo.userAgent,\n stored_at: new Date().toISOString()\n }\n };\n\n // Generate filename using simple format\n const fileName = `${completionData.user_id}_completion.json`;\n\n // Convert to JSON blob\n const jsonBlob = new Blob([JSON.stringify(finalCompletionData, null, 2)], {\n type: 'application/json'\n });\n\n // Upload to Supabase Storage\n const supabase = getSupabaseClient();\n const { error: uploadError } = await supabase.storage\n .from('data-collection-files')\n .upload(`uploads/${fileName}`, jsonBlob, {\n contentType: 'application/json',\n upsert: true, // Allow overwriting for legitimate retries/refreshes\n cacheControl: '3600'\n });\n\n if (uploadError) {\n console.error('Supabase upload error:', uploadError);\n throw new Error(`Upload failed: ${uploadError.message}`);\n }\n\n const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${fileName}`;\n \n return {\n success: true,\n message: \"Completion data stored successfully\",\n survey_code: finalCompletionData.survey_code,\n user_id: finalCompletionData.user_id,\n file_name: fileName,\n expires_at: finalCompletionData.code_expires_at,\n url: publicUrl\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* 4. Validate Code Handler */\n/* ------------------------------------------------------------------ */\nasync function handleValidateCode(event, clientInfo) {\n const { body } = event;\n \n if (!body) {\n throw new Error('Request body is required');\n }\n\n const requestData = JSON.parse(body);\n const { code, workerInfo } = requestData;\n\n if (!code || typeof code !== 'string') {\n throw new Error('Survey code is required');\n }\n\n const surveyCode = code.trim().toUpperCase();\n\n // Validate code format\n if (!validateSurveyCode(surveyCode)) {\n return {\n valid: false,\n used: false,\n expired: false,\n message: \"Invalid code format. Expected format: TASK-YYYYMMDD-XXXX-XXXXXX\"\n };\n }\n\n // Search for the completion file with this code\n const completionFile = await findCompletionFileByCode(surveyCode);\n\n if (!completionFile) {\n return {\n valid: false,\n used: false,\n expired: false,\n message: \"Code not found. Please check your code and try again.\"\n };\n }\n\n // Check if code has already been used\n if (completionFile.data.code_used === true) {\n return {\n valid: true,\n used: true,\n expired: false,\n message: \"This code has already been used and cannot be reused.\",\n used_at: completionFile.data.code_used_timestamp\n };\n }\n\n // Check if code has expired\n const expired = isCodeExpired(completionFile.data.completion_timestamp);\n if (expired) {\n return {\n valid: true,\n used: false,\n expired: true,\n message: `Code has expired. Codes are valid for ${CONFIG.CODE_EXPIRY_HOURS} hours after completion.`\n };\n }\n\n // Code is valid and unused - mark it as used\n await markCodeAsUsed(completionFile.filePath, completionFile.data, {\n workerId: workerInfo?.workerId,\n userAgent: clientInfo.userAgent,\n ipAddress: clientInfo.ip\n });\n\n return {\n valid: true,\n used: false,\n expired: false,\n message: \"Code is valid! You may proceed with your submission.\",\n validated_at: new Date().toISOString(),\n user_id: completionFile.data.user_id,\n completed_at: completionFile.data.completion_timestamp\n };\n}", "// netlify/functions/utils/supabase-utils.js - Shared utilities for Supabase operations\n\nimport { createClient } from \"@supabase/supabase-js\";\nimport crypto from 'crypto';\n\n/* ------------------------------------------------------------------ */\n/* 1. Configuration and Constants */\n/* ------------------------------------------------------------------ */\nexport const CONFIG = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB limit\n ALLOWED_MIME_TYPES: [\n 'application/json',\n 'text/csv',\n 'text/plain'\n ],\n RATE_LIMIT_WINDOW: 60 * 1000, // 1 minute\n RATE_LIMIT_MAX_REQUESTS: 10, // max requests per window\n CODE_EXPIRY_HOURS: 48, // codes expire after 48 hours\n};\n\n// Rate limiting storage (in production, use Redis or similar)\nconst rateLimitStore = new Map();\n\n/* ------------------------------------------------------------------ */\n/* 2. Supabase client initialization */\n/* ------------------------------------------------------------------ */\nlet supabase;\ntry {\n if (!process.env.SUPABASE_URL || !process.env.SUPABASE_KEY) {\n throw new Error('Missing required Supabase environment variables');\n }\n \n supabase = createClient(\n process.env.SUPABASE_URL,\n process.env.SUPABASE_KEY\n );\n} catch (error) {\n console.error('Failed to initialize Supabase client:', error);\n}\n\nexport function getSupabaseClient() {\n if (!supabase) {\n throw new Error(\"Supabase client not initialized\");\n }\n return supabase;\n}\n\n/* ------------------------------------------------------------------ */\n/* 3. CORS Configuration */\n/* ------------------------------------------------------------------ */\n// Allow multiple origins for production deployment flexibility\nconst getAllowedOrigin = (requestOrigin) => {\n const allowedOrigins = [\n 'https://fakeprofiledetection.github.io',\n 'https://melodious-squirrel-b0930c.netlify.app',\n 'http://localhost:3999',\n 'http://localhost:8888'\n ];\n \n // Handle undefined/null origin and return appropriate value\n if (!requestOrigin) {\n return '*';\n }\n \n // For production debugging, be more permissive temporarily\n if (requestOrigin.includes('github.io') || requestOrigin.includes('netlify.app')) {\n return requestOrigin;\n }\n \n return allowedOrigins.includes(requestOrigin) ? requestOrigin : '*';\n};\n\nexport const corsHeaders = {\n \"Access-Control-Allow-Origin\": \"*\", // Will be dynamically set in createResponse\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization, X-Requested-With, Accept, Origin\",\n \"Access-Control-Max-Age\": \"86400\",\n \"Access-Control-Allow-Credentials\": \"false\",\n \"Content-Type\": \"application/json\"\n};\n\n/* ------------------------------------------------------------------ */\n/* 4. Rate Limiting */\n/* ------------------------------------------------------------------ */\nexport function checkRateLimit(clientIP, maxRequests = CONFIG.RATE_LIMIT_MAX_REQUESTS) {\n const now = Date.now();\n const windowStart = now - CONFIG.RATE_LIMIT_WINDOW;\n \n // Clean old entries\n for (const [ip, requests] of rateLimitStore.entries()) {\n const filteredRequests = requests.filter(time => time > windowStart);\n if (filteredRequests.length === 0) {\n rateLimitStore.delete(ip);\n } else {\n rateLimitStore.set(ip, filteredRequests);\n }\n }\n \n // Check current IP\n const requests = rateLimitStore.get(clientIP) || [];\n const recentRequests = requests.filter(time => time > windowStart);\n \n if (recentRequests.length >= maxRequests) {\n return false;\n }\n \n // Add current request\n recentRequests.push(now);\n rateLimitStore.set(clientIP, recentRequests);\n \n return true;\n}\n\n/* ------------------------------------------------------------------ */\n/* 5. Validation Utilities */\n/* ------------------------------------------------------------------ */\nexport function validateFileUpload(fileName, fileBuffer, contentType) {\n const errors = [];\n \n // File size validation\n if (fileBuffer.length > CONFIG.MAX_FILE_SIZE) {\n errors.push(`File size exceeds limit of ${CONFIG.MAX_FILE_SIZE / 1024 / 1024}MB`);\n }\n \n // File name validation\n if (!fileName || fileName.length > 255) {\n errors.push('Invalid file name');\n }\n \n // File name sanitization check\n const sanitizedName = fileName.replace(/[^a-zA-Z0-9._-]/g, '');\n if (sanitizedName !== fileName) {\n errors.push('File name contains invalid characters');\n }\n \n // MIME type validation\n if (!CONFIG.ALLOWED_MIME_TYPES.includes(contentType)) {\n errors.push(`File type not allowed. Allowed types: ${CONFIG.ALLOWED_MIME_TYPES.join(', ')}`);\n }\n \n // Content validation for JSON files\n if (contentType === 'application/json') {\n try {\n JSON.parse(fileBuffer.toString());\n } catch (e) {\n errors.push('Invalid JSON content');\n }\n }\n \n // Check for suspicious content patterns\n const fileContent = fileBuffer.toString().toLowerCase();\n const suspiciousPatterns = [\n ' expiryTime;\n}\n\nexport async function findCompletionFileByCode(surveyCode) {\n const supabase = getSupabaseClient();\n \n try {\n // List all files in the uploads directory\n const { data: files, error: listError } = await supabase.storage\n .from('data-collection-files')\n .list('uploads', {\n limit: 1000,\n search: '_completion.json'\n });\n\n if (listError) {\n throw new Error(`Failed to list files: ${listError.message}`);\n }\n\n if (!files || files.length === 0) {\n return null;\n }\n\n // Filter for completion files\n const completionFiles = files.filter(file => \n file.name.endsWith('_completion.json')\n );\n\n console.log(`Searching through ${completionFiles.length} completion files for code: ${surveyCode}`);\n\n // Search through each completion file\n for (const file of completionFiles) {\n try {\n const { data: fileData, error: downloadError } = await supabase.storage\n .from('data-collection-files')\n .download(`uploads/${file.name}`);\n\n if (downloadError) {\n console.warn(`Failed to download ${file.name}:`, downloadError.message);\n continue;\n }\n\n const fileContent = await fileData.text();\n const completionData = JSON.parse(fileContent);\n\n // Check if this file contains the matching survey code\n if (completionData.survey_code === surveyCode) {\n return {\n fileName: file.name,\n filePath: `uploads/${file.name}`,\n data: completionData\n };\n }\n } catch (parseError) {\n console.warn(`Failed to parse ${file.name}:`, parseError.message);\n continue;\n }\n }\n\n return null; // Code not found\n } catch (error) {\n console.error('Error searching for completion file:', error);\n throw error;\n }\n}\n\nexport async function markCodeAsUsed(filePath, completionData, workerInfo = {}) {\n const supabase = getSupabaseClient();\n \n try {\n // Update the completion data\n const updatedData = {\n ...completionData,\n code_used: true,\n code_used_timestamp: new Date().toISOString(),\n mturk_worker_id: workerInfo.workerId || null,\n validation_metadata: {\n validated_at: new Date().toISOString(),\n user_agent: workerInfo.userAgent || null,\n ip_address: workerInfo.ipAddress || null\n }\n };\n\n // Convert back to JSON\n const updatedContent = JSON.stringify(updatedData, null, 2);\n const blob = new Blob([updatedContent], { type: 'application/json' });\n\n // Upload updated file (this will overwrite the existing file)\n const { error: uploadError } = await supabase.storage\n .from('data-collection-files')\n .upload(filePath, blob, {\n contentType: 'application/json',\n upsert: true // Allow overwrite\n });\n\n if (uploadError) {\n throw new Error(`Failed to update completion file: ${uploadError.message}`);\n }\n\n console.log(`Successfully marked code as used in ${filePath}`);\n return true;\n } catch (error) {\n console.error('Error marking code as used:', error);\n throw error;\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 8. Response Utilities */\n/* ------------------------------------------------------------------ */\nexport function createResponse(statusCode, body, headers = {}, event = null) {\n // Dynamic CORS origin based on request\n const requestOrigin = event?.headers?.origin || event?.headers?.Origin;\n const allowedOrigin = getAllowedOrigin(requestOrigin);\n \n // Debug logging for CORS\n console.log('CORS Debug:', {\n requestOrigin,\n allowedOrigin,\n userAgent: event?.headers?.['user-agent']?.substring(0, 100)\n });\n \n const responseHeaders = {\n ...corsHeaders,\n \"Access-Control-Allow-Origin\": allowedOrigin,\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization, X-Requested-With, Accept, Origin\",\n \"Access-Control-Max-Age\": \"86400\",\n ...headers\n };\n \n return {\n statusCode,\n headers: responseHeaders,\n body: JSON.stringify(body)\n };\n}\n\nexport function createErrorResponse(error, statusCode = 500, processingTime = 0, event = null) {\n const isClientError = error.message.includes('Validation failed') ||\n error.message.includes('Rate limit') ||\n error.message.includes('Method not allowed') ||\n error.message.includes('required') ||\n error.message.includes('Invalid');\n\n const userMessage = isClientError ? error.message : 'Service error. Please try again.';\n \n return createResponse(isClientError ? 400 : statusCode, {\n success: false,\n error: userMessage,\n processingTime\n }, {}, event);\n}\n\nexport function getClientInfo(event) {\n const { headers } = event;\n return {\n ip: headers['x-forwarded-for'] || \n headers['x-real-ip'] || \n event.requestContext?.identity?.sourceIp || \n 'unknown',\n userAgent: headers['user-agent'] || null\n };\n}"], + "mappings": "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C,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAS,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,aAAY,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAK,GAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,GAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAS,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAA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AE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI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AAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,C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AC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM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Y,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,MAAK,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,KAAI,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,KAAI,MAAK,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,MAAK,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM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AC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,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AK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAS,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,MAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,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MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAO,IAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,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C,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAO,KAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAA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", + "names": ["exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "res", "exports", "exports", "module", "URL", "exports", "require_lib", "exports", "module", "Blob", "Headers", "Response", "URL", "isDomainOrSubdomain", "isSameProtocol", "fetch", "abort", "abortAndFinalize", "fetch", "exports", "exports", "FunctionRegion", "exports", "exports", "exports", "res", "exports", "exports", "exports", "fetch", "exports", "exports", "exports", "fetch", "exports", "exports", "exports", "exports", "SOCKET_STATES", "CHANNEL_STATES", "CHANNEL_EVENTS", "TRANSPORTS", "CONNECTION_STATE", "exports", "exports", "PostgresTypes", "exports", "exports", "REALTIME_PRESENCE_LISTEN_EVENTS", "exports", "REALTIME_POSTGRES_CHANGES_LISTEN_EVENT", "exports", "REALTIME_LISTEN_TYPES", "REALTIME_SUBSCRIBE_STATES", "_a", "_b", "type", "require_constants", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "data", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "handler", "exports", "module", "exports", "module", "URL", "WebSocket", "handler", "key", "exports", "module", "WebSocket", "err", "exports", "module", "protocol", "exports", "module", "WebSocket", "exports", "module", "WebSocket", "fetch", "exports", "exports", "exports", "fetch", "exports", "exports", "fetch", "exports", "exports", "exports", "fetch", "exports", "fetch", "exports", "require_types", "exports", "exports", "exports", "exports", "exports", "fetch", "exports", "exports", "exports", "exports", "exports", "exports", "fetch", "exports", "fetch", "exports", "exports", "exports", "exports", "result", "error", "data", "_a", "exports", "exports", "exports", "require_types", "exports", "exports", "exports", "fetch", "exports", "exports", "createClient", "requests", "supabase", "supabase"] +} diff --git a/.netlify/state.json b/.netlify/state.json new file mode 100644 index 0000000..8f1991e --- /dev/null +++ b/.netlify/state.json @@ -0,0 +1,20 @@ +{ + "geolocation": { + "data": { + "city": "San Jose", + "country": { + "code": "US", + "name": "United States" + }, + "subdivision": { + "code": "CA", + "name": "California" + }, + "timezone": "America/Los_Angeles", + "latitude": 37.3028, + "longitude": -121.9982, + "postalCode": "95129" + }, + "timestamp": 1751494508237 + } +} \ No newline at end of file diff --git a/netlify.toml b/netlify.toml index 546d66b..650a8b3 100644 --- a/netlify.toml +++ b/netlify.toml @@ -2,11 +2,27 @@ [build] command = "# no build command" functions = "netlify/functions" -publish = "km_headless_testbed/" +publish = "." [functions] node_bundler = "esbuild" +# Add explicit CORS headers for all function responses +[[headers]] +for = "/.netlify/functions/*" + [headers.values] + Access-Control-Allow-Origin = "*" + Access-Control-Allow-Methods = "GET, POST, OPTIONS, PUT, DELETE" + Access-Control-Allow-Headers = "Content-Type, Authorization, X-Requested-With, Accept, Origin, Access-Control-Request-Method, Access-Control-Request-Headers" + Access-Control-Max-Age = "86400" + Access-Control-Allow-Credentials = "false" + +# Configure Netlify Dev to serve everything on port 8888 +[dev] +port = 8888 +targetPort = 8888 +autoLaunch = false + ## Uncomment to use this redirect for Single Page Applications like create-react-app. ## Not needed for static site generators. #[[redirects]] diff --git a/netlify/functions/data-handler.js b/netlify/functions/data-handler.js new file mode 100644 index 0000000..4010cdf --- /dev/null +++ b/netlify/functions/data-handler.js @@ -0,0 +1,372 @@ +// netlify/functions/data-handler.js - Consolidated handler for all data operations + +import { + getSupabaseClient, + checkRateLimit, + validateFileUpload, + validateSurveyCode, + validateCompletionData, + isCodeExpired, + findCompletionFileByCode, + markCodeAsUsed, + createResponse, + createErrorResponse, + getClientInfo, + corsHeaders, + CONFIG +} from './utils/supabase-utils.js'; + +/* ------------------------------------------------------------------ */ +/* 1. Main Handler - Route based on action parameter */ +/* ------------------------------------------------------------------ */ +export const handler = async (event) => { + const startTime = Date.now(); + const { httpMethod, queryStringParameters } = event; + const clientInfo = getClientInfo(event); + + console.log(`[${new Date().toISOString()}] ${httpMethod} request from ${clientInfo.ip}`); + + // Handle CORS preflight for all actions + if (httpMethod === "OPTIONS") { + // For OPTIONS requests, we need to be more explicit about CORS headers + return createResponse(200, { message: "CORS preflight successful" }, { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With, Accept, Origin", + "Access-Control-Max-Age": "86400" + }, event); + } + + // Only allow POST requests + if (httpMethod !== "POST") { + return createResponse(405, { + error: "Method not allowed", + allowed: ["POST", "OPTIONS"] + }, {}, event); + } + + // Get action from query parameters + const action = queryStringParameters?.action; + if (!action) { + return createResponse(400, { + error: "Missing required 'action' parameter", + available_actions: ["upload-file", "store-completion", "validate-code"] + }, {}, event); + } + + // Rate limiting check + if (!checkRateLimit(clientInfo.ip)) { + console.warn(`Rate limit exceeded for IP: ${clientInfo.ip}`); + return createResponse(429, { + error: "Rate limit exceeded", + message: "Too many requests. Please try again later.", + retryAfter: CONFIG.RATE_LIMIT_WINDOW / 1000 + }, {}, event); + } + + // Route to appropriate handler + try { + let result; + + switch (action) { + case 'upload-file': + result = await handleFileUpload(event, clientInfo); + break; + case 'store-completion': + result = await handleStoreCompletion(event, clientInfo); + break; + case 'validate-code': + result = await handleValidateCode(event, clientInfo); + break; + default: + return createResponse(400, { + error: `Unknown action: ${action}`, + available_actions: ["upload-file", "store-completion", "validate-code"] + }, {}, event); + } + + const processingTime = Date.now() - startTime; + console.log(`[${new Date().toISOString()}] ${action} completed successfully (${processingTime}ms)`); + + return createResponse(200, { + ...result, + processingTime + }, {}, event); + + } catch (error) { + const processingTime = Date.now() - startTime; + console.error(`[${new Date().toISOString()}] ${action} error (${processingTime}ms):`, { + error: error.message, + stack: error.stack, + clientIP: clientInfo.ip + }); + + return createErrorResponse(error, 500, processingTime, event); + } +}; + +/* ------------------------------------------------------------------ */ +/* 2. File Upload Handler */ +/* ------------------------------------------------------------------ */ +async function handleFileUpload(event, clientInfo) { + const { headers, body } = event; + + // Validate content type + const contentType = headers["content-type"] || headers["Content-Type"] || ""; + if (!contentType.includes("multipart/form-data")) { + throw new Error("Content-Type must be multipart/form-data"); + } + + // Extract boundary + const boundary = contentType.split("boundary=")[1]; + if (!boundary) { + throw new Error("Missing multipart boundary"); + } + + // Parse multipart data + const bodyBuffer = Buffer.from(body, "base64"); + const parts = bodyBuffer.toString().split(`--${boundary}`); + + // Find file part + const filePart = parts.find(part => + part.includes("Content-Disposition") && + part.includes("filename=") + ); + + if (!filePart) { + throw new Error("No file found in request"); + } + + // Extract filename with validation + const fileNameMatch = filePart.match(/filename="(.+?)"/); + if (!fileNameMatch) { + throw new Error("Invalid filename format"); + } + + const originalFileName = fileNameMatch[1]; + + // Extract file data + const fileDataMatch = filePart.split("\r\n\r\n"); + if (fileDataMatch.length < 2) { + throw new Error("Invalid file data format"); + } + + const fileData = fileDataMatch[1].split("\r\n")[0]; + const fileBuffer = Buffer.from(fileData, "binary"); + + // Determine content type from file extension + let detectedContentType = 'text/plain'; // Safe default for research data + const lowerFileName = originalFileName.toLowerCase(); + + if (lowerFileName.endsWith('.json')) { + detectedContentType = 'application/json'; + } else if (lowerFileName.endsWith('.csv')) { + detectedContentType = 'text/csv'; + } else if (lowerFileName.endsWith('.txt')) { + detectedContentType = 'text/plain'; + } + + // Validate file + const validationErrors = validateFileUpload(originalFileName, fileBuffer, detectedContentType); + if (validationErrors.length > 0) { + throw new Error(`Validation failed: ${validationErrors.join(', ')}`); + } + + // Extract user ID from filename for additional validation + // Support two formats: + // 1. Task files: {platform_prefix}_{userId}_{taskId}.ext (e.g., i_abc123_1.csv) + // 2. Form files: {userId}_{formType}.ext (e.g., abc123_consent.json) + + let userId; + const taskFileMatch = originalFileName.match(/^[a-z]_([a-f0-9]{8,32})_/); + const formFileMatch = originalFileName.match(/^([a-f0-9]{8,32})_(consent|demographics|start_time|completion)/); + + if (taskFileMatch) { + userId = taskFileMatch[1]; + } else if (formFileMatch) { + userId = formFileMatch[1]; + } else { + throw new Error("Invalid filename format - expected: {platform_prefix}_{userId}_{taskId}.ext or {userId}_{formType}.ext"); + } + + // Use original filename as-is (frontend already generates correct format) + const secureFileName = originalFileName; + + // Upload to Supabase + const supabase = getSupabaseClient(); + const { error } = await supabase.storage + .from("data-collection-files") + .upload(`uploads/${secureFileName}`, fileBuffer, { + contentType: detectedContentType, + upsert: true, // Allow overwriting for legitimate retries + cacheControl: '3600' + }); + + if (error) { + console.error('Supabase upload error:', error); + throw new Error(`Upload failed: ${error.message}`); + } + + const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${secureFileName}`; + + return { + success: true, + url: publicUrl, + fileName: secureFileName, + originalName: originalFileName, + size: fileBuffer.length + }; +} + +/* ------------------------------------------------------------------ */ +/* 3. Store Completion Handler */ +/* ------------------------------------------------------------------ */ +async function handleStoreCompletion(event, clientInfo) { + const { body } = event; + + if (!body) { + throw new Error('Request body is required'); + } + + const completionData = JSON.parse(body); + + // Validate completion data + const validationErrors = validateCompletionData(completionData); + if (validationErrors.length > 0) { + throw new Error(`Validation failed: ${validationErrors.join(', ')}`); + } + + // Ensure required fields are set correctly + const finalCompletionData = { + completion_timestamp: new Date().toISOString(), + user_id: completionData.user_id, + study_version: completionData.study_version || '1.0', + completion_status: 'success', + survey_code: completionData.survey_code.toUpperCase(), + code_used: false, + code_used_timestamp: null, + mturk_worker_id: null, + code_expires_at: new Date(Date.now() + (CONFIG.CODE_EXPIRY_HOURS * 60 * 60 * 1000)).toISOString(), + client_info: { + ip_address: clientInfo.ip, + user_agent: clientInfo.userAgent, + stored_at: new Date().toISOString() + } + }; + + // Generate filename using simple format + const fileName = `${completionData.user_id}_completion.json`; + + // Convert to JSON blob + const jsonBlob = new Blob([JSON.stringify(finalCompletionData, null, 2)], { + type: 'application/json' + }); + + // Upload to Supabase Storage + const supabase = getSupabaseClient(); + const { error: uploadError } = await supabase.storage + .from('data-collection-files') + .upload(`uploads/${fileName}`, jsonBlob, { + contentType: 'application/json', + upsert: true, // Allow overwriting for legitimate retries/refreshes + cacheControl: '3600' + }); + + if (uploadError) { + console.error('Supabase upload error:', uploadError); + throw new Error(`Upload failed: ${uploadError.message}`); + } + + const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${fileName}`; + + return { + success: true, + message: "Completion data stored successfully", + survey_code: finalCompletionData.survey_code, + user_id: finalCompletionData.user_id, + file_name: fileName, + expires_at: finalCompletionData.code_expires_at, + url: publicUrl + }; +} + +/* ------------------------------------------------------------------ */ +/* 4. Validate Code Handler */ +/* ------------------------------------------------------------------ */ +async function handleValidateCode(event, clientInfo) { + const { body } = event; + + if (!body) { + throw new Error('Request body is required'); + } + + const requestData = JSON.parse(body); + const { code, workerInfo } = requestData; + + if (!code || typeof code !== 'string') { + throw new Error('Survey code is required'); + } + + const surveyCode = code.trim().toUpperCase(); + + // Validate code format + if (!validateSurveyCode(surveyCode)) { + return { + valid: false, + used: false, + expired: false, + message: "Invalid code format. Expected format: TASK-YYYYMMDD-XXXX-XXXXXX" + }; + } + + // Search for the completion file with this code + const completionFile = await findCompletionFileByCode(surveyCode); + + if (!completionFile) { + return { + valid: false, + used: false, + expired: false, + message: "Code not found. Please check your code and try again." + }; + } + + // Check if code has already been used + if (completionFile.data.code_used === true) { + return { + valid: true, + used: true, + expired: false, + message: "This code has already been used and cannot be reused.", + used_at: completionFile.data.code_used_timestamp + }; + } + + // Check if code has expired + const expired = isCodeExpired(completionFile.data.completion_timestamp); + if (expired) { + return { + valid: true, + used: false, + expired: true, + message: `Code has expired. Codes are valid for ${CONFIG.CODE_EXPIRY_HOURS} hours after completion.` + }; + } + + // Code is valid and unused - mark it as used + await markCodeAsUsed(completionFile.filePath, completionFile.data, { + workerId: workerInfo?.workerId, + userAgent: clientInfo.userAgent, + ipAddress: clientInfo.ip + }); + + return { + valid: true, + used: false, + expired: false, + message: "Code is valid! You may proceed with your submission.", + validated_at: new Date().toISOString(), + user_id: completionFile.data.user_id, + completed_at: completionFile.data.completion_timestamp + }; +} \ No newline at end of file diff --git a/netlify/functions/saver.js b/netlify/functions/saver.js deleted file mode 100644 index 8169c01..0000000 --- a/netlify/functions/saver.js +++ /dev/null @@ -1,375 +0,0 @@ -// netlify/functions/saver.js - Enhanced with security and validation - -import { createClient } from "@supabase/supabase-js"; -import crypto from 'crypto'; - -/* ------------------------------------------------------------------ */ -/* 1. Configuration and Constants */ -/* ------------------------------------------------------------------ */ -const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB limit -const ALLOWED_MIME_TYPES = [ - 'application/json', - 'text/csv', - 'text/plain' -]; - -const RATE_LIMIT_WINDOW = 60 * 1000; // 1 minute -const RATE_LIMIT_MAX_REQUESTS = 10; // max requests per window - -// Rate limiting storage (in production, use Redis or similar) -const rateLimitStore = new Map(); - -/* ------------------------------------------------------------------ */ -/* 2. Supabase client with error handling */ -/* ------------------------------------------------------------------ */ -let supabase; -try { - if (!process.env.SUPABASE_URL || !process.env.SUPABASE_KEY) { - throw new Error('Missing required environment variables'); - } - - supabase = createClient( - process.env.SUPABASE_URL, - process.env.SUPABASE_KEY - ); -} catch (error) { - console.error('Failed to initialize Supabase client:', error); -} - -/* ------------------------------------------------------------------ */ -/* 3. Security and validation utilities */ -/* ------------------------------------------------------------------ */ - -/** - * Rate limiting implementation - */ -function checkRateLimit(clientIP) { - const now = Date.now(); - const windowStart = now - RATE_LIMIT_WINDOW; - - // Clean old entries - for (const [ip, requests] of rateLimitStore.entries()) { - const filteredRequests = requests.filter(time => time > windowStart); - if (filteredRequests.length === 0) { - rateLimitStore.delete(ip); - } else { - rateLimitStore.set(ip, filteredRequests); - } - } - - // Check current IP - const requests = rateLimitStore.get(clientIP) || []; - const recentRequests = requests.filter(time => time > windowStart); - - if (recentRequests.length >= RATE_LIMIT_MAX_REQUESTS) { - return false; - } - - // Add current request - recentRequests.push(now); - rateLimitStore.set(clientIP, recentRequests); - - return true; -} - -/** - * Validate file content and metadata - */ -function validateFile(fileName, fileBuffer, contentType) { - const errors = []; - - // File size validation - if (fileBuffer.length > MAX_FILE_SIZE) { - errors.push(`File size exceeds limit of ${MAX_FILE_SIZE / 1024 / 1024}MB`); - } - - // File name validation - if (!fileName || fileName.length > 255) { - errors.push('Invalid file name'); - } - - // File name sanitization check - const sanitizedName = fileName.replace(/[^a-zA-Z0-9._-]/g, ''); - if (sanitizedName !== fileName) { - errors.push('File name contains invalid characters'); - } - - // MIME type validation - if (!ALLOWED_MIME_TYPES.includes(contentType)) { - errors.push(`File type not allowed. Allowed types: ${ALLOWED_MIME_TYPES.join(', ')}`); - } - - // Content validation for JSON files - if (contentType === 'application/json') { - try { - JSON.parse(fileBuffer.toString()); - } catch (e) { - errors.push('Invalid JSON content'); - } - } - - // Check for suspicious content patterns - const fileContent = fileBuffer.toString().toLowerCase(); - const suspiciousPatterns = [ - ' { - const startTime = Date.now(); - const { httpMethod, headers } = event; - - // Get client IP for rate limiting - const clientIP = headers['x-forwarded-for'] || - headers['x-real-ip'] || - event.requestContext?.identity?.sourceIp || - 'unknown'; - - console.log(`[${new Date().toISOString()}] ${httpMethod} request from ${clientIP}`); - - /* ---- 4.1 CORS pre-flight handling ------------------------------ */ - if (httpMethod === "OPTIONS") { - return { - statusCode: 200, - headers: corsHeaders, - body: "" - }; - } - - /* ---- 4.2 Method validation ------------------------------------- */ - if (httpMethod !== "POST") { - return { - statusCode: 405, - headers: corsHeaders, - body: JSON.stringify({ - error: "Method not allowed", - allowed: ["POST", "OPTIONS"] - }) - }; - } - - /* ---- 4.3 Rate limiting ----------------------------------------- */ - if (!checkRateLimit(clientIP)) { - console.warn(`Rate limit exceeded for IP: ${clientIP}`); - return { - statusCode: 429, - headers: corsHeaders, - body: JSON.stringify({ - error: "Rate limit exceeded", - retryAfter: RATE_LIMIT_WINDOW / 1000 - }) - }; - } - - /* ---- 4.4 File processing and validation ----------------------- */ - try { - // Validate content type - const contentType = headers["content-type"] || headers["Content-Type"] || ""; - if (!contentType.includes("multipart/form-data")) { - throw new Error("Content-Type must be multipart/form-data"); - } - - // Extract boundary - const boundary = contentType.split("boundary=")[1]; - if (!boundary) { - throw new Error("Missing multipart boundary"); - } - - // Parse multipart data - const body = Buffer.from(event.body, "base64"); - const parts = body.toString().split(`--${boundary}`); - - // Find file part - const filePart = parts.find(part => - part.includes("Content-Disposition") && - part.includes("filename=") - ); - - if (!filePart) { - throw new Error("No file found in request"); - } - - // Extract filename with validation - const fileNameMatch = filePart.match(/filename="(.+?)"/); - if (!fileNameMatch) { - throw new Error("Invalid filename format"); - } - - const originalFileName = fileNameMatch[1]; - - // Extract file data - const fileDataMatch = filePart.split("\r\n\r\n"); - if (fileDataMatch.length < 2) { - throw new Error("Invalid file data format"); - } - - const fileData = fileDataMatch[1].split("\r\n")[0]; - const fileBuffer = Buffer.from(fileData, "binary"); - - // Determine content type from file content - let detectedContentType = 'application/octet-stream'; - if (originalFileName.endsWith('.json')) { - detectedContentType = 'application/json'; - } else if (originalFileName.endsWith('.csv')) { - detectedContentType = 'text/csv'; - } - - // Validate file - const validationErrors = validateFile(originalFileName, fileBuffer, detectedContentType); - if (validationErrors.length > 0) { - throw new Error(`Validation failed: ${validationErrors.join(', ')}`); - } - - // Extract user ID from filename for additional validation - const userIdMatch = originalFileName.match(/^([a-f0-9]{32})_/); - if (!userIdMatch) { - throw new Error("Invalid filename format - missing user ID"); - } - - const userId = userIdMatch[1]; - - // Generate secure filename - const secureFileName = generateSecureFileName(originalFileName, userId); - - /* ---- 4.5 Upload to Supabase with error handling --------------- */ - if (!supabase) { - throw new Error("Storage service unavailable"); - } - - const { data, error } = await supabase.storage - .from("data-collection-files") - .upload(`uploads/${secureFileName}`, fileBuffer, { - contentType: detectedContentType, - upsert: false, // Changed to false to prevent overwrites - cacheControl: '3600' - }); - - if (error) { - console.error('Supabase upload error:', error); - throw new Error(`Upload failed: ${error.message}`); - } - - /* ---- 4.6 Generate response with metrics ----------------------- */ - const processingTime = Date.now() - startTime; - const publicUrl = `${process.env.SUPABASE_URL}/storage/v1/object/public/data-collection-files/uploads/${secureFileName}`; - - console.log(`[${new Date().toISOString()}] Upload successful: ${secureFileName} (${processingTime}ms)`); - - return { - statusCode: 200, - headers: corsHeaders, - body: JSON.stringify({ - success: true, - url: publicUrl, - fileName: secureFileName, - originalName: originalFileName, - size: fileBuffer.length, - processingTime - }) - }; - - } catch (error) { - const processingTime = Date.now() - startTime; - - console.error(`[${new Date().toISOString()}] Upload error (${processingTime}ms):`, { - error: error.message, - stack: error.stack, - clientIP - }); - - // Don't expose internal error details to client - const userMessage = error.message.includes('Validation failed') || - error.message.includes('Rate limit') || - error.message.includes('Method not allowed') || - error.message.includes('No file found') || - error.message.includes('Invalid filename') || - error.message.includes('Content-Type must be') - ? error.message - : 'Upload failed due to server error'; - - return { - statusCode: error.message.includes('Rate limit') ? 429 : - error.message.includes('Validation failed') ? 400 : 500, - headers: corsHeaders, - body: JSON.stringify({ - success: false, - error: userMessage, - processingTime - }) - }; - } -}; - -/* ------------------------------------------------------------------ */ -/* 5. Health check endpoint (optional) */ -/* ------------------------------------------------------------------ */ -export const healthCheck = async () => { - try { - // Basic health check - const { data, error } = await supabase.storage.from('data-collection-files').list('', { limit: 1 }); - - return { - statusCode: 200, - headers: corsHeaders, - body: JSON.stringify({ - status: 'healthy', - timestamp: new Date().toISOString(), - storage: error ? 'error' : 'ok' - }) - }; - } catch (error) { - return { - statusCode: 503, - headers: corsHeaders, - body: JSON.stringify({ - status: 'unhealthy', - error: error.message, - timestamp: new Date().toISOString() - }) - }; - } -}; \ No newline at end of file diff --git a/netlify/functions/utils/supabase-utils.js b/netlify/functions/utils/supabase-utils.js new file mode 100644 index 0000000..0b15d0f --- /dev/null +++ b/netlify/functions/utils/supabase-utils.js @@ -0,0 +1,381 @@ +// netlify/functions/utils/supabase-utils.js - Shared utilities for Supabase operations + +import { createClient } from "@supabase/supabase-js"; +import crypto from 'crypto'; + +/* ------------------------------------------------------------------ */ +/* 1. Configuration and Constants */ +/* ------------------------------------------------------------------ */ +export const CONFIG = { + MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB limit + ALLOWED_MIME_TYPES: [ + 'application/json', + 'text/csv', + 'text/plain' + ], + RATE_LIMIT_WINDOW: 60 * 1000, // 1 minute + RATE_LIMIT_MAX_REQUESTS: 10, // max requests per window + CODE_EXPIRY_HOURS: 48, // codes expire after 48 hours +}; + +// Rate limiting storage (in production, use Redis or similar) +const rateLimitStore = new Map(); + +/* ------------------------------------------------------------------ */ +/* 2. Supabase client initialization */ +/* ------------------------------------------------------------------ */ +let supabase; +try { + if (!process.env.SUPABASE_URL || !process.env.SUPABASE_KEY) { + throw new Error('Missing required Supabase environment variables'); + } + + supabase = createClient( + process.env.SUPABASE_URL, + process.env.SUPABASE_KEY + ); +} catch (error) { + console.error('Failed to initialize Supabase client:', error); +} + +export function getSupabaseClient() { + if (!supabase) { + throw new Error("Supabase client not initialized"); + } + return supabase; +} + +/* ------------------------------------------------------------------ */ +/* 3. CORS Configuration */ +/* ------------------------------------------------------------------ */ +// Allow multiple origins for production deployment flexibility +const getAllowedOrigin = (requestOrigin) => { + const allowedOrigins = [ + 'https://fakeprofiledetection.github.io', + 'https://melodious-squirrel-b0930c.netlify.app', + 'http://localhost:3999', + 'http://localhost:8888' + ]; + + // Handle undefined/null origin and return appropriate value + if (!requestOrigin) { + return '*'; + } + + // For production debugging, be more permissive temporarily + if (requestOrigin.includes('github.io') || requestOrigin.includes('netlify.app')) { + return requestOrigin; + } + + return allowedOrigins.includes(requestOrigin) ? requestOrigin : '*'; +}; + +export const corsHeaders = { + "Access-Control-Allow-Origin": "*", // Will be dynamically set in createResponse + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With, Accept, Origin", + "Access-Control-Max-Age": "86400", + "Access-Control-Allow-Credentials": "false", + "Content-Type": "application/json" +}; + +/* ------------------------------------------------------------------ */ +/* 4. Rate Limiting */ +/* ------------------------------------------------------------------ */ +export function checkRateLimit(clientIP, maxRequests = CONFIG.RATE_LIMIT_MAX_REQUESTS) { + const now = Date.now(); + const windowStart = now - CONFIG.RATE_LIMIT_WINDOW; + + // Clean old entries + for (const [ip, requests] of rateLimitStore.entries()) { + const filteredRequests = requests.filter(time => time > windowStart); + if (filteredRequests.length === 0) { + rateLimitStore.delete(ip); + } else { + rateLimitStore.set(ip, filteredRequests); + } + } + + // Check current IP + const requests = rateLimitStore.get(clientIP) || []; + const recentRequests = requests.filter(time => time > windowStart); + + if (recentRequests.length >= maxRequests) { + return false; + } + + // Add current request + recentRequests.push(now); + rateLimitStore.set(clientIP, recentRequests); + + return true; +} + +/* ------------------------------------------------------------------ */ +/* 5. Validation Utilities */ +/* ------------------------------------------------------------------ */ +export function validateFileUpload(fileName, fileBuffer, contentType) { + const errors = []; + + // File size validation + if (fileBuffer.length > CONFIG.MAX_FILE_SIZE) { + errors.push(`File size exceeds limit of ${CONFIG.MAX_FILE_SIZE / 1024 / 1024}MB`); + } + + // File name validation + if (!fileName || fileName.length > 255) { + errors.push('Invalid file name'); + } + + // File name sanitization check + const sanitizedName = fileName.replace(/[^a-zA-Z0-9._-]/g, ''); + if (sanitizedName !== fileName) { + errors.push('File name contains invalid characters'); + } + + // MIME type validation + if (!CONFIG.ALLOWED_MIME_TYPES.includes(contentType)) { + errors.push(`File type not allowed. Allowed types: ${CONFIG.ALLOWED_MIME_TYPES.join(', ')}`); + } + + // Content validation for JSON files + if (contentType === 'application/json') { + try { + JSON.parse(fileBuffer.toString()); + } catch (e) { + errors.push('Invalid JSON content'); + } + } + + // Check for suspicious content patterns + const fileContent = fileBuffer.toString().toLowerCase(); + const suspiciousPatterns = [ + ' expiryTime; +} + +export async function findCompletionFileByCode(surveyCode) { + const supabase = getSupabaseClient(); + + try { + // List all files in the uploads directory + const { data: files, error: listError } = await supabase.storage + .from('data-collection-files') + .list('uploads', { + limit: 1000, + search: '_completion.json' + }); + + if (listError) { + throw new Error(`Failed to list files: ${listError.message}`); + } + + if (!files || files.length === 0) { + return null; + } + + // Filter for completion files + const completionFiles = files.filter(file => + file.name.endsWith('_completion.json') + ); + + console.log(`Searching through ${completionFiles.length} completion files for code: ${surveyCode}`); + + // Search through each completion file + for (const file of completionFiles) { + try { + const { data: fileData, error: downloadError } = await supabase.storage + .from('data-collection-files') + .download(`uploads/${file.name}`); + + if (downloadError) { + console.warn(`Failed to download ${file.name}:`, downloadError.message); + continue; + } + + const fileContent = await fileData.text(); + const completionData = JSON.parse(fileContent); + + // Check if this file contains the matching survey code + if (completionData.survey_code === surveyCode) { + return { + fileName: file.name, + filePath: `uploads/${file.name}`, + data: completionData + }; + } + } catch (parseError) { + console.warn(`Failed to parse ${file.name}:`, parseError.message); + continue; + } + } + + return null; // Code not found + } catch (error) { + console.error('Error searching for completion file:', error); + throw error; + } +} + +export async function markCodeAsUsed(filePath, completionData, workerInfo = {}) { + const supabase = getSupabaseClient(); + + try { + // Update the completion data + const updatedData = { + ...completionData, + code_used: true, + code_used_timestamp: new Date().toISOString(), + mturk_worker_id: workerInfo.workerId || null, + validation_metadata: { + validated_at: new Date().toISOString(), + user_agent: workerInfo.userAgent || null, + ip_address: workerInfo.ipAddress || null + } + }; + + // Convert back to JSON + const updatedContent = JSON.stringify(updatedData, null, 2); + const blob = new Blob([updatedContent], { type: 'application/json' }); + + // Upload updated file (this will overwrite the existing file) + const { error: uploadError } = await supabase.storage + .from('data-collection-files') + .upload(filePath, blob, { + contentType: 'application/json', + upsert: true // Allow overwrite + }); + + if (uploadError) { + throw new Error(`Failed to update completion file: ${uploadError.message}`); + } + + console.log(`Successfully marked code as used in ${filePath}`); + return true; + } catch (error) { + console.error('Error marking code as used:', error); + throw error; + } +} + +/* ------------------------------------------------------------------ */ +/* 8. Response Utilities */ +/* ------------------------------------------------------------------ */ +export function createResponse(statusCode, body, headers = {}, event = null) { + // Dynamic CORS origin based on request + const requestOrigin = event?.headers?.origin || event?.headers?.Origin; + const allowedOrigin = getAllowedOrigin(requestOrigin); + + // Debug logging for CORS + console.log('CORS Debug:', { + requestOrigin, + allowedOrigin, + userAgent: event?.headers?.['user-agent']?.substring(0, 100) + }); + + const responseHeaders = { + ...corsHeaders, + "Access-Control-Allow-Origin": allowedOrigin, + "Access-Control-Allow-Methods": "GET, POST, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With, Accept, Origin", + "Access-Control-Max-Age": "86400", + ...headers + }; + + return { + statusCode, + headers: responseHeaders, + body: JSON.stringify(body) + }; +} + +export function createErrorResponse(error, statusCode = 500, processingTime = 0, event = null) { + const isClientError = error.message.includes('Validation failed') || + error.message.includes('Rate limit') || + error.message.includes('Method not allowed') || + error.message.includes('required') || + error.message.includes('Invalid'); + + const userMessage = isClientError ? error.message : 'Service error. Please try again.'; + + return createResponse(isClientError ? 400 : statusCode, { + success: false, + error: userMessage, + processingTime + }, {}, event); +} + +export function getClientInfo(event) { + const { headers } = event; + return { + ip: headers['x-forwarded-for'] || + headers['x-real-ip'] || + event.requestContext?.identity?.sourceIp || + 'unknown', + userAgent: headers['user-agent'] || null + }; +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e161e02 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,187 @@ +{ + "name": "kmlog", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "kmlog", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@supabase/supabase-js": "^2.49.4" + }, + "devDependencies": { + "node-fetch": "^2.6.1" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.69.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.69.1.tgz", + "integrity": "sha512-FILtt5WjCNzmReeRLq5wRs3iShwmnWgBvxHfqapC/VoljJl+W8hDAyFmf1NVw3zH+ZjZ05AKxiKxVeb0HNWRMQ==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.4.tgz", + "integrity": "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz", + "integrity": "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.11.2.tgz", + "integrity": "sha512-u/XeuL2Y0QEhXSoIPZZwR6wMXgB+RQbJzG9VErA3VghVt7uRfSVsjeqd7m5GhX3JR6dM/WRmLbVR8URpDWG4+w==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.18.0" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.1.tgz", + "integrity": "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.49.8", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.49.8.tgz", + "integrity": "sha512-zzBQLgS/jZs7btWcIAc7V5yfB+juG7h0AXxKowMJuySsO5vK+F7Vp+HCa07Z+tu9lZtr3sT9fofkc86bdylmtw==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.69.1", + "@supabase/functions-js": "2.4.4", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.19.4", + "@supabase/realtime-js": "2.11.2", + "@supabase/storage-js": "2.7.1" + } + }, + "node_modules/@types/node": { + "version": "22.15.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", + "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/phoenix": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", + "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/pages/fake_pages/Facebook-Clone/index.html b/pages/fake_pages/Facebook-Clone/index.html index deea47a..a967fe4 100644 --- a/pages/fake_pages/Facebook-Clone/index.html +++ b/pages/fake_pages/Facebook-Clone/index.html @@ -333,6 +333,16 @@

Conversation

+ + + diff --git a/pages/fake_pages/instagram-clone/index.html b/pages/fake_pages/instagram-clone/index.html index 9a16f61..13adf40 100644 --- a/pages/fake_pages/instagram-clone/index.html +++ b/pages/fake_pages/instagram-clone/index.html @@ -955,6 +955,16 @@

Suggestions for You

+ + + + diff --git a/pages/fake_pages/twitter-clone/index.html b/pages/fake_pages/twitter-clone/index.html index fe28df0..a9c4862 100644 --- a/pages/fake_pages/twitter-clone/index.html +++ b/pages/fake_pages/twitter-clone/index.html @@ -205,6 +205,15 @@

What's happening?

+ + diff --git a/pages/hosting/complete.html b/pages/hosting/complete.html index b964577..3523a99 100644 --- a/pages/hosting/complete.html +++ b/pages/hosting/complete.html @@ -8,52 +8,161 @@ body { font-family: Arial, sans-serif; background-color: #f4f4f4; - display: flex; - justify-content: center; - align-items: center; - height: 100vh; margin: 0; + padding: 20px 0; + min-height: 100vh; } .completion-container { background: white; - padding: 40px; + padding: 30px; border-radius: 15px; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); - max-width: 600px; + max-width: 700px; width: 90%; + margin: 0 auto; text-align: center; } h1 { - font-size: 2.5em; + font-size: 2.2em; color: #28a745; - margin-bottom: 20px; + margin-bottom: 15px; + } + .hero-section { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: white; + padding: 25px; + border-radius: 12px; + margin: 20px 0; + text-align: center; + } + .hero-section h2 { + color: white; + margin: 0 0 15px 0; + font-size: 1.4em; + } + .hero-section p { + color: white; + margin: 8px 0; + font-size: 1.1em; + line-height: 1.5; + } + .quick-stats { + display: flex; + justify-content: space-around; + background: rgba(255,255,255,0.2); + padding: 15px; + border-radius: 8px; + margin-top: 15px; + flex-wrap: wrap; + gap: 10px; + } + .stat-item { + text-align: center; + color: white; + font-size: 0.9em; } - p { + .stat-number { font-size: 1.2em; - color: #555; - margin-bottom: 30px; - line-height: 1.6; + font-weight: bold; + display: block; } - .study-info { + .footer-content { background: #f8f9fa; padding: 20px; border-radius: 8px; margin: 20px 0; - border-left: 4px solid #007bff; + text-align: center; } - .contact-info { - font-size: 1em; + .appreciation-note { + font-size: 1.1em; + color: #007bff; + margin-bottom: 15px; + } + .footer-details { + font-size: 0.9em; color: #666; - margin-top: 30px; + margin: 10px 0; + line-height: 1.4; + } + .final-message { + color: #28a745; + font-size: 1em; + margin: 15px 0; + font-style: italic; + } + @media (max-width: 768px) { + .quick-stats { + flex-direction: column; + gap: 8px; + } + .completion-container { + padding: 20px; + margin: 10px; + } + h1 { + font-size: 1.8em; + } + } + .survey-code-container { + background: #e8f5e8; + border: 2px solid #28a745; + border-radius: 10px; padding: 20px; - background: #e9ecef; - border-radius: 8px; + margin: 20px 0; + text-align: center; } - .thank-you { - font-size: 1.4em; + .survey-code-container h3 { + color: #155724; + margin-bottom: 10px; + } + .survey-code { + font-size: 1.5em; font-weight: bold; - color: #007bff; + color: #155724; + font-family: 'Courier New', monospace; + background: white; + padding: 12px 15px; + border-radius: 8px; + border: 2px dashed #28a745; + display: inline-block; + margin: 10px 0; + letter-spacing: 1px; + word-break: break-all; + } + .copy-button { + background: #28a745; + color: white; + border: none; + padding: 12px 25px; + font-size: 1.1em; + border-radius: 5px; + cursor: pointer; + margin: 10px 0; + transition: background 0.3s; + } + .copy-button:hover { + background: #218838; + } + .copy-button:active { + background: #1e7e34; + } + .mturk-instructions { + background: #fff3cd; + border: 1px solid #ffeaa7; + border-radius: 8px; + padding: 18px; margin: 20px 0; + color: #856404; + } + .mturk-instructions h4 { + margin-top: 0; + margin-bottom: 15px; + color: #856404; + } + .mturk-instructions ol { + margin: 10px 0; + padding-left: 20px; + line-height: 1.4; } /* Error message styling */ .error-message { @@ -70,53 +179,179 @@

Congratulations! 🎉

-

Thank you for completing all the tasks in our research study.

- -
-

Study Summary

-

You have successfully completed:

-
    -
  • ✅ Consent form
  • -
  • ✅ Demographics questionnaire
  • -
  • ✅ 18 social media posting tasks
  • -
  • ✅ Typing dynamics data collection
  • -
+
+

🎉 Thank You for Your Participation!

+

You've successfully completed typing dynamics !

+

Your 45-60 minutes of thoughtful participation helps researchers improve online security and protect users from fake profiles.

+ +
+
+ + Consent +
+
+ + Demographics +
+
+ 18 + Tasks Completed +
+
+ 🔒 + Data Secured +
+
-

- Your participation is invaluable to our research on fake profile detection. -

- -

- Your data has been securely collected and will be used solely for academic - research purposes. All information will remain confidential and anonymous. -

- -
-

Questions or Concerns?

-

- If you have any questions about this study or would like to receive - information about the results, please contact the research team using - the contact information provided in your consent form. +

+

🎯 Your Survey Completion Code

+

Please copy this code and paste it into the MTurk interface:

+
Loading...
+ +

+ This code is unique to your session and required for payment.

-

- You may now safely close this browser window. -

+
+

📝 Important Instructions:

+
    +
  1. Keep this window open - Don't close this tab yet!
  2. +
  3. Switch back to your MTurk tab (it should still be open)
  4. +
  5. Paste the code above into the "Provide the survey code here" field
  6. +
  7. Click Submit to complete your HIT and receive payment
  8. +
+
+ +
+ + + + diff --git a/sequence-dashboard.html b/sequence-dashboard.html new file mode 100644 index 0000000..8a7a286 --- /dev/null +++ b/sequence-dashboard.html @@ -0,0 +1,1431 @@ + + + + + + Web Data Collection - Sequence Diagrams Dashboard + + + + +
+
+

⏱️ Sequence Diagrams Dashboard

+

Web Data Collection System - Temporal Flow Analysis

+ +
+
+ 5 + Sequence Views +
+
+ 50-70 + Minutes Total +
+
+ 18 + Tasks Tracked +
+
+ 6 + System Components +
+
+
+ + + +
+
+ + +
+ +
+ + + +
+ +
+ + +
+
+ +
+ +
+
+

🚀 Complete User Journey Sequence

+

End-to-end flow from initial user entry through MTurk validation, including all major phases: environment detection, consent collection, demographics, 18-task execution with keystroke logging, completion, and external validation.

+ +
+ Expected Duration: 50-70 minutes total | + Participants: User, Browser, Environment Detection, API Router, Netlify Functions, Supabase Storage, MTurk System +
+
+ +
+
+ + + +
+ +
+
+ + + +
+ +
Loading complete journey sequence...
+
+ +
+sequenceDiagram + participant U as 👤 User + participant B as 🌐 Browser + participant ENV as 🔧 Environment Detection + participant API as 🔗 API Router + participant CF as ☁️ Netlify Functions + participant SB as 🗄️ Supabase Storage + participant MT as 💰 MTurk System + + %% Initial Entry + U->>B: Opens study URL + B->>ENV: Detect environment (local/production) + ENV->>API: Configure API endpoints + API-->>B: Return endpoint configuration + + %% User ID Management + B->>B: Check for existing user_id cookie + alt No existing cookie + B->>B: Generate secure user ID (crypto) + B->>B: Set secure cookie (24h expiry) + end + + %% Consent Phase + B->>U: Display consent form + U->>B: Fill consent form + B->>B: Validate consent data + B->>API: POST /data-handler?action=upload-file + API->>CF: Route to upload handler + CF->>CF: Validate file upload + CF->>CF: Security checks & MIME validation + CF->>SB: Upload consent.json + SB-->>CF: Upload confirmation + CF-->>API: Success response + API-->>B: Consent uploaded successfully + + %% Demographics Phase + B->>U: Display demographics form + U->>B: Fill demographics data + B->>B: Validate demographics data + B->>API: POST /data-handler?action=upload-file + API->>CF: Route to upload handler + CF->>SB: Upload demographics.json + SB-->>CF: Upload confirmation + CF-->>API: Success response + API-->>B: Demographics uploaded successfully + + %% Task Execution Phase + B->>U: Display task instructions + U->>B: Start task execution + + loop For each of 18 tasks + B->>B: Initialize keystroke logger + B->>U: Load platform interface (FB/IG/TW) + U->>B: Perform typing task + + par Parallel Keystroke Collection + B->>B: Capture keydown events + B->>B: Capture keyup events + B->>B: Calculate timing metrics + B->>B: Buffer keystroke data + end + + U->>B: Complete task + B->>B: Stop keystroke logging + B->>B: Prepare CSV data + B->>API: POST /data-handler?action=upload-file + API->>CF: Route to upload handler + CF->>SB: Upload task_data.csv + SB-->>CF: Upload confirmation + CF-->>API: Task data uploaded + API-->>B: Ready for next task + end + + %% Completion Phase + B->>B: Generate unique survey code + Note over B: Format: TASK-[timestamp36]-[random6]-[userHash4] + B->>API: POST /data-handler?action=store-completion + API->>CF: Route to completion handler + CF->>CF: Validate completion data + CF->>SB: Upload completion.json + SB-->>CF: Upload confirmation + CF-->>API: Completion stored + API-->>B: Survey code generated + B->>U: Display survey code & instructions + + %% MTurk Validation Phase + U->>MT: Enter survey code in MTurk + MT->>API: POST /data-handler?action=validate-code + API->>CF: Route to validation handler + CF->>SB: Search completion files + SB-->>CF: Return matching completion data + CF->>CF: Validate code (unused, not expired) + CF->>SB: Mark code as used + SB-->>CF: Update confirmation + CF-->>API: Code validation result + API-->>MT: Valid code response + MT-->>U: Payment authorized +
+
+ +
+

🔍 Key Insights

+
    +
  • Parallel Processing: Keystroke collection runs simultaneously with user interaction
  • +
  • Environment Awareness: System automatically detects local vs production deployment
  • +
  • Security First: Multiple validation layers protect research data integrity
  • +
  • Error Recovery: Built-in retry mechanisms ensure data collection completion
  • +
  • MTurk Integration: Seamless payment workflow with unique code validation
  • +
+
+
+
+ + +
+
+

⚠️ Error Handling & Recovery Sequence

+

Comprehensive error handling including upload failures, CORS policy violations, and network issues. Shows automatic retry mechanisms with exponential backoff and fallback endpoint routing.

+ +
+ Recovery Types: Network errors, CORS failures, Upload timeouts | + Retry Strategy: Exponential backoff with 3 max attempts +
+
+ +
+
+ + + +
+ +
+
+ + + +
+ +
Loading error handling sequence...
+
+ +
+sequenceDiagram + participant U as 👤 User + participant B as 🌐 Browser + participant API as 🔗 API Router + participant CF as ☁️ Netlify Functions + participant SB as 🗄️ Supabase Storage + + %% Upload Error Scenario + U->>B: Submit form data + B->>API: POST /data-handler?action=upload-file + API->>CF: Route to upload handler + CF->>SB: Attempt file upload + SB-->>CF: ❌ Upload failed (network/storage error) + CF-->>API: ❌ Error response (500) + API-->>B: ❌ Upload failed + + %% Error Recovery + B->>B: Display error message to user + B->>B: Wait 2 seconds (exponential backoff) + B->>API: 🔄 Retry upload request + API->>CF: Route to upload handler (retry) + CF->>SB: Attempt file upload (retry) + SB-->>CF: ✅ Upload successful + CF-->>API: ✅ Success response + API-->>B: ✅ Upload completed + B->>U: Continue to next step + + %% CORS Error Scenario + Note over B,CF: Production CORS Error + U->>B: Submit data from GitHub Pages + B->>API: POST to melodious-squirrel.netlify.app + API->>CF: Route request + CF-->>API: ❌ CORS policy violation + API-->>B: ❌ CORS error (blocked) + + %% CORS Recovery + B->>B: Detect CORS error + B->>API: Switch to fallback endpoint + API->>CF: Route with proper CORS headers + CF->>CF: Apply dynamic CORS origin + CF-->>API: ✅ Request successful (with CORS) + API-->>B: ✅ Data uploaded + B->>U: Continue normally +
+
+ +
+

🛡️ Error Recovery Features

+
    +
  • Automatic Retry: Exponential backoff prevents server overload
  • +
  • CORS Fallback: Dynamic endpoint switching for cross-origin issues
  • +
  • User Feedback: Clear error messages with recovery status
  • +
  • Data Integrity: No data loss during error scenarios
  • +
  • Graceful Degradation: System continues operation despite failures
  • +
+
+
+
+ + +
+
+

🔧 Environment-Specific Routing Sequence

+

Smart environment detection and API routing between local development and production environments. Includes function availability detection and automatic fallback to legacy endpoints.

+ +
+ Environments: Local (localhost:8888), Production (netlify.app) | + Functions: data-handler (new), saver (legacy) +
+
+ +
+
+ + + +
+ +
+
+ + + +
+ +
Loading environment routing sequence...
+
+ +
+sequenceDiagram + participant U as 👤 User + participant B as 🌐 Browser + participant ENV as 🔧 Environment Detection + participant API as 🔗 API Router + participant LOCAL as 🏠 Local Functions + participant PROD as 🌍 Production Functions + participant SB as 🗄️ Supabase Storage + + U->>B: Access application + B->>ENV: window.location.hostname + + alt Local Development + ENV-->>API: localhost detected + API->>API: Configure local endpoints + Note over API: http://localhost:8888/.netlify/functions/data-handler + B->>API: API request + API->>LOCAL: Route to local data-handler + LOCAL->>SB: Process request + SB-->>LOCAL: Response + LOCAL-->>API: Success + API-->>B: Local response + + else Production Environment + ENV-->>API: github.io detected + API->>API: Configure production endpoints + Note over API: https://melodious-squirrel.netlify.app/.netlify/functions/ + + alt New data-handler available + Note over API: Check for data-handler function + B->>API: API request + API->>PROD: Route to data-handler + PROD->>SB: Process request + SB-->>PROD: Response + PROD-->>API: Success + API-->>B: Production response + + else Fallback to legacy saver + Note over API: Fallback to existing saver function + B->>API: API request + API->>PROD: Route to legacy saver + PROD->>SB: Process request + SB-->>PROD: Response + PROD-->>API: Success + API-->>B: Fallback response + end + end +
+
+ +
+

🚀 Deployment Features

+
    +
  • Smart Detection: Automatic environment recognition via hostname
  • +
  • Function Routing: Dynamic endpoint selection based on availability
  • +
  • Legacy Support: Backward compatibility with existing production functions
  • +
  • Development Friendly: Seamless local testing with production parity
  • +
  • Zero Downtime: Graceful transitions between function versions
  • +
+
+
+
+ + +
+
+

⌨️ Real-time Keystroke Collection Sequence

+

Detailed view of parallel keystroke capture during task execution. Shows real-time event processing, data buffering, memory management, and CSV generation during typing dynamics collection.

+ +
+ Data Points: Keydown/up events, timing metrics, pressure curves | + Buffer Size: 1000 events max (memory protection) +
+
+ +
+
+ + + +
+ +
+
+ + + +
+ +
Loading keystroke collection sequence...
+
+ +
+sequenceDiagram + participant U as 👤 User + participant KL as ⌨️ Keystroke Logger + participant BUF as 📦 Data Buffer + participant TASK as 📋 Task Controller + participant API as 🔗 API Router + participant CF as ☁️ Netlify Functions + + TASK->>KL: Initialize keystroke logging + KL->>KL: Add event listeners (keydown, keyup) + KL->>U: Ready for typing + + loop Real-time Keystroke Capture + U->>KL: ⌨️ Keydown event + KL->>KL: Record timestamp & key data + KL->>BUF: Buffer keystroke data + Note over KL: Capture: timestamp, key, pressure, timing + + U->>KL: ⌨️ Keyup event + KL->>KL: Calculate dwell time + KL->>BUF: Buffer timing metrics + Note over BUF: Store: dwell time, flight time, pressure curves + + alt Buffer size > 1000 events + BUF->>BUF: Optimize buffer (remove old events) + Note over BUF: Prevent memory leaks + end + end + + U->>TASK: Complete typing task + TASK->>KL: Stop keystroke logging + KL->>KL: Remove event listeners + KL->>BUF: Finalize data collection + BUF->>BUF: Generate CSV format + BUF->>API: Upload keystroke data + API->>CF: Process task data upload + CF-->>API: Upload confirmation + API-->>TASK: Task data saved + TASK->>U: Ready for next task +
+
+ +
+

📊 Data Collection Features

+
    +
  • Real-time Capture: Microsecond precision timing measurement
  • +
  • Memory Protection: Automatic buffer optimization prevents leaks
  • +
  • Parallel Processing: Non-blocking data collection during user interaction
  • +
  • Rich Metrics: Dwell time, flight time, and pressure curve analysis
  • +
  • CSV Export: Research-ready data format generation
  • +
+
+
+
+ + +
+
+

🎯 Survey Code Lifecycle Sequence

+

Complete lifecycle of survey completion codes from generation through MTurk validation. Includes unique code format specification, 48-hour expiry logic, and one-time usage enforcement for payment processing.

+ +
+ Code Format: TASK-[timestamp36]-[random6]-[userHash4] | + Validity: 48 hours, one-time use only +
+
+ +
+
+ + + +
+ +
+
+ + + +
+ +
Loading survey code sequence...
+
+ +
+sequenceDiagram + participant U as 👤 User + participant B as 🌐 Browser + participant CF as ☁️ Netlify Functions + participant SB as 🗄️ Supabase Storage + participant MT as 💰 MTurk Worker + participant MTS as 🏢 MTurk System + + %% Code Generation + U->>B: Complete all 18 tasks + B->>B: Generate survey code + Note over B: TASK-[timestamp36]-[random6]-[userHash4] + B->>CF: Store completion data + CF->>SB: Save completion.json with code + Note over SB: code_used: false, expires_at: +48h + SB-->>CF: Completion stored + CF-->>B: Code ready + B->>U: Display survey code + + %% Code Usage + U->>MT: Provide survey code in MTurk + MT->>MTS: Submit HIT with code + MTS->>CF: Validate survey code + CF->>SB: Search completion files by code + SB-->>CF: Return completion data + + alt Code validation checks + CF->>CF: Check if code exists + CF->>CF: Check if code not used + CF->>CF: Check if code not expired (48h) + CF->>CF: ✅ All checks pass + CF->>SB: Mark code as used + Note over SB: code_used: true, used_timestamp: now + SB-->>CF: Code marked as used + CF-->>MTS: ✅ Valid code - approve payment + + else Code already used + CF->>CF: ❌ Code marked as used + CF-->>MTS: ❌ Invalid - code already used + + else Code expired + CF->>CF: ❌ Code older than 48 hours + CF-->>MTS: ❌ Invalid - code expired + + else Code not found + CF->>CF: ❌ Code not in system + CF-->>MTS: ❌ Invalid - code not found + end + + MTS-->>MT: Payment decision + MT-->>U: Payment result +
+
+ +
+

💰 Payment Integration Features

+
    +
  • Unique Codes: Cryptographically secure code generation
  • +
  • Time-Limited: 48-hour expiry prevents code sharing abuse
  • +
  • One-Time Use: Prevents duplicate payments and fraud
  • +
  • MTurk Integration: Seamless validation API for payment processing
  • +
  • Audit Trail: Complete tracking of code usage and validation
  • +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/utils/common.js b/utils/common.js index 36f2dd0..9ba30c2 100644 --- a/utils/common.js +++ b/utils/common.js @@ -134,16 +134,7 @@ class APIClient { } static async uploadFile(fileBlob, fileName, userId) { - // For local development, simulate successful upload - if (this.isLocalDevelopment()) { - console.log(`🧪 LOCAL DEV: Simulating upload of ${fileName}`); - await new Promise(resolve => setTimeout(resolve, 1000)); // Simulate delay - return { - success: true, - url: `http://localhost/simulated/${fileName}`, - fileName: fileName - }; - } + // Always perform actual uploads, both local and production try { // Validate inputs if (!fileBlob || !fileName || !userId) { @@ -156,7 +147,7 @@ class APIClient { // Upload with timeout and retry logic const response = await this.fetchWithRetry( - 'https://melodious-squirrel-b0930c.netlify.app/.netlify/functions/saver', + APIEndpoints.getDataHandlerUrl('upload-file'), { method: 'POST', body: formData, @@ -216,6 +207,28 @@ class APIClient { } } +/** + * API URL utilities - Environment aware endpoint generation + */ +class APIEndpoints { + static getBaseUrl() { + const isLocal = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'; + + if (isLocal) { + // Handle Netlify dev dual-port setup: static files on current port, functions on 8888 + const currentPort = window.location.port; + const functionsPort = currentPort === '3999' ? '8888' : currentPort || '8888'; + return `http://localhost:${functionsPort}/.netlify/functions`; + } + + return 'https://melodious-squirrel-b0930c.netlify.app/.netlify/functions'; + } + + static getDataHandlerUrl(action) { + return `${this.getBaseUrl()}/data-handler?action=${action}`; + } +} + /** * Enhanced keylogger with memory management and performance optimization */ @@ -448,6 +461,7 @@ if (typeof module !== 'undefined' && module.exports) { SecureCookieManager, FormValidator, APIClient, + APIEndpoints, EnhancedKeyLogger, NavigationManager, CONFIG @@ -518,64 +532,31 @@ const PlatformSubmissionHandler = { keyEvents: [], startTime: null, isInitialized: false, - hasSubmitted: false, // Add this flag - - - /** - * Save keystrokes to sessionStorage - */ - saveKeystrokes() { - try { - const urlParams = this.getUrlParameters(); - const storageKey = `keystrokes_${urlParams.task_id}_${urlParams.platform_id}`; - - // Only limit if absolutely necessary - const maxKeystrokes = 50000; // Much higher limit - if (this.keyEvents.length > maxKeystrokes) { - console.error(`Critical: Keystroke limit reached (${this.keyEvents.length}). Data may be lost.`); - // For research, you might want to alert the user or auto-submit - alert('Maximum keystroke limit reached. Please submit your post.'); - return; - } - - sessionStorage.setItem(storageKey, JSON.stringify(this.keyEvents)); - } catch (e) { - if (e.name === 'QuotaExceededError') { - console.error('Storage quota exceeded! Cannot save keystrokes.'); - // For research integrity, this is critical - alert the user - alert('Storage limit reached. Please submit your post now to avoid data loss.'); - } - } - }, - - /** - * Load keystrokes from sessionStorage - */ - loadKeystrokes() { - const urlParams = this.getUrlParameters(); - const storageKey = `keystrokes_${urlParams.task_id}_${urlParams.platform_id}`; + hasSubmitted: false, + keyEventsAttached: false, // Track if event listeners are attached + // High-performance keystroke capture + keyBuffer: null, + keyCodeMap: null, + keyCodeIndex: 0, + + useWASM: false, // Will be set to true when WASM loads + wasmCapture: null, // Will hold the WASM capture instance + + initHighPerformanceCapture() { + // Pre-allocate typed arrays for maximum performance + this.keyBuffer = { + types: new Uint8Array(50000), // 1 byte per type + keys: new Uint16Array(50000), // 2 bytes per key code + timestamps: new Float64Array(50000), // 8 bytes per timestamp + index: 0 + }; - try { - const saved = sessionStorage.getItem(storageKey); - if (saved) { - this.keyEvents = JSON.parse(saved); - console.log(`Loaded ${this.keyEvents.length} saved keystrokes`); - } - } catch (e) { - console.error('Failed to load keystrokes:', e); - this.keyEvents = []; // Reset on error - } + // Create key code map + this.keyCodeMap = new Map(); + this.keyCodeIndex = 0; }, - /** - * Clear keystrokes from sessionStorage - */ - clearKeystrokes() { - const urlParams = this.getUrlParameters(); - const storageKey = `keystrokes_${urlParams.task_id}_${urlParams.platform_id}`; - sessionStorage.removeItem(storageKey); - console.log('Cleared saved keystrokes'); - }, + /** * Initialize the platform handler @@ -586,25 +567,14 @@ const PlatformSubmissionHandler = { * @param {function} config.onBeforeSubmit - Optional callback before submission * @param {function} config.onAfterSubmit - Optional callback after successful submission */ - init(config) { + async init(config) { + // Store config first + this.config = config; + // Check if already submitted for this task const urlParams = this.getUrlParameters(); const submissionKey = `submitted_${urlParams.user_id}_${urlParams.task_id}_${urlParams.platform_id}`; this.hasSubmitted = sessionStorage.getItem(submissionKey) === 'true'; - - // Prevent accidental refresh - window.addEventListener('beforeunload', (e) => { - // Only show warning if there's unsaved text - const inputEl = document.getElementById(this.config.textInputId); - if (inputEl && inputEl.value.trim() && !this.hasSubmitted) { - e.preventDefault(); - e.returnValue = 'You have unsaved text. Are you sure you want to leave?'; - return e.returnValue; - } - }); - - // Store config first - this.config = config; if (this.hasSubmitted) { console.log("Task already submitted, disabling form"); @@ -612,13 +582,16 @@ const PlatformSubmissionHandler = { return; } - if (this.isInitialized) { - console.log("Platform handler already initialized, skipping..."); + // Prevent multiple initializations for the same page + const initKey = `initialized_${config.platform}_${urlParams.task_id}`; + if (sessionStorage.getItem(initKey) === 'true' && this.isInitialized) { + console.log("Platform handler already initialized for this task, skipping..."); return; } this.isInitialized = true; this.startTime = Date.now(); + sessionStorage.setItem(initKey, 'true'); console.log(`=== ${config.platform.toUpperCase()} PAGE LOADED ===`); console.log("Current URL:", window.location.href); @@ -631,21 +604,27 @@ const PlatformSubmissionHandler = { return; } - // Start keylogger - this.startKeyLogger(urlParams); - - // Load any saved keystrokes - this.loadKeystrokes(); - - // If we have saved keystrokes but the textarea is empty, clear them - // (user might have cleared the form before refresh) - const inputEl = document.getElementById(this.config.textInputId); - if (inputEl && !inputEl.value.trim() && this.keyEvents.length > 0) { - console.log('Text is empty but keystrokes exist - clearing keystrokes'); - this.keyEvents = []; - this.clearKeystrokes(); + // Check if WASM is available + if (window.wasmKeystrokeManager) { + try { + await window.wasmKeystrokeManager.initialize(); + this.wasmCapture = window.wasmKeystrokeManager; + this.useWASM = true; + console.log('✅ Using WASM for high-performance keystroke capture'); + } catch (error) { + console.error('Failed to initialize WASM, falling back to JavaScript:', error); + this.useWASM = false; + } + } else { + console.log('WASM not available, using JavaScript keystroke capture'); } + // Only attach keylogger if not already attached + if (!this.keyEventsAttached) { + this.startKeyLogger(urlParams); + this.keyEventsAttached = true; + } + // Set up submit button this.setupSubmitButton(urlParams); @@ -653,11 +632,20 @@ const PlatformSubmissionHandler = { this.setupVisibilityHandler(); // Set up paste prevention + const inputEl = document.getElementById(this.config.textInputId); if (inputEl) { inputEl.addEventListener('paste', this.handlePaste.bind(this)); console.log('Paste prevention enabled for', this.config.textInputId); } + // Clean up on page unload + window.addEventListener('beforeunload', () => { + sessionStorage.removeItem(initKey); + if (this.wasmCapture) { + this.wasmCapture.clear(); + } + }); + console.log(`✅ ${config.platform} handler initialized successfully`); }, @@ -678,41 +666,6 @@ const PlatformSubmissionHandler = { submitButton.textContent = "Already Submitted"; } }, - /** - * Save draft text to sessionStorage - */ - saveDraft() { - const inputEl = document.getElementById(this.config.textInputId); - if (inputEl && inputEl.value.trim()) { - const urlParams = this.getUrlParameters(); - const storageKey = `draft_${this.config.platform}_${urlParams.task_id}`; - sessionStorage.setItem(storageKey, inputEl.value); - console.log(`Saved draft for ${storageKey}`); - } - }, - - /** - * Restore draft text from sessionStorage - */ - restoreDraft() { - const urlParams = this.getUrlParameters(); - const storageKey = `draft_${this.config.platform}_${urlParams.task_id}`; - const savedText = sessionStorage.getItem(storageKey); - - if (savedText) { - const inputEl = document.getElementById(this.config.textInputId); - if (inputEl) { - inputEl.value = savedText; - console.log(`Restored draft for ${storageKey}`); - - // Trigger input event for auto-resize - inputEl.dispatchEvent(new Event('input')); - - // Show a message that draft was restored - this.showDraftRestoredMessage(); - } - } - }, /** * Setup visibility handler to handle back/forward navigation @@ -811,46 +764,124 @@ const PlatformSubmissionHandler = { * Start keystroke logging */ startKeyLogger(urlParams) { - const onKeyDown = (e) => { - // CHANGE 1: Capture timestamp IMMEDIATELY - const timestamp = Date.now(); - - // CHANGE 2: Push to array with the pre-captured timestamp - this.keyEvents.push(['P', this.replaceJsKey(e), timestamp]); + if (this.useWASM && this.wasmCapture) { + // Use WASM for capture + console.log('Using WASM keystroke capture'); - // CHANGE 3: Save keystrokes AFTER the critical timing capture - // Move this to after we've captured the timestamp - setTimeout(() => this.saveKeystrokes(), 0); - - // Handle Enter key for multi-line support - if (e.key === "Enter" && e.target.id === this.config.textInputId) { - if (!e.shiftKey) { + document.addEventListener('keydown', (e) => { + this.wasmCapture.captureKeyDown(e); + + // Handle Enter key + if (e.key === "Enter" && e.target.id === this.config.textInputId && !e.shiftKey) { e.preventDefault(); const textarea = e.target; const start = textarea.selectionStart; const end = textarea.selectionEnd; textarea.value = textarea.value.substring(0, start) + '\n' + textarea.value.substring(end); textarea.selectionStart = textarea.selectionEnd = start + 1; - - // Trigger any auto-resize if needed textarea.dispatchEvent(new Event('input')); } - } - }; - - const onKeyUp = (e) => { - // CHANGE 1: Capture timestamp IMMEDIATELY - const timestamp = Date.now(); + }); - // CHANGE 2: Push to array with the pre-captured timestamp - this.keyEvents.push(['R', this.replaceJsKey(e), timestamp]); + document.addEventListener('keyup', (e) => { + this.wasmCapture.captureKeyUp(e); + }); + } else { + // Fallback to JavaScript implementation with physical key tracking + console.log('Using JavaScript keystroke capture with physical key tracking'); - // CHANGE 3: Save keystrokes AFTER the critical timing capture - setTimeout(() => this.saveKeystrokes(), 0); - }; + // Initialize high-performance capture + this.initHighPerformanceCapture(); + + // Add physical key tracking map + this.physicalKeyMap = new Map(); + + const captureEvent = (e, eventType) => { + const timestamp = performance.now(); + const idx = this.keyBuffer.index; + const physicalCode = e.code; + + let keyToStore; + + if (eventType === 0) { // Press event + // Store the display key for this physical key + keyToStore = e.key; + this.physicalKeyMap.set(physicalCode, keyToStore); + } else { // Release event + // Get the stored key from press time + keyToStore = this.physicalKeyMap.get(physicalCode); + + if (!keyToStore) { + console.warn(`No tracked press for code=${physicalCode}, using current key=${e.key}`); + keyToStore = e.key; + } else { + // Remove from tracking + this.physicalKeyMap.delete(physicalCode); + } + } + + // Get or create key code + let keyCode = this.keyCodeMap.get(keyToStore); + if (keyCode === undefined) { + keyCode = this.keyCodeIndex++; + this.keyCodeMap.set(keyToStore, keyCode); + } + + // Store in typed arrays + this.keyBuffer.types[idx] = eventType; + this.keyBuffer.keys[idx] = keyCode; + this.keyBuffer.timestamps[idx] = timestamp; + this.keyBuffer.index++; + + // Handle Enter key + if (e.key === "Enter" && e.target.id === this.config.textInputId && !e.shiftKey) { + e.preventDefault(); + requestAnimationFrame(() => { + const textarea = e.target; + const start = textarea.selectionStart; + const end = textarea.selectionEnd; + textarea.value = textarea.value.substring(0, start) + '\n' + textarea.value.substring(end); + textarea.selectionStart = textarea.selectionEnd = start + 1; + textarea.dispatchEvent(new Event('input')); + }); + } + }; + + document.addEventListener('keydown', (e) => captureEvent(e, 0), { passive: false }); + document.addEventListener('keyup', (e) => captureEvent(e, 1), { passive: true }); + } + }, - document.addEventListener('keydown', onKeyDown); - document.addEventListener('keyup', onKeyUp); + getKeystrokeData() { + if (this.useWASM && this.wasmCapture) { + // Get data from WASM + return this.wasmCapture.getRawData(); + } else { + // Original implementation + const events = []; + const keyMap = Array.from(this.keyCodeMap.entries()); + + for (let i = 0; i < this.keyBuffer.index; i++) { + const keyEntry = keyMap.find(([_, code]) => code === this.keyBuffer.keys[i]); + if (keyEntry) { + const originalKey = keyEntry[0]; + + // Create a more complete fake event object for replaceJsKey + const fakeEvent = { + key: originalKey, + code: originalKey === ' ' ? 'Space' : `Key${originalKey.toUpperCase()}` + }; + + events.push([ + this.keyBuffer.types[i] === 0 ? 'P' : 'R', + this.replaceJsKey(fakeEvent), + Math.round(this.keyBuffer.timestamps[i] + performance.timeOrigin) + ]); + } + } + + return events; + } }, /** @@ -909,7 +940,7 @@ const PlatformSubmissionHandler = { return; } - // Prepare file names + // Prepare file names - platform prefix comes first const filePrefix = this.getPlatformPrefix(urlParams.platform_id); const csvName = `${filePrefix}_${urlParams.user_id}_${urlParams.task_id}.csv`; const txtName = `${filePrefix}_${urlParams.user_id}_${urlParams.task_id}_raw.txt`; @@ -935,9 +966,7 @@ const PlatformSubmissionHandler = { const submissionKey = `submitted_${urlParams.user_id}_${urlParams.task_id}_${urlParams.platform_id}`; sessionStorage.setItem(submissionKey, 'true'); this.hasSubmitted = true; - // Clear keystroke data - this.clearKeystrokes(); - + // Call after submit callback if provided if (this.config.onAfterSubmit) { this.config.onAfterSubmit(); @@ -974,8 +1003,16 @@ const PlatformSubmissionHandler = { }; } - if (this.keyEvents.length === 0) { - return { isValid: false, message: 'No keystrokes recorded! Please type something before submitting.' }; + // Check keystroke data + if (this.useWASM && this.wasmCapture) { + if (this.wasmCapture.getEventCount() === 0) { + return { isValid: false, message: 'No keystrokes recorded! Please type something before submitting.' }; + } + } else { + // Check the buffer instead of the text input + if (!this.keyBuffer || this.keyBuffer.index === 0) { + return { isValid: false, message: 'No keystrokes recorded! Please type something before submitting.' }; + } } return { isValid: true }; @@ -1056,20 +1093,44 @@ const PlatformSubmissionHandler = { 'CapsLock': 'Key.caps_lock' }; - if (e.code === 'Space') return 'Key.space'; - return keyMap[e.key] || e.key; + // Handle space key - check both e.code and e.key + if (e.code === 'Space' || e.key === ' ') return 'Key.space'; + if (e.code === 'Comma' || e.key == ',' ) return 'Key.comma'; + + // Check if it's a mapped key + if (keyMap[e.key]) return keyMap[e.key]; + + // Return the original key + return e.key; }, /** * Build CSV blob from keystroke events */ buildCsvBlob() { - const heading = [['Press or Release', 'Key', 'Time']]; - const csvString = heading - .concat(this.keyEvents) - .map(row => row.join(',')) - .join('\n'); - return new Blob([csvString], { type: 'text/csv;charset=utf-8' }); + console.log('=== Building CSV ==='); + console.log('useWASM:', this.useWASM); + console.log('wasmCapture:', this.wasmCapture); + + if (this.useWASM && this.wasmCapture) { + console.log('✅ Using WASM export'); + // Get CSV directly from WASM + const csvString = this.wasmCapture.exportAsCSV(); + console.log('First few lines of WASM CSV:', csvString.split('\n').slice(0, 5)); + return new Blob([csvString], { type: 'text/csv;charset=utf-8' }); + } else { + console.log('❌ Using JavaScript export'); + // Original implementation + // Convert high-performance buffer to array format only when needed + this.keyEvents = this.getKeystrokeData(); + + const heading = [['Press or Release', 'Key', 'Time']]; + const csvString = heading + .concat(this.keyEvents) + .map(row => row.join(',')) + .join('\n'); + return new Blob([csvString], { type: 'text/csv;charset=utf-8' }); + } }, /** @@ -1082,15 +1143,6 @@ const PlatformSubmissionHandler = { const deviceInfoStr = sessionStorage.getItem('device_info'); const deviceInfo = deviceInfoStr ? JSON.parse(deviceInfoStr) : DeviceDetector.getDeviceInfo(); - // const metadata = { - // user_id: urlParams.user_id, - // platform_id: urlParams.platform_id, - // task_id: urlParams.task_id, - // start_time: this.startTime, - // end_time: endTime, - // duration_ms: endTime - this.startTime, - // platform: this.config.platform - // }; const metadata = { user_id: urlParams.user_id, platform_id: urlParams.platform_id, @@ -1116,7 +1168,7 @@ const PlatformSubmissionHandler = { fd.append('file', fileBlob, filename); const res = await fetch( - 'https://melodious-squirrel-b0930c.netlify.app/.netlify/functions/saver', + APIEndpoints.getDataHandlerUrl('upload-file'), { method: 'POST', body: fd } ); diff --git a/utils/common.js.backup b/utils/common.js.backup index 33eafde..36f2dd0 100644 --- a/utils/common.js.backup +++ b/utils/common.js.backup @@ -219,130 +219,130 @@ class APIClient { /** * Enhanced keylogger with memory management and performance optimization */ -class EnhancedKeyLogger { - constructor(userId, platformId) { - this.userId = userId; - this.platformId = platformId; - this.keyEvents = []; - this.maxEvents = 10000; // Prevent memory leaks - this.isActive = false; +// class EnhancedKeyLogger { +// constructor(userId, platformId) { +// this.userId = userId; +// this.platformId = platformId; +// this.keyEvents = []; +// this.maxEvents = 10000; // Prevent memory leaks +// this.isActive = false; - // Bind methods to preserve context - this.handleKeyDown = this.handleKeyDown.bind(this); - this.handleKeyUp = this.handleKeyUp.bind(this); - } +// // Bind methods to preserve context +// this.handleKeyDown = this.handleKeyDown.bind(this); +// this.handleKeyUp = this.handleKeyUp.bind(this); +// } - start() { - if (this.isActive) return; +// start() { +// if (this.isActive) return; - this.isActive = true; - document.addEventListener('keydown', this.handleKeyDown); - document.addEventListener('keyup', this.handleKeyUp); +// this.isActive = true; +// document.addEventListener('keydown', this.handleKeyDown); +// document.addEventListener('keyup', this.handleKeyUp); - this.createDownloadButton(); - console.log('Keylogger started'); - } +// this.createDownloadButton(); +// console.log('Keylogger started'); +// } - stop() { - if (!this.isActive) return; +// stop() { +// if (!this.isActive) return; - this.isActive = false; - document.removeEventListener('keydown', this.handleKeyDown); - document.removeEventListener('keyup', this.handleKeyUp); +// this.isActive = false; +// document.removeEventListener('keydown', this.handleKeyDown); +// document.removeEventListener('keyup', this.handleKeyUp); - const button = document.getElementById('keylogger-download-btn'); - if (button) button.remove(); +// const button = document.getElementById('keylogger-download-btn'); +// if (button) button.remove(); - console.log('Keylogger stopped'); - } - - handleKeyDown(event) { - this.addKeyEvent('P', event.key); - this.saveKeystrokes(); - } - - handleKeyUp(event) { - this.addKeyEvent('R', event.key); - this.saveKeystrokes(); - } - - addKeyEvent(type, key) { - // Prevent memory leaks by limiting array size - if (this.keyEvents.length >= this.maxEvents) { - this.keyEvents = this.keyEvents.slice(-this.maxEvents / 2); // Keep last half - console.warn('Keylogger array truncated to prevent memory issues'); - } +// console.log('Keylogger stopped'); +// } + +// handleKeyDown(event) { +// this.addKeyEvent('P', event.key); +// this.saveKeystrokes(); +// } + +// handleKeyUp(event) { +// this.addKeyEvent('R', event.key); +// this.saveKeystrokes(); +// } + +// addKeyEvent(type, key) { +// // Prevent memory leaks by limiting array size +// if (this.keyEvents.length >= this.maxEvents) { +// this.keyEvents = this.keyEvents.slice(-this.maxEvents / 2); // Keep last half +// console.warn('Keylogger array truncated to prevent memory issues'); +// } - this.keyEvents.push([type, key, Date.now()]); - } - - createDownloadButton() { - const button = document.createElement('button'); - button.id = 'keylogger-download-btn'; - button.textContent = 'Download Keylog'; - button.style.cssText = ` - position: fixed; - bottom: 10px; - right: 10px; - background: #333; - color: white; - border: none; - padding: 10px 15px; - border-radius: 5px; - cursor: pointer; - z-index: 10000; - font-family: Arial, sans-serif; - font-size: 12px; - `; +// this.keyEvents.push([type, key, Date.now()]); +// } + +// createDownloadButton() { +// const button = document.createElement('button'); +// button.id = 'keylogger-download-btn'; +// button.textContent = 'Download Keylog'; +// button.style.cssText = ` +// position: fixed; +// bottom: 10px; +// right: 10px; +// background: #333; +// color: white; +// border: none; +// padding: 10px 15px; +// border-radius: 5px; +// cursor: pointer; +// z-index: 10000; +// font-family: Arial, sans-serif; +// font-size: 12px; +// `; - button.onclick = () => this.downloadKeylog(); - document.body.appendChild(button); - } - - downloadKeylog() { - try { - const platformLetters = { 0: 'f', 1: 'i', 2: 't' }; - const platformLetter = platformLetters[this.platformId] || 'unknown'; - const filename = `${platformLetter}_${this.userId}.csv`; +// button.onclick = () => this.downloadKeylog(); +// document.body.appendChild(button); +// } + +// downloadKeylog() { +// try { +// const platformLetters = { 0: 'f', 1: 'i', 2: 't' }; +// const platformLetter = platformLetters[this.platformId] || 'unknown'; +// const filename = `${platformLetter}_${this.userId}.csv`; - const header = [['Press or Release', 'Key', 'Time']]; - const csvData = header.concat(this.keyEvents); - const csvString = csvData.map(row => row.join(',')).join('\n'); +// const header = [['Press or Release', 'Key', 'Time']]; +// const csvData = header.concat(this.keyEvents); +// const csvString = csvData.map(row => row.join(',')).join('\n'); - const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8;' }); +// const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8;' }); - // Modern download approach - const link = document.createElement('a'); - const url = URL.createObjectURL(blob); +// // Modern download approach +// const link = document.createElement('a'); +// const url = URL.createObjectURL(blob); - link.setAttribute('href', url); - link.setAttribute('download', filename); - link.style.visibility = 'hidden'; +// link.setAttribute('href', url); +// link.setAttribute('download', filename); +// link.style.visibility = 'hidden'; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); +// document.body.appendChild(link); +// link.click(); +// document.body.removeChild(link); - // Clean up object URL - URL.revokeObjectURL(url); +// // Clean up object URL +// URL.revokeObjectURL(url); - console.log(`Keylog downloaded: ${filename}`); +// console.log(`Keylog downloaded: ${filename}`); - } catch (error) { - console.error('Failed to download keylog:', error); - FormValidator.showError('Failed to download keylog. Please try again.'); - } - } - - getEventCount() { - return this.keyEvents.length; - } - - clearEvents() { - this.keyEvents = []; - console.log('Keylog events cleared'); - } -} +// } catch (error) { +// console.error('Failed to download keylog:', error); +// FormValidator.showError('Failed to download keylog. Please try again.'); +// } +// } + +// getEventCount() { +// return this.keyEvents.length; +// } + +// clearEvents() { +// this.keyEvents = []; +// console.log('Keylog events cleared'); +// } +// } /** * Navigation utilities with proper URL handling @@ -812,8 +812,15 @@ const PlatformSubmissionHandler = { */ startKeyLogger(urlParams) { const onKeyDown = (e) => { - - this.keyEvents.push(['P', this.replaceJsKey(e), Date.now()]); + // CHANGE 1: Capture timestamp IMMEDIATELY + const timestamp = Date.now(); + + // CHANGE 2: Push to array with the pre-captured timestamp + this.keyEvents.push(['P', this.replaceJsKey(e), timestamp]); + + // CHANGE 3: Save keystrokes AFTER the critical timing capture + // Move this to after we've captured the timestamp + setTimeout(() => this.saveKeystrokes(), 0); // Handle Enter key for multi-line support if (e.key === "Enter" && e.target.id === this.config.textInputId) { @@ -832,12 +839,19 @@ const PlatformSubmissionHandler = { }; const onKeyUp = (e) => { - this.keyEvents.push(['R', this.replaceJsKey(e), Date.now()]); + // CHANGE 1: Capture timestamp IMMEDIATELY + const timestamp = Date.now(); + + // CHANGE 2: Push to array with the pre-captured timestamp + this.keyEvents.push(['R', this.replaceJsKey(e), timestamp]); + + // CHANGE 3: Save keystrokes AFTER the critical timing capture + setTimeout(() => this.saveKeystrokes(), 0); }; document.addEventListener('keydown', onKeyDown); document.addEventListener('keyup', onKeyUp); - }, + }, /** * Setup submit button handler diff --git a/utils/wasm-keystroke.js b/utils/wasm-keystroke.js new file mode 100644 index 0000000..f1c984d --- /dev/null +++ b/utils/wasm-keystroke.js @@ -0,0 +1,284 @@ +// utils/wasm-keystroke.js +import init, { KeystrokeCapture } from '../wasm-keystroke-capture/pkg/keystroke_capture.js'; + +class WASMKeystrokeManager { + constructor() { + this.initialized = false; + this.initializing = false; // Prevent multiple init calls + this.capture = null; + this.keyPressMap = new Map(); + this.eventQueue = []; // Queue for ensuring order + this.processing = false; + + this.keyMapping = { + 'Shift': 'Key.shift', + 'Control': 'Key.ctrl', + 'Alt': 'Key.alt', + 'Meta': 'Key.cmd', + 'Enter': 'Key.enter', + 'Backspace': 'Key.backspace', + 'Escape': 'Key.esc', + 'Tab': 'Key.tab', + 'ArrowLeft': 'Key.left', + 'ArrowRight': 'Key.right', + 'ArrowUp': 'Key.up', + 'ArrowDown': 'Key.down', + 'CapsLock': 'Key.caps_lock', + ' ': 'Key.space', + ',': 'Key.comma' + }; + } + + async initialize() { + if (this.initialized) { + console.log('WASM already initialized, skipping'); + return; + } + + if (this.initializing) { + console.log('WASM initialization already in progress, waiting...'); + // Wait for initialization to complete + while (this.initializing) { + await new Promise(resolve => setTimeout(resolve, 10)); + } + return; + } + + this.initializing = true; + + try { + await init(); + this.capture = new KeystrokeCapture(50000); + this.initialized = true; + console.log('✅ WASM keystroke capture initialized'); + } catch (error) { + console.error('❌ Failed to initialize WASM:', error); + throw error; + } finally { + this.initializing = false; + } + } + + mapKey(key) { + return this.keyMapping[key] || key; + } + + // Process events in order + async processEventQueue() { + if (this.processing || this.eventQueue.length === 0) return; + + this.processing = true; + + while (this.eventQueue.length > 0) { + const event = this.eventQueue.shift(); + + try { + if (event.type === 'down') { + this.capture.capture_keystroke(event.key, false); + } else { + this.capture.capture_keystroke(event.key, true); + } + } catch (error) { + console.error(`Failed to capture ${event.type}:`, error); + // If WASM is corrupted, try to reinitialize + if (error.message && error.message.includes('unreachable')) { + console.error('WASM module corrupted, attempting recovery...'); + this.initialized = false; + this.capture = null; + try { + await this.initialize(); + } catch (e) { + console.error('Failed to recover WASM:', e); + } + } + } + } + + this.processing = false; + } + + captureKeyDown(event) { + const timestamp = performance.now(); + if (!this.initialized) { + console.warn('WASM not initialized'); + return; + } + + const physicalCode = event.code; + const displayKey = event.key; + const mappedKey = this.mapKey(displayKey); + + // Check if this key is already pressed (prevent duplicate press events) + if (this.keyPressMap.has(physicalCode)) { + console.log(`Ignoring duplicate keydown for ${physicalCode}`); + return; + } + + // Store the display key for this physical key + this.keyPressMap.set(physicalCode, { + key: mappedKey, + timestamp: performance.now() + }); + + // Debug logging + console.log(`KeyDown: code=${physicalCode}, key=${displayKey}, mapped=${mappedKey}`); + + // Queue the event + this.eventQueue.push({ + type: 'down', + key: mappedKey, + code: physicalCode, + timestamp: timestamp + }); + + // Process queue + this.processEventQueue(); + } + + captureKeyUp(event) { + const timestamp = performance.now(); + if (!this.initialized) { + console.warn('WASM not initialized'); + return; + } + + const physicalCode = event.code; + + // Get the stored key from when it was pressed + const pressData = this.keyPressMap.get(physicalCode); + + if (!pressData) { + console.warn(`No tracked press for code=${physicalCode}, ignoring release`); + return; + } + + const mappedKey = pressData.key; + + // Debug logging + console.log(`KeyUp: code=${physicalCode}, stored=${mappedKey}, current=${event.key}`); + + // Remove from tracking + this.keyPressMap.delete(physicalCode); + + // Queue the event + this.eventQueue.push({ + type: 'up', + key: mappedKey, + code: physicalCode, + timestamp: timestamp + }); + + // Process queue + this.processEventQueue(); + } + + getEventCount() { + if (!this.capture || !this.initialized) return 0; + try { + return this.capture.get_event_count(); + } catch (error) { + console.error('Failed to get event count:', error); + return 0; + } + } + + exportAsCSV() { + if (!this.capture || !this.initialized) return ''; + try { + return this.capture.export_as_csv(); + } catch (error) { + console.error('Failed to export CSV:', error); + return ''; + } + } + + getRawData() { + if (!this.capture || !this.initialized) return []; + try { + return this.capture.get_raw_data(); + } catch (error) { + console.error('Failed to get raw data:', error); + return []; + } + } + + clear() { + if (this.capture && this.initialized) { + try { + this.capture.clear(); + } catch (error) { + console.error('Failed to clear capture:', error); + } + } + // Always clear JavaScript state + this.keyPressMap.clear(); + this.eventQueue = []; + } + + // Debug method to check for unreleased keys + getUnreleasedKeys() { + return Array.from(this.keyPressMap.entries()); + } + + // Reset the entire WASM module + async reset() { + console.log('Resetting WASM keystroke capture...'); + this.capture = null; + this.initialized = false; + this.keyPressMap.clear(); + this.eventQueue = []; + await this.initialize(); + } +} + +// Export singleton instance +let wasmKeystrokeManagerInstance = null; + +export const wasmKeystrokeManager = { + async initialize() { + if (!wasmKeystrokeManagerInstance) { + wasmKeystrokeManagerInstance = new WASMKeystrokeManager(); + } + return wasmKeystrokeManagerInstance.initialize(); + }, + + captureKeyDown(event) { + if (!wasmKeystrokeManagerInstance) return; + return wasmKeystrokeManagerInstance.captureKeyDown(event); + }, + + captureKeyUp(event) { + if (!wasmKeystrokeManagerInstance) return; + return wasmKeystrokeManagerInstance.captureKeyUp(event); + }, + + getEventCount() { + if (!wasmKeystrokeManagerInstance) return 0; + return wasmKeystrokeManagerInstance.getEventCount(); + }, + + exportAsCSV() { + if (!wasmKeystrokeManagerInstance) return ''; + return wasmKeystrokeManagerInstance.exportAsCSV(); + }, + + getRawData() { + if (!wasmKeystrokeManagerInstance) return []; + return wasmKeystrokeManagerInstance.getRawData(); + }, + + clear() { + if (!wasmKeystrokeManagerInstance) return; + return wasmKeystrokeManagerInstance.clear(); + }, + + getUnreleasedKeys() { + if (!wasmKeystrokeManagerInstance) return []; + return wasmKeystrokeManagerInstance.getUnreleasedKeys(); + }, + + async reset() { + if (!wasmKeystrokeManagerInstance) return; + return wasmKeystrokeManagerInstance.reset(); + } +}; \ No newline at end of file diff --git a/wasm-keystroke-capture/Cargo.toml b/wasm-keystroke-capture/Cargo.toml new file mode 100644 index 0000000..d9c2c55 --- /dev/null +++ b/wasm-keystroke-capture/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "keystroke-capture" +version = "0.1.0" +authors = ["Your Name"] +edition = "2021" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +wasm-bindgen = "0.2" +web-sys = { version = "0.3", features = ["Performance", "Window"] } +js-sys = "0.3" + +[profile.release] +# Optimize for small binary size +opt-level = "z" +lto = true + diff --git a/wasm-keystroke-capture/pkg/.gitignore b/wasm-keystroke-capture/pkg/.gitignore new file mode 100644 index 0000000..f59ec20 --- /dev/null +++ b/wasm-keystroke-capture/pkg/.gitignore @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/wasm-keystroke-capture/pkg/keystroke_capture.d.ts b/wasm-keystroke-capture/pkg/keystroke_capture.d.ts new file mode 100644 index 0000000..b905b57 --- /dev/null +++ b/wasm-keystroke-capture/pkg/keystroke_capture.d.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +export class KeystrokeCapture { + free(): void; + constructor(capacity: number); + capture_keystroke(key: string, is_release: boolean): void; + get_event_count(): number; + export_as_csv(): string; + clear(): void; + get_raw_data(): any; + get_last_10_events(): string; +} + +export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; + +export interface InitOutput { + readonly memory: WebAssembly.Memory; + readonly __wbg_keystrokecapture_free: (a: number, b: number) => void; + readonly keystrokecapture_new: (a: number) => [number, number, number]; + readonly keystrokecapture_capture_keystroke: (a: number, b: number, c: number, d: number) => [number, number]; + readonly keystrokecapture_get_event_count: (a: number) => number; + readonly keystrokecapture_export_as_csv: (a: number) => [number, number]; + readonly keystrokecapture_clear: (a: number) => void; + readonly keystrokecapture_get_raw_data: (a: number) => [number, number, number]; + readonly keystrokecapture_get_last_10_events: (a: number) => [number, number]; + readonly __wbindgen_exn_store: (a: number) => void; + readonly __externref_table_alloc: () => number; + readonly __wbindgen_export_2: WebAssembly.Table; + readonly __externref_table_dealloc: (a: number) => void; + readonly __wbindgen_malloc: (a: number, b: number) => number; + readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_free: (a: number, b: number, c: number) => void; + readonly __wbindgen_start: () => void; +} + +export type SyncInitInput = BufferSource | WebAssembly.Module; +/** +* Instantiates the given `module`, which can either be bytes or +* a precompiled `WebAssembly.Module`. +* +* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. +* +* @returns {InitOutput} +*/ +export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; + +/** +* If `module_or_path` is {RequestInfo} or {URL}, makes a request and +* for everything else, calls `WebAssembly.instantiate` directly. +* +* @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. +* +* @returns {Promise} +*/ +export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; diff --git a/wasm-keystroke-capture/pkg/keystroke_capture.js b/wasm-keystroke-capture/pkg/keystroke_capture.js new file mode 100644 index 0000000..478a2f2 --- /dev/null +++ b/wasm-keystroke-capture/pkg/keystroke_capture.js @@ -0,0 +1,376 @@ +let wasm; + +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_export_2.set(idx, obj); + return idx; +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } +} + +const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + +if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + +let cachedUint8ArrayMemory0 = null; + +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_export_2.get(idx); + wasm.__externref_table_dealloc(idx); + return value; +} + +let WASM_VECTOR_LEN = 0; + +const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +const KeystrokeCaptureFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_keystrokecapture_free(ptr >>> 0, 1)); + +export class KeystrokeCapture { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + KeystrokeCaptureFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_keystrokecapture_free(ptr, 0); + } + /** + * @param {number} capacity + */ + constructor(capacity) { + const ret = wasm.keystrokecapture_new(capacity); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + this.__wbg_ptr = ret[0] >>> 0; + KeystrokeCaptureFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @param {string} key + * @param {boolean} is_release + */ + capture_keystroke(key, is_release) { + const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.keystrokecapture_capture_keystroke(this.__wbg_ptr, ptr0, len0, is_release); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); + } + } + /** + * @returns {number} + */ + get_event_count() { + const ret = wasm.keystrokecapture_get_event_count(this.__wbg_ptr); + return ret >>> 0; + } + /** + * @returns {string} + */ + export_as_csv() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.keystrokecapture_export_as_csv(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + clear() { + wasm.keystrokecapture_clear(this.__wbg_ptr); + } + /** + * @returns {any} + */ + get_raw_data() { + const ret = wasm.keystrokecapture_get_raw_data(this.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); + } + /** + * @returns {string} + */ + get_last_10_events() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.keystrokecapture_get_last_10_events(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) { + const ret = arg0.call(arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_Window_def73ea0955fc569 = function(arg0) { + let result; + try { + result = arg0 instanceof Window; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_new_78feb108b6472713 = function() { + const ret = new Array(); + return ret; + }; + imports.wbg.__wbg_newnoargs_105ed471475aaf50 = function(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return ret; + }; + imports.wbg.__wbg_now_d18023d54d4e5500 = function(arg0) { + const ret = arg0.now(); + return ret; + }; + imports.wbg.__wbg_performance_c185c0cdc2766575 = function(arg0) { + const ret = arg0.performance; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_push_737cfc8c1432c2c6 = function(arg0, arg1) { + const ret = arg0.push(arg1); + return ret; + }; + imports.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07 = function() { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0 = function() { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819 = function() { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40 = function() { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbindgen_init_externref_table = function() { + const table = wasm.__wbindgen_export_2; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + ; + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = arg0 === undefined; + return ret; + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return ret; + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + + return imports; +} + +function __wbg_init_memory(imports, memory) { + +} + +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedUint8ArrayMemory0 = null; + + + wasm.__wbindgen_start(); + return wasm; +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (typeof module !== 'undefined') { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (typeof module_or_path !== 'undefined') { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (typeof module_or_path === 'undefined') { + module_or_path = new URL('keystroke_capture_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + __wbg_init_memory(imports); + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync }; +export default __wbg_init; diff --git a/wasm-keystroke-capture/pkg/keystroke_capture_bg.wasm b/wasm-keystroke-capture/pkg/keystroke_capture_bg.wasm new file mode 100644 index 0000000..ac3a1c0 Binary files /dev/null and b/wasm-keystroke-capture/pkg/keystroke_capture_bg.wasm differ diff --git a/wasm-keystroke-capture/pkg/keystroke_capture_bg.wasm.d.ts b/wasm-keystroke-capture/pkg/keystroke_capture_bg.wasm.d.ts new file mode 100644 index 0000000..ab25c25 --- /dev/null +++ b/wasm-keystroke-capture/pkg/keystroke_capture_bg.wasm.d.ts @@ -0,0 +1,19 @@ +/* tslint:disable */ +/* eslint-disable */ +export const memory: WebAssembly.Memory; +export const __wbg_keystrokecapture_free: (a: number, b: number) => void; +export const keystrokecapture_new: (a: number) => [number, number, number]; +export const keystrokecapture_capture_keystroke: (a: number, b: number, c: number, d: number) => [number, number]; +export const keystrokecapture_get_event_count: (a: number) => number; +export const keystrokecapture_export_as_csv: (a: number) => [number, number]; +export const keystrokecapture_clear: (a: number) => void; +export const keystrokecapture_get_raw_data: (a: number) => [number, number, number]; +export const keystrokecapture_get_last_10_events: (a: number) => [number, number]; +export const __wbindgen_exn_store: (a: number) => void; +export const __externref_table_alloc: () => number; +export const __wbindgen_export_2: WebAssembly.Table; +export const __externref_table_dealloc: (a: number) => void; +export const __wbindgen_malloc: (a: number, b: number) => number; +export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; +export const __wbindgen_free: (a: number, b: number, c: number) => void; +export const __wbindgen_start: () => void; diff --git a/wasm-keystroke-capture/pkg/package.json b/wasm-keystroke-capture/pkg/package.json new file mode 100644 index 0000000..9d928b4 --- /dev/null +++ b/wasm-keystroke-capture/pkg/package.json @@ -0,0 +1,18 @@ +{ + "name": "keystroke-capture", + "type": "module", + "collaborators": [ + "Your Name" + ], + "version": "0.1.0", + "files": [ + "keystroke_capture_bg.wasm", + "keystroke_capture.js", + "keystroke_capture.d.ts" + ], + "main": "keystroke_capture.js", + "types": "keystroke_capture.d.ts", + "sideEffects": [ + "./snippets/*" + ] +} \ No newline at end of file diff --git a/wasm-keystroke-capture/src/lib.rs b/wasm-keystroke-capture/src/lib.rs new file mode 100644 index 0000000..e6a5081 --- /dev/null +++ b/wasm-keystroke-capture/src/lib.rs @@ -0,0 +1,151 @@ +use wasm_bindgen::prelude::*; +use web_sys::{Performance, Window}; + +#[wasm_bindgen] +pub struct KeystrokeCapture { + timestamps: Vec, + keys: Vec, + event_types: Vec, // 0 for press, 1 for release + capacity: usize, +} + +#[wasm_bindgen] +impl KeystrokeCapture { + #[wasm_bindgen(constructor)] + pub fn new(capacity: usize) -> Result { + // Just validate that we can access performance + let window = web_sys::window() + .ok_or_else(|| JsValue::from_str("No window object available"))?; + let _ = window.performance() + .ok_or_else(|| JsValue::from_str("No performance object available"))?; + + Ok(KeystrokeCapture { + timestamps: Vec::with_capacity(capacity), + keys: Vec::with_capacity(capacity), + event_types: Vec::with_capacity(capacity), + capacity, + }) + } + + // Helper function to get performance.now() + fn get_timestamp() -> Result { + let window = web_sys::window() + .ok_or_else(|| JsValue::from_str("No window object available"))?; + let performance = window.performance() + .ok_or_else(|| JsValue::from_str("No performance object available"))?; + Ok(performance.now()) + } + + #[wasm_bindgen] + pub fn capture_keystroke(&mut self, key: String, is_release: bool) -> Result<(), JsValue> { + if self.timestamps.len() >= self.capacity { + return Err(JsValue::from_str("Capacity exceeded")); + } + + // Get timestamp immediately when called + let timestamp = Self::get_timestamp()?; + + self.timestamps.push(timestamp); + self.keys.push(key); + self.event_types.push(if is_release { 1 } else { 0 }); + + Ok(()) + } + + #[wasm_bindgen] + pub fn get_event_count(&self) -> usize { + self.timestamps.len() + } + + #[wasm_bindgen] + pub fn export_as_csv(&self) -> String { + let mut csv = String::from("Press or Release,Key,Time\n"); + + for i in 0..self.timestamps.len() { + let event_type = if self.event_types[i] == 0 { "P" } else { "R" }; + let timestamp = (self.timestamps[i] + 1735660000000.0) as u64; + + // Handle special characters + let key = match self.keys[i].as_str() { + "," => "Key.comma", + k => k, + }; + + csv.push_str(&format!("{},{},{}\n", + event_type, + key, + timestamp + )); + } + + csv + } + + #[wasm_bindgen] + pub fn clear(&mut self) { + self.timestamps.clear(); + self.keys.clear(); + self.event_types.clear(); + } + + #[wasm_bindgen] + pub fn get_raw_data(&self) -> Result { + let result = js_sys::Array::new(); + + for i in 0..self.timestamps.len() { + let entry = js_sys::Array::new(); + entry.push(&JsValue::from_str(if self.event_types[i] == 0 { "P" } else { "R" })); + + // Handle comma + let key = match self.keys[i].as_str() { + "," => "Key.comma", + k => k, + }; + entry.push(&JsValue::from_str(key)); + + entry.push(&JsValue::from_f64(self.timestamps[i] + 1735660000000.0)); + result.push(&entry); + } + + Ok(result.into()) + } + + #[wasm_bindgen] + pub fn get_last_10_events(&self) -> String { + let start = if self.timestamps.len() > 10 { + self.timestamps.len() - 10 + } else { + 0 + }; + + let mut result = String::new(); + for i in start..self.timestamps.len() { + let event_type = if self.event_types[i] == 0 { "P" } else { "R" }; + result.push_str(&format!("{} {} {:.0}\n", + event_type, + &self.keys[i], + self.timestamps[i] + )); + } + result + } + + // Debug method to check timing precision + #[wasm_bindgen] + pub fn test_timing_precision() -> Result { + let mut times = Vec::new(); + for _ in 0..10 { + times.push(Self::get_timestamp()?); + } + + let mut deltas = Vec::new(); + for i in 1..times.len() { + deltas.push(times[i] - times[i-1]); + } + + let min_delta = deltas.iter().fold(f64::INFINITY, |a, &b| a.min(b)); + let max_delta = deltas.iter().fold(0.0, |a, &b| a.max(b)); + + Ok(format!("Timing test - Min delta: {:.3}ms, Max delta: {:.3}ms", min_delta, max_delta)) + } +} \ No newline at end of file