commit 3a32e619d0d414352dd6b800babc2d990ed72b77 Author: Thiss Date: Tue Sep 9 20:59:52 2025 -0400 vault backup: 2025-09-09 20:59:51 diff --git a/.obsidian/app.json b/.obsidian/app.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.obsidian/app.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json new file mode 100644 index 0000000..ec90a8a --- /dev/null +++ b/.obsidian/appearance.json @@ -0,0 +1,4 @@ +{ + "baseFontSize": 23, + "baseFontSizeAction": true +} \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json new file mode 100644 index 0000000..f7bcbac --- /dev/null +++ b/.obsidian/community-plugins.json @@ -0,0 +1,5 @@ +[ + "mcp-tools", + "obsidian-local-rest-api", + "obsidian-git" +] \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json new file mode 100644 index 0000000..0faa60d --- /dev/null +++ b/.obsidian/core-plugins.json @@ -0,0 +1,33 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "footnotes": false, + "properties": false, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": true, + "bases": true, + "webviewer": false +} \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json new file mode 100644 index 0000000..42a46ec --- /dev/null +++ b/.obsidian/graph.json @@ -0,0 +1,22 @@ +{ + "collapse-filter": true, + "search": "", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 1, + "close": true +} \ No newline at end of file diff --git a/.obsidian/plugins/mcp-tools/bin/mcp-server.exe b/.obsidian/plugins/mcp-tools/bin/mcp-server.exe new file mode 100644 index 0000000..ff47c4e Binary files /dev/null and b/.obsidian/plugins/mcp-tools/bin/mcp-server.exe differ diff --git a/.obsidian/plugins/mcp-tools/main.js b/.obsidian/plugins/mcp-tools/main.js new file mode 100644 index 0000000..2ba52e8 --- /dev/null +++ b/.obsidian/plugins/mcp-tools/main.js @@ -0,0 +1,523 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY BUN +if you want to view the source, please visit https://github.com/jacksteamdev/obsidian-mcp-tools +*/ + +var Jw=Object.create;var{getPrototypeOf:Gw,defineProperty:A7,getOwnPropertyNames:HU,getOwnPropertyDescriptor:Yw}=Object,zU=Object.prototype.hasOwnProperty;var Z8=(Q,X,Z)=>{Z=Q!=null?Jw(Gw(Q)):{};let J=X||!Q||!Q.__esModule?A7(Z,"default",{value:Q,enumerable:!0}):Z;for(let G of HU(Q))if(!zU.call(J,G))A7(J,G,{get:()=>Q[G],enumerable:!0});return J},qU=new WeakMap,Ww=(Q)=>{var X=qU.get(Q),Z;if(X)return X;if(X=A7({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")HU(Q).map((J)=>!zU.call(X,J)&&A7(X,J,{get:()=>Q[J],enumerable:!(Z=Yw(Q,J))||Z.enumerable}));return qU.set(Q,X),X},r=(Q,X)=>()=>(X||Q((X={exports:{}}).exports,X),X.exports);var LJ=(Q,X)=>{for(var Z in X)A7(Q,Z,{get:X[Z],enumerable:!0,configurable:!0,set:(J)=>X[Z]=()=>J})};var t0=r((QG)=>{Object.defineProperty(QG,"__esModule",{value:!0});QG.isFunction=void 0;function Sj(Q){return typeof Q==="function"}QG.isFunction=Sj});var iQ=r((ZG)=>{Object.defineProperty(ZG,"__esModule",{value:!0});ZG.createErrorClass=void 0;function kj(Q){var X=function(J){Error.call(J),J.stack=new Error().stack},Z=Q(X);return Z.prototype=Object.create(Error.prototype),Z.prototype.constructor=Z,Z}ZG.createErrorClass=kj});var Yz=r((XG)=>{Object.defineProperty(XG,"__esModule",{value:!0});XG.UnsubscriptionError=void 0;var yj=iQ();XG.UnsubscriptionError=yj.createErrorClass(function(Q){return function X(Z){Q(this),this.message=Z?Z.length+` errors occurred during unsubscription: +`+Z.map(function(J,G){return G+1+") "+J.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=Z}})});var MQ=r((JG)=>{Object.defineProperty(JG,"__esModule",{value:!0});JG.arrRemove=void 0;function xj(Q,X){if(Q){var Z=Q.indexOf(X);0<=Z&&Q.splice(Z,1)}}JG.arrRemove=xj});var o8=r((O8)=>{var JF=O8&&O8.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")},GF=O8&&O8.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},YF=O8&&O8.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(GG,"__esModule",{value:!0});GG.config=void 0;GG.config={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}});var Hz=r((a9)=>{var HF=a9&&a9.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},zF=a9&&a9.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(YG,"__esModule",{value:!0});YG.reportUnhandledError=void 0;var gj=Q5(),hj=Hz();function fj(Q){hj.timeoutProvider.setTimeout(function(){var X=gj.config.onUnhandledError;if(X)X(Q);else throw Q})}YG.reportUnhandledError=fj});var s6=r((WG)=>{Object.defineProperty(WG,"__esModule",{value:!0});WG.noop=void 0;function bj(){}WG.noop=bj});var KF=r((s9)=>{Object.defineProperty(s9,"__esModule",{value:!0});s9.createNotification=s9.nextNotification=s9.errorNotification=s9.COMPLETE_NOTIFICATION=void 0;s9.COMPLETE_NOTIFICATION=function(){return qG("C",void 0,void 0)}();function mj(Q){return qG("E",void 0,Q)}s9.errorNotification=mj;function _j(Q){return qG("N",Q,void 0)}s9.nextNotification=_j;function qG(Q,X,Z){return{kind:Q,value:X,error:Z}}s9.createNotification=qG});var HG=r((Z5)=>{Object.defineProperty(Z5,"__esModule",{value:!0});Z5.captureError=Z5.errorContext=void 0;var $F=Q5(),n4=null;function dj(Q){if($F.config.useDeprecatedSynchronousErrorHandling){var X=!n4;if(X)n4={errorThrown:!1,error:null};if(Q(),X){var Z=n4,J=Z.errorThrown,G=Z.error;if(n4=null,J)throw G}}else Q()}Z5.errorContext=dj;function uj(Q){if($F.config.useDeprecatedSynchronousErrorHandling&&n4)n4.errorThrown=!0,n4.error=Q}Z5.captureError=uj});var X5=r((E9)=>{var VF=E9&&E9.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(E9,"__esModule",{value:!0});E9.EMPTY_OBSERVER=E9.SafeSubscriber=E9.Subscriber=void 0;var pj=t0(),BF=o8(),Uz=Q5(),lj=zz(),UF=s6(),Kz=KF(),cj=Hz(),ij=HG(),PF=function(Q){VF(X,Q);function X(Z){var J=Q.call(this)||this;if(J.isStopped=!1,Z){if(J.destination=Z,BF.isSubscription(Z))Z.add(J)}else J.destination=E9.EMPTY_OBSERVER;return J}return X.create=function(Z,J,G){return new FF(Z,J,G)},X.prototype.next=function(Z){if(this.isStopped)Bz(Kz.nextNotification(Z),this);else this._next(Z)},X.prototype.error=function(Z){if(this.isStopped)Bz(Kz.errorNotification(Z),this);else this.isStopped=!0,this._error(Z)},X.prototype.complete=function(){if(this.isStopped)Bz(Kz.COMPLETE_NOTIFICATION,this);else this.isStopped=!0,this._complete()},X.prototype.unsubscribe=function(){if(!this.closed)this.isStopped=!0,Q.prototype.unsubscribe.call(this),this.destination=null},X.prototype._next=function(Z){this.destination.next(Z)},X.prototype._error=function(Z){try{this.destination.error(Z)}finally{this.unsubscribe()}},X.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},X}(BF.Subscription);E9.Subscriber=PF;var nj=Function.prototype.bind;function $z(Q,X){return nj.call(Q,X)}var oj=function(){function Q(X){this.partialObserver=X}return Q.prototype.next=function(X){var Z=this.partialObserver;if(Z.next)try{Z.next(X)}catch(J){zG(J)}},Q.prototype.error=function(X){var Z=this.partialObserver;if(Z.error)try{Z.error(X)}catch(J){zG(J)}else zG(X)},Q.prototype.complete=function(){var X=this.partialObserver;if(X.complete)try{X.complete()}catch(Z){zG(Z)}},Q}(),FF=function(Q){VF(X,Q);function X(Z,J,G){var Y=Q.call(this)||this,H;if(pj.isFunction(Z)||!Z)H={next:Z!==null&&Z!==void 0?Z:void 0,error:J!==null&&J!==void 0?J:void 0,complete:G!==null&&G!==void 0?G:void 0};else{var K;if(Y&&Uz.config.useDeprecatedNextContext)K=Object.create(Z),K.unsubscribe=function(){return Y.unsubscribe()},H={next:Z.next&&$z(Z.next,K),error:Z.error&&$z(Z.error,K),complete:Z.complete&&$z(Z.complete,K)};else H=Z}return Y.destination=new oj(H),Y}return X}(PF);E9.SafeSubscriber=FF;function zG(Q){if(Uz.config.useDeprecatedSynchronousErrorHandling)ij.captureError(Q);else lj.reportUnhandledError(Q)}function aj(Q){throw Q}function Bz(Q,X){var Z=Uz.config.onStoppedNotification;Z&&cj.timeoutProvider.setTimeout(function(){return Z(Q,X)})}E9.EMPTY_OBSERVER={closed:!0,next:UF.noop,error:aj,complete:UF.noop}});var a7=r((KG)=>{Object.defineProperty(KG,"__esModule",{value:!0});KG.observable=void 0;KG.observable=function(){return typeof Symbol==="function"&&Symbol.observable||"@@observable"}()});var t6=r(($G)=>{Object.defineProperty($G,"__esModule",{value:!0});$G.identity=void 0;function sj(Q){return Q}$G.identity=sj});var s7=r((J5)=>{Object.defineProperty(J5,"__esModule",{value:!0});J5.pipeFromArray=J5.pipe=void 0;var tj=t6();function rj(){var Q=[];for(var X=0;X{Object.defineProperty(BG,"__esModule",{value:!0});BG.Observable=void 0;var Pz=X5(),ej=o8(),QS=a7(),ZS=s7(),XS=Q5(),Vz=t0(),JS=HG(),GS=function(){function Q(X){if(X)this._subscribe=X}return Q.prototype.lift=function(X){var Z=new Q;return Z.source=this,Z.operator=X,Z},Q.prototype.subscribe=function(X,Z,J){var G=this,Y=WS(X)?X:new Pz.SafeSubscriber(X,Z,J);return JS.errorContext(function(){var H=G,K=H.operator,z=H.source;Y.add(K?K.call(Y,z):z?G._subscribe(Y):G._trySubscribe(Y))}),Y},Q.prototype._trySubscribe=function(X){try{return this._subscribe(X)}catch(Z){X.error(Z)}},Q.prototype.forEach=function(X,Z){var J=this;return Z=LF(Z),new Z(function(G,Y){var H=new Pz.SafeSubscriber({next:function(K){try{X(K)}catch(z){Y(z),H.unsubscribe()}},error:Y,complete:G});J.subscribe(H)})},Q.prototype._subscribe=function(X){var Z;return(Z=this.source)===null||Z===void 0?void 0:Z.subscribe(X)},Q.prototype[QS.observable]=function(){return this},Q.prototype.pipe=function(){var X=[];for(var Z=0;Z{Object.defineProperty(G5,"__esModule",{value:!0});G5.operate=G5.hasLift=void 0;var qS=t0();function CF(Q){return qS.isFunction(Q===null||Q===void 0?void 0:Q.lift)}G5.hasLift=CF;function HS(Q){return function(X){if(CF(X))return X.lift(function(Z){try{return Q(Z,this)}catch(J){this.error(J)}});throw new TypeError("Unable to lift unknown Observable type")}}G5.operate=HS});var Q0=r((nQ)=>{var zS=nQ&&nQ.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(nQ,"__esModule",{value:!0});nQ.OperatorSubscriber=nQ.createOperatorSubscriber=void 0;var KS=X5();function $S(Q,X,Z,J,G){return new NF(Q,X,Z,J,G)}nQ.createOperatorSubscriber=$S;var NF=function(Q){zS(X,Q);function X(Z,J,G,Y,H,K){var z=Q.call(this,Z)||this;return z.onFinalize=H,z.shouldUnsubscribe=K,z._next=J?function(W){try{J(W)}catch($){Z.error($)}}:Q.prototype._next,z._error=Y?function(W){try{Y(W)}catch($){Z.error($)}finally{this.unsubscribe()}}:Q.prototype._error,z._complete=G?function(){try{G()}catch(W){Z.error(W)}finally{this.unsubscribe()}}:Q.prototype._complete,z}return X.prototype.unsubscribe=function(){var Z;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var J=this.closed;Q.prototype.unsubscribe.call(this),!J&&((Z=this.onFinalize)===null||Z===void 0||Z.call(this))}},X}(KS.Subscriber);nQ.OperatorSubscriber=NF});var Fz=r((UG)=>{Object.defineProperty(UG,"__esModule",{value:!0});UG.refCount=void 0;var BS=l1(),US=Q0();function VS(){return BS.operate(function(Q,X){var Z=null;Q._refCount++;var J=US.createOperatorSubscriber(X,void 0,void 0,void 0,function(){if(!Q||Q._refCount<=0||0<--Q._refCount){Z=null;return}var G=Q._connection,Y=Z;if(Z=null,G&&(!Y||G===Y))G.unsubscribe();X.unsubscribe()});if(Q.subscribe(J),!J.closed)Z=Q.connect()})}UG.refCount=VS});var t7=r((Y5)=>{var PS=Y5&&Y5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(Y5,"__esModule",{value:!0});Y5.ConnectableObservable=void 0;var FS=Q6(),TF=o8(),DS=Fz(),LS=Q0(),CS=l1(),NS=function(Q){PS(X,Q);function X(Z,J){var G=Q.call(this)||this;if(G.source=Z,G.subjectFactory=J,G._subject=null,G._refCount=0,G._connection=null,CS.hasLift(Z))G.lift=Z.lift;return G}return X.prototype._subscribe=function(Z){return this.getSubject().subscribe(Z)},X.prototype.getSubject=function(){var Z=this._subject;if(!Z||Z.isStopped)this._subject=this.subjectFactory();return this._subject},X.prototype._teardown=function(){this._refCount=0;var Z=this._connection;this._subject=this._connection=null,Z===null||Z===void 0||Z.unsubscribe()},X.prototype.connect=function(){var Z=this,J=this._connection;if(!J){J=this._connection=new TF.Subscription;var G=this.getSubject();if(J.add(this.source.subscribe(LS.createOperatorSubscriber(G,void 0,function(){Z._teardown(),G.complete()},function(Y){Z._teardown(),G.error(Y)},function(){return Z._teardown()}))),J.closed)this._connection=null,J=TF.Subscription.EMPTY}return J},X.prototype.refCount=function(){return DS.refCount()(this)},X}(FS.Observable);Y5.ConnectableObservable=NS});var MF=r((r7)=>{Object.defineProperty(r7,"__esModule",{value:!0});r7.performanceTimestampProvider=void 0;r7.performanceTimestampProvider={now:function(){return(r7.performanceTimestampProvider.delegate||performance).now()},delegate:void 0}});var Dz=r((j9)=>{var IF=j9&&j9.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},RF=j9&&j9.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(VG,"__esModule",{value:!0});VG.animationFrames=void 0;var MS=Q6(),IS=MF(),AF=Dz();function RS(Q){return Q?OF(Q):AS}VG.animationFrames=RS;function OF(Q){return new MS.Observable(function(X){var Z=Q||IS.performanceTimestampProvider,J=Z.now(),G=0,Y=function(){if(!X.closed)G=AF.animationFrameProvider.requestAnimationFrame(function(H){G=0;var K=Z.now();X.next({timestamp:Q?K:H,elapsed:K-J}),Y()})};return Y(),function(){if(G)AF.animationFrameProvider.cancelAnimationFrame(G)}})}var AS=OF()});var Lz=r((PG)=>{Object.defineProperty(PG,"__esModule",{value:!0});PG.ObjectUnsubscribedError=void 0;var OS=iQ();PG.ObjectUnsubscribedError=OS.createErrorClass(function(Q){return function X(){Q(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})});var r6=r((t9)=>{var jF=t9&&t9.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}(),wS=t9&&t9.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t9,"__esModule",{value:!0});t9.AnonymousSubject=t9.Subject=void 0;var EF=Q6(),Nz=o8(),ES=Lz(),jS=MQ(),Cz=HG(),SF=function(Q){jF(X,Q);function X(){var Z=Q.call(this)||this;return Z.closed=!1,Z.currentObservers=null,Z.observers=[],Z.isStopped=!1,Z.hasError=!1,Z.thrownError=null,Z}return X.prototype.lift=function(Z){var J=new Tz(this,this);return J.operator=Z,J},X.prototype._throwIfClosed=function(){if(this.closed)throw new ES.ObjectUnsubscribedError},X.prototype.next=function(Z){var J=this;Cz.errorContext(function(){var G,Y;if(J._throwIfClosed(),!J.isStopped){if(!J.currentObservers)J.currentObservers=Array.from(J.observers);try{for(var H=wS(J.currentObservers),K=H.next();!K.done;K=H.next()){var z=K.value;z.next(Z)}}catch(W){G={error:W}}finally{try{if(K&&!K.done&&(Y=H.return))Y.call(H)}finally{if(G)throw G.error}}}})},X.prototype.error=function(Z){var J=this;Cz.errorContext(function(){if(J._throwIfClosed(),!J.isStopped){J.hasError=J.isStopped=!0,J.thrownError=Z;var G=J.observers;while(G.length)G.shift().error(Z)}})},X.prototype.complete=function(){var Z=this;Cz.errorContext(function(){if(Z._throwIfClosed(),!Z.isStopped){Z.isStopped=!0;var J=Z.observers;while(J.length)J.shift().complete()}})},X.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(X.prototype,"observed",{get:function(){var Z;return((Z=this.observers)===null||Z===void 0?void 0:Z.length)>0},enumerable:!1,configurable:!0}),X.prototype._trySubscribe=function(Z){return this._throwIfClosed(),Q.prototype._trySubscribe.call(this,Z)},X.prototype._subscribe=function(Z){return this._throwIfClosed(),this._checkFinalizedStatuses(Z),this._innerSubscribe(Z)},X.prototype._innerSubscribe=function(Z){var J=this,G=this,Y=G.hasError,H=G.isStopped,K=G.observers;if(Y||H)return Nz.EMPTY_SUBSCRIPTION;return this.currentObservers=null,K.push(Z),new Nz.Subscription(function(){J.currentObservers=null,jS.arrRemove(K,Z)})},X.prototype._checkFinalizedStatuses=function(Z){var J=this,G=J.hasError,Y=J.thrownError,H=J.isStopped;if(G)Z.error(Y);else if(H)Z.complete()},X.prototype.asObservable=function(){var Z=new EF.Observable;return Z.source=this,Z},X.create=function(Z,J){return new Tz(Z,J)},X}(EF.Observable);t9.Subject=SF;var Tz=function(Q){jF(X,Q);function X(Z,J){var G=Q.call(this)||this;return G.destination=Z,G.source=J,G}return X.prototype.next=function(Z){var J,G;(G=(J=this.destination)===null||J===void 0?void 0:J.next)===null||G===void 0||G.call(J,Z)},X.prototype.error=function(Z){var J,G;(G=(J=this.destination)===null||J===void 0?void 0:J.error)===null||G===void 0||G.call(J,Z)},X.prototype.complete=function(){var Z,J;(J=(Z=this.destination)===null||Z===void 0?void 0:Z.complete)===null||J===void 0||J.call(Z)},X.prototype._subscribe=function(Z){var J,G;return(G=(J=this.source)===null||J===void 0?void 0:J.subscribe(Z))!==null&&G!==void 0?G:Nz.EMPTY_SUBSCRIPTION},X}(SF);t9.AnonymousSubject=Tz});var Mz=r((W5)=>{var SS=W5&&W5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(W5,"__esModule",{value:!0});W5.BehaviorSubject=void 0;var kS=r6(),yS=function(Q){SS(X,Q);function X(Z){var J=Q.call(this)||this;return J._value=Z,J}return Object.defineProperty(X.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),X.prototype._subscribe=function(Z){var J=Q.prototype._subscribe.call(this,Z);return!J.closed&&Z.next(this._value),J},X.prototype.getValue=function(){var Z=this,J=Z.hasError,G=Z.thrownError,Y=Z._value;if(J)throw G;return this._throwIfClosed(),Y},X.prototype.next=function(Z){Q.prototype.next.call(this,this._value=Z)},X}(kS.Subject);W5.BehaviorSubject=yS});var FG=r((e7)=>{Object.defineProperty(e7,"__esModule",{value:!0});e7.dateTimestampProvider=void 0;e7.dateTimestampProvider={now:function(){return(e7.dateTimestampProvider.delegate||Date).now()},delegate:void 0}});var DG=r((q5)=>{var xS=q5&&q5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(q5,"__esModule",{value:!0});q5.ReplaySubject=void 0;var vS=r6(),gS=FG(),hS=function(Q){xS(X,Q);function X(Z,J,G){if(Z===void 0)Z=1/0;if(J===void 0)J=1/0;if(G===void 0)G=gS.dateTimestampProvider;var Y=Q.call(this)||this;return Y._bufferSize=Z,Y._windowTime=J,Y._timestampProvider=G,Y._buffer=[],Y._infiniteTimeWindow=!0,Y._infiniteTimeWindow=J===1/0,Y._bufferSize=Math.max(1,Z),Y._windowTime=Math.max(1,J),Y}return X.prototype.next=function(Z){var J=this,G=J.isStopped,Y=J._buffer,H=J._infiniteTimeWindow,K=J._timestampProvider,z=J._windowTime;if(!G)Y.push(Z),!H&&Y.push(K.now()+z);this._trimBuffer(),Q.prototype.next.call(this,Z)},X.prototype._subscribe=function(Z){this._throwIfClosed(),this._trimBuffer();var J=this._innerSubscribe(Z),G=this,Y=G._infiniteTimeWindow,H=G._buffer,K=H.slice();for(var z=0;z{var fS=H5&&H5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(H5,"__esModule",{value:!0});H5.AsyncSubject=void 0;var bS=r6(),mS=function(Q){fS(X,Q);function X(){var Z=Q!==null&&Q.apply(this,arguments)||this;return Z._value=null,Z._hasValue=!1,Z._isComplete=!1,Z}return X.prototype._checkFinalizedStatuses=function(Z){var J=this,G=J.hasError,Y=J._hasValue,H=J._value,K=J.thrownError,z=J.isStopped,W=J._isComplete;if(G)Z.error(K);else if(z||W)Y&&Z.next(H),Z.complete()},X.prototype.next=function(Z){if(!this.isStopped)this._value=Z,this._hasValue=!0},X.prototype.complete=function(){var Z=this,J=Z._hasValue,G=Z._value,Y=Z._isComplete;if(!Y)this._isComplete=!0,J&&Q.prototype.next.call(this,G),Q.prototype.complete.call(this)},X}(bS.Subject);H5.AsyncSubject=mS});var kF=r((z5)=>{var _S=z5&&z5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(z5,"__esModule",{value:!0});z5.Action=void 0;var dS=o8(),uS=function(Q){_S(X,Q);function X(Z,J){return Q.call(this)||this}return X.prototype.schedule=function(Z,J){if(J===void 0)J=0;return this},X}(dS.Subscription);z5.Action=uS});var vF=r((r9)=>{var yF=r9&&r9.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},xF=r9&&r9.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var pS=K5&&K5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(K5,"__esModule",{value:!0});K5.AsyncAction=void 0;var lS=kF(),gF=vF(),cS=MQ(),iS=function(Q){pS(X,Q);function X(Z,J){var G=Q.call(this,Z,J)||this;return G.scheduler=Z,G.work=J,G.pending=!1,G}return X.prototype.schedule=function(Z,J){var G;if(J===void 0)J=0;if(this.closed)return this;this.state=Z;var Y=this.id,H=this.scheduler;if(Y!=null)this.id=this.recycleAsyncId(H,Y,J);return this.pending=!0,this.delay=J,this.id=(G=this.id)!==null&&G!==void 0?G:this.requestAsyncId(H,this.id,J),this},X.prototype.requestAsyncId=function(Z,J,G){if(G===void 0)G=0;return gF.intervalProvider.setInterval(Z.flush.bind(Z,this),G)},X.prototype.recycleAsyncId=function(Z,J,G){if(G===void 0)G=0;if(G!=null&&this.delay===G&&this.pending===!1)return J;if(J!=null)gF.intervalProvider.clearInterval(J);return},X.prototype.execute=function(Z,J){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var G=this._execute(Z,J);if(G)return G;else if(this.pending===!1&&this.id!=null)this.id=this.recycleAsyncId(this.scheduler,this.id,null)},X.prototype._execute=function(Z,J){var G=!1,Y;try{this.work(Z)}catch(H){G=!0,Y=H?H:new Error("Scheduled action threw falsy error")}if(G)return this.unsubscribe(),Y},X.prototype.unsubscribe=function(){if(!this.closed){var Z=this,J=Z.id,G=Z.scheduler,Y=G.actions;if(this.work=this.state=this.scheduler=null,this.pending=!1,cS.arrRemove(Y,this),J!=null)this.id=this.recycleAsyncId(G,J,null);this.delay=null,Q.prototype.unsubscribe.call(this)}},X}(lS.Action);K5.AsyncAction=iS});var fF=r((B5)=>{Object.defineProperty(B5,"__esModule",{value:!0});B5.TestTools=B5.Immediate=void 0;var nS=1,Iz,CG={};function hF(Q){if(Q in CG)return delete CG[Q],!0;return!1}B5.Immediate={setImmediate:function(Q){var X=nS++;if(CG[X]=!0,!Iz)Iz=Promise.resolve();return Iz.then(function(){return hF(X)&&Q()}),X},clearImmediate:function(Q){hF(Q)}};B5.TestTools={pending:function(){return Object.keys(CG).length}}});var mF=r((e9)=>{var oS=e9&&e9.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},aS=e9&&e9.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var rS=U5&&U5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(U5,"__esModule",{value:!0});U5.AsapAction=void 0;var eS=$5(),_F=mF(),Qk=function(Q){rS(X,Q);function X(Z,J){var G=Q.call(this,Z,J)||this;return G.scheduler=Z,G.work=J,G}return X.prototype.requestAsyncId=function(Z,J,G){if(G===void 0)G=0;if(G!==null&&G>0)return Q.prototype.requestAsyncId.call(this,Z,J,G);return Z.actions.push(this),Z._scheduled||(Z._scheduled=_F.immediateProvider.setImmediate(Z.flush.bind(Z,void 0)))},X.prototype.recycleAsyncId=function(Z,J,G){var Y;if(G===void 0)G=0;if(G!=null?G>0:this.delay>0)return Q.prototype.recycleAsyncId.call(this,Z,J,G);var H=Z.actions;if(J!=null&&((Y=H[H.length-1])===null||Y===void 0?void 0:Y.id)!==J){if(_F.immediateProvider.clearImmediate(J),Z._scheduled===J)Z._scheduled=void 0}return},X}(eS.AsyncAction);U5.AsapAction=Qk});var Rz=r((NG)=>{Object.defineProperty(NG,"__esModule",{value:!0});NG.Scheduler=void 0;var Zk=FG(),Xk=function(){function Q(X,Z){if(Z===void 0)Z=Q.now;this.schedulerActionCtor=X,this.now=Z}return Q.prototype.schedule=function(X,Z,J){if(Z===void 0)Z=0;return new this.schedulerActionCtor(this,X).schedule(J,Z)},Q.now=Zk.dateTimestampProvider.now,Q}();NG.Scheduler=Xk});var P5=r((V5)=>{var Jk=V5&&V5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(V5,"__esModule",{value:!0});V5.AsyncScheduler=void 0;var uF=Rz(),Gk=function(Q){Jk(X,Q);function X(Z,J){if(J===void 0)J=uF.Scheduler.now;var G=Q.call(this,Z,J)||this;return G.actions=[],G._active=!1,G}return X.prototype.flush=function(Z){var J=this.actions;if(this._active){J.push(Z);return}var G;this._active=!0;do if(G=Z.execute(Z.state,Z.delay))break;while(Z=J.shift());if(this._active=!1,G){while(Z=J.shift())Z.unsubscribe();throw G}},X}(uF.Scheduler);V5.AsyncScheduler=Gk});var pF=r((F5)=>{var Yk=F5&&F5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(F5,"__esModule",{value:!0});F5.AsapScheduler=void 0;var Wk=P5(),qk=function(Q){Yk(X,Q);function X(){return Q!==null&&Q.apply(this,arguments)||this}return X.prototype.flush=function(Z){this._active=!0;var J=this._scheduled;this._scheduled=void 0;var G=this.actions,Y;Z=Z||G.shift();do if(Y=Z.execute(Z.state,Z.delay))break;while((Z=G[0])&&Z.id===J&&G.shift());if(this._active=!1,Y){while((Z=G[0])&&Z.id===J&&G.shift())Z.unsubscribe();throw Y}},X}(Wk.AsyncScheduler);F5.AsapScheduler=qk});var lF=r((o4)=>{Object.defineProperty(o4,"__esModule",{value:!0});o4.asap=o4.asapScheduler=void 0;var Hk=dF(),zk=pF();o4.asapScheduler=new zk.AsapScheduler(Hk.AsapAction);o4.asap=o4.asapScheduler});var w8=r((a4)=>{Object.defineProperty(a4,"__esModule",{value:!0});a4.async=a4.asyncScheduler=void 0;var Kk=$5(),$k=P5();a4.asyncScheduler=new $k.AsyncScheduler(Kk.AsyncAction);a4.async=a4.asyncScheduler});var cF=r((D5)=>{var Bk=D5&&D5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(D5,"__esModule",{value:!0});D5.QueueAction=void 0;var Uk=$5(),Vk=function(Q){Bk(X,Q);function X(Z,J){var G=Q.call(this,Z,J)||this;return G.scheduler=Z,G.work=J,G}return X.prototype.schedule=function(Z,J){if(J===void 0)J=0;if(J>0)return Q.prototype.schedule.call(this,Z,J);return this.delay=J,this.state=Z,this.scheduler.flush(this),this},X.prototype.execute=function(Z,J){return J>0||this.closed?Q.prototype.execute.call(this,Z,J):this._execute(Z,J)},X.prototype.requestAsyncId=function(Z,J,G){if(G===void 0)G=0;if(G!=null&&G>0||G==null&&this.delay>0)return Q.prototype.requestAsyncId.call(this,Z,J,G);return Z.flush(this),0},X}(Uk.AsyncAction);D5.QueueAction=Vk});var iF=r((L5)=>{var Pk=L5&&L5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(L5,"__esModule",{value:!0});L5.QueueScheduler=void 0;var Fk=P5(),Dk=function(Q){Pk(X,Q);function X(){return Q!==null&&Q.apply(this,arguments)||this}return X}(Fk.AsyncScheduler);L5.QueueScheduler=Dk});var nF=r((s4)=>{Object.defineProperty(s4,"__esModule",{value:!0});s4.queue=s4.queueScheduler=void 0;var Lk=cF(),Ck=iF();s4.queueScheduler=new Ck.QueueScheduler(Lk.QueueAction);s4.queue=s4.queueScheduler});var aF=r((C5)=>{var Nk=C5&&C5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(C5,"__esModule",{value:!0});C5.AnimationFrameAction=void 0;var Tk=$5(),oF=Dz(),Mk=function(Q){Nk(X,Q);function X(Z,J){var G=Q.call(this,Z,J)||this;return G.scheduler=Z,G.work=J,G}return X.prototype.requestAsyncId=function(Z,J,G){if(G===void 0)G=0;if(G!==null&&G>0)return Q.prototype.requestAsyncId.call(this,Z,J,G);return Z.actions.push(this),Z._scheduled||(Z._scheduled=oF.animationFrameProvider.requestAnimationFrame(function(){return Z.flush(void 0)}))},X.prototype.recycleAsyncId=function(Z,J,G){var Y;if(G===void 0)G=0;if(G!=null?G>0:this.delay>0)return Q.prototype.recycleAsyncId.call(this,Z,J,G);var H=Z.actions;if(J!=null&&((Y=H[H.length-1])===null||Y===void 0?void 0:Y.id)!==J)oF.animationFrameProvider.cancelAnimationFrame(J),Z._scheduled=void 0;return},X}(Tk.AsyncAction);C5.AnimationFrameAction=Mk});var sF=r((N5)=>{var Ik=N5&&N5.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(N5,"__esModule",{value:!0});N5.AnimationFrameScheduler=void 0;var Rk=P5(),Ak=function(Q){Ik(X,Q);function X(){return Q!==null&&Q.apply(this,arguments)||this}return X.prototype.flush=function(Z){this._active=!0;var J=this._scheduled;this._scheduled=void 0;var G=this.actions,Y;Z=Z||G.shift();do if(Y=Z.execute(Z.state,Z.delay))break;while((Z=G[0])&&Z.id===J&&G.shift());if(this._active=!1,Y){while((Z=G[0])&&Z.id===J&&G.shift())Z.unsubscribe();throw Y}},X}(Rk.AsyncScheduler);N5.AnimationFrameScheduler=Ak});var tF=r((t4)=>{Object.defineProperty(t4,"__esModule",{value:!0});t4.animationFrame=t4.animationFrameScheduler=void 0;var Ok=aF(),wk=sF();t4.animationFrameScheduler=new wk.AnimationFrameScheduler(Ok.AnimationFrameAction);t4.animationFrame=t4.animationFrameScheduler});var QD=r((oQ)=>{var rF=oQ&&oQ.__extends||function(){var Q=function(X,Z){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(J,G){J.__proto__=G}||function(J,G){for(var Y in G)if(Object.prototype.hasOwnProperty.call(G,Y))J[Y]=G[Y]},Q(X,Z)};return function(X,Z){if(typeof Z!=="function"&&Z!==null)throw new TypeError("Class extends value "+String(Z)+" is not a constructor or null");Q(X,Z);function J(){this.constructor=X}X.prototype=Z===null?Object.create(Z):(J.prototype=Z.prototype,new J)}}();Object.defineProperty(oQ,"__esModule",{value:!0});oQ.VirtualAction=oQ.VirtualTimeScheduler=void 0;var Ek=$5(),jk=o8(),Sk=P5(),kk=function(Q){rF(X,Q);function X(Z,J){if(Z===void 0)Z=eF;if(J===void 0)J=1/0;var G=Q.call(this,Z,function(){return G.frame})||this;return G.maxFrames=J,G.frame=0,G.index=-1,G}return X.prototype.flush=function(){var Z=this,J=Z.actions,G=Z.maxFrames,Y,H;while((H=J[0])&&H.delay<=G)if(J.shift(),this.frame=H.delay,Y=H.execute(H.state,H.delay))break;if(Y){while(H=J.shift())H.unsubscribe();throw Y}},X.frameTimeFactor=10,X}(Sk.AsyncScheduler);oQ.VirtualTimeScheduler=kk;var eF=function(Q){rF(X,Q);function X(Z,J,G){if(G===void 0)G=Z.index+=1;var Y=Q.call(this,Z,J)||this;return Y.scheduler=Z,Y.work=J,Y.index=G,Y.active=!0,Y.index=Z.index=G,Y}return X.prototype.schedule=function(Z,J){if(J===void 0)J=0;if(Number.isFinite(J)){if(!this.id)return Q.prototype.schedule.call(this,Z,J);this.active=!1;var G=new X(this.scheduler,this.work);return this.add(G),G.schedule(Z,J)}else return jk.Subscription.EMPTY},X.prototype.requestAsyncId=function(Z,J,G){if(G===void 0)G=0;this.delay=Z.frame+G;var Y=Z.actions;return Y.push(this),Y.sort(X.sortActions),1},X.prototype.recycleAsyncId=function(Z,J,G){if(G===void 0)G=0;return},X.prototype._execute=function(Z,J){if(this.active===!0)return Q.prototype._execute.call(this,Z,J)},X.sortActions=function(Z,J){if(Z.delay===J.delay)if(Z.index===J.index)return 0;else if(Z.index>J.index)return 1;else return-1;else if(Z.delay>J.delay)return 1;else return-1},X}(Ek.AsyncAction);oQ.VirtualAction=eF});var S9=r((r4)=>{Object.defineProperty(r4,"__esModule",{value:!0});r4.empty=r4.EMPTY=void 0;var ZD=Q6();r4.EMPTY=new ZD.Observable(function(Q){return Q.complete()});function yk(Q){return Q?xk(Q):r4.EMPTY}r4.empty=yk;function xk(Q){return new ZD.Observable(function(X){return Q.schedule(function(){return X.complete()})})}});var QX=r((TG)=>{Object.defineProperty(TG,"__esModule",{value:!0});TG.isScheduler=void 0;var vk=t0();function gk(Q){return Q&&vk.isFunction(Q.schedule)}TG.isScheduler=gk});var E8=r((aQ)=>{Object.defineProperty(aQ,"__esModule",{value:!0});aQ.popNumber=aQ.popScheduler=aQ.popResultSelector=void 0;var hk=t0(),fk=QX();function Az(Q){return Q[Q.length-1]}function bk(Q){return hk.isFunction(Az(Q))?Q.pop():void 0}aQ.popResultSelector=bk;function mk(Q){return fk.isScheduler(Az(Q))?Q.pop():void 0}aQ.popScheduler=mk;function _k(Q,X){return typeof Az(Q)==="number"?Q.pop():X}aQ.popNumber=_k});var IG=r((MG)=>{Object.defineProperty(MG,"__esModule",{value:!0});MG.isArrayLike=void 0;MG.isArrayLike=function(Q){return Q&&typeof Q.length==="number"&&typeof Q!=="function"}});var Oz=r((RG)=>{Object.defineProperty(RG,"__esModule",{value:!0});RG.isPromise=void 0;var dk=t0();function uk(Q){return dk.isFunction(Q===null||Q===void 0?void 0:Q.then)}RG.isPromise=uk});var wz=r((AG)=>{Object.defineProperty(AG,"__esModule",{value:!0});AG.isInteropObservable=void 0;var pk=a7(),lk=t0();function ck(Q){return lk.isFunction(Q[pk.observable])}AG.isInteropObservable=ck});var Ez=r((OG)=>{Object.defineProperty(OG,"__esModule",{value:!0});OG.isAsyncIterable=void 0;var ik=t0();function nk(Q){return Symbol.asyncIterator&&ik.isFunction(Q===null||Q===void 0?void 0:Q[Symbol.asyncIterator])}OG.isAsyncIterable=nk});var jz=r((wG)=>{Object.defineProperty(wG,"__esModule",{value:!0});wG.createInvalidObservableTypeError=void 0;function ok(Q){return new TypeError("You provided "+(Q!==null&&typeof Q==="object"?"an invalid object":"'"+Q+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}wG.createInvalidObservableTypeError=ok});var Sz=r((T5)=>{Object.defineProperty(T5,"__esModule",{value:!0});T5.iterator=T5.getSymbolIterator=void 0;function XD(){if(typeof Symbol!=="function"||!Symbol.iterator)return"@@iterator";return Symbol.iterator}T5.getSymbolIterator=XD;T5.iterator=XD()});var kz=r((EG)=>{Object.defineProperty(EG,"__esModule",{value:!0});EG.isIterable=void 0;var ak=Sz(),sk=t0();function tk(Q){return sk.isFunction(Q===null||Q===void 0?void 0:Q[ak.iterator])}EG.isIterable=tk});var jG=r((z9)=>{var rk=z9&&z9.__generator||function(Q,X){var Z={label:0,sent:function(){if(Y[0]&1)throw Y[1];return Y[1]},trys:[],ops:[]},J,G,Y,H;return H={next:K(0),throw:K(1),return:K(2)},typeof Symbol==="function"&&(H[Symbol.iterator]=function(){return this}),H;function K(W){return function($){return z([W,$])}}function z(W){if(J)throw new TypeError("Generator is already executing.");while(Z)try{if(J=1,G&&(Y=W[0]&2?G.return:W[0]?G.throw||((Y=G.return)&&Y.call(G),0):G.next)&&!(Y=Y.call(G,W[1])).done)return Y;if(G=0,Y)W=[W[0]&2,Y.value];switch(W[0]){case 0:case 1:Y=W;break;case 4:return Z.label++,{value:W[1],done:!1};case 5:Z.label++,G=W[1],W=[0];continue;case 7:W=Z.ops.pop(),Z.trys.pop();continue;default:if((Y=Z.trys,!(Y=Y.length>0&&Y[Y.length-1]))&&(W[0]===6||W[0]===2)){Z=0;continue}if(W[0]===3&&(!Y||W[1]>Y[0]&&W[1]1||K(B,D)})}}function K(B,D){try{z(J[B](D))}catch(F){q(Y[0][3],F)}}function z(B){B.value instanceof M5?Promise.resolve(B.value.v).then(W,$):q(Y[0][2],B)}function W(B){K("next",B)}function $(B){K("throw",B)}function q(B,D){if(B(D),Y.shift(),Y.length)K(Y[0][0],Y[0][1])}};Object.defineProperty(z9,"__esModule",{value:!0});z9.isReadableStreamLike=z9.readableStreamLikeToAsyncGenerator=void 0;var Qy=t0();function Zy(Q){return ek(this,arguments,function X(){var Z,J,G,Y;return rk(this,function(H){switch(H.label){case 0:Z=Q.getReader(),H.label=1;case 1:H.trys.push([1,,9,10]),H.label=2;case 2:return[4,M5(Z.read())];case 3:if(J=H.sent(),G=J.value,Y=J.done,!Y)return[3,5];return[4,M5(void 0)];case 4:return[2,H.sent()];case 5:return[4,M5(G)];case 6:return[4,H.sent()];case 7:return H.sent(),[3,2];case 8:return[3,10];case 9:return Z.releaseLock(),[7];case 10:return[2]}})})}z9.readableStreamLikeToAsyncGenerator=Zy;function Xy(Q){return Qy.isFunction(Q===null||Q===void 0?void 0:Q.getReader)}z9.isReadableStreamLike=Xy});var A0=r((M6)=>{var Jy=M6&&M6.__awaiter||function(Q,X,Z,J){function G(Y){return Y instanceof Z?Y:new Z(function(H){H(Y)})}return new(Z||(Z=Promise))(function(Y,H){function K($){try{W(J.next($))}catch(q){H(q)}}function z($){try{W(J.throw($))}catch(q){H(q)}}function W($){$.done?Y($.value):G($.value).then(K,z)}W((J=J.apply(Q,X||[])).next())})},Gy=M6&&M6.__generator||function(Q,X){var Z={label:0,sent:function(){if(Y[0]&1)throw Y[1];return Y[1]},trys:[],ops:[]},J,G,Y,H;return H={next:K(0),throw:K(1),return:K(2)},typeof Symbol==="function"&&(H[Symbol.iterator]=function(){return this}),H;function K(W){return function($){return z([W,$])}}function z(W){if(J)throw new TypeError("Generator is already executing.");while(Z)try{if(J=1,G&&(Y=W[0]&2?G.return:W[0]?G.throw||((Y=G.return)&&Y.call(G),0):G.next)&&!(Y=Y.call(G,W[1])).done)return Y;if(G=0,Y)W=[W[0]&2,Y.value];switch(W[0]){case 0:case 1:Y=W;break;case 4:return Z.label++,{value:W[1],done:!1};case 5:Z.label++,G=W[1],W=[0];continue;case 7:W=Z.ops.pop(),Z.trys.pop();continue;default:if((Y=Z.trys,!(Y=Y.length>0&&Y[Y.length-1]))&&(W[0]===6||W[0]===2)){Z=0;continue}if(W[0]===3&&(!Y||W[1]>Y[0]&&W[1]=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(M6,"__esModule",{value:!0});M6.fromReadableStreamLike=M6.fromAsyncIterable=M6.fromIterable=M6.fromPromise=M6.fromArrayLike=M6.fromInteropObservable=M6.innerFrom=void 0;var Wy=IG(),qy=Oz(),I5=Q6(),Hy=wz(),zy=Ez(),Ky=jz(),$y=kz(),JD=jG(),By=t0(),Uy=zz(),Vy=a7();function Py(Q){if(Q instanceof I5.Observable)return Q;if(Q!=null){if(Hy.isInteropObservable(Q))return GD(Q);if(Wy.isArrayLike(Q))return YD(Q);if(qy.isPromise(Q))return WD(Q);if(zy.isAsyncIterable(Q))return xz(Q);if($y.isIterable(Q))return qD(Q);if(JD.isReadableStreamLike(Q))return HD(Q)}throw Ky.createInvalidObservableTypeError(Q)}M6.innerFrom=Py;function GD(Q){return new I5.Observable(function(X){var Z=Q[Vy.observable]();if(By.isFunction(Z.subscribe))return Z.subscribe(X);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}M6.fromInteropObservable=GD;function YD(Q){return new I5.Observable(function(X){for(var Z=0;Z{Object.defineProperty(SG,"__esModule",{value:!0});SG.executeSchedule=void 0;function Dy(Q,X,Z,J,G){if(J===void 0)J=0;if(G===void 0)G=!1;var Y=X.schedule(function(){if(Z(),G)Q.add(this.schedule(null,J));else this.unsubscribe()},J);if(Q.add(Y),!G)return Y}SG.executeSchedule=Dy});var ZX=r((kG)=>{Object.defineProperty(kG,"__esModule",{value:!0});kG.observeOn=void 0;var vz=IQ(),Ly=l1(),Cy=Q0();function Ny(Q,X){if(X===void 0)X=0;return Ly.operate(function(Z,J){Z.subscribe(Cy.createOperatorSubscriber(J,function(G){return vz.executeSchedule(J,Q,function(){return J.next(G)},X)},function(){return vz.executeSchedule(J,Q,function(){return J.complete()},X)},function(G){return vz.executeSchedule(J,Q,function(){return J.error(G)},X)}))})}kG.observeOn=Ny});var XX=r((yG)=>{Object.defineProperty(yG,"__esModule",{value:!0});yG.subscribeOn=void 0;var Ty=l1();function My(Q,X){if(X===void 0)X=0;return Ty.operate(function(Z,J){J.add(Q.schedule(function(){return Z.subscribe(J)},X))})}yG.subscribeOn=My});var zD=r((xG)=>{Object.defineProperty(xG,"__esModule",{value:!0});xG.scheduleObservable=void 0;var Iy=A0(),Ry=ZX(),Ay=XX();function Oy(Q,X){return Iy.innerFrom(Q).pipe(Ay.subscribeOn(X),Ry.observeOn(X))}xG.scheduleObservable=Oy});var KD=r((vG)=>{Object.defineProperty(vG,"__esModule",{value:!0});vG.schedulePromise=void 0;var wy=A0(),Ey=ZX(),jy=XX();function Sy(Q,X){return wy.innerFrom(Q).pipe(jy.subscribeOn(X),Ey.observeOn(X))}vG.schedulePromise=Sy});var $D=r((gG)=>{Object.defineProperty(gG,"__esModule",{value:!0});gG.scheduleArray=void 0;var ky=Q6();function yy(Q,X){return new ky.Observable(function(Z){var J=0;return X.schedule(function(){if(J===Q.length)Z.complete();else if(Z.next(Q[J++]),!Z.closed)this.schedule()})})}gG.scheduleArray=yy});var gz=r((hG)=>{Object.defineProperty(hG,"__esModule",{value:!0});hG.scheduleIterable=void 0;var xy=Q6(),vy=Sz(),gy=t0(),BD=IQ();function hy(Q,X){return new xy.Observable(function(Z){var J;return BD.executeSchedule(Z,X,function(){J=Q[vy.iterator](),BD.executeSchedule(Z,X,function(){var G,Y,H;try{G=J.next(),Y=G.value,H=G.done}catch(K){Z.error(K);return}if(H)Z.complete();else Z.next(Y)},0,!0)}),function(){return gy.isFunction(J===null||J===void 0?void 0:J.return)&&J.return()}})}hG.scheduleIterable=hy});var hz=r((fG)=>{Object.defineProperty(fG,"__esModule",{value:!0});fG.scheduleAsyncIterable=void 0;var fy=Q6(),UD=IQ();function by(Q,X){if(!Q)throw new Error("Iterable cannot be null");return new fy.Observable(function(Z){UD.executeSchedule(Z,X,function(){var J=Q[Symbol.asyncIterator]();UD.executeSchedule(Z,X,function(){J.next().then(function(G){if(G.done)Z.complete();else Z.next(G.value)})},0,!0)})})}fG.scheduleAsyncIterable=by});var VD=r((bG)=>{Object.defineProperty(bG,"__esModule",{value:!0});bG.scheduleReadableStreamLike=void 0;var my=hz(),_y=jG();function dy(Q,X){return my.scheduleAsyncIterable(_y.readableStreamLikeToAsyncGenerator(Q),X)}bG.scheduleReadableStreamLike=dy});var fz=r((mG)=>{Object.defineProperty(mG,"__esModule",{value:!0});mG.scheduled=void 0;var uy=zD(),py=KD(),ly=$D(),cy=gz(),iy=hz(),ny=wz(),oy=Oz(),ay=IG(),sy=kz(),ty=Ez(),ry=jz(),ey=jG(),Qx=VD();function Zx(Q,X){if(Q!=null){if(ny.isInteropObservable(Q))return uy.scheduleObservable(Q,X);if(ay.isArrayLike(Q))return ly.scheduleArray(Q,X);if(oy.isPromise(Q))return py.schedulePromise(Q,X);if(ty.isAsyncIterable(Q))return iy.scheduleAsyncIterable(Q,X);if(sy.isIterable(Q))return cy.scheduleIterable(Q,X);if(ey.isReadableStreamLike(Q))return Qx.scheduleReadableStreamLike(Q,X)}throw ry.createInvalidObservableTypeError(Q)}mG.scheduled=Zx});var RQ=r((_G)=>{Object.defineProperty(_G,"__esModule",{value:!0});_G.from=void 0;var Xx=fz(),Jx=A0();function Gx(Q,X){return X?Xx.scheduled(Q,X):Jx.innerFrom(Q)}_G.from=Gx});var uG=r((dG)=>{Object.defineProperty(dG,"__esModule",{value:!0});dG.of=void 0;var Yx=E8(),Wx=RQ();function qx(){var Q=[];for(var X=0;X{Object.defineProperty(pG,"__esModule",{value:!0});pG.throwError=void 0;var Hx=Q6(),zx=t0();function Kx(Q,X){var Z=zx.isFunction(Q)?Q:function(){return Q},J=function(G){return G.error(Z())};return new Hx.Observable(X?function(G){return X.schedule(J,0,G)}:J)}pG.throwError=Kx});var lG=r((AQ)=>{Object.defineProperty(AQ,"__esModule",{value:!0});AQ.observeNotification=AQ.Notification=AQ.NotificationKind=void 0;var $x=S9(),Bx=uG(),Ux=bz(),Vx=t0(),Px;(function(Q){Q.NEXT="N",Q.ERROR="E",Q.COMPLETE="C"})(Px=AQ.NotificationKind||(AQ.NotificationKind={}));var Fx=function(){function Q(X,Z,J){this.kind=X,this.value=Z,this.error=J,this.hasValue=X==="N"}return Q.prototype.observe=function(X){return PD(this,X)},Q.prototype.do=function(X,Z,J){var G=this,Y=G.kind,H=G.value,K=G.error;return Y==="N"?X===null||X===void 0?void 0:X(H):Y==="E"?Z===null||Z===void 0?void 0:Z(K):J===null||J===void 0?void 0:J()},Q.prototype.accept=function(X,Z,J){var G;return Vx.isFunction((G=X)===null||G===void 0?void 0:G.next)?this.observe(X):this.do(X,Z,J)},Q.prototype.toObservable=function(){var X=this,Z=X.kind,J=X.value,G=X.error,Y=Z==="N"?Bx.of(J):Z==="E"?Ux.throwError(function(){return G}):Z==="C"?$x.EMPTY:0;if(!Y)throw new TypeError("Unexpected notification kind "+Z);return Y},Q.createNext=function(X){return new Q("N",X)},Q.createError=function(X){return new Q("E",void 0,X)},Q.createComplete=function(){return Q.completeNotification},Q.completeNotification=new Q("C"),Q}();AQ.Notification=Fx;function PD(Q,X){var Z,J,G,Y=Q,H=Y.kind,K=Y.value,z=Y.error;if(typeof H!=="string")throw new TypeError('Invalid notification, missing "kind"');H==="N"?(Z=X.next)===null||Z===void 0||Z.call(X,K):H==="E"?(J=X.error)===null||J===void 0||J.call(X,z):(G=X.complete)===null||G===void 0||G.call(X)}AQ.observeNotification=PD});var DD=r((cG)=>{Object.defineProperty(cG,"__esModule",{value:!0});cG.isObservable=void 0;var Dx=Q6(),FD=t0();function Lx(Q){return!!Q&&(Q instanceof Dx.Observable||FD.isFunction(Q.lift)&&FD.isFunction(Q.subscribe))}cG.isObservable=Lx});var sQ=r((iG)=>{Object.defineProperty(iG,"__esModule",{value:!0});iG.EmptyError=void 0;var Cx=iQ();iG.EmptyError=Cx.createErrorClass(function(Q){return function X(){Q(this),this.name="EmptyError",this.message="no elements in sequence"}})});var LD=r((nG)=>{Object.defineProperty(nG,"__esModule",{value:!0});nG.lastValueFrom=void 0;var Nx=sQ();function Tx(Q,X){var Z=typeof X==="object";return new Promise(function(J,G){var Y=!1,H;Q.subscribe({next:function(K){H=K,Y=!0},error:G,complete:function(){if(Y)J(H);else if(Z)J(X.defaultValue);else G(new Nx.EmptyError)}})})}nG.lastValueFrom=Tx});var CD=r((oG)=>{Object.defineProperty(oG,"__esModule",{value:!0});oG.firstValueFrom=void 0;var Mx=sQ(),Ix=X5();function Rx(Q,X){var Z=typeof X==="object";return new Promise(function(J,G){var Y=new Ix.SafeSubscriber({next:function(H){J(H),Y.unsubscribe()},error:G,complete:function(){if(Z)J(X.defaultValue);else G(new Mx.EmptyError)}});Q.subscribe(Y)})}oG.firstValueFrom=Rx});var mz=r((aG)=>{Object.defineProperty(aG,"__esModule",{value:!0});aG.ArgumentOutOfRangeError=void 0;var Ax=iQ();aG.ArgumentOutOfRangeError=Ax.createErrorClass(function(Q){return function X(){Q(this),this.name="ArgumentOutOfRangeError",this.message="argument out of range"}})});var _z=r((sG)=>{Object.defineProperty(sG,"__esModule",{value:!0});sG.NotFoundError=void 0;var Ox=iQ();sG.NotFoundError=Ox.createErrorClass(function(Q){return function X(Z){Q(this),this.name="NotFoundError",this.message=Z}})});var dz=r((tG)=>{Object.defineProperty(tG,"__esModule",{value:!0});tG.SequenceError=void 0;var wx=iQ();tG.SequenceError=wx.createErrorClass(function(Q){return function X(Z){Q(this),this.name="SequenceError",this.message=Z}})});var eG=r((rG)=>{Object.defineProperty(rG,"__esModule",{value:!0});rG.isValidDate=void 0;function Ex(Q){return Q instanceof Date&&!isNaN(Q)}rG.isValidDate=Ex});var QY=r((e4)=>{Object.defineProperty(e4,"__esModule",{value:!0});e4.timeout=e4.TimeoutError=void 0;var jx=w8(),Sx=eG(),kx=l1(),yx=A0(),xx=iQ(),vx=Q0(),gx=IQ();e4.TimeoutError=xx.createErrorClass(function(Q){return function X(Z){if(Z===void 0)Z=null;Q(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=Z}});function hx(Q,X){var Z=Sx.isValidDate(Q)?{first:Q}:typeof Q==="number"?{each:Q}:Q,J=Z.first,G=Z.each,Y=Z.with,H=Y===void 0?fx:Y,K=Z.scheduler,z=K===void 0?X!==null&&X!==void 0?X:jx.asyncScheduler:K,W=Z.meta,$=W===void 0?null:W;if(J==null&&G==null)throw new TypeError("No timeout provided.");return kx.operate(function(q,B){var D,F,P=null,N=0,C=function(L){F=gx.executeSchedule(B,z,function(){try{D.unsubscribe(),yx.innerFrom(H({meta:$,lastValue:P,seen:N})).subscribe(B)}catch(V){B.error(V)}},L)};D=q.subscribe(vx.createOperatorSubscriber(B,function(L){F===null||F===void 0||F.unsubscribe(),N++,B.next(P=L),G>0&&C(G)},void 0,void 0,function(){if(!(F===null||F===void 0?void 0:F.closed))F===null||F===void 0||F.unsubscribe();P=null})),!N&&C(J!=null?typeof J==="number"?J:+J-z.now():G)})}e4.timeout=hx;function fx(Q){throw new e4.TimeoutError(Q)}});var tQ=r((ZY)=>{Object.defineProperty(ZY,"__esModule",{value:!0});ZY.map=void 0;var bx=l1(),mx=Q0();function _x(Q,X){return bx.operate(function(Z,J){var G=0;Z.subscribe(mx.createOperatorSubscriber(J,function(Y){J.next(Q.call(X,Y,G++))}))})}ZY.map=_x});var eQ=r((rQ)=>{var dx=rQ&&rQ.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},ux=rQ&&rQ.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var nx=Q4&&Q4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},ND=Q4&&Q4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(XY,"__esModule",{value:!0});XY.bindCallback=void 0;var Qv=pz();function Zv(Q,X,Z){return Qv.bindCallbackInternals(!1,Q,X,Z)}XY.bindCallback=Zv});var MD=r((JY)=>{Object.defineProperty(JY,"__esModule",{value:!0});JY.bindNodeCallback=void 0;var Xv=pz();function Jv(Q,X,Z){return Xv.bindCallbackInternals(!0,Q,X,Z)}JY.bindNodeCallback=Jv});var lz=r((GY)=>{Object.defineProperty(GY,"__esModule",{value:!0});GY.argsArgArrayOrObject=void 0;var Gv=Array.isArray,Yv=Object.getPrototypeOf,Wv=Object.prototype,qv=Object.keys;function Hv(Q){if(Q.length===1){var X=Q[0];if(Gv(X))return{args:X,keys:null};if(zv(X)){var Z=qv(X);return{args:Z.map(function(J){return X[J]}),keys:Z}}}return{args:Q,keys:null}}GY.argsArgArrayOrObject=Hv;function zv(Q){return Q&&typeof Q==="object"&&Yv(Q)===Wv}});var cz=r((YY)=>{Object.defineProperty(YY,"__esModule",{value:!0});YY.createObject=void 0;function Kv(Q,X){return Q.reduce(function(Z,J,G){return Z[J]=X[G],Z},{})}YY.createObject=Kv});var WY=r((R5)=>{Object.defineProperty(R5,"__esModule",{value:!0});R5.combineLatestInit=R5.combineLatest=void 0;var $v=Q6(),Bv=lz(),AD=RQ(),OD=t6(),Uv=eQ(),ID=E8(),Vv=cz(),Pv=Q0(),Fv=IQ();function Dv(){var Q=[];for(var X=0;X{Object.defineProperty(qY,"__esModule",{value:!0});qY.mergeInternals=void 0;var Lv=A0(),Cv=IQ(),ED=Q0();function Nv(Q,X,Z,J,G,Y,H,K){var z=[],W=0,$=0,q=!1,B=function(){if(q&&!z.length&&!W)X.complete()},D=function(P){return W{Object.defineProperty(zY,"__esModule",{value:!0});zY.mergeMap=void 0;var Tv=tQ(),Mv=A0(),Iv=l1(),Rv=HY(),Av=t0();function jD(Q,X,Z){if(Z===void 0)Z=1/0;if(Av.isFunction(X))return jD(function(J,G){return Tv.map(function(Y,H){return X(J,Y,G,H)})(Mv.innerFrom(Q(J,G)))},Z);else if(typeof X==="number")Z=X;return Iv.operate(function(J,G){return Rv.mergeInternals(J,G,Q,Z)})}zY.mergeMap=jD});var JX=r((KY)=>{Object.defineProperty(KY,"__esModule",{value:!0});KY.mergeAll=void 0;var Ov=OQ(),wv=t6();function Ev(Q){if(Q===void 0)Q=1/0;return Ov.mergeMap(wv.identity,Q)}KY.mergeAll=Ev});var BY=r(($Y)=>{Object.defineProperty($Y,"__esModule",{value:!0});$Y.concatAll=void 0;var jv=JX();function Sv(){return jv.mergeAll(1)}$Y.concatAll=Sv});var GX=r((UY)=>{Object.defineProperty(UY,"__esModule",{value:!0});UY.concat=void 0;var kv=BY(),yv=E8(),xv=RQ();function vv(){var Q=[];for(var X=0;X{Object.defineProperty(VY,"__esModule",{value:!0});VY.defer=void 0;var gv=Q6(),hv=A0();function fv(Q){return new gv.Observable(function(X){hv.innerFrom(Q()).subscribe(X)})}VY.defer=fv});var SD=r((PY)=>{Object.defineProperty(PY,"__esModule",{value:!0});PY.connectable=void 0;var bv=r6(),mv=Q6(),_v=YX(),dv={connector:function(){return new bv.Subject},resetOnDisconnect:!0};function uv(Q,X){if(X===void 0)X=dv;var Z=null,J=X.connector,G=X.resetOnDisconnect,Y=G===void 0?!0:G,H=J(),K=new mv.Observable(function(z){return H.subscribe(z)});return K.connect=function(){if(!Z||Z.closed){if(Z=_v.defer(function(){return Q}).subscribe(H),Y)Z.add(function(){return H=J()})}return Z},K}PY.connectable=uv});var kD=r((FY)=>{Object.defineProperty(FY,"__esModule",{value:!0});FY.forkJoin=void 0;var pv=Q6(),lv=lz(),cv=A0(),iv=E8(),nv=Q0(),ov=eQ(),av=cz();function sv(){var Q=[];for(var X=0;X{var tv=A5&&A5.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y};Object.defineProperty(A5,"__esModule",{value:!0});A5.fromEvent=void 0;var rv=A0(),ev=Q6(),Qg=OQ(),Zg=IG(),QZ=t0(),Xg=eQ(),Jg=["addListener","removeListener"],Gg=["addEventListener","removeEventListener"],Yg=["on","off"];function iz(Q,X,Z,J){if(QZ.isFunction(Z))J=Z,Z=void 0;if(J)return iz(Q,X,Z).pipe(Xg.mapOneOrManyArgs(J));var G=tv(Hg(Q)?Gg.map(function(K){return function(z){return Q[K](X,z,Z)}}):Wg(Q)?Jg.map(yD(Q,X)):qg(Q)?Yg.map(yD(Q,X)):[],2),Y=G[0],H=G[1];if(!Y){if(Zg.isArrayLike(Q))return Qg.mergeMap(function(K){return iz(K,X,Z)})(rv.innerFrom(Q))}if(!Y)throw new TypeError("Invalid event target");return new ev.Observable(function(K){var z=function(){var W=[];for(var $=0;${Object.defineProperty(DY,"__esModule",{value:!0});DY.fromEventPattern=void 0;var zg=Q6(),Kg=t0(),$g=eQ();function vD(Q,X,Z){if(Z)return vD(Q,X).pipe($g.mapOneOrManyArgs(Z));return new zg.Observable(function(J){var G=function(){var H=[];for(var K=0;K{var Bg=O5&&O5.__generator||function(Q,X){var Z={label:0,sent:function(){if(Y[0]&1)throw Y[1];return Y[1]},trys:[],ops:[]},J,G,Y,H;return H={next:K(0),throw:K(1),return:K(2)},typeof Symbol==="function"&&(H[Symbol.iterator]=function(){return this}),H;function K(W){return function($){return z([W,$])}}function z(W){if(J)throw new TypeError("Generator is already executing.");while(Z)try{if(J=1,G&&(Y=W[0]&2?G.return:W[0]?G.throw||((Y=G.return)&&Y.call(G),0):G.next)&&!(Y=Y.call(G,W[1])).done)return Y;if(G=0,Y)W=[W[0]&2,Y.value];switch(W[0]){case 0:case 1:Y=W;break;case 4:return Z.label++,{value:W[1],done:!1};case 5:Z.label++,G=W[1],W=[0];continue;case 7:W=Z.ops.pop(),Z.trys.pop();continue;default:if((Y=Z.trys,!(Y=Y.length>0&&Y[Y.length-1]))&&(W[0]===6||W[0]===2)){Z=0;continue}if(W[0]===3&&(!Y||W[1]>Y[0]&&W[1]{Object.defineProperty(LY,"__esModule",{value:!0});LY.iif=void 0;var Dg=YX();function Lg(Q,X,Z){return Dg.defer(function(){return Q()?X:Z})}LY.iif=Lg});var Z4=r((CY)=>{Object.defineProperty(CY,"__esModule",{value:!0});CY.timer=void 0;var Cg=Q6(),Ng=w8(),Tg=QX(),Mg=eG();function Ig(Q,X,Z){if(Q===void 0)Q=0;if(Z===void 0)Z=Ng.async;var J=-1;if(X!=null)if(Tg.isScheduler(X))Z=X;else J=X;return new Cg.Observable(function(G){var Y=Mg.isValidDate(Q)?+Q-Z.now():Q;if(Y<0)Y=0;var H=0;return Z.schedule(function(){if(!G.closed)if(G.next(H++),0<=J)this.schedule(void 0,J);else G.complete()},Y)})}CY.timer=Ig});var nz=r((NY)=>{Object.defineProperty(NY,"__esModule",{value:!0});NY.interval=void 0;var Rg=w8(),Ag=Z4();function Og(Q,X){if(Q===void 0)Q=0;if(X===void 0)X=Rg.asyncScheduler;if(Q<0)Q=0;return Ag.timer(Q,Q,X)}NY.interval=Og});var _D=r((TY)=>{Object.defineProperty(TY,"__esModule",{value:!0});TY.merge=void 0;var wg=JX(),Eg=A0(),jg=S9(),mD=E8(),Sg=RQ();function kg(){var Q=[];for(var X=0;X{Object.defineProperty(ZZ,"__esModule",{value:!0});ZZ.never=ZZ.NEVER=void 0;var yg=Q6(),xg=s6();ZZ.NEVER=new yg.Observable(xg.noop);function vg(){return ZZ.NEVER}ZZ.never=vg});var XZ=r((MY)=>{Object.defineProperty(MY,"__esModule",{value:!0});MY.argsOrArgArray=void 0;var gg=Array.isArray;function hg(Q){return Q.length===1&&gg(Q[0])?Q[0]:Q}MY.argsOrArgArray=hg});var az=r((IY)=>{Object.defineProperty(IY,"__esModule",{value:!0});IY.onErrorResumeNext=void 0;var fg=Q6(),bg=XZ(),mg=Q0(),dD=s6(),_g=A0();function dg(){var Q=[];for(var X=0;X{Object.defineProperty(RY,"__esModule",{value:!0});RY.pairs=void 0;var ug=RQ();function pg(Q,X){return ug.from(Object.entries(Q),X)}RY.pairs=pg});var pD=r((AY)=>{Object.defineProperty(AY,"__esModule",{value:!0});AY.not=void 0;function lg(Q,X){return function(Z,J){return!Q.call(X,Z,J)}}AY.not=lg});var JZ=r((OY)=>{Object.defineProperty(OY,"__esModule",{value:!0});OY.filter=void 0;var cg=l1(),ig=Q0();function ng(Q,X){return cg.operate(function(Z,J){var G=0;Z.subscribe(ig.createOperatorSubscriber(J,function(Y){return Q.call(X,Y,G++)&&J.next(Y)}))})}OY.filter=ng});var iD=r((wY)=>{Object.defineProperty(wY,"__esModule",{value:!0});wY.partition=void 0;var og=pD(),lD=JZ(),cD=A0();function ag(Q,X,Z){return[lD.filter(X,Z)(cD.innerFrom(Q)),lD.filter(og.not(X,Z))(cD.innerFrom(Q))]}wY.partition=ag});var sz=r((w5)=>{Object.defineProperty(w5,"__esModule",{value:!0});w5.raceInit=w5.race=void 0;var sg=Q6(),nD=A0(),tg=XZ(),rg=Q0();function eg(){var Q=[];for(var X=0;X{Object.defineProperty(EY,"__esModule",{value:!0});EY.range=void 0;var Qh=Q6(),Zh=S9();function Xh(Q,X,Z){if(X==null)X=Q,Q=0;if(X<=0)return Zh.EMPTY;var J=X+Q;return new Qh.Observable(Z?function(G){var Y=Q;return Z.schedule(function(){if(Y{Object.defineProperty(jY,"__esModule",{value:!0});jY.using=void 0;var Jh=Q6(),Gh=A0(),Yh=S9();function Wh(Q,X){return new Jh.Observable(function(Z){var J=Q(),G=X(J),Y=G?Gh.innerFrom(G):Yh.EMPTY;return Y.subscribe(Z),function(){if(J)J.unsubscribe()}})}jY.using=Wh});var SY=r((X4)=>{var qh=X4&&X4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},Hh=X4&&X4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(tD,"__esModule",{value:!0})});var tz=r((kY)=>{Object.defineProperty(kY,"__esModule",{value:!0});kY.audit=void 0;var Fh=l1(),Dh=A0(),eD=Q0();function Lh(Q){return Fh.operate(function(X,Z){var J=!1,G=null,Y=null,H=!1,K=function(){if(Y===null||Y===void 0||Y.unsubscribe(),Y=null,J){J=!1;var W=G;G=null,Z.next(W)}H&&Z.complete()},z=function(){Y=null,H&&Z.complete()};X.subscribe(eD.createOperatorSubscriber(Z,function(W){if(J=!0,G=W,!Y)Dh.innerFrom(Q(W)).subscribe(Y=eD.createOperatorSubscriber(Z,K,z))},function(){H=!0,(!J||!Y||Y.closed)&&Z.complete()}))})}kY.audit=Lh});var QL=r((yY)=>{Object.defineProperty(yY,"__esModule",{value:!0});yY.auditTime=void 0;var Ch=w8(),Nh=tz(),Th=Z4();function Mh(Q,X){if(X===void 0)X=Ch.asyncScheduler;return Nh.audit(function(){return Th.timer(Q,X)})}yY.auditTime=Mh});var XL=r((xY)=>{Object.defineProperty(xY,"__esModule",{value:!0});xY.buffer=void 0;var Ih=l1(),Rh=s6(),ZL=Q0(),Ah=A0();function Oh(Q){return Ih.operate(function(X,Z){var J=[];return X.subscribe(ZL.createOperatorSubscriber(Z,function(G){return J.push(G)},function(){Z.next(J),Z.complete()})),Ah.innerFrom(Q).subscribe(ZL.createOperatorSubscriber(Z,function(){var G=J;J=[],Z.next(G)},Rh.noop)),function(){J=null}})}xY.buffer=Oh});var JL=r((E5)=>{var rz=E5&&E5.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(E5,"__esModule",{value:!0});E5.bufferCount=void 0;var wh=l1(),Eh=Q0(),jh=MQ();function Sh(Q,X){if(X===void 0)X=null;return X=X!==null&&X!==void 0?X:Q,wh.operate(function(Z,J){var G=[],Y=0;Z.subscribe(Eh.createOperatorSubscriber(J,function(H){var K,z,W,$,q=null;if(Y++%X===0)G.push([]);try{for(var B=rz(G),D=B.next();!D.done;D=B.next()){var F=D.value;if(F.push(H),Q<=F.length)q=q!==null&&q!==void 0?q:[],q.push(F)}}catch(C){K={error:C}}finally{try{if(D&&!D.done&&(z=B.return))z.call(B)}finally{if(K)throw K.error}}if(q)try{for(var P=rz(q),N=P.next();!N.done;N=P.next()){var F=N.value;jh.arrRemove(G,F),J.next(F)}}catch(C){W={error:C}}finally{try{if(N&&!N.done&&($=P.return))$.call(P)}finally{if(W)throw W.error}}},function(){var H,K;try{for(var z=rz(G),W=z.next();!W.done;W=z.next()){var $=W.value;J.next($)}}catch(q){H={error:q}}finally{try{if(W&&!W.done&&(K=z.return))K.call(z)}finally{if(H)throw H.error}}J.complete()},void 0,function(){G=null}))})}E5.bufferCount=Sh});var YL=r((j5)=>{var kh=j5&&j5.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(j5,"__esModule",{value:!0});j5.bufferTime=void 0;var yh=o8(),xh=l1(),vh=Q0(),gh=MQ(),hh=w8(),fh=E8(),GL=IQ();function bh(Q){var X,Z,J=[];for(var G=1;G=0)GL.executeSchedule(W,Y,D,H,!0);else q=!0;D();var F=vh.createOperatorSubscriber(W,function(P){var N,C,L=$.slice();try{for(var V=kh(L),M=V.next();!M.done;M=V.next()){var I=M.value,E=I.buffer;E.push(P),K<=E.length&&B(I)}}catch(w){N={error:w}}finally{try{if(M&&!M.done&&(C=V.return))C.call(V)}finally{if(N)throw N.error}}},function(){while($===null||$===void 0?void 0:$.length)W.next($.shift().buffer);F===null||F===void 0||F.unsubscribe(),W.complete(),W.unsubscribe()},void 0,function(){return $=null});z.subscribe(F)})}j5.bufferTime=bh});var HL=r((S5)=>{var mh=S5&&S5.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(S5,"__esModule",{value:!0});S5.bufferToggle=void 0;var _h=o8(),dh=l1(),WL=A0(),ez=Q0(),qL=s6(),uh=MQ();function ph(Q,X){return dh.operate(function(Z,J){var G=[];WL.innerFrom(Q).subscribe(ez.createOperatorSubscriber(J,function(Y){var H=[];G.push(H);var K=new _h.Subscription,z=function(){uh.arrRemove(G,H),J.next(H),K.unsubscribe()};K.add(WL.innerFrom(X(Y)).subscribe(ez.createOperatorSubscriber(J,z,qL.noop)))},qL.noop)),Z.subscribe(ez.createOperatorSubscriber(J,function(Y){var H,K;try{for(var z=mh(G),W=z.next();!W.done;W=z.next()){var $=W.value;$.push(Y)}}catch(q){H={error:q}}finally{try{if(W&&!W.done&&(K=z.return))K.call(z)}finally{if(H)throw H.error}}},function(){while(G.length>0)J.next(G.shift());J.complete()}))})}S5.bufferToggle=ph});var KL=r((vY)=>{Object.defineProperty(vY,"__esModule",{value:!0});vY.bufferWhen=void 0;var lh=l1(),ch=s6(),zL=Q0(),ih=A0();function nh(Q){return lh.operate(function(X,Z){var J=null,G=null,Y=function(){G===null||G===void 0||G.unsubscribe();var H=J;J=[],H&&Z.next(H),ih.innerFrom(Q()).subscribe(G=zL.createOperatorSubscriber(Z,Y,ch.noop))};Y(),X.subscribe(zL.createOperatorSubscriber(Z,function(H){return J===null||J===void 0?void 0:J.push(H)},function(){J&&Z.next(J),Z.complete()},void 0,function(){return J=G=null}))})}vY.bufferWhen=nh});var BL=r((gY)=>{Object.defineProperty(gY,"__esModule",{value:!0});gY.catchError=void 0;var oh=A0(),ah=Q0(),sh=l1();function $L(Q){return sh.operate(function(X,Z){var J=null,G=!1,Y;if(J=X.subscribe(ah.createOperatorSubscriber(Z,void 0,void 0,function(H){if(Y=oh.innerFrom(Q(H,$L(Q)(X))),J)J.unsubscribe(),J=null,Y.subscribe(Z);else G=!0})),G)J.unsubscribe(),J=null,Y.subscribe(Z)})}gY.catchError=$L});var QK=r((hY)=>{Object.defineProperty(hY,"__esModule",{value:!0});hY.scanInternals=void 0;var th=Q0();function rh(Q,X,Z,J,G){return function(Y,H){var K=Z,z=X,W=0;Y.subscribe(th.createOperatorSubscriber(H,function($){var q=W++;z=K?Q(z,$,q):(K=!0,$),J&&H.next(z)},G&&function(){K&&H.next(z),H.complete()}))}}hY.scanInternals=rh});var k5=r((fY)=>{Object.defineProperty(fY,"__esModule",{value:!0});fY.reduce=void 0;var eh=QK(),Qf=l1();function Zf(Q,X){return Qf.operate(eh.scanInternals(Q,X,arguments.length>=2,!1,!0))}fY.reduce=Zf});var ZK=r((bY)=>{Object.defineProperty(bY,"__esModule",{value:!0});bY.toArray=void 0;var Xf=k5(),Jf=l1(),Gf=function(Q,X){return Q.push(X),Q};function Yf(){return Jf.operate(function(Q,X){Xf.reduce(Gf,[])(Q).subscribe(X)})}bY.toArray=Yf});var XK=r((mY)=>{Object.defineProperty(mY,"__esModule",{value:!0});mY.joinAllInternals=void 0;var Wf=t6(),qf=eQ(),Hf=s7(),zf=OQ(),Kf=ZK();function $f(Q,X){return Hf.pipe(Kf.toArray(),zf.mergeMap(function(Z){return Q(Z)}),X?qf.mapOneOrManyArgs(X):Wf.identity)}mY.joinAllInternals=$f});var JK=r((_Y)=>{Object.defineProperty(_Y,"__esModule",{value:!0});_Y.combineLatestAll=void 0;var Bf=WY(),Uf=XK();function Vf(Q){return Uf.joinAllInternals(Bf.combineLatest,Q)}_Y.combineLatestAll=Vf});var UL=r((dY)=>{Object.defineProperty(dY,"__esModule",{value:!0});dY.combineAll=void 0;var Pf=JK();dY.combineAll=Pf.combineLatestAll});var DL=r((J4)=>{var VL=J4&&J4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},PL=J4&&J4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var Mf=G4&&G4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},If=G4&&G4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(uY,"__esModule",{value:!0});uY.concatMap=void 0;var CL=OQ(),Of=t0();function wf(Q,X){return Of.isFunction(X)?CL.mergeMap(Q,X,1):CL.mergeMap(Q,1)}uY.concatMap=wf});var TL=r((pY)=>{Object.defineProperty(pY,"__esModule",{value:!0});pY.concatMapTo=void 0;var NL=GK(),Ef=t0();function jf(Q,X){return Ef.isFunction(X)?NL.concatMap(function(){return Q},X):NL.concatMap(function(){return Q})}pY.concatMapTo=jf});var ML=r((Y4)=>{var Sf=Y4&&Y4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},kf=Y4&&Y4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var ff=W4&&W4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},bf=W4&&W4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(lY,"__esModule",{value:!0});lY.fromSubscribable=void 0;var df=Q6();function uf(Q){return new df.Observable(function(X){return Q.subscribe(X)})}lY.fromSubscribable=uf});var iY=r((cY)=>{Object.defineProperty(cY,"__esModule",{value:!0});cY.connect=void 0;var pf=r6(),lf=A0(),cf=l1(),nf=RL(),of={connector:function(){return new pf.Subject}};function af(Q,X){if(X===void 0)X=of;var Z=X.connector;return cf.operate(function(J,G){var Y=Z();lf.innerFrom(Q(nf.fromSubscribable(Y))).subscribe(G),G.add(J.subscribe(Y))})}cY.connect=af});var AL=r((nY)=>{Object.defineProperty(nY,"__esModule",{value:!0});nY.count=void 0;var sf=k5();function tf(Q){return sf.reduce(function(X,Z,J){return!Q||Q(Z,J)?X+1:X},0)}nY.count=tf});var wL=r((oY)=>{Object.defineProperty(oY,"__esModule",{value:!0});oY.debounce=void 0;var rf=l1(),ef=s6(),OL=Q0(),Qb=A0();function Zb(Q){return rf.operate(function(X,Z){var J=!1,G=null,Y=null,H=function(){if(Y===null||Y===void 0||Y.unsubscribe(),Y=null,J){J=!1;var K=G;G=null,Z.next(K)}};X.subscribe(OL.createOperatorSubscriber(Z,function(K){Y===null||Y===void 0||Y.unsubscribe(),J=!0,G=K,Y=OL.createOperatorSubscriber(Z,H,ef.noop),Qb.innerFrom(Q(K)).subscribe(Y)},function(){H(),Z.complete()},void 0,function(){G=Y=null}))})}oY.debounce=Zb});var EL=r((aY)=>{Object.defineProperty(aY,"__esModule",{value:!0});aY.debounceTime=void 0;var Xb=w8(),Jb=l1(),Gb=Q0();function Yb(Q,X){if(X===void 0)X=Xb.asyncScheduler;return Jb.operate(function(Z,J){var G=null,Y=null,H=null,K=function(){if(G){G.unsubscribe(),G=null;var W=Y;Y=null,J.next(W)}};function z(){var W=H+Q,$=X.now();if(${Object.defineProperty(sY,"__esModule",{value:!0});sY.defaultIfEmpty=void 0;var Wb=l1(),qb=Q0();function Hb(Q){return Wb.operate(function(X,Z){var J=!1;X.subscribe(qb.createOperatorSubscriber(Z,function(G){J=!0,Z.next(G)},function(){if(!J)Z.next(Q);Z.complete()}))})}sY.defaultIfEmpty=Hb});var qX=r((tY)=>{Object.defineProperty(tY,"__esModule",{value:!0});tY.take=void 0;var zb=S9(),Kb=l1(),$b=Q0();function Bb(Q){return Q<=0?function(){return zb.EMPTY}:Kb.operate(function(X,Z){var J=0;X.subscribe($b.createOperatorSubscriber(Z,function(G){if(++J<=Q){if(Z.next(G),Q<=J)Z.complete()}}))})}tY.take=Bb});var YK=r((rY)=>{Object.defineProperty(rY,"__esModule",{value:!0});rY.ignoreElements=void 0;var Ub=l1(),Vb=Q0(),Pb=s6();function Fb(){return Ub.operate(function(Q,X){Q.subscribe(Vb.createOperatorSubscriber(X,Pb.noop))})}rY.ignoreElements=Fb});var WK=r((eY)=>{Object.defineProperty(eY,"__esModule",{value:!0});eY.mapTo=void 0;var Db=tQ();function Lb(Q){return Db.map(function(){return Q})}eY.mapTo=Lb});var qK=r((QW)=>{Object.defineProperty(QW,"__esModule",{value:!0});QW.delayWhen=void 0;var Cb=GX(),jL=qX(),Nb=YK(),Tb=WK(),Mb=OQ(),Ib=A0();function SL(Q,X){if(X)return function(Z){return Cb.concat(X.pipe(jL.take(1),Nb.ignoreElements()),Z.pipe(SL(Q)))};return Mb.mergeMap(function(Z,J){return Ib.innerFrom(Q(Z,J)).pipe(jL.take(1),Tb.mapTo(Z))})}QW.delayWhen=SL});var kL=r((ZW)=>{Object.defineProperty(ZW,"__esModule",{value:!0});ZW.delay=void 0;var Rb=w8(),Ab=qK(),Ob=Z4();function wb(Q,X){if(X===void 0)X=Rb.asyncScheduler;var Z=Ob.timer(Q,X);return Ab.delayWhen(function(){return Z})}ZW.delay=wb});var yL=r((XW)=>{Object.defineProperty(XW,"__esModule",{value:!0});XW.dematerialize=void 0;var Eb=lG(),jb=l1(),Sb=Q0();function kb(){return jb.operate(function(Q,X){Q.subscribe(Sb.createOperatorSubscriber(X,function(Z){return Eb.observeNotification(Z,X)}))})}XW.dematerialize=kb});var vL=r((JW)=>{Object.defineProperty(JW,"__esModule",{value:!0});JW.distinct=void 0;var yb=l1(),xL=Q0(),xb=s6(),vb=A0();function gb(Q,X){return yb.operate(function(Z,J){var G=new Set;Z.subscribe(xL.createOperatorSubscriber(J,function(Y){var H=Q?Q(Y):Y;if(!G.has(H))G.add(H),J.next(Y)})),X&&vb.innerFrom(X).subscribe(xL.createOperatorSubscriber(J,function(){return G.clear()},xb.noop))})}JW.distinct=gb});var HK=r((GW)=>{Object.defineProperty(GW,"__esModule",{value:!0});GW.distinctUntilChanged=void 0;var hb=t6(),fb=l1(),bb=Q0();function mb(Q,X){if(X===void 0)X=hb.identity;return Q=Q!==null&&Q!==void 0?Q:_b,fb.operate(function(Z,J){var G,Y=!0;Z.subscribe(bb.createOperatorSubscriber(J,function(H){var K=X(H);if(Y||!Q(G,K))Y=!1,G=K,J.next(H)}))})}GW.distinctUntilChanged=mb;function _b(Q,X){return Q===X}});var gL=r((YW)=>{Object.defineProperty(YW,"__esModule",{value:!0});YW.distinctUntilKeyChanged=void 0;var db=HK();function ub(Q,X){return db.distinctUntilChanged(function(Z,J){return X?X(Z[Q],J[Q]):Z[Q]===J[Q]})}YW.distinctUntilKeyChanged=ub});var HX=r((WW)=>{Object.defineProperty(WW,"__esModule",{value:!0});WW.throwIfEmpty=void 0;var pb=sQ(),lb=l1(),cb=Q0();function ib(Q){if(Q===void 0)Q=nb;return lb.operate(function(X,Z){var J=!1;X.subscribe(cb.createOperatorSubscriber(Z,function(G){J=!0,Z.next(G)},function(){return J?Z.complete():Z.error(Q())}))})}WW.throwIfEmpty=ib;function nb(){return new pb.EmptyError}});var fL=r((qW)=>{Object.defineProperty(qW,"__esModule",{value:!0});qW.elementAt=void 0;var hL=mz(),ob=JZ(),ab=HX(),sb=WX(),tb=qX();function rb(Q,X){if(Q<0)throw new hL.ArgumentOutOfRangeError;var Z=arguments.length>=2;return function(J){return J.pipe(ob.filter(function(G,Y){return Y===Q}),tb.take(1),Z?sb.defaultIfEmpty(X):ab.throwIfEmpty(function(){return new hL.ArgumentOutOfRangeError}))}}qW.elementAt=rb});var bL=r((q4)=>{var eb=q4&&q4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},Qm=q4&&q4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(HW,"__esModule",{value:!0});HW.every=void 0;var Gm=l1(),Ym=Q0();function Wm(Q,X){return Gm.operate(function(Z,J){var G=0;Z.subscribe(Ym.createOperatorSubscriber(J,function(Y){if(!Q.call(X,Y,G++,Z))J.next(!1),J.complete()},function(){J.next(!0),J.complete()}))})}HW.every=Wm});var zK=r((zW)=>{Object.defineProperty(zW,"__esModule",{value:!0});zW.exhaustMap=void 0;var qm=tQ(),_L=A0(),Hm=l1(),dL=Q0();function uL(Q,X){if(X)return function(Z){return Z.pipe(uL(function(J,G){return _L.innerFrom(Q(J,G)).pipe(qm.map(function(Y,H){return X(J,Y,G,H)}))}))};return Hm.operate(function(Z,J){var G=0,Y=null,H=!1;Z.subscribe(dL.createOperatorSubscriber(J,function(K){if(!Y)Y=dL.createOperatorSubscriber(J,void 0,function(){Y=null,H&&J.complete()}),_L.innerFrom(Q(K,G++)).subscribe(Y)},function(){H=!0,!Y&&J.complete()}))})}zW.exhaustMap=uL});var KK=r((KW)=>{Object.defineProperty(KW,"__esModule",{value:!0});KW.exhaustAll=void 0;var zm=zK(),Km=t6();function $m(){return zm.exhaustMap(Km.identity)}KW.exhaustAll=$m});var pL=r(($W)=>{Object.defineProperty($W,"__esModule",{value:!0});$W.exhaust=void 0;var Bm=KK();$W.exhaust=Bm.exhaustAll});var lL=r((BW)=>{Object.defineProperty(BW,"__esModule",{value:!0});BW.expand=void 0;var Um=l1(),Vm=HY();function Pm(Q,X,Z){if(X===void 0)X=1/0;return X=(X||0)<1?1/0:X,Um.operate(function(J,G){return Vm.mergeInternals(J,G,Q,X,void 0,!0,Z)})}BW.expand=Pm});var cL=r((UW)=>{Object.defineProperty(UW,"__esModule",{value:!0});UW.finalize=void 0;var Fm=l1();function Dm(Q){return Fm.operate(function(X,Z){try{X.subscribe(Z)}finally{Z.add(Q)}})}UW.finalize=Dm});var $K=r((y5)=>{Object.defineProperty(y5,"__esModule",{value:!0});y5.createFind=y5.find=void 0;var Lm=l1(),Cm=Q0();function Nm(Q,X){return Lm.operate(iL(Q,X,"value"))}y5.find=Nm;function iL(Q,X,Z){var J=Z==="index";return function(G,Y){var H=0;G.subscribe(Cm.createOperatorSubscriber(Y,function(K){var z=H++;if(Q.call(X,K,z,G))Y.next(J?z:K),Y.complete()},function(){Y.next(J?-1:void 0),Y.complete()}))}}y5.createFind=iL});var nL=r((VW)=>{Object.defineProperty(VW,"__esModule",{value:!0});VW.findIndex=void 0;var Tm=l1(),Mm=$K();function Im(Q,X){return Tm.operate(Mm.createFind(Q,X,"index"))}VW.findIndex=Im});var oL=r((PW)=>{Object.defineProperty(PW,"__esModule",{value:!0});PW.first=void 0;var Rm=sQ(),Am=JZ(),Om=qX(),wm=WX(),Em=HX(),jm=t6();function Sm(Q,X){var Z=arguments.length>=2;return function(J){return J.pipe(Q?Am.filter(function(G,Y){return Q(G,Y,J)}):jm.identity,Om.take(1),Z?wm.defaultIfEmpty(X):Em.throwIfEmpty(function(){return new Rm.EmptyError}))}}PW.first=Sm});var sL=r((FW)=>{Object.defineProperty(FW,"__esModule",{value:!0});FW.groupBy=void 0;var km=Q6(),ym=A0(),xm=r6(),vm=l1(),aL=Q0();function gm(Q,X,Z,J){return vm.operate(function(G,Y){var H;if(!X||typeof X==="function")H=X;else Z=X.duration,H=X.element,J=X.connector;var K=new Map,z=function(F){K.forEach(F),F(Y)},W=function(F){return z(function(P){return P.error(F)})},$=0,q=!1,B=new aL.OperatorSubscriber(Y,function(F){try{var P=Q(F),N=K.get(P);if(!N){K.set(P,N=J?J():new xm.Subject);var C=D(P,N);if(Y.next(C),Z){var L=aL.createOperatorSubscriber(N,function(){N.complete(),L===null||L===void 0||L.unsubscribe()},void 0,void 0,function(){return K.delete(P)});B.add(ym.innerFrom(Z(C)).subscribe(L))}}N.next(H?H(F):F)}catch(V){W(V)}},function(){return z(function(F){return F.complete()})},W,function(){return K.clear()},function(){return q=!0,$===0});G.subscribe(B);function D(F,P){var N=new km.Observable(function(C){$++;var L=P.subscribe(C);return function(){L.unsubscribe(),--$===0&&q&&B.unsubscribe()}});return N.key=F,N}})}FW.groupBy=gm});var tL=r((DW)=>{Object.defineProperty(DW,"__esModule",{value:!0});DW.isEmpty=void 0;var hm=l1(),fm=Q0();function bm(){return hm.operate(function(Q,X){Q.subscribe(fm.createOperatorSubscriber(X,function(){X.next(!1),X.complete()},function(){X.next(!0),X.complete()}))})}DW.isEmpty=bm});var BK=r((x5)=>{var mm=x5&&x5.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(x5,"__esModule",{value:!0});x5.takeLast=void 0;var _m=S9(),dm=l1(),um=Q0();function pm(Q){return Q<=0?function(){return _m.EMPTY}:dm.operate(function(X,Z){var J=[];X.subscribe(um.createOperatorSubscriber(Z,function(G){J.push(G),Q{Object.defineProperty(LW,"__esModule",{value:!0});LW.last=void 0;var lm=sQ(),cm=JZ(),im=BK(),nm=HX(),om=WX(),am=t6();function sm(Q,X){var Z=arguments.length>=2;return function(J){return J.pipe(Q?cm.filter(function(G,Y){return Q(G,Y,J)}):am.identity,im.takeLast(1),Z?om.defaultIfEmpty(X):nm.throwIfEmpty(function(){return new lm.EmptyError}))}}LW.last=sm});var eL=r((CW)=>{Object.defineProperty(CW,"__esModule",{value:!0});CW.materialize=void 0;var UK=lG(),tm=l1(),rm=Q0();function em(){return tm.operate(function(Q,X){Q.subscribe(rm.createOperatorSubscriber(X,function(Z){X.next(UK.Notification.createNext(Z))},function(){X.next(UK.Notification.createComplete()),X.complete()},function(Z){X.next(UK.Notification.createError(Z)),X.complete()}))})}CW.materialize=em});var QC=r((NW)=>{Object.defineProperty(NW,"__esModule",{value:!0});NW.max=void 0;var Q_=k5(),Z_=t0();function X_(Q){return Q_.reduce(Z_.isFunction(Q)?function(X,Z){return Q(X,Z)>0?X:Z}:function(X,Z){return X>Z?X:Z})}NW.max=X_});var ZC=r((TW)=>{Object.defineProperty(TW,"__esModule",{value:!0});TW.flatMap=void 0;var J_=OQ();TW.flatMap=J_.mergeMap});var JC=r((MW)=>{Object.defineProperty(MW,"__esModule",{value:!0});MW.mergeMapTo=void 0;var XC=OQ(),G_=t0();function Y_(Q,X,Z){if(Z===void 0)Z=1/0;if(G_.isFunction(X))return XC.mergeMap(function(){return Q},X,Z);if(typeof X==="number")Z=X;return XC.mergeMap(function(){return Q},Z)}MW.mergeMapTo=Y_});var GC=r((IW)=>{Object.defineProperty(IW,"__esModule",{value:!0});IW.mergeScan=void 0;var W_=l1(),q_=HY();function H_(Q,X,Z){if(Z===void 0)Z=1/0;return W_.operate(function(J,G){var Y=X;return q_.mergeInternals(J,G,function(H,K){return Q(Y,H,K)},Z,function(H){Y=H},!1,void 0,function(){return Y=null})})}IW.mergeScan=H_});var WC=r((H4)=>{var z_=H4&&H4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},K_=H4&&H4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var F_=z4&&z4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},D_=z4&&z4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(RW,"__esModule",{value:!0});RW.min=void 0;var N_=k5(),T_=t0();function M_(Q){return N_.reduce(T_.isFunction(Q)?function(X,Z){return Q(X,Z)<0?X:Z}:function(X,Z){return X{Object.defineProperty(AW,"__esModule",{value:!0});AW.multicast=void 0;var I_=t7(),zC=t0(),R_=iY();function A_(Q,X){var Z=zC.isFunction(Q)?Q:function(){return Q};if(zC.isFunction(X))return R_.connect(X,{connector:Z});return function(J){return new I_.ConnectableObservable(J,Z)}}AW.multicast=A_});var $C=r((QQ)=>{var O_=QQ&&QQ.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},w_=QQ&&QQ.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(wW,"__esModule",{value:!0});wW.pairwise=void 0;var S_=l1(),k_=Q0();function y_(){return S_.operate(function(Q,X){var Z,J=!1;Q.subscribe(k_.createOperatorSubscriber(X,function(G){var Y=Z;Z=G,J&&X.next([Y,G]),J=!0}))})}wW.pairwise=y_});var UC=r((EW)=>{Object.defineProperty(EW,"__esModule",{value:!0});EW.pluck=void 0;var x_=tQ();function v_(){var Q=[];for(var X=0;X{Object.defineProperty(jW,"__esModule",{value:!0});jW.publish=void 0;var g_=r6(),h_=OW(),f_=iY();function b_(Q){return Q?function(X){return f_.connect(Q)(X)}:function(X){return h_.multicast(new g_.Subject)(X)}}jW.publish=b_});var PC=r((SW)=>{Object.defineProperty(SW,"__esModule",{value:!0});SW.publishBehavior=void 0;var m_=Mz(),__=t7();function d_(Q){return function(X){var Z=new m_.BehaviorSubject(Q);return new __.ConnectableObservable(X,function(){return Z})}}SW.publishBehavior=d_});var FC=r((kW)=>{Object.defineProperty(kW,"__esModule",{value:!0});kW.publishLast=void 0;var u_=LG(),p_=t7();function l_(){return function(Q){var X=new u_.AsyncSubject;return new p_.ConnectableObservable(Q,function(){return X})}}kW.publishLast=l_});var LC=r((yW)=>{Object.defineProperty(yW,"__esModule",{value:!0});yW.publishReplay=void 0;var c_=DG(),i_=OW(),DC=t0();function n_(Q,X,Z,J){if(Z&&!DC.isFunction(Z))J=Z;var G=DC.isFunction(Z)?Z:void 0;return function(Y){return i_.multicast(new c_.ReplaySubject(Q,X,J),G)(Y)}}yW.publishReplay=n_});var CC=r((K4)=>{var o_=K4&&K4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},a_=K4&&K4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(xW,"__esModule",{value:!0});xW.repeat=void 0;var Qd=S9(),Zd=l1(),NC=Q0(),Xd=A0(),Jd=Z4();function Gd(Q){var X,Z=1/0,J;if(Q!=null)if(typeof Q==="object")X=Q.count,Z=X===void 0?1/0:X,J=Q.delay;else Z=Q;return Z<=0?function(){return Qd.EMPTY}:Zd.operate(function(G,Y){var H=0,K,z=function(){if(K===null||K===void 0||K.unsubscribe(),K=null,J!=null){var $=typeof J==="number"?Jd.timer(J):Xd.innerFrom(J(H)),q=NC.createOperatorSubscriber(Y,function(){q.unsubscribe(),W()});$.subscribe(q)}else W()},W=function(){var $=!1;if(K=G.subscribe(NC.createOperatorSubscriber(Y,void 0,function(){if(++H{Object.defineProperty(vW,"__esModule",{value:!0});vW.repeatWhen=void 0;var Yd=A0(),Wd=r6(),qd=l1(),MC=Q0();function Hd(Q){return qd.operate(function(X,Z){var J,G=!1,Y,H=!1,K=!1,z=function(){return K&&H&&(Z.complete(),!0)},W=function(){if(!Y)Y=new Wd.Subject,Yd.innerFrom(Q(Y)).subscribe(MC.createOperatorSubscriber(Z,function(){if(J)$();else G=!0},function(){H=!0,z()}));return Y},$=function(){if(K=!1,J=X.subscribe(MC.createOperatorSubscriber(Z,void 0,function(){K=!0,!z()&&W().next()})),G)J.unsubscribe(),J=null,G=!1,$()};$()})}vW.repeatWhen=Hd});var AC=r((gW)=>{Object.defineProperty(gW,"__esModule",{value:!0});gW.retry=void 0;var zd=l1(),RC=Q0(),Kd=t6(),$d=Z4(),Bd=A0();function Ud(Q){if(Q===void 0)Q=1/0;var X;if(Q&&typeof Q==="object")X=Q;else X={count:Q};var Z=X.count,J=Z===void 0?1/0:Z,G=X.delay,Y=X.resetOnSuccess,H=Y===void 0?!1:Y;return J<=0?Kd.identity:zd.operate(function(K,z){var W=0,$,q=function(){var B=!1;if($=K.subscribe(RC.createOperatorSubscriber(z,function(D){if(H)W=0;z.next(D)},void 0,function(D){if(W++{Object.defineProperty(hW,"__esModule",{value:!0});hW.retryWhen=void 0;var Vd=A0(),Pd=r6(),Fd=l1(),OC=Q0();function Dd(Q){return Fd.operate(function(X,Z){var J,G=!1,Y,H=function(){if(J=X.subscribe(OC.createOperatorSubscriber(Z,void 0,void 0,function(K){if(!Y)Y=new Pd.Subject,Vd.innerFrom(Q(Y)).subscribe(OC.createOperatorSubscriber(Z,function(){return J?H():G=!0}));if(Y)Y.next(K)})),G)J.unsubscribe(),J=null,G=!1,H()};H()})}hW.retryWhen=Dd});var VK=r((fW)=>{Object.defineProperty(fW,"__esModule",{value:!0});fW.sample=void 0;var Ld=A0(),Cd=l1(),Nd=s6(),EC=Q0();function Td(Q){return Cd.operate(function(X,Z){var J=!1,G=null;X.subscribe(EC.createOperatorSubscriber(Z,function(Y){J=!0,G=Y})),Ld.innerFrom(Q).subscribe(EC.createOperatorSubscriber(Z,function(){if(J){J=!1;var Y=G;G=null,Z.next(Y)}},Nd.noop))})}fW.sample=Td});var jC=r((bW)=>{Object.defineProperty(bW,"__esModule",{value:!0});bW.sampleTime=void 0;var Md=w8(),Id=VK(),Rd=nz();function Ad(Q,X){if(X===void 0)X=Md.asyncScheduler;return Id.sample(Rd.interval(Q,X))}bW.sampleTime=Ad});var SC=r((mW)=>{Object.defineProperty(mW,"__esModule",{value:!0});mW.scan=void 0;var Od=l1(),wd=QK();function Ed(Q,X){return Od.operate(wd.scanInternals(Q,X,arguments.length>=2,!0))}mW.scan=Ed});var yC=r((_W)=>{Object.defineProperty(_W,"__esModule",{value:!0});_W.sequenceEqual=void 0;var jd=l1(),Sd=Q0(),kd=A0();function yd(Q,X){if(X===void 0)X=function(Z,J){return Z===J};return jd.operate(function(Z,J){var G=kC(),Y=kC(),H=function(z){J.next(z),J.complete()},K=function(z,W){var $=Sd.createOperatorSubscriber(J,function(q){var{buffer:B,complete:D}=W;if(B.length===0)D?H(!1):z.buffer.push(q);else!X(q,B.shift())&&H(!1)},function(){z.complete=!0;var{complete:q,buffer:B}=W;q&&H(B.length===0),$===null||$===void 0||$.unsubscribe()});return $};Z.subscribe(K(G,Y)),kd.innerFrom(Q).subscribe(K(Y,G))})}_W.sequenceEqual=yd;function kC(){return{buffer:[],complete:!1}}});var FK=r(($4)=>{var xd=$4&&$4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},vd=$4&&$4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z0)$=new vC.SafeSubscriber({next:function(E){return I.next(E)},error:function(E){P=!0,N(),q=PK(C,G,E),I.error(E)},complete:function(){F=!0,N(),q=PK(C,H),I.complete()}}),xC.innerFrom(V).subscribe($)})(W)}}$4.share=fd;function PK(Q,X){var Z=[];for(var J=2;J{Object.defineProperty(dW,"__esModule",{value:!0});dW.shareReplay=void 0;var bd=DG(),md=FK();function _d(Q,X,Z){var J,G,Y,H,K=!1;if(Q&&typeof Q==="object")J=Q.bufferSize,H=J===void 0?1/0:J,G=Q.windowTime,X=G===void 0?1/0:G,Y=Q.refCount,K=Y===void 0?!1:Y,Z=Q.scheduler;else H=Q!==null&&Q!==void 0?Q:1/0;return md.share({connector:function(){return new bd.ReplaySubject(H,X,Z)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:K})}dW.shareReplay=_d});var hC=r((uW)=>{Object.defineProperty(uW,"__esModule",{value:!0});uW.single=void 0;var dd=sQ(),ud=dz(),pd=_z(),ld=l1(),cd=Q0();function id(Q){return ld.operate(function(X,Z){var J=!1,G,Y=!1,H=0;X.subscribe(cd.createOperatorSubscriber(Z,function(K){if(Y=!0,!Q||Q(K,H++,X))J&&Z.error(new ud.SequenceError("Too many matching values")),J=!0,G=K},function(){if(J)Z.next(G),Z.complete();else Z.error(Y?new pd.NotFoundError("No matching values"):new dd.EmptyError)}))})}uW.single=id});var fC=r((pW)=>{Object.defineProperty(pW,"__esModule",{value:!0});pW.skip=void 0;var nd=JZ();function od(Q){return nd.filter(function(X,Z){return Q<=Z})}pW.skip=od});var bC=r((lW)=>{Object.defineProperty(lW,"__esModule",{value:!0});lW.skipLast=void 0;var ad=t6(),sd=l1(),td=Q0();function rd(Q){return Q<=0?ad.identity:sd.operate(function(X,Z){var J=new Array(Q),G=0;return X.subscribe(td.createOperatorSubscriber(Z,function(Y){var H=G++;if(H{Object.defineProperty(cW,"__esModule",{value:!0});cW.skipUntil=void 0;var ed=l1(),mC=Q0(),Qu=A0(),Zu=s6();function Xu(Q){return ed.operate(function(X,Z){var J=!1,G=mC.createOperatorSubscriber(Z,function(){G===null||G===void 0||G.unsubscribe(),J=!0},Zu.noop);Qu.innerFrom(Q).subscribe(G),X.subscribe(mC.createOperatorSubscriber(Z,function(Y){return J&&Z.next(Y)}))})}cW.skipUntil=Xu});var dC=r((iW)=>{Object.defineProperty(iW,"__esModule",{value:!0});iW.skipWhile=void 0;var Ju=l1(),Gu=Q0();function Yu(Q){return Ju.operate(function(X,Z){var J=!1,G=0;X.subscribe(Gu.createOperatorSubscriber(Z,function(Y){return(J||(J=!Q(Y,G++)))&&Z.next(Y)}))})}iW.skipWhile=Yu});var pC=r((nW)=>{Object.defineProperty(nW,"__esModule",{value:!0});nW.startWith=void 0;var uC=GX(),Wu=E8(),qu=l1();function Hu(){var Q=[];for(var X=0;X{Object.defineProperty(oW,"__esModule",{value:!0});oW.switchMap=void 0;var zu=A0(),Ku=l1(),lC=Q0();function $u(Q,X){return Ku.operate(function(Z,J){var G=null,Y=0,H=!1,K=function(){return H&&!G&&J.complete()};Z.subscribe(lC.createOperatorSubscriber(J,function(z){G===null||G===void 0||G.unsubscribe();var W=0,$=Y++;zu.innerFrom(Q(z,$)).subscribe(G=lC.createOperatorSubscriber(J,function(q){return J.next(X?X(z,q,$,W++):q)},function(){G=null,K()}))},function(){H=!0,K()}))})}oW.switchMap=$u});var cC=r((aW)=>{Object.defineProperty(aW,"__esModule",{value:!0});aW.switchAll=void 0;var Bu=zX(),Uu=t6();function Vu(){return Bu.switchMap(Uu.identity)}aW.switchAll=Vu});var nC=r((sW)=>{Object.defineProperty(sW,"__esModule",{value:!0});sW.switchMapTo=void 0;var iC=zX(),Pu=t0();function Fu(Q,X){return Pu.isFunction(X)?iC.switchMap(function(){return Q},X):iC.switchMap(function(){return Q})}sW.switchMapTo=Fu});var oC=r((tW)=>{Object.defineProperty(tW,"__esModule",{value:!0});tW.switchScan=void 0;var Du=zX(),Lu=l1();function Cu(Q,X){return Lu.operate(function(Z,J){var G=X;return Du.switchMap(function(Y,H){return Q(G,Y,H)},function(Y,H){return G=H,H})(Z).subscribe(J),function(){G=null}})}tW.switchScan=Cu});var aC=r((rW)=>{Object.defineProperty(rW,"__esModule",{value:!0});rW.takeUntil=void 0;var Nu=l1(),Tu=Q0(),Mu=A0(),Iu=s6();function Ru(Q){return Nu.operate(function(X,Z){Mu.innerFrom(Q).subscribe(Tu.createOperatorSubscriber(Z,function(){return Z.complete()},Iu.noop)),!Z.closed&&X.subscribe(Z)})}rW.takeUntil=Ru});var sC=r((eW)=>{Object.defineProperty(eW,"__esModule",{value:!0});eW.takeWhile=void 0;var Au=l1(),Ou=Q0();function wu(Q,X){if(X===void 0)X=!1;return Au.operate(function(Z,J){var G=0;Z.subscribe(Ou.createOperatorSubscriber(J,function(Y){var H=Q(Y,G++);(H||X)&&J.next(Y),!H&&J.complete()}))})}eW.takeWhile=wu});var tC=r((Qq)=>{Object.defineProperty(Qq,"__esModule",{value:!0});Qq.tap=void 0;var Eu=t0(),ju=l1(),Su=Q0(),ku=t6();function yu(Q,X,Z){var J=Eu.isFunction(Q)||X||Z?{next:Q,error:X,complete:Z}:Q;return J?ju.operate(function(G,Y){var H;(H=J.subscribe)===null||H===void 0||H.call(J);var K=!0;G.subscribe(Su.createOperatorSubscriber(Y,function(z){var W;(W=J.next)===null||W===void 0||W.call(J,z),Y.next(z)},function(){var z;K=!1,(z=J.complete)===null||z===void 0||z.call(J),Y.complete()},function(z){var W;K=!1,(W=J.error)===null||W===void 0||W.call(J,z),Y.error(z)},function(){var z,W;if(K)(z=J.unsubscribe)===null||z===void 0||z.call(J);(W=J.finalize)===null||W===void 0||W.call(J)}))}):ku.identity}Qq.tap=yu});var DK=r((Zq)=>{Object.defineProperty(Zq,"__esModule",{value:!0});Zq.throttle=void 0;var xu=l1(),rC=Q0(),vu=A0();function gu(Q,X){return xu.operate(function(Z,J){var G=X!==null&&X!==void 0?X:{},Y=G.leading,H=Y===void 0?!0:Y,K=G.trailing,z=K===void 0?!1:K,W=!1,$=null,q=null,B=!1,D=function(){if(q===null||q===void 0||q.unsubscribe(),q=null,z)N(),B&&J.complete()},F=function(){q=null,B&&J.complete()},P=function(C){return q=vu.innerFrom(Q(C)).subscribe(rC.createOperatorSubscriber(J,D,F))},N=function(){if(W){W=!1;var C=$;$=null,J.next(C),!B&&P(C)}};Z.subscribe(rC.createOperatorSubscriber(J,function(C){W=!0,$=C,!(q&&!q.closed)&&(H?N():P(C))},function(){B=!0,!(z&&W&&q&&!q.closed)&&J.complete()}))})}Zq.throttle=gu});var eC=r((Xq)=>{Object.defineProperty(Xq,"__esModule",{value:!0});Xq.throttleTime=void 0;var hu=w8(),fu=DK(),bu=Z4();function mu(Q,X,Z){if(X===void 0)X=hu.asyncScheduler;var J=bu.timer(Q,X);return fu.throttle(function(){return J},Z)}Xq.throttleTime=mu});var ZN=r((v5)=>{Object.defineProperty(v5,"__esModule",{value:!0});v5.TimeInterval=v5.timeInterval=void 0;var _u=w8(),du=l1(),uu=Q0();function pu(Q){if(Q===void 0)Q=_u.asyncScheduler;return du.operate(function(X,Z){var J=Q.now();X.subscribe(uu.createOperatorSubscriber(Z,function(G){var Y=Q.now(),H=Y-J;J=Y,Z.next(new QN(G,H))}))})}v5.timeInterval=pu;var QN=function(){function Q(X,Z){this.value=X,this.interval=Z}return Q}();v5.TimeInterval=QN});var XN=r((Jq)=>{Object.defineProperty(Jq,"__esModule",{value:!0});Jq.timeoutWith=void 0;var lu=w8(),cu=eG(),iu=QY();function nu(Q,X,Z){var J,G,Y;if(Z=Z!==null&&Z!==void 0?Z:lu.async,cu.isValidDate(Q))J=Q;else if(typeof Q==="number")G=Q;if(X)Y=function(){return X};else throw new TypeError("No observable provided to switch to");if(J==null&&G==null)throw new TypeError("No timeout provided.");return iu.timeout({first:J,each:G,scheduler:Z,with:Y})}Jq.timeoutWith=nu});var JN=r((Gq)=>{Object.defineProperty(Gq,"__esModule",{value:!0});Gq.timestamp=void 0;var ou=FG(),au=tQ();function su(Q){if(Q===void 0)Q=ou.dateTimestampProvider;return au.map(function(X){return{value:X,timestamp:Q.now()}})}Gq.timestamp=su});var WN=r((Yq)=>{Object.defineProperty(Yq,"__esModule",{value:!0});Yq.window=void 0;var GN=r6(),tu=l1(),YN=Q0(),ru=s6(),eu=A0();function Qp(Q){return tu.operate(function(X,Z){var J=new GN.Subject;Z.next(J.asObservable());var G=function(Y){J.error(Y),Z.error(Y)};return X.subscribe(YN.createOperatorSubscriber(Z,function(Y){return J===null||J===void 0?void 0:J.next(Y)},function(){J.complete(),Z.complete()},G)),eu.innerFrom(Q).subscribe(YN.createOperatorSubscriber(Z,function(){J.complete(),Z.next(J=new GN.Subject)},ru.noop,G)),function(){J===null||J===void 0||J.unsubscribe(),J=null}})}Yq.window=Qp});var HN=r((g5)=>{var Zp=g5&&g5.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(g5,"__esModule",{value:!0});g5.windowCount=void 0;var qN=r6(),Xp=l1(),Jp=Q0();function Gp(Q,X){if(X===void 0)X=0;var Z=X>0?X:Q;return Xp.operate(function(J,G){var Y=[new qN.Subject],H=[],K=0;G.next(Y[0].asObservable()),J.subscribe(Jp.createOperatorSubscriber(G,function(z){var W,$;try{for(var q=Zp(Y),B=q.next();!B.done;B=q.next()){var D=B.value;D.next(z)}}catch(N){W={error:N}}finally{try{if(B&&!B.done&&($=q.return))$.call(q)}finally{if(W)throw W.error}}var F=K-Q+1;if(F>=0&&F%Z===0)Y.shift().complete();if(++K%Z===0){var P=new qN.Subject;Y.push(P),G.next(P.asObservable())}},function(){while(Y.length>0)Y.shift().complete();G.complete()},function(z){while(Y.length>0)Y.shift().error(z);G.error(z)},function(){H=null,Y=null}))})}g5.windowCount=Gp});var KN=r((Wq)=>{Object.defineProperty(Wq,"__esModule",{value:!0});Wq.windowTime=void 0;var Yp=r6(),Wp=w8(),qp=o8(),Hp=l1(),zp=Q0(),Kp=MQ(),$p=E8(),zN=IQ();function Bp(Q){var X,Z,J=[];for(var G=1;G=0)zN.executeSchedule(W,Y,D,H,!0);else q=!0;D();var F=function(N){return $.slice().forEach(N)},P=function(N){F(function(C){var L=C.window;return N(L)}),N(W),W.unsubscribe()};return z.subscribe(zp.createOperatorSubscriber(W,function(N){F(function(C){C.window.next(N),K<=++C.seen&&B(C)})},function(){return P(function(N){return N.complete()})},function(N){return P(function(C){return C.error(N)})})),function(){$=null}})}Wq.windowTime=Bp});var UN=r((h5)=>{var Up=h5&&h5.__values||function(Q){var X=typeof Symbol==="function"&&Symbol.iterator,Z=X&&Q[X],J=0;if(Z)return Z.call(Q);if(Q&&typeof Q.length==="number")return{next:function(){if(Q&&J>=Q.length)Q=void 0;return{value:Q&&Q[J++],done:!Q}}};throw new TypeError(X?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(h5,"__esModule",{value:!0});h5.windowToggle=void 0;var Vp=r6(),Pp=o8(),Fp=l1(),$N=A0(),LK=Q0(),BN=s6(),Dp=MQ();function Lp(Q,X){return Fp.operate(function(Z,J){var G=[],Y=function(H){while(0{Object.defineProperty(qq,"__esModule",{value:!0});qq.windowWhen=void 0;var Cp=r6(),Np=l1(),VN=Q0(),Tp=A0();function Mp(Q){return Np.operate(function(X,Z){var J,G,Y=function(K){J.error(K),Z.error(K)},H=function(){G===null||G===void 0||G.unsubscribe(),J===null||J===void 0||J.complete(),J=new Cp.Subject,Z.next(J.asObservable());var K;try{K=Tp.innerFrom(Q())}catch(z){Y(z);return}K.subscribe(G=VN.createOperatorSubscriber(Z,H,H,Y))};H(),X.subscribe(VN.createOperatorSubscriber(Z,function(K){return J.next(K)},function(){J.complete(),Z.complete()},Y,function(){G===null||G===void 0||G.unsubscribe(),J=null}))})}qq.windowWhen=Mp});var CN=r((B4)=>{var FN=B4&&B4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},DN=B4&&B4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{Object.defineProperty(Hq,"__esModule",{value:!0});Hq.zipAll=void 0;var jp=SY(),Sp=XK();function kp(Q){return Sp.joinAllInternals(jp.zip,Q)}Hq.zipAll=kp});var TN=r((U4)=>{var yp=U4&&U4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},xp=U4&&U4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var fp=V4&&V4.__read||function(Q,X){var Z=typeof Symbol==="function"&&Q[Symbol.iterator];if(!Z)return Q;var J=Z.call(Q),G,Y=[],H;try{while((X===void 0||X-- >0)&&!(G=J.next()).done)Y.push(G.value)}catch(K){H={error:K}}finally{try{if(G&&!G.done&&(Z=J.return))Z.call(J)}finally{if(H)throw H.error}}return Y},bp=V4&&V4.__spreadArray||function(Q,X){for(var Z=0,J=X.length,G=Q.length;Z{var dp=l&&l.__createBinding||(Object.create?function(Q,X,Z,J){if(J===void 0)J=Z;Object.defineProperty(Q,J,{enumerable:!0,get:function(){return X[Z]}})}:function(Q,X,Z,J){if(J===void 0)J=Z;Q[J]=X[Z]}),up=l&&l.__exportStar||function(Q,X){for(var Z in Q)if(Z!=="default"&&!Object.prototype.hasOwnProperty.call(X,Z))dp(X,Q,Z)};Object.defineProperty(l,"__esModule",{value:!0});l.interval=l.iif=l.generate=l.fromEventPattern=l.fromEvent=l.from=l.forkJoin=l.empty=l.defer=l.connectable=l.concat=l.combineLatest=l.bindNodeCallback=l.bindCallback=l.UnsubscriptionError=l.TimeoutError=l.SequenceError=l.ObjectUnsubscribedError=l.NotFoundError=l.EmptyError=l.ArgumentOutOfRangeError=l.firstValueFrom=l.lastValueFrom=l.isObservable=l.identity=l.noop=l.pipe=l.NotificationKind=l.Notification=l.Subscriber=l.Subscription=l.Scheduler=l.VirtualAction=l.VirtualTimeScheduler=l.animationFrameScheduler=l.animationFrame=l.queueScheduler=l.queue=l.asyncScheduler=l.async=l.asapScheduler=l.asap=l.AsyncSubject=l.ReplaySubject=l.BehaviorSubject=l.Subject=l.animationFrames=l.observable=l.ConnectableObservable=l.Observable=void 0;l.filter=l.expand=l.exhaustMap=l.exhaustAll=l.exhaust=l.every=l.endWith=l.elementAt=l.distinctUntilKeyChanged=l.distinctUntilChanged=l.distinct=l.dematerialize=l.delayWhen=l.delay=l.defaultIfEmpty=l.debounceTime=l.debounce=l.count=l.connect=l.concatWith=l.concatMapTo=l.concatMap=l.concatAll=l.combineLatestWith=l.combineLatestAll=l.combineAll=l.catchError=l.bufferWhen=l.bufferToggle=l.bufferTime=l.bufferCount=l.buffer=l.auditTime=l.audit=l.config=l.NEVER=l.EMPTY=l.scheduled=l.zip=l.using=l.timer=l.throwError=l.range=l.race=l.partition=l.pairs=l.onErrorResumeNext=l.of=l.never=l.merge=void 0;l.switchMap=l.switchAll=l.subscribeOn=l.startWith=l.skipWhile=l.skipUntil=l.skipLast=l.skip=l.single=l.shareReplay=l.share=l.sequenceEqual=l.scan=l.sampleTime=l.sample=l.refCount=l.retryWhen=l.retry=l.repeatWhen=l.repeat=l.reduce=l.raceWith=l.publishReplay=l.publishLast=l.publishBehavior=l.publish=l.pluck=l.pairwise=l.onErrorResumeNextWith=l.observeOn=l.multicast=l.min=l.mergeWith=l.mergeScan=l.mergeMapTo=l.mergeMap=l.flatMap=l.mergeAll=l.max=l.materialize=l.mapTo=l.map=l.last=l.isEmpty=l.ignoreElements=l.groupBy=l.first=l.findIndex=l.find=l.finalize=void 0;l.zipWith=l.zipAll=l.withLatestFrom=l.windowWhen=l.windowToggle=l.windowTime=l.windowCount=l.window=l.toArray=l.timestamp=l.timeoutWith=l.timeout=l.timeInterval=l.throwIfEmpty=l.throttleTime=l.throttle=l.tap=l.takeWhile=l.takeUntil=l.takeLast=l.take=l.switchScan=l.switchMapTo=void 0;var pp=Q6();Object.defineProperty(l,"Observable",{enumerable:!0,get:function(){return pp.Observable}});var lp=t7();Object.defineProperty(l,"ConnectableObservable",{enumerable:!0,get:function(){return lp.ConnectableObservable}});var cp=a7();Object.defineProperty(l,"observable",{enumerable:!0,get:function(){return cp.observable}});var ip=wF();Object.defineProperty(l,"animationFrames",{enumerable:!0,get:function(){return ip.animationFrames}});var np=r6();Object.defineProperty(l,"Subject",{enumerable:!0,get:function(){return np.Subject}});var op=Mz();Object.defineProperty(l,"BehaviorSubject",{enumerable:!0,get:function(){return op.BehaviorSubject}});var ap=DG();Object.defineProperty(l,"ReplaySubject",{enumerable:!0,get:function(){return ap.ReplaySubject}});var sp=LG();Object.defineProperty(l,"AsyncSubject",{enumerable:!0,get:function(){return sp.AsyncSubject}});var IN=lF();Object.defineProperty(l,"asap",{enumerable:!0,get:function(){return IN.asap}});Object.defineProperty(l,"asapScheduler",{enumerable:!0,get:function(){return IN.asapScheduler}});var RN=w8();Object.defineProperty(l,"async",{enumerable:!0,get:function(){return RN.async}});Object.defineProperty(l,"asyncScheduler",{enumerable:!0,get:function(){return RN.asyncScheduler}});var AN=nF();Object.defineProperty(l,"queue",{enumerable:!0,get:function(){return AN.queue}});Object.defineProperty(l,"queueScheduler",{enumerable:!0,get:function(){return AN.queueScheduler}});var ON=tF();Object.defineProperty(l,"animationFrame",{enumerable:!0,get:function(){return ON.animationFrame}});Object.defineProperty(l,"animationFrameScheduler",{enumerable:!0,get:function(){return ON.animationFrameScheduler}});var wN=QD();Object.defineProperty(l,"VirtualTimeScheduler",{enumerable:!0,get:function(){return wN.VirtualTimeScheduler}});Object.defineProperty(l,"VirtualAction",{enumerable:!0,get:function(){return wN.VirtualAction}});var tp=Rz();Object.defineProperty(l,"Scheduler",{enumerable:!0,get:function(){return tp.Scheduler}});var rp=o8();Object.defineProperty(l,"Subscription",{enumerable:!0,get:function(){return rp.Subscription}});var ep=X5();Object.defineProperty(l,"Subscriber",{enumerable:!0,get:function(){return ep.Subscriber}});var EN=lG();Object.defineProperty(l,"Notification",{enumerable:!0,get:function(){return EN.Notification}});Object.defineProperty(l,"NotificationKind",{enumerable:!0,get:function(){return EN.NotificationKind}});var Ql=s7();Object.defineProperty(l,"pipe",{enumerable:!0,get:function(){return Ql.pipe}});var Zl=s6();Object.defineProperty(l,"noop",{enumerable:!0,get:function(){return Zl.noop}});var Xl=t6();Object.defineProperty(l,"identity",{enumerable:!0,get:function(){return Xl.identity}});var Jl=DD();Object.defineProperty(l,"isObservable",{enumerable:!0,get:function(){return Jl.isObservable}});var Gl=LD();Object.defineProperty(l,"lastValueFrom",{enumerable:!0,get:function(){return Gl.lastValueFrom}});var Yl=CD();Object.defineProperty(l,"firstValueFrom",{enumerable:!0,get:function(){return Yl.firstValueFrom}});var Wl=mz();Object.defineProperty(l,"ArgumentOutOfRangeError",{enumerable:!0,get:function(){return Wl.ArgumentOutOfRangeError}});var ql=sQ();Object.defineProperty(l,"EmptyError",{enumerable:!0,get:function(){return ql.EmptyError}});var Hl=_z();Object.defineProperty(l,"NotFoundError",{enumerable:!0,get:function(){return Hl.NotFoundError}});var zl=Lz();Object.defineProperty(l,"ObjectUnsubscribedError",{enumerable:!0,get:function(){return zl.ObjectUnsubscribedError}});var Kl=dz();Object.defineProperty(l,"SequenceError",{enumerable:!0,get:function(){return Kl.SequenceError}});var $l=QY();Object.defineProperty(l,"TimeoutError",{enumerable:!0,get:function(){return $l.TimeoutError}});var Bl=Yz();Object.defineProperty(l,"UnsubscriptionError",{enumerable:!0,get:function(){return Bl.UnsubscriptionError}});var Ul=TD();Object.defineProperty(l,"bindCallback",{enumerable:!0,get:function(){return Ul.bindCallback}});var Vl=MD();Object.defineProperty(l,"bindNodeCallback",{enumerable:!0,get:function(){return Vl.bindNodeCallback}});var Pl=WY();Object.defineProperty(l,"combineLatest",{enumerable:!0,get:function(){return Pl.combineLatest}});var Fl=GX();Object.defineProperty(l,"concat",{enumerable:!0,get:function(){return Fl.concat}});var Dl=SD();Object.defineProperty(l,"connectable",{enumerable:!0,get:function(){return Dl.connectable}});var Ll=YX();Object.defineProperty(l,"defer",{enumerable:!0,get:function(){return Ll.defer}});var Cl=S9();Object.defineProperty(l,"empty",{enumerable:!0,get:function(){return Cl.empty}});var Nl=kD();Object.defineProperty(l,"forkJoin",{enumerable:!0,get:function(){return Nl.forkJoin}});var Tl=RQ();Object.defineProperty(l,"from",{enumerable:!0,get:function(){return Tl.from}});var Ml=xD();Object.defineProperty(l,"fromEvent",{enumerable:!0,get:function(){return Ml.fromEvent}});var Il=gD();Object.defineProperty(l,"fromEventPattern",{enumerable:!0,get:function(){return Il.fromEventPattern}});var Rl=fD();Object.defineProperty(l,"generate",{enumerable:!0,get:function(){return Rl.generate}});var Al=bD();Object.defineProperty(l,"iif",{enumerable:!0,get:function(){return Al.iif}});var Ol=nz();Object.defineProperty(l,"interval",{enumerable:!0,get:function(){return Ol.interval}});var wl=_D();Object.defineProperty(l,"merge",{enumerable:!0,get:function(){return wl.merge}});var El=oz();Object.defineProperty(l,"never",{enumerable:!0,get:function(){return El.never}});var jl=uG();Object.defineProperty(l,"of",{enumerable:!0,get:function(){return jl.of}});var Sl=az();Object.defineProperty(l,"onErrorResumeNext",{enumerable:!0,get:function(){return Sl.onErrorResumeNext}});var kl=uD();Object.defineProperty(l,"pairs",{enumerable:!0,get:function(){return kl.pairs}});var yl=iD();Object.defineProperty(l,"partition",{enumerable:!0,get:function(){return yl.partition}});var xl=sz();Object.defineProperty(l,"race",{enumerable:!0,get:function(){return xl.race}});var vl=aD();Object.defineProperty(l,"range",{enumerable:!0,get:function(){return vl.range}});var gl=bz();Object.defineProperty(l,"throwError",{enumerable:!0,get:function(){return gl.throwError}});var hl=Z4();Object.defineProperty(l,"timer",{enumerable:!0,get:function(){return hl.timer}});var fl=sD();Object.defineProperty(l,"using",{enumerable:!0,get:function(){return fl.using}});var bl=SY();Object.defineProperty(l,"zip",{enumerable:!0,get:function(){return bl.zip}});var ml=fz();Object.defineProperty(l,"scheduled",{enumerable:!0,get:function(){return ml.scheduled}});var _l=S9();Object.defineProperty(l,"EMPTY",{enumerable:!0,get:function(){return _l.EMPTY}});var dl=oz();Object.defineProperty(l,"NEVER",{enumerable:!0,get:function(){return dl.NEVER}});up(rD(),l);var ul=Q5();Object.defineProperty(l,"config",{enumerable:!0,get:function(){return ul.config}});var pl=tz();Object.defineProperty(l,"audit",{enumerable:!0,get:function(){return pl.audit}});var ll=QL();Object.defineProperty(l,"auditTime",{enumerable:!0,get:function(){return ll.auditTime}});var cl=XL();Object.defineProperty(l,"buffer",{enumerable:!0,get:function(){return cl.buffer}});var il=JL();Object.defineProperty(l,"bufferCount",{enumerable:!0,get:function(){return il.bufferCount}});var nl=YL();Object.defineProperty(l,"bufferTime",{enumerable:!0,get:function(){return nl.bufferTime}});var ol=HL();Object.defineProperty(l,"bufferToggle",{enumerable:!0,get:function(){return ol.bufferToggle}});var al=KL();Object.defineProperty(l,"bufferWhen",{enumerable:!0,get:function(){return al.bufferWhen}});var sl=BL();Object.defineProperty(l,"catchError",{enumerable:!0,get:function(){return sl.catchError}});var tl=UL();Object.defineProperty(l,"combineAll",{enumerable:!0,get:function(){return tl.combineAll}});var rl=JK();Object.defineProperty(l,"combineLatestAll",{enumerable:!0,get:function(){return rl.combineLatestAll}});var el=LL();Object.defineProperty(l,"combineLatestWith",{enumerable:!0,get:function(){return el.combineLatestWith}});var Qc=BY();Object.defineProperty(l,"concatAll",{enumerable:!0,get:function(){return Qc.concatAll}});var Zc=GK();Object.defineProperty(l,"concatMap",{enumerable:!0,get:function(){return Zc.concatMap}});var Xc=TL();Object.defineProperty(l,"concatMapTo",{enumerable:!0,get:function(){return Xc.concatMapTo}});var Jc=IL();Object.defineProperty(l,"concatWith",{enumerable:!0,get:function(){return Jc.concatWith}});var Gc=iY();Object.defineProperty(l,"connect",{enumerable:!0,get:function(){return Gc.connect}});var Yc=AL();Object.defineProperty(l,"count",{enumerable:!0,get:function(){return Yc.count}});var Wc=wL();Object.defineProperty(l,"debounce",{enumerable:!0,get:function(){return Wc.debounce}});var qc=EL();Object.defineProperty(l,"debounceTime",{enumerable:!0,get:function(){return qc.debounceTime}});var Hc=WX();Object.defineProperty(l,"defaultIfEmpty",{enumerable:!0,get:function(){return Hc.defaultIfEmpty}});var zc=kL();Object.defineProperty(l,"delay",{enumerable:!0,get:function(){return zc.delay}});var Kc=qK();Object.defineProperty(l,"delayWhen",{enumerable:!0,get:function(){return Kc.delayWhen}});var $c=yL();Object.defineProperty(l,"dematerialize",{enumerable:!0,get:function(){return $c.dematerialize}});var Bc=vL();Object.defineProperty(l,"distinct",{enumerable:!0,get:function(){return Bc.distinct}});var Uc=HK();Object.defineProperty(l,"distinctUntilChanged",{enumerable:!0,get:function(){return Uc.distinctUntilChanged}});var Vc=gL();Object.defineProperty(l,"distinctUntilKeyChanged",{enumerable:!0,get:function(){return Vc.distinctUntilKeyChanged}});var Pc=fL();Object.defineProperty(l,"elementAt",{enumerable:!0,get:function(){return Pc.elementAt}});var Fc=bL();Object.defineProperty(l,"endWith",{enumerable:!0,get:function(){return Fc.endWith}});var Dc=mL();Object.defineProperty(l,"every",{enumerable:!0,get:function(){return Dc.every}});var Lc=pL();Object.defineProperty(l,"exhaust",{enumerable:!0,get:function(){return Lc.exhaust}});var Cc=KK();Object.defineProperty(l,"exhaustAll",{enumerable:!0,get:function(){return Cc.exhaustAll}});var Nc=zK();Object.defineProperty(l,"exhaustMap",{enumerable:!0,get:function(){return Nc.exhaustMap}});var Tc=lL();Object.defineProperty(l,"expand",{enumerable:!0,get:function(){return Tc.expand}});var Mc=JZ();Object.defineProperty(l,"filter",{enumerable:!0,get:function(){return Mc.filter}});var Ic=cL();Object.defineProperty(l,"finalize",{enumerable:!0,get:function(){return Ic.finalize}});var Rc=$K();Object.defineProperty(l,"find",{enumerable:!0,get:function(){return Rc.find}});var Ac=nL();Object.defineProperty(l,"findIndex",{enumerable:!0,get:function(){return Ac.findIndex}});var Oc=oL();Object.defineProperty(l,"first",{enumerable:!0,get:function(){return Oc.first}});var wc=sL();Object.defineProperty(l,"groupBy",{enumerable:!0,get:function(){return wc.groupBy}});var Ec=YK();Object.defineProperty(l,"ignoreElements",{enumerable:!0,get:function(){return Ec.ignoreElements}});var jc=tL();Object.defineProperty(l,"isEmpty",{enumerable:!0,get:function(){return jc.isEmpty}});var Sc=rL();Object.defineProperty(l,"last",{enumerable:!0,get:function(){return Sc.last}});var kc=tQ();Object.defineProperty(l,"map",{enumerable:!0,get:function(){return kc.map}});var yc=WK();Object.defineProperty(l,"mapTo",{enumerable:!0,get:function(){return yc.mapTo}});var xc=eL();Object.defineProperty(l,"materialize",{enumerable:!0,get:function(){return xc.materialize}});var vc=QC();Object.defineProperty(l,"max",{enumerable:!0,get:function(){return vc.max}});var gc=JX();Object.defineProperty(l,"mergeAll",{enumerable:!0,get:function(){return gc.mergeAll}});var hc=ZC();Object.defineProperty(l,"flatMap",{enumerable:!0,get:function(){return hc.flatMap}});var fc=OQ();Object.defineProperty(l,"mergeMap",{enumerable:!0,get:function(){return fc.mergeMap}});var bc=JC();Object.defineProperty(l,"mergeMapTo",{enumerable:!0,get:function(){return bc.mergeMapTo}});var mc=GC();Object.defineProperty(l,"mergeScan",{enumerable:!0,get:function(){return mc.mergeScan}});var _c=qC();Object.defineProperty(l,"mergeWith",{enumerable:!0,get:function(){return _c.mergeWith}});var dc=HC();Object.defineProperty(l,"min",{enumerable:!0,get:function(){return dc.min}});var uc=OW();Object.defineProperty(l,"multicast",{enumerable:!0,get:function(){return uc.multicast}});var pc=ZX();Object.defineProperty(l,"observeOn",{enumerable:!0,get:function(){return pc.observeOn}});var lc=$C();Object.defineProperty(l,"onErrorResumeNextWith",{enumerable:!0,get:function(){return lc.onErrorResumeNextWith}});var cc=BC();Object.defineProperty(l,"pairwise",{enumerable:!0,get:function(){return cc.pairwise}});var ic=UC();Object.defineProperty(l,"pluck",{enumerable:!0,get:function(){return ic.pluck}});var nc=VC();Object.defineProperty(l,"publish",{enumerable:!0,get:function(){return nc.publish}});var oc=PC();Object.defineProperty(l,"publishBehavior",{enumerable:!0,get:function(){return oc.publishBehavior}});var ac=FC();Object.defineProperty(l,"publishLast",{enumerable:!0,get:function(){return ac.publishLast}});var sc=LC();Object.defineProperty(l,"publishReplay",{enumerable:!0,get:function(){return sc.publishReplay}});var tc=CC();Object.defineProperty(l,"raceWith",{enumerable:!0,get:function(){return tc.raceWith}});var rc=k5();Object.defineProperty(l,"reduce",{enumerable:!0,get:function(){return rc.reduce}});var ec=TC();Object.defineProperty(l,"repeat",{enumerable:!0,get:function(){return ec.repeat}});var Qi=IC();Object.defineProperty(l,"repeatWhen",{enumerable:!0,get:function(){return Qi.repeatWhen}});var Zi=AC();Object.defineProperty(l,"retry",{enumerable:!0,get:function(){return Zi.retry}});var Xi=wC();Object.defineProperty(l,"retryWhen",{enumerable:!0,get:function(){return Xi.retryWhen}});var Ji=Fz();Object.defineProperty(l,"refCount",{enumerable:!0,get:function(){return Ji.refCount}});var Gi=VK();Object.defineProperty(l,"sample",{enumerable:!0,get:function(){return Gi.sample}});var Yi=jC();Object.defineProperty(l,"sampleTime",{enumerable:!0,get:function(){return Yi.sampleTime}});var Wi=SC();Object.defineProperty(l,"scan",{enumerable:!0,get:function(){return Wi.scan}});var qi=yC();Object.defineProperty(l,"sequenceEqual",{enumerable:!0,get:function(){return qi.sequenceEqual}});var Hi=FK();Object.defineProperty(l,"share",{enumerable:!0,get:function(){return Hi.share}});var zi=gC();Object.defineProperty(l,"shareReplay",{enumerable:!0,get:function(){return zi.shareReplay}});var Ki=hC();Object.defineProperty(l,"single",{enumerable:!0,get:function(){return Ki.single}});var $i=fC();Object.defineProperty(l,"skip",{enumerable:!0,get:function(){return $i.skip}});var Bi=bC();Object.defineProperty(l,"skipLast",{enumerable:!0,get:function(){return Bi.skipLast}});var Ui=_C();Object.defineProperty(l,"skipUntil",{enumerable:!0,get:function(){return Ui.skipUntil}});var Vi=dC();Object.defineProperty(l,"skipWhile",{enumerable:!0,get:function(){return Vi.skipWhile}});var Pi=pC();Object.defineProperty(l,"startWith",{enumerable:!0,get:function(){return Pi.startWith}});var Fi=XX();Object.defineProperty(l,"subscribeOn",{enumerable:!0,get:function(){return Fi.subscribeOn}});var Di=cC();Object.defineProperty(l,"switchAll",{enumerable:!0,get:function(){return Di.switchAll}});var Li=zX();Object.defineProperty(l,"switchMap",{enumerable:!0,get:function(){return Li.switchMap}});var Ci=nC();Object.defineProperty(l,"switchMapTo",{enumerable:!0,get:function(){return Ci.switchMapTo}});var Ni=oC();Object.defineProperty(l,"switchScan",{enumerable:!0,get:function(){return Ni.switchScan}});var Ti=qX();Object.defineProperty(l,"take",{enumerable:!0,get:function(){return Ti.take}});var Mi=BK();Object.defineProperty(l,"takeLast",{enumerable:!0,get:function(){return Mi.takeLast}});var Ii=aC();Object.defineProperty(l,"takeUntil",{enumerable:!0,get:function(){return Ii.takeUntil}});var Ri=sC();Object.defineProperty(l,"takeWhile",{enumerable:!0,get:function(){return Ri.takeWhile}});var Ai=tC();Object.defineProperty(l,"tap",{enumerable:!0,get:function(){return Ai.tap}});var Oi=DK();Object.defineProperty(l,"throttle",{enumerable:!0,get:function(){return Oi.throttle}});var wi=eC();Object.defineProperty(l,"throttleTime",{enumerable:!0,get:function(){return wi.throttleTime}});var Ei=HX();Object.defineProperty(l,"throwIfEmpty",{enumerable:!0,get:function(){return Ei.throwIfEmpty}});var ji=ZN();Object.defineProperty(l,"timeInterval",{enumerable:!0,get:function(){return ji.timeInterval}});var Si=QY();Object.defineProperty(l,"timeout",{enumerable:!0,get:function(){return Si.timeout}});var ki=XN();Object.defineProperty(l,"timeoutWith",{enumerable:!0,get:function(){return ki.timeoutWith}});var yi=JN();Object.defineProperty(l,"timestamp",{enumerable:!0,get:function(){return yi.timestamp}});var xi=ZK();Object.defineProperty(l,"toArray",{enumerable:!0,get:function(){return xi.toArray}});var vi=WN();Object.defineProperty(l,"window",{enumerable:!0,get:function(){return vi.window}});var gi=HN();Object.defineProperty(l,"windowCount",{enumerable:!0,get:function(){return gi.windowCount}});var hi=KN();Object.defineProperty(l,"windowTime",{enumerable:!0,get:function(){return hi.windowTime}});var fi=UN();Object.defineProperty(l,"windowToggle",{enumerable:!0,get:function(){return fi.windowToggle}});var bi=PN();Object.defineProperty(l,"windowWhen",{enumerable:!0,get:function(){return bi.windowWhen}});var mi=CN();Object.defineProperty(l,"withLatestFrom",{enumerable:!0,get:function(){return mi.withLatestFrom}});var _i=NN();Object.defineProperty(l,"zipAll",{enumerable:!0,get:function(){return _i.zipAll}});var di=MN();Object.defineProperty(l,"zipWith",{enumerable:!0,get:function(){return di.zipWith}})});var $I=r((y$,KI)=>{var{create:Fo,defineProperty:SX,defineProperties:Do,getOwnPropertyDescriptor:Lo,getOwnPropertyDescriptors:Co,getOwnPropertyNames:No,getOwnPropertySymbols:uq,getPrototypeOf:To}=Object,F$=Object.prototype.hasOwnProperty,IM=Object.prototype.propertyIsEnumerable,Mo=Math.pow,P$=(Q,X,Z)=>(X in Q)?SX(Q,X,{enumerable:!0,configurable:!0,writable:!0,value:Z}):Q[X]=Z,K0=(Q,X)=>{for(var Z in X||(X={}))if(F$.call(X,Z))P$(Q,Z,X[Z]);if(uq){for(var Z of uq(X))if(IM.call(X,Z))P$(Q,Z,X[Z])}return Q},m9=(Q,X)=>Do(Q,Co(X)),RM=(Q)=>SX(Q,"__esModule",{value:!0}),FM=(Q,X)=>{var Z={};for(var J in Q)if(F$.call(Q,J)&&X.indexOf(J)<0)Z[J]=Q[J];if(Q!=null&&uq){for(var J of uq(Q))if(X.indexOf(J)<0&&IM.call(Q,J))Z[J]=Q[J]}return Z},W1=(Q,X)=>function Z(){return X||Q[Object.keys(Q)[0]]((X={exports:{}}).exports,X),X.exports},Io=(Q,X)=>{RM(Q);for(var Z in X)SX(Q,Z,{get:X[Z],enumerable:!0})},Ro=(Q,X,Z)=>{if(X&&typeof X==="object"||typeof X==="function"){for(let J of No(X))if(!F$.call(Q,J)&&J!=="default")SX(Q,J,{get:()=>X[J],enumerable:!(Z=Lo(X,J))||Z.enumerable})}return Q},c6=(Q)=>{return Ro(RM(SX(Q!=null?Fo(To(Q)):{},"default",Q&&Q.__esModule&&"default"in Q?{get:()=>Q.default,enumerable:!0}:{value:Q,enumerable:!0})),Q)},b8=(Q,X,Z)=>{return P$(Q,typeof X!=="symbol"?X+"":X,Z),Z},T0=(Q,X,Z)=>{return new Promise((J,G)=>{var Y=(z)=>{try{K(Z.next(z))}catch(W){G(W)}},H=(z)=>{try{K(Z.throw(z))}catch(W){G(W)}},K=(z)=>z.done?J(z.value):Promise.resolve(z.value).then(Y,H);K((Z=Z.apply(Q,X)).next())})},y0=W1({"node_modules/node-forge/lib/forge.js"(Q,X){X.exports={options:{usePureJavaScript:!1}}}}),Ao=W1({"node_modules/node-forge/lib/baseN.js"(Q,X){var Z={};X.exports=Z;var J={};Z.encode=function(Y,H,K){if(typeof H!=="string")throw new TypeError('"alphabet" must be a string.');if(K!==void 0&&typeof K!=="number")throw new TypeError('"maxline" must be a number.');var z="";if(!(Y instanceof Uint8Array))z=G(Y,H);else{var W=0,$=H.length,q=H.charAt(0),B=[0];for(W=0;W0)B.push(F%$),F=F/$|0}for(W=0;Y[W]===0&&W=0;--W)z+=H[B[W]]}if(K){var P=new RegExp(".{1,"+K+"}","g");z=z.match(P).join(`\r +`)}return z},Z.decode=function(Y,H){if(typeof Y!=="string")throw new TypeError('"input" must be a string.');if(typeof H!=="string")throw new TypeError('"alphabet" must be a string.');var K=J[H];if(!K){K=J[H]=[];for(var z=0;z>=8;while(F>0)q.push(F&255),F>>=8}for(var P=0;Y[P]===$&&P0)$.push(B%z),B=B/z|0}var D="";for(K=0;Y.at(K)===0&&K=0;--K)D+=H[$[K]];return D}}}),d0=W1({"node_modules/node-forge/lib/util.js"(Q,X){var Z=y0(),J=Ao(),G=X.exports=Z.util=Z.util||{};(function(){if(typeof process!=="undefined"&&process.nextTick){if(G.nextTick=process.nextTick,typeof setImmediate==="function")G.setImmediate=setImmediate;else G.setImmediate=G.nextTick;return}if(typeof setImmediate==="function"){G.setImmediate=function(){return setImmediate.apply(void 0,arguments)},G.nextTick=function(T){return setImmediate(T)};return}if(G.setImmediate=function(T){setTimeout(T,0)},typeof window!=="undefined"&&typeof window.postMessage==="function"){let T=function(S){if(S.source===window&&S.data===M){S.stopPropagation();var v=I.slice();I.length=0,v.forEach(function(h){h()})}};var V=T,M="forge.setImmediate",I=[];G.setImmediate=function(S){if(I.push(S),I.length===1)window.postMessage(M,"*")},window.addEventListener("message",T,!0)}if(typeof MutationObserver!=="undefined"){var E=Date.now(),w=!0,A=document.createElement("div"),I=[];new MutationObserver(function(){var S=I.slice();I.length=0,S.forEach(function(v){v()})}).observe(A,{attributes:!0});var R=G.setImmediate;G.setImmediate=function(S){if(Date.now()-E>15)E=Date.now(),R(S);else if(I.push(S),I.length===1)A.setAttribute("a",w=!w)}}G.nextTick=G.setImmediate})(),G.isNodejs=typeof process!=="undefined"&&process.versions&&process.versions.node,G.globalScope=function(){if(G.isNodejs)return global;return typeof self==="undefined"?window:self}(),G.isArray=Array.isArray||function(V){return Object.prototype.toString.call(V)==="[object Array]"},G.isArrayBuffer=function(V){return typeof ArrayBuffer!=="undefined"&&V instanceof ArrayBuffer},G.isArrayBufferView=function(V){return V&&G.isArrayBuffer(V.buffer)&&V.byteLength!==void 0};function Y(V){if(!(V===8||V===16||V===24||V===32))throw new Error("Only 8, 16, 24, or 32 bits supported: "+V)}G.ByteBuffer=H;function H(V){if(this.data="",this.read=0,typeof V==="string")this.data=V;else if(G.isArrayBuffer(V)||G.isArrayBufferView(V))if(typeof Buffer!=="undefined"&&V instanceof Buffer)this.data=V.toString("binary");else{var M=new Uint8Array(V);try{this.data=String.fromCharCode.apply(null,M)}catch(E){for(var I=0;IK)this.data.substr(0,1),this._constructedStringLength=0},G.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read},G.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0},G.ByteStringBuffer.prototype.putByte=function(V){return this.putBytes(String.fromCharCode(V))},G.ByteStringBuffer.prototype.fillWithByte=function(V,M){V=String.fromCharCode(V);var I=this.data;while(M>0){if(M&1)I+=V;if(M>>>=1,M>0)V+=V}return this.data=I,this._optimizeConstructedString(M),this},G.ByteStringBuffer.prototype.putBytes=function(V){return this.data+=V,this._optimizeConstructedString(V.length),this},G.ByteStringBuffer.prototype.putString=function(V){return this.putBytes(G.encodeUtf8(V))},G.ByteStringBuffer.prototype.putInt16=function(V){return this.putBytes(String.fromCharCode(V>>8&255)+String.fromCharCode(V&255))},G.ByteStringBuffer.prototype.putInt24=function(V){return this.putBytes(String.fromCharCode(V>>16&255)+String.fromCharCode(V>>8&255)+String.fromCharCode(V&255))},G.ByteStringBuffer.prototype.putInt32=function(V){return this.putBytes(String.fromCharCode(V>>24&255)+String.fromCharCode(V>>16&255)+String.fromCharCode(V>>8&255)+String.fromCharCode(V&255))},G.ByteStringBuffer.prototype.putInt16Le=function(V){return this.putBytes(String.fromCharCode(V&255)+String.fromCharCode(V>>8&255))},G.ByteStringBuffer.prototype.putInt24Le=function(V){return this.putBytes(String.fromCharCode(V&255)+String.fromCharCode(V>>8&255)+String.fromCharCode(V>>16&255))},G.ByteStringBuffer.prototype.putInt32Le=function(V){return this.putBytes(String.fromCharCode(V&255)+String.fromCharCode(V>>8&255)+String.fromCharCode(V>>16&255)+String.fromCharCode(V>>24&255))},G.ByteStringBuffer.prototype.putInt=function(V,M){Y(M);var I="";do M-=8,I+=String.fromCharCode(V>>M&255);while(M>0);return this.putBytes(I)},G.ByteStringBuffer.prototype.putSignedInt=function(V,M){if(V<0)V+=2<0);return M},G.ByteStringBuffer.prototype.getSignedInt=function(V){var M=this.getInt(V),I=2<=I)M-=I<<1;return M},G.ByteStringBuffer.prototype.getBytes=function(V){var M;if(V)V=Math.min(this.length(),V),M=this.data.slice(this.read,this.read+V),this.read+=V;else if(V===0)M="";else M=this.read===0?this.data:this.data.slice(this.read),this.clear();return M},G.ByteStringBuffer.prototype.bytes=function(V){return typeof V==="undefined"?this.data.slice(this.read):this.data.slice(this.read,this.read+V)},G.ByteStringBuffer.prototype.at=function(V){return this.data.charCodeAt(this.read+V)},G.ByteStringBuffer.prototype.setAt=function(V,M){return this.data=this.data.substr(0,this.read+V)+String.fromCharCode(M)+this.data.substr(this.read+V+1),this},G.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},G.ByteStringBuffer.prototype.copy=function(){var V=G.createBuffer(this.data);return V.read=this.read,V},G.ByteStringBuffer.prototype.compact=function(){if(this.read>0)this.data=this.data.slice(this.read),this.read=0;return this},G.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},G.ByteStringBuffer.prototype.truncate=function(V){var M=Math.max(0,this.length()-V);return this.data=this.data.substr(this.read,M),this.read=0,this},G.ByteStringBuffer.prototype.toHex=function(){var V="";for(var M=this.read;M=V)return this;M=Math.max(M||this.growSize,V);var I=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),E=new Uint8Array(this.length()+M);return E.set(I),this.data=new DataView(E.buffer),this},G.DataBuffer.prototype.putByte=function(V){return this.accommodate(1),this.data.setUint8(this.write++,V),this},G.DataBuffer.prototype.fillWithByte=function(V,M){this.accommodate(M);for(var I=0;I>8&65535),this.data.setInt8(this.write,V>>16&255),this.write+=3,this},G.DataBuffer.prototype.putInt32=function(V){return this.accommodate(4),this.data.setInt32(this.write,V),this.write+=4,this},G.DataBuffer.prototype.putInt16Le=function(V){return this.accommodate(2),this.data.setInt16(this.write,V,!0),this.write+=2,this},G.DataBuffer.prototype.putInt24Le=function(V){return this.accommodate(3),this.data.setInt8(this.write,V>>16&255),this.data.setInt16(this.write,V>>8&65535,!0),this.write+=3,this},G.DataBuffer.prototype.putInt32Le=function(V){return this.accommodate(4),this.data.setInt32(this.write,V,!0),this.write+=4,this},G.DataBuffer.prototype.putInt=function(V,M){Y(M),this.accommodate(M/8);do M-=8,this.data.setInt8(this.write++,V>>M&255);while(M>0);return this},G.DataBuffer.prototype.putSignedInt=function(V,M){if(Y(M),this.accommodate(M/8),V<0)V+=2<0);return M},G.DataBuffer.prototype.getSignedInt=function(V){var M=this.getInt(V),I=2<=I)M-=I<<1;return M},G.DataBuffer.prototype.getBytes=function(V){var M;if(V)V=Math.min(this.length(),V),M=this.data.slice(this.read,this.read+V),this.read+=V;else if(V===0)M="";else M=this.read===0?this.data:this.data.slice(this.read),this.clear();return M},G.DataBuffer.prototype.bytes=function(V){return typeof V==="undefined"?this.data.slice(this.read):this.data.slice(this.read,this.read+V)},G.DataBuffer.prototype.at=function(V){return this.data.getUint8(this.read+V)},G.DataBuffer.prototype.setAt=function(V,M){return this.data.setUint8(V,M),this},G.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},G.DataBuffer.prototype.copy=function(){return new G.DataBuffer(this)},G.DataBuffer.prototype.compact=function(){if(this.read>0){var V=new Uint8Array(this.data.buffer,this.read),M=new Uint8Array(V.byteLength);M.set(V),this.data=new DataView(M),this.write-=this.read,this.read=0}return this},G.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},G.DataBuffer.prototype.truncate=function(V){return this.write=Math.max(0,this.length()-V),this.read=Math.min(this.read,this.write),this},G.DataBuffer.prototype.toHex=function(){var V="";for(var M=this.read;M0){if(M&1)I+=V;if(M>>>=1,M>0)V+=V}return I},G.xorBytes=function(V,M,I){var E="",w="",A="",R=0,T=0;for(;I>0;--I,++R){if(w=V.charCodeAt(R)^M.charCodeAt(R),T>=10)E+=A,A="",T=0;A+=String.fromCharCode(w),++T}return E+=A,E},G.hexToBytes=function(V){var M="",I=0;if(V.length&!0)I=1,M+=String.fromCharCode(parseInt(V[0],16));for(;I>24&255)+String.fromCharCode(V>>16&255)+String.fromCharCode(V>>8&255)+String.fromCharCode(V&255)};var W="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",$=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],q="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";G.encode64=function(V,M){var I="",E="",w,A,R,T=0;while(T>2),I+=W.charAt((w&3)<<4|A>>4),isNaN(A))I+="==";else I+=W.charAt((A&15)<<2|R>>6),I+=isNaN(R)?"=":W.charAt(R&63);if(M&&I.length>M)E+=I.substr(0,M)+`\r +`,I=I.substr(M)}return E+=I,E},G.decode64=function(V){V=V.replace(/[^A-Za-z0-9\+\/\=]/g,"");var M="",I,E,w,A,R=0;while(R>4),w!==64){if(M+=String.fromCharCode((E&15)<<4|w>>2),A!==64)M+=String.fromCharCode((w&3)<<6|A)}return M},G.encodeUtf8=function(V){return unescape(encodeURIComponent(V))},G.decodeUtf8=function(V){return decodeURIComponent(escape(V))},G.binary={raw:{},hex:{},base64:{},base58:{},baseN:{encode:J.encode,decode:J.decode}},G.binary.raw.encode=function(V){return String.fromCharCode.apply(null,V)},G.binary.raw.decode=function(V,M,I){var E=M;if(!E)E=new Uint8Array(V.length);I=I||0;var w=I;for(var A=0;A>2),I+=W.charAt((w&3)<<4|A>>4),isNaN(A))I+="==";else I+=W.charAt((A&15)<<2|R>>6),I+=isNaN(R)?"=":W.charAt(R&63);if(M&&I.length>M)E+=I.substr(0,M)+`\r +`,I=I.substr(M)}return E+=I,E},G.binary.base64.decode=function(V,M,I){var E=M;if(!E)E=new Uint8Array(Math.ceil(V.length/4)*3);V=V.replace(/[^A-Za-z0-9\+\/\=]/g,""),I=I||0;var w,A,R,T,S=0,v=I;while(S>4,R!==64){if(E[v++]=(A&15)<<4|R>>2,T!==64)E[v++]=(R&3)<<6|T}return M?v-I:E.subarray(0,v)},G.binary.base58.encode=function(V,M){return G.binary.baseN.encode(V,q,M)},G.binary.base58.decode=function(V,M){return G.binary.baseN.decode(V,q,M)},G.text={utf8:{},utf16:{}},G.text.utf8.encode=function(V,M,I){V=G.encodeUtf8(V);var E=M;if(!E)E=new Uint8Array(V.length);I=I||0;var w=I;for(var A=0;A0)A.push(E);R=M.lastIndex;var T=I[0][1];switch(T){case"s":case"o":if(w");break;case"%":A.push("%");break;default:A.push("<%"+T+"?>")}}return A.push(V.substring(R)),A.join("")},G.formatNumber=function(V,M,I,E){var w=V,A=isNaN(M=Math.abs(M))?2:M,R=I===void 0?",":I,T=E===void 0?".":E,S=w<0?"-":"",v=parseInt(w=Math.abs(+w||0).toFixed(A),10)+"",h=v.length>3?v.length%3:0;return S+(h?v.substr(0,h)+T:"")+v.substr(h).replace(/(\d{3})(?=\d)/g,"$1"+T)+(A?R+Math.abs(w-v).toFixed(A).slice(2):"")},G.formatSize=function(V){if(V>=1073741824)V=G.formatNumber(V/1073741824,2,".","")+" GiB";else if(V>=1048576)V=G.formatNumber(V/1048576,2,".","")+" MiB";else if(V>=1024)V=G.formatNumber(V/1024,0)+" KiB";else V=G.formatNumber(V,0)+" bytes";return V},G.bytesFromIP=function(V){if(V.indexOf(".")!==-1)return G.bytesFromIPv4(V);if(V.indexOf(":")!==-1)return G.bytesFromIPv6(V);return null},G.bytesFromIPv4=function(V){if(V=V.split("."),V.length!==4)return null;var M=G.createBuffer();for(var I=0;II[E].end-I[E].start)E=I.length-1}M.push(A)}if(I.length>0){var S=I[E];if(S.end-S.start>0){if(M.splice(S.start,S.end-S.start+1,""),S.start===0)M.unshift("");if(S.end===7)M.push("")}}return M.join(":")},G.estimateCores=function(V,M){if(typeof V==="function")M=V,V={};if(V=V||{},"cores"in G&&!V.update)return M(null,G.cores);if(typeof navigator!=="undefined"&&"hardwareConcurrency"in navigator&&navigator.hardwareConcurrency>0)return G.cores=navigator.hardwareConcurrency,M(null,G.cores);if(typeof Worker==="undefined")return G.cores=1,M(null,G.cores);if(typeof Blob==="undefined")return G.cores=2,M(null,G.cores);var I=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(R){var T=Date.now(),S=T+4;while(Date.now()n.st&&h.sth.st&&n.st0))return!0;for(var $=0;$0))return!0;for(var $=0;$0)return!1;var W=K.length(),$=K.at(W-1);if($>this.blockSize<<2)return!1;return K.truncate($),!0},J.cbc=function(K){K=K||{},this.name="CBC",this.cipher=K.cipher,this.blockSize=K.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},J.cbc.prototype.start=function(K){if(K.iv===null){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else if(!("iv"in K))throw new Error("Invalid IV parameter.");else this._iv=G(K.iv,this.blockSize),this._prev=this._iv.slice(0)},J.cbc.prototype.encrypt=function(K,z,W){if(K.length()0))return!0;for(var $=0;$0))return!0;for(var $=0;$0)return!1;var W=K.length(),$=K.at(W-1);if($>this.blockSize<<2)return!1;return K.truncate($),!0},J.cfb=function(K){K=K||{},this.name="CFB",this.cipher=K.cipher,this.blockSize=K.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=Z.util.createBuffer(),this._partialBytes=0},J.cfb.prototype.start=function(K){if(!("iv"in K))throw new Error("Invalid IV parameter.");this._iv=G(K.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},J.cfb.prototype.encrypt=function(K,z,W){var $=K.length();if($===0)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),this._partialBytes===0&&$>=this.blockSize){for(var q=0;q0)B=this.blockSize-B;this._partialOutput.clear();for(var q=0;q0)K.read-=this.blockSize;else for(var q=0;q0)this._partialOutput.getBytes(this._partialBytes);if(B>0&&!W)return z.putBytes(this._partialOutput.getBytes(B-this._partialBytes)),this._partialBytes=B,!0;z.putBytes(this._partialOutput.getBytes($-this._partialBytes)),this._partialBytes=0},J.cfb.prototype.decrypt=function(K,z,W){var $=K.length();if($===0)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),this._partialBytes===0&&$>=this.blockSize){for(var q=0;q0)B=this.blockSize-B;this._partialOutput.clear();for(var q=0;q0)K.read-=this.blockSize;else for(var q=0;q0)this._partialOutput.getBytes(this._partialBytes);if(B>0&&!W)return z.putBytes(this._partialOutput.getBytes(B-this._partialBytes)),this._partialBytes=B,!0;z.putBytes(this._partialOutput.getBytes($-this._partialBytes)),this._partialBytes=0},J.ofb=function(K){K=K||{},this.name="OFB",this.cipher=K.cipher,this.blockSize=K.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=Z.util.createBuffer(),this._partialBytes=0},J.ofb.prototype.start=function(K){if(!("iv"in K))throw new Error("Invalid IV parameter.");this._iv=G(K.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},J.ofb.prototype.encrypt=function(K,z,W){var $=K.length();if(K.length()===0)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),this._partialBytes===0&&$>=this.blockSize){for(var q=0;q0)B=this.blockSize-B;this._partialOutput.clear();for(var q=0;q0)K.read-=this.blockSize;else for(var q=0;q0)this._partialOutput.getBytes(this._partialBytes);if(B>0&&!W)return z.putBytes(this._partialOutput.getBytes(B-this._partialBytes)),this._partialBytes=B,!0;z.putBytes(this._partialOutput.getBytes($-this._partialBytes)),this._partialBytes=0},J.ofb.prototype.decrypt=J.ofb.prototype.encrypt,J.ctr=function(K){K=K||{},this.name="CTR",this.cipher=K.cipher,this.blockSize=K.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=Z.util.createBuffer(),this._partialBytes=0},J.ctr.prototype.start=function(K){if(!("iv"in K))throw new Error("Invalid IV parameter.");this._iv=G(K.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},J.ctr.prototype.encrypt=function(K,z,W){var $=K.length();if($===0)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),this._partialBytes===0&&$>=this.blockSize)for(var q=0;q0)B=this.blockSize-B;this._partialOutput.clear();for(var q=0;q0)K.read-=this.blockSize;if(this._partialBytes>0)this._partialOutput.getBytes(this._partialBytes);if(B>0&&!W)return z.putBytes(this._partialOutput.getBytes(B-this._partialBytes)),this._partialBytes=B,!0;z.putBytes(this._partialOutput.getBytes($-this._partialBytes)),this._partialBytes=0}Y(this._inBlock)},J.ctr.prototype.decrypt=J.ctr.prototype.encrypt,J.gcm=function(K){K=K||{},this.name="GCM",this.cipher=K.cipher,this.blockSize=K.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=Z.util.createBuffer(),this._partialBytes=0,this._R=3774873600},J.gcm.prototype.start=function(K){if(!("iv"in K))throw new Error("Invalid IV parameter.");var z=Z.util.createBuffer(K.iv);this._cipherLength=0;var W;if("additionalData"in K)W=Z.util.createBuffer(K.additionalData);else W=Z.util.createBuffer();if("tagLength"in K)this._tagLength=K.tagLength;else this._tagLength=128;if(this._tag=null,K.decrypt){if(this._tag=Z.util.createBuffer(K.tag).getBytes(),this._tag.length!==this._tagLength/8)throw new Error("Authentication tag does not match tag length.")}this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var $=z.length();if($===12)this._j0=[z.getInt32(),z.getInt32(),z.getInt32(),1];else{this._j0=[0,0,0,0];while(z.length()>0)this._j0=this.ghash(this._hashSubkey,this._j0,[z.getInt32(),z.getInt32(),z.getInt32(),z.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(H($*8)))}this._inBlock=this._j0.slice(0),Y(this._inBlock),this._partialBytes=0,W=Z.util.createBuffer(W),this._aDataLength=H(W.length()*8);var q=W.length()%this.blockSize;if(q)W.fillWithByte(0,this.blockSize-q);this._s=[0,0,0,0];while(W.length()>0)this._s=this.ghash(this._hashSubkey,this._s,[W.getInt32(),W.getInt32(),W.getInt32(),W.getInt32()])},J.gcm.prototype.encrypt=function(K,z,W){var $=K.length();if($===0)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),this._partialBytes===0&&$>=this.blockSize){for(var q=0;q0)B=this.blockSize-B;this._partialOutput.clear();for(var q=0;q0)this._partialOutput.getBytes(this._partialBytes);if(B>0&&!W)return K.read-=this.blockSize,z.putBytes(this._partialOutput.getBytes(B-this._partialBytes)),this._partialBytes=B,!0;z.putBytes(this._partialOutput.getBytes($-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),Y(this._inBlock)},J.gcm.prototype.decrypt=function(K,z,W){var $=K.length();if($0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),Y(this._inBlock),this._hashBlock[0]=K.getInt32(),this._hashBlock[1]=K.getInt32(),this._hashBlock[2]=K.getInt32(),this._hashBlock[3]=K.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var q=0;q0;--$)z[$]=K[$]>>>1|(K[$-1]&1)<<31;if(z[0]=K[0]>>>1,W)z[0]^=this._R},J.gcm.prototype.tableMultiply=function(K){var z=[0,0,0,0];for(var W=0;W<32;++W){var $=W/8|0,q=K[$]>>>(7-W%8)*4&15,B=this._m[W][q];z[0]^=B[0],z[1]^=B[1],z[2]^=B[2],z[3]^=B[3]}return z},J.gcm.prototype.ghash=function(K,z,W){return z[0]^=W[0],z[1]^=W[1],z[2]^=W[2],z[3]^=W[3],this.tableMultiply(z)},J.gcm.prototype.generateHashTable=function(K,z){var W=8/z,$=4*W,q=16*W,B=new Array(q);for(var D=0;D>>1,q=new Array(W);q[$]=K.slice(0);var B=$>>>1;while(B>0)this.pow(q[2*B],q[B]=[]),B>>=1;B=2;while(B<$){for(var D=1;D4){var W=K;K=Z.util.createBuffer();for(var $=0;$>>2;for(var L=0;L>8^E&255^99,H[C]=E,K[E]=C,w=P[E],V=P[C],M=P[V],I=P[M],A=w<<24^E<<16^E<<8^(E^w),R=(V^M^I)<<24^(C^I)<<16^(C^M^I)<<8^(C^V^I);for(var T=0;T<4;++T)W[T][C]=A,$[T][E]=R,A=A<<24|A>>>8,R=R<<24|R>>>8;if(C===0)C=L=1;else C=V^P[P[P[V^I]]],L^=P[P[L]]}}function B(P,N){var C=P.slice(0),L,V=1,M=C.length,I=M+6+1,E=Y*I;for(var w=M;w>>16&255]<<24^H[L>>>8&255]<<16^H[L&255]<<8^H[L>>>24]^z[V]<<24,V++;else if(M>6&&w%M===4)L=H[L>>>24]<<24^H[L>>>16&255]<<16^H[L>>>8&255]<<8^H[L&255];C[w]=C[w-M]^L}if(N){var A,R=$[0],T=$[1],S=$[2],v=$[3],h=C.slice(0);E=C.length;for(var w=0,x=E-Y;w>>24]]^T[H[A>>>16&255]]^S[H[A>>>8&255]]^v[H[A&255]];C=h}return C}function D(P,N,C,L){var V=P.length/4-1,M,I,E,w,A;if(L)M=$[0],I=$[1],E=$[2],w=$[3],A=K;else M=W[0],I=W[1],E=W[2],w=W[3],A=H;var R,T,S,v,h,x,p;R=N[0]^P[0],T=N[L?3:1]^P[1],S=N[2]^P[2],v=N[L?1:3]^P[3];var n=3;for(var t=1;t>>24]^I[T>>>16&255]^E[S>>>8&255]^w[v&255]^P[++n],x=M[T>>>24]^I[S>>>16&255]^E[v>>>8&255]^w[R&255]^P[++n],p=M[S>>>24]^I[v>>>16&255]^E[R>>>8&255]^w[T&255]^P[++n],v=M[v>>>24]^I[R>>>16&255]^E[T>>>8&255]^w[S&255]^P[++n],R=h,T=x,S=p;C[0]=A[R>>>24]<<24^A[T>>>16&255]<<16^A[S>>>8&255]<<8^A[v&255]^P[++n],C[L?3:1]=A[T>>>24]<<24^A[S>>>16&255]<<16^A[v>>>8&255]<<8^A[R&255]^P[++n],C[2]=A[S>>>24]<<24^A[v>>>16&255]<<16^A[R>>>8&255]<<8^A[T&255]^P[++n],C[L?1:3]=A[v>>>24]<<24^A[R>>>16&255]<<16^A[T>>>8&255]<<8^A[S&255]^P[++n]}function F(P){P=P||{};var N=(P.mode||"CBC").toUpperCase(),C="AES-"+N,L;if(P.decrypt)L=Z.cipher.createDecipher(C,P.key);else L=Z.cipher.createCipher(C,P.key);var V=L.start;return L.start=function(M,I){var E=null;if(I instanceof Z.util.ByteBuffer)E=I,I={};I=I||{},I.output=E,I.iv=M,V.call(L,I)},L}}}),TZ=W1({"node_modules/node-forge/lib/oids.js"(Q,X){var Z=y0();Z.pki=Z.pki||{};var J=X.exports=Z.pki.oids=Z.oids=Z.oids||{};function G(H,K){J[H]=K,J[K]=H}function Y(H,K){J[H]=K}G("1.2.840.113549.1.1.1","rsaEncryption"),G("1.2.840.113549.1.1.4","md5WithRSAEncryption"),G("1.2.840.113549.1.1.5","sha1WithRSAEncryption"),G("1.2.840.113549.1.1.7","RSAES-OAEP"),G("1.2.840.113549.1.1.8","mgf1"),G("1.2.840.113549.1.1.9","pSpecified"),G("1.2.840.113549.1.1.10","RSASSA-PSS"),G("1.2.840.113549.1.1.11","sha256WithRSAEncryption"),G("1.2.840.113549.1.1.12","sha384WithRSAEncryption"),G("1.2.840.113549.1.1.13","sha512WithRSAEncryption"),G("1.3.101.112","EdDSA25519"),G("1.2.840.10040.4.3","dsa-with-sha1"),G("1.3.14.3.2.7","desCBC"),G("1.3.14.3.2.26","sha1"),G("1.3.14.3.2.29","sha1WithRSASignature"),G("2.16.840.1.101.3.4.2.1","sha256"),G("2.16.840.1.101.3.4.2.2","sha384"),G("2.16.840.1.101.3.4.2.3","sha512"),G("2.16.840.1.101.3.4.2.4","sha224"),G("2.16.840.1.101.3.4.2.5","sha512-224"),G("2.16.840.1.101.3.4.2.6","sha512-256"),G("1.2.840.113549.2.2","md2"),G("1.2.840.113549.2.5","md5"),G("1.2.840.113549.1.7.1","data"),G("1.2.840.113549.1.7.2","signedData"),G("1.2.840.113549.1.7.3","envelopedData"),G("1.2.840.113549.1.7.4","signedAndEnvelopedData"),G("1.2.840.113549.1.7.5","digestedData"),G("1.2.840.113549.1.7.6","encryptedData"),G("1.2.840.113549.1.9.1","emailAddress"),G("1.2.840.113549.1.9.2","unstructuredName"),G("1.2.840.113549.1.9.3","contentType"),G("1.2.840.113549.1.9.4","messageDigest"),G("1.2.840.113549.1.9.5","signingTime"),G("1.2.840.113549.1.9.6","counterSignature"),G("1.2.840.113549.1.9.7","challengePassword"),G("1.2.840.113549.1.9.8","unstructuredAddress"),G("1.2.840.113549.1.9.14","extensionRequest"),G("1.2.840.113549.1.9.20","friendlyName"),G("1.2.840.113549.1.9.21","localKeyId"),G("1.2.840.113549.1.9.22.1","x509Certificate"),G("1.2.840.113549.1.12.10.1.1","keyBag"),G("1.2.840.113549.1.12.10.1.2","pkcs8ShroudedKeyBag"),G("1.2.840.113549.1.12.10.1.3","certBag"),G("1.2.840.113549.1.12.10.1.4","crlBag"),G("1.2.840.113549.1.12.10.1.5","secretBag"),G("1.2.840.113549.1.12.10.1.6","safeContentsBag"),G("1.2.840.113549.1.5.13","pkcs5PBES2"),G("1.2.840.113549.1.5.12","pkcs5PBKDF2"),G("1.2.840.113549.1.12.1.1","pbeWithSHAAnd128BitRC4"),G("1.2.840.113549.1.12.1.2","pbeWithSHAAnd40BitRC4"),G("1.2.840.113549.1.12.1.3","pbeWithSHAAnd3-KeyTripleDES-CBC"),G("1.2.840.113549.1.12.1.4","pbeWithSHAAnd2-KeyTripleDES-CBC"),G("1.2.840.113549.1.12.1.5","pbeWithSHAAnd128BitRC2-CBC"),G("1.2.840.113549.1.12.1.6","pbewithSHAAnd40BitRC2-CBC"),G("1.2.840.113549.2.7","hmacWithSHA1"),G("1.2.840.113549.2.8","hmacWithSHA224"),G("1.2.840.113549.2.9","hmacWithSHA256"),G("1.2.840.113549.2.10","hmacWithSHA384"),G("1.2.840.113549.2.11","hmacWithSHA512"),G("1.2.840.113549.3.7","des-EDE3-CBC"),G("2.16.840.1.101.3.4.1.2","aes128-CBC"),G("2.16.840.1.101.3.4.1.22","aes192-CBC"),G("2.16.840.1.101.3.4.1.42","aes256-CBC"),G("2.5.4.3","commonName"),G("2.5.4.4","surname"),G("2.5.4.5","serialNumber"),G("2.5.4.6","countryName"),G("2.5.4.7","localityName"),G("2.5.4.8","stateOrProvinceName"),G("2.5.4.9","streetAddress"),G("2.5.4.10","organizationName"),G("2.5.4.11","organizationalUnitName"),G("2.5.4.12","title"),G("2.5.4.13","description"),G("2.5.4.15","businessCategory"),G("2.5.4.17","postalCode"),G("2.5.4.42","givenName"),G("1.3.6.1.4.1.311.60.2.1.2","jurisdictionOfIncorporationStateOrProvinceName"),G("1.3.6.1.4.1.311.60.2.1.3","jurisdictionOfIncorporationCountryName"),G("2.16.840.1.113730.1.1","nsCertType"),G("2.16.840.1.113730.1.13","nsComment"),Y("2.5.29.1","authorityKeyIdentifier"),Y("2.5.29.2","keyAttributes"),Y("2.5.29.3","certificatePolicies"),Y("2.5.29.4","keyUsageRestriction"),Y("2.5.29.5","policyMapping"),Y("2.5.29.6","subtreesConstraint"),Y("2.5.29.7","subjectAltName"),Y("2.5.29.8","issuerAltName"),Y("2.5.29.9","subjectDirectoryAttributes"),Y("2.5.29.10","basicConstraints"),Y("2.5.29.11","nameConstraints"),Y("2.5.29.12","policyConstraints"),Y("2.5.29.13","basicConstraints"),G("2.5.29.14","subjectKeyIdentifier"),G("2.5.29.15","keyUsage"),Y("2.5.29.16","privateKeyUsagePeriod"),G("2.5.29.17","subjectAltName"),G("2.5.29.18","issuerAltName"),G("2.5.29.19","basicConstraints"),Y("2.5.29.20","cRLNumber"),Y("2.5.29.21","cRLReason"),Y("2.5.29.22","expirationDate"),Y("2.5.29.23","instructionCode"),Y("2.5.29.24","invalidityDate"),Y("2.5.29.25","cRLDistributionPoints"),Y("2.5.29.26","issuingDistributionPoint"),Y("2.5.29.27","deltaCRLIndicator"),Y("2.5.29.28","issuingDistributionPoint"),Y("2.5.29.29","certificateIssuer"),Y("2.5.29.30","nameConstraints"),G("2.5.29.31","cRLDistributionPoints"),G("2.5.29.32","certificatePolicies"),Y("2.5.29.33","policyMappings"),Y("2.5.29.34","policyConstraints"),G("2.5.29.35","authorityKeyIdentifier"),Y("2.5.29.36","policyConstraints"),G("2.5.29.37","extKeyUsage"),Y("2.5.29.46","freshestCRL"),Y("2.5.29.54","inhibitAnyPolicy"),G("1.3.6.1.4.1.11129.2.4.2","timestampList"),G("1.3.6.1.5.5.7.1.1","authorityInfoAccess"),G("1.3.6.1.5.5.7.3.1","serverAuth"),G("1.3.6.1.5.5.7.3.2","clientAuth"),G("1.3.6.1.5.5.7.3.3","codeSigning"),G("1.3.6.1.5.5.7.3.4","emailProtection"),G("1.3.6.1.5.5.7.3.8","timeStamping")}}),WQ=W1({"node_modules/node-forge/lib/asn1.js"(Q,X){var Z=y0();d0(),TZ();var J=X.exports=Z.asn1=Z.asn1||{};J.Class={UNIVERSAL:0,APPLICATION:64,CONTEXT_SPECIFIC:128,PRIVATE:192},J.Type={NONE:0,BOOLEAN:1,INTEGER:2,BITSTRING:3,OCTETSTRING:4,NULL:5,OID:6,ODESC:7,EXTERNAL:8,REAL:9,ENUMERATED:10,EMBEDDED:11,UTF8:12,ROID:13,SEQUENCE:16,SET:17,PRINTABLESTRING:19,IA5STRING:22,UTCTIME:23,GENERALIZEDTIME:24,BMPSTRING:30},J.create=function(z,W,$,q,B){if(Z.util.isArray(q)){var D=[];for(var F=0;FW){var q=new Error("Too few bytes to parse DER.");throw q.available=z.length(),q.remaining=W,q.requested=$,q}}var Y=function(z,W){var $=z.getByte();if(W--,$===128)return;var q,B=$&128;if(!B)q=$;else{var D=$&127;G(z,W,D),q=z.getInt(D<<3)}if(q<0)throw new Error("Negative length: "+q);return q};J.fromDer=function(z,W){if(W===void 0)W={strict:!0,parseAllBytes:!0,decodeBitStrings:!0};if(typeof W==="boolean")W={strict:W,parseAllBytes:!0,decodeBitStrings:!0};if(!("strict"in W))W.strict=!0;if(!("parseAllBytes"in W))W.parseAllBytes=!0;if(!("decodeBitStrings"in W))W.decodeBitStrings=!0;if(typeof z==="string")z=Z.util.createBuffer(z);var $=z.length(),q=H(z,z.length(),0,W);if(W.parseAllBytes&&z.length()!==0){var B=new Error("Unparsed DER bytes remain after ASN.1 parsing.");throw B.byteCount=$,B.remaining=z.length(),B}return q};function H(z,W,$,q){var B;G(z,W,2);var D=z.getByte();W--;var F=D&192,P=D&31;B=z.length();var N=Y(z,W);if(W-=B-z.length(),N!==void 0&&N>W){if(q.strict){var C=new Error("Too few bytes to read ASN.1 value.");throw C.available=z.length(),C.remaining=W,C.requested=N,C}N=W}var L,V,M=(D&32)===32;if(M)if(L=[],N===void 0)for(;;){if(G(z,W,2),z.bytes(2)===String.fromCharCode(0,0)){z.getBytes(2),W-=2;break}B=z.length(),L.push(H(z,W,$+1,q)),W-=B-z.length()}else while(N>0)B=z.length(),L.push(H(z,N,$+1,q)),W-=B-z.length(),N-=B-z.length();if(L===void 0&&F===J.Class.UNIVERSAL&&P===J.Type.BITSTRING)V=z.bytes(N);if(L===void 0&&q.decodeBitStrings&&F===J.Class.UNIVERSAL&&P===J.Type.BITSTRING&&N>1){var I=z.read,E=W,w=0;if(P===J.Type.BITSTRING)G(z,W,1),w=z.getByte(),W--;if(w===0)try{B=z.length();var A={strict:!0,decodeBitStrings:!0},R=H(z,W,$+1,A),T=B-z.length();if(W-=T,P==J.Type.BITSTRING)T++;var S=R.tagClass;if(T===N&&(S===J.Class.UNIVERSAL||S===J.Class.CONTEXT_SPECIFIC))L=[R]}catch(h){}if(L===void 0)z.read=I,W=E}if(L===void 0){if(N===void 0){if(q.strict)throw new Error("Non-constructed ASN.1 object of indefinite length.");N=W}if(P===J.Type.BMPSTRING){L="";for(;N>0;N-=2)G(z,W,2),L+=String.fromCharCode(z.getInt16()),W-=2}else L=z.getBytes(N),W-=N}var v=V===void 0?null:{bitStringContents:V};return J.create(F,P,M,L,v)}J.toDer=function(z){var W=Z.util.createBuffer(),$=z.tagClass|z.type,q=Z.util.createBuffer(),B=!1;if("bitStringContents"in z){if(B=!0,z.original)B=J.equals(z,z.original)}if(B)q.putBytes(z.bitStringContents);else if(z.composed){if(z.constructed)$|=32;else q.putByte(0);for(var D=0;D1&&(z.value.charCodeAt(0)===0&&(z.value.charCodeAt(1)&128)===0||z.value.charCodeAt(0)===255&&(z.value.charCodeAt(1)&128)===128))q.putBytes(z.value.substr(1));else q.putBytes(z.value);if(W.putByte($),q.length()<=127)W.putByte(q.length()&127);else{var F=q.length(),P="";do P+=String.fromCharCode(F&255),F=F>>>8;while(F>0);W.putByte(P.length|128);for(var D=P.length-1;D>=0;--D)W.putByte(P.charCodeAt(D))}return W.putBuffer(q),W},J.oidToDer=function(z){var W=z.split("."),$=Z.util.createBuffer();$.putByte(40*parseInt(W[0],10)+parseInt(W[1],10));var q,B,D,F;for(var P=2;P>>7,!q)F|=128;B.push(F),q=!1}while(D>0);for(var N=B.length-1;N>=0;--N)$.putByte(B[N])}return $},J.derToOid=function(z){var W;if(typeof z==="string")z=Z.util.createBuffer(z);var $=z.getByte();W=Math.floor($/40)+"."+$%40;var q=0;while(z.length()>0)if($=z.getByte(),q=q<<7,$&128)q+=$&127;else W+="."+(q+$),q=0;return W},J.utcTimeToDate=function(z){var W=new Date,$=parseInt(z.substr(0,2),10);$=$>=50?1900+$:2000+$;var q=parseInt(z.substr(2,2),10)-1,B=parseInt(z.substr(4,2),10),D=parseInt(z.substr(6,2),10),F=parseInt(z.substr(8,2),10),P=0;if(z.length>11){var N=z.charAt(10),C=10;if(N!=="+"&&N!=="-")P=parseInt(z.substr(10,2),10),C+=2}if(W.setUTCFullYear($,q,B),W.setUTCHours(D,F,P,0),C){if(N=z.charAt(C),N==="+"||N==="-"){var L=parseInt(z.substr(C+1,2),10),V=parseInt(z.substr(C+4,2),10),M=L*60+V;if(M*=60000,N==="+")W.setTime(+W-M);else W.setTime(+W+M)}}return W},J.generalizedTimeToDate=function(z){var W=new Date,$=parseInt(z.substr(0,4),10),q=parseInt(z.substr(4,2),10)-1,B=parseInt(z.substr(6,2),10),D=parseInt(z.substr(8,2),10),F=parseInt(z.substr(10,2),10),P=parseInt(z.substr(12,2),10),N=0,C=0,L=!1;if(z.charAt(z.length-1)==="Z")L=!0;var V=z.length-5,M=z.charAt(V);if(M==="+"||M==="-"){var I=parseInt(z.substr(V+1,2),10),E=parseInt(z.substr(V+4,2),10);if(C=I*60+E,C*=60000,M==="+")C*=-1;L=!0}if(z.charAt(14)===".")N=parseFloat(z.substr(14),10)*1000;if(L)W.setUTCFullYear($,q,B),W.setUTCHours(D,F,P,N),W.setTime(+W+C);else W.setFullYear($,q,B),W.setHours(D,F,P,N);return W},J.dateToUtcTime=function(z){if(typeof z==="string")return z;var W="",$=[];$.push((""+z.getUTCFullYear()).substr(2)),$.push(""+(z.getUTCMonth()+1)),$.push(""+z.getUTCDate()),$.push(""+z.getUTCHours()),$.push(""+z.getUTCMinutes()),$.push(""+z.getUTCSeconds());for(var q=0;q<$.length;++q){if($[q].length<2)W+="0";W+=$[q]}return W+="Z",W},J.dateToGeneralizedTime=function(z){if(typeof z==="string")return z;var W="",$=[];$.push(""+z.getUTCFullYear()),$.push(""+(z.getUTCMonth()+1)),$.push(""+z.getUTCDate()),$.push(""+z.getUTCHours()),$.push(""+z.getUTCMinutes()),$.push(""+z.getUTCSeconds());for(var q=0;q<$.length;++q){if($[q].length<2)W+="0";W+=$[q]}return W+="Z",W},J.integerToDer=function(z){var W=Z.util.createBuffer();if(z>=-128&&z<128)return W.putSignedInt(z,8);if(z>=-32768&&z<32768)return W.putSignedInt(z,16);if(z>=-8388608&&z<8388608)return W.putSignedInt(z,24);if(z>=-2147483648&&z<2147483648)return W.putSignedInt(z,32);var $=new Error("Integer too large; max is 32-bits.");throw $.integer=z,$},J.derToInteger=function(z){if(typeof z==="string")z=Z.util.createBuffer(z);var W=z.length()*8;if(W>32)throw new Error("Integer too large; max is 32-bits.");return z.getSignedInt(W)},J.validate=function(z,W,$,q){var B=!1;if((z.tagClass===W.tagClass||typeof W.tagClass==="undefined")&&(z.type===W.type||typeof W.type==="undefined")){if(z.constructed===W.constructed||typeof W.constructed==="undefined"){if(B=!0,W.value&&Z.util.isArray(W.value)){var D=0;for(var F=0;B&&F0)q+=` +`;var B="";for(var D=0;D1)q+="0x"+Z.util.bytesToHex(z.value.slice(1));else q+="(none)";if(z.value.length>0){var C=z.value.charCodeAt(0);if(C==1)q+=" (1 unused bit shown)";else if(C>1)q+=" ("+C+" unused bits shown)"}}else if(z.type===J.Type.OCTETSTRING){if(!K.test(z.value))q+="("+z.value+") ";q+="0x"+Z.util.bytesToHex(z.value)}else if(z.type===J.Type.UTF8)try{q+=Z.util.decodeUtf8(z.value)}catch(L){if(L.message==="URI malformed")q+="0x"+Z.util.bytesToHex(z.value)+" (malformed UTF8)";else throw L}else if(z.type===J.Type.PRINTABLESTRING||z.type===J.Type.IA5String)q+=z.value;else if(K.test(z.value))q+="0x"+Z.util.bytesToHex(z.value);else if(z.value.length===0)q+="[null]";else q+=z.value}return q}}}),xQ=W1({"node_modules/node-forge/lib/md.js"(Q,X){var Z=y0();X.exports=Z.md=Z.md||{},Z.md.algorithms=Z.md.algorithms||{}}}),kX=W1({"node_modules/node-forge/lib/hmac.js"(Q,X){var Z=y0();xQ(),d0();var J=X.exports=Z.hmac=Z.hmac||{};J.create=function(){var G=null,Y=null,H=null,K=null,z={};return z.start=function(W,$){if(W!==null)if(typeof W==="string")if(W=W.toLowerCase(),W in Z.md.algorithms)Y=Z.md.algorithms[W].create();else throw new Error('Unknown hash algorithm "'+W+'"');else Y=W;if($===null)$=G;else{if(typeof $==="string")$=Z.util.createBuffer($);else if(Z.util.isArray($)){var q=$;$=Z.util.createBuffer();for(var B=0;BY.blockLength)Y.start(),Y.update($.bytes()),$=Y.digest();H=Z.util.createBuffer(),K=Z.util.createBuffer(),D=$.length();for(var B=0;B>>0,C>>>0];for(var L=F.fullMessageLength.length-1;L>=0;--L)F.fullMessageLength[L]+=C[1],C[1]=C[0]+(F.fullMessageLength[L]/4294967296>>>0),F.fullMessageLength[L]=F.fullMessageLength[L]>>>0,C[0]=C[1]/4294967296>>>0;if(B.putBytes(P),$(q,D,B),B.read>2048||B.length()===0)B.compact();return F},F.digest=function(){var P=Z.util.createBuffer();P.putBytes(B.bytes());var N=F.fullMessageLength[F.fullMessageLength.length-1]+F.messageLengthSize,C=N&F.blockLength-1;P.putBytes(G.substr(0,F.blockLength-C));var L,V=0;for(var M=F.fullMessageLength.length-1;M>=0;--M)L=F.fullMessageLength[M]*8+V,V=L/4294967296>>>0,P.putInt32Le(L>>>0);var I={h0:q.h0,h1:q.h1,h2:q.h2,h3:q.h3};$(I,D,P);var E=Z.util.createBuffer();return E.putInt32Le(I.h0),E.putInt32Le(I.h1),E.putInt32Le(I.h2),E.putInt32Le(I.h3),E},F};var G=null,Y=null,H=null,K=null,z=!1;function W(){G=String.fromCharCode(128),G+=Z.util.fillString(String.fromCharCode(0),64),Y=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12,5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2,0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9],H=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],K=new Array(64);for(var q=0;q<64;++q)K[q]=Math.floor(Math.abs(Math.sin(q+1))*4294967296);z=!0}function $(q,B,D){var F,P,N,C,L,V,M,I,E=D.length();while(E>=64){P=q.h0,N=q.h1,C=q.h2,L=q.h3;for(I=0;I<16;++I)B[I]=D.getInt32Le(),V=L^N&(C^L),F=P+V+K[I]+B[I],M=H[I],P=L,L=C,C=N,N+=F<>>32-M;for(;I<32;++I)V=C^L&(N^C),F=P+V+K[I]+B[Y[I]],M=H[I],P=L,L=C,C=N,N+=F<>>32-M;for(;I<48;++I)V=N^C^L,F=P+V+K[I]+B[Y[I]],M=H[I],P=L,L=C,C=N,N+=F<>>32-M;for(;I<64;++I)V=C^(N|~L),F=P+V+K[I]+B[Y[I]],M=H[I],P=L,L=C,C=N,N+=F<>>32-M;q.h0=q.h0+P|0,q.h1=q.h1+N|0,q.h2=q.h2+C|0,q.h3=q.h3+L|0,E-=64}}}}),Y7=W1({"node_modules/node-forge/lib/pem.js"(Q,X){var Z=y0();d0();var J=X.exports=Z.pem=Z.pem||{};J.encode=function(H,K){K=K||{};var z="-----BEGIN "+H.type+`-----\r +`,W;if(H.procType)W={name:"Proc-Type",values:[String(H.procType.version),H.procType.type]},z+=G(W);if(H.contentDomain)W={name:"Content-Domain",values:[H.contentDomain]},z+=G(W);if(H.dekInfo){if(W={name:"DEK-Info",values:[H.dekInfo.algorithm]},H.dekInfo.parameters)W.values.push(H.dekInfo.parameters);z+=G(W)}if(H.headers)for(var $=0;$65&&B!==-1){var D=K[B];if(D===",")++B,K=K.substr(0,B)+`\r + `+K.substr(B);else K=K.substr(0,B)+`\r +`+D+K.substr(B+1);q=$-B-1,B=-1,++$}else if(K[$]===" "||K[$]==="\t"||K[$]===",")B=$;return K}function Y(H){return H.replace(/^\s+/,"")}}}),pq=W1({"node_modules/node-forge/lib/des.js"(Q,X){var Z=y0();D$(),AM(),d0(),X.exports=Z.des=Z.des||{},Z.des.startEncrypting=function(P,N,C,L){var V=F({key:P,output:C,decrypt:!1,mode:L||(N===null?"ECB":"CBC")});return V.start(N),V},Z.des.createEncryptionCipher=function(P,N){return F({key:P,output:null,decrypt:!1,mode:N})},Z.des.startDecrypting=function(P,N,C,L){var V=F({key:P,output:C,decrypt:!0,mode:L||(N===null?"ECB":"CBC")});return V.start(N),V},Z.des.createDecryptionCipher=function(P,N){return F({key:P,output:null,decrypt:!0,mode:N})},Z.des.Algorithm=function(P,N){var C=this;C.name=P,C.mode=new N({blockSize:8,cipher:{encrypt:function(L,V){return D(C._keys,L,V,!1)},decrypt:function(L,V){return D(C._keys,L,V,!0)}}}),C._init=!1},Z.des.Algorithm.prototype.initialize=function(P){if(this._init)return;var N=Z.util.createBuffer(P.key);if(this.name.indexOf("3DES")===0){if(N.length()!==24)throw new Error("Invalid Triple-DES key size: "+N.length()*8)}this._keys=B(N),this._init=!0},J("DES-ECB",Z.cipher.modes.ecb),J("DES-CBC",Z.cipher.modes.cbc),J("DES-CFB",Z.cipher.modes.cfb),J("DES-OFB",Z.cipher.modes.ofb),J("DES-CTR",Z.cipher.modes.ctr),J("3DES-ECB",Z.cipher.modes.ecb),J("3DES-CBC",Z.cipher.modes.cbc),J("3DES-CFB",Z.cipher.modes.cfb),J("3DES-OFB",Z.cipher.modes.ofb),J("3DES-CTR",Z.cipher.modes.ctr);function J(P,N){var C=function(){return new Z.des.Algorithm(P,N)};Z.cipher.registerAlgorithm(P,C)}var G=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],Y=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],H=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],K=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],z=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],W=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],$=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],q=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696];function B(P){var N=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],C=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],L=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],V=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],M=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],I=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],E=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],w=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],A=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],R=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],T=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],S=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],v=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],h=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],x=P.length()>8?3:1,p=[],n=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],t=0,Y1;for(var G1=0;G1>>4^C1)&252645135,C1^=Y1,V1^=Y1<<4,Y1=(C1>>>-16^V1)&65535,V1^=Y1,C1^=Y1<<-16,Y1=(V1>>>2^C1)&858993459,C1^=Y1,V1^=Y1<<2,Y1=(C1>>>-16^V1)&65535,V1^=Y1,C1^=Y1<<-16,Y1=(V1>>>1^C1)&1431655765,C1^=Y1,V1^=Y1<<1,Y1=(C1>>>8^V1)&16711935,V1^=Y1,C1^=Y1<<8,Y1=(V1>>>1^C1)&1431655765,C1^=Y1,V1^=Y1<<1,Y1=V1<<8|C1>>>20&240,V1=C1<<24|C1<<8&16711680|C1>>>8&65280|C1>>>24&240,C1=Y1;for(var N1=0;N1>>26,C1=C1<<2|C1>>>26;else V1=V1<<1|V1>>>27,C1=C1<<1|C1>>>27;V1&=-15,C1&=-15;var j1=N[V1>>>28]|C[V1>>>24&15]|L[V1>>>20&15]|V[V1>>>16&15]|M[V1>>>12&15]|I[V1>>>8&15]|E[V1>>>4&15],d1=w[C1>>>28]|A[C1>>>24&15]|R[C1>>>20&15]|T[C1>>>16&15]|S[C1>>>12&15]|v[C1>>>8&15]|h[C1>>>4&15];Y1=(d1>>>16^j1)&65535,p[t++]=j1^Y1,p[t++]=d1^Y1<<16}}return p}function D(P,N,C,L){var V=P.length===32?3:9,M;if(V===3)M=L?[30,-2,-2]:[0,32,2];else M=L?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var I,E=N[0],w=N[1];I=(E>>>4^w)&252645135,w^=I,E^=I<<4,I=(E>>>16^w)&65535,w^=I,E^=I<<16,I=(w>>>2^E)&858993459,E^=I,w^=I<<2,I=(w>>>8^E)&16711935,E^=I,w^=I<<8,I=(E>>>1^w)&1431655765,w^=I,E^=I<<1,E=E<<1|E>>>31,w=w<<1|w>>>31;for(var A=0;A>>4|w<<28)^P[S+1];I=E,E=w,w=I^(Y[v>>>24&63]|K[v>>>16&63]|W[v>>>8&63]|q[v&63]|G[h>>>24&63]|H[h>>>16&63]|z[h>>>8&63]|$[h&63])}I=E,E=w,w=I}E=E>>>1|E<<31,w=w>>>1|w<<31,I=(E>>>1^w)&1431655765,w^=I,E^=I<<1,I=(w>>>8^E)&16711935,E^=I,w^=I<<8,I=(w>>>2^E)&858993459,E^=I,w^=I<<2,I=(E>>>16^w)&65535,w^=I,E^=I<<16,I=(E>>>4^w)&252645135,w^=I,E^=I<<4,C[0]=E,C[1]=w}function F(P){P=P||{};var N=(P.mode||"CBC").toUpperCase(),C="DES-"+N,L;if(P.decrypt)L=Z.cipher.createDecipher(C,P.key);else L=Z.cipher.createCipher(C,P.key);var V=L.start;return L.start=function(M,I){var E=null;if(I instanceof Z.util.ByteBuffer)E=I,I={};I=I||{},I.output=E,I.iv=M,V.call(L,I)},L}}}),C$=W1({"node_modules/node-forge/lib/pbkdf2.js"(Q,X){var Z=y0();kX(),xQ(),d0();var J=Z.pkcs5=Z.pkcs5||{},G;if(Z.util.isNodejs&&!Z.options.usePureJavaScript)G=require("crypto");X.exports=Z.pbkdf2=J.pbkdf2=function(Y,H,K,z,W,$){if(typeof W==="function")$=W,W=null;if(Z.util.isNodejs&&!Z.options.usePureJavaScript&&G.pbkdf2&&(W===null||typeof W!=="object")&&(G.pbkdf2Sync.length>4||(!W||W==="sha1"))){if(typeof W!=="string")W="sha1";if(Y=Buffer.from(Y,"binary"),H=Buffer.from(H,"binary"),!$){if(G.pbkdf2Sync.length===4)return G.pbkdf2Sync(Y,H,K,z).toString("binary");return G.pbkdf2Sync(Y,H,K,z,W).toString("binary")}if(G.pbkdf2Sync.length===4)return G.pbkdf2(Y,H,K,z,function(A,R){if(A)return $(A);$(null,R.toString("binary"))});return G.pbkdf2(Y,H,K,z,W,function(A,R){if(A)return $(A);$(null,R.toString("binary"))})}if(typeof W==="undefined"||W===null)W="sha1";if(typeof W==="string"){if(!(W in Z.md.algorithms))throw new Error("Unknown hash algorithm: "+W);W=Z.md[W].create()}var q=W.digestLength;if(z>4294967295*q){var B=new Error("Derived key is too long.");if($)return $(B);throw B}var D=Math.ceil(z/q),F=z-(D-1)*q,P=Z.hmac.create();P.start(W,Y);var N="",C,L,V;if(!$){for(var M=1;M<=D;++M){P.start(null,null),P.update(H),P.update(Z.util.int32ToBytes(M)),C=V=P.digest().getBytes();for(var I=2;I<=K;++I)P.start(null,null),P.update(V),L=P.digest().getBytes(),C=Z.util.xorBytes(C,L,q),V=L;N+=MD)return $(null,N);P.start(null,null),P.update(H),P.update(Z.util.int32ToBytes(M)),C=V=P.digest().getBytes(),I=2,w()}function w(){if(I<=K)return P.start(null,null),P.update(V),L=P.digest().getBytes(),C=Z.util.xorBytes(C,L,q),V=L,++I,Z.util.setImmediate(w);N+=M>>0,P>>>0];for(var N=B.fullMessageLength.length-1;N>=0;--N)B.fullMessageLength[N]+=P[1],P[1]=P[0]+(B.fullMessageLength[N]/4294967296>>>0),B.fullMessageLength[N]=B.fullMessageLength[N]>>>0,P[0]=P[1]/4294967296>>>0;if($.putBytes(D),z(W,q,$),$.read>2048||$.length()===0)$.compact();return B},B.digest=function(){var D=Z.util.createBuffer();D.putBytes($.bytes());var F=B.fullMessageLength[B.fullMessageLength.length-1]+B.messageLengthSize,P=F&B.blockLength-1;D.putBytes(G.substr(0,B.blockLength-P));var N,C,L=B.fullMessageLength[0]*8;for(var V=0;V>>0,L+=C,D.putInt32(L>>>0),L=N>>>0;D.putInt32(L);var M={h0:W.h0,h1:W.h1,h2:W.h2,h3:W.h3,h4:W.h4,h5:W.h5,h6:W.h6,h7:W.h7};z(M,q,D);var I=Z.util.createBuffer();return I.putInt32(M.h0),I.putInt32(M.h1),I.putInt32(M.h2),I.putInt32(M.h3),I.putInt32(M.h4),I.putInt32(M.h5),I.putInt32(M.h6),I.putInt32(M.h7),I},B};var G=null,Y=!1,H=null;function K(){G=String.fromCharCode(128),G+=Z.util.fillString(String.fromCharCode(0),64),H=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Y=!0}function z(W,$,q){var B,D,F,P,N,C,L,V,M,I,E,w,A,R,T,S=q.length();while(S>=64){for(L=0;L<16;++L)$[L]=q.getInt32();for(;L<64;++L)B=$[L-2],B=(B>>>17|B<<15)^(B>>>19|B<<13)^B>>>10,D=$[L-15],D=(D>>>7|D<<25)^(D>>>18|D<<14)^D>>>3,$[L]=B+$[L-7]+D+$[L-16]|0;V=W.h0,M=W.h1,I=W.h2,E=W.h3,w=W.h4,A=W.h5,R=W.h6,T=W.h7;for(L=0;L<64;++L)P=(w>>>6|w<<26)^(w>>>11|w<<21)^(w>>>25|w<<7),N=R^w&(A^R),F=(V>>>2|V<<30)^(V>>>13|V<<19)^(V>>>22|V<<10),C=V&M|I&(V^M),B=T+P+N+H[L]+$[L],D=F+C,T=R,R=A,A=w,w=E+B>>>0,E=I,I=M,M=V,V=B+D>>>0;W.h0=W.h0+V|0,W.h1=W.h1+M|0,W.h2=W.h2+I|0,W.h3=W.h3+E|0,W.h4=W.h4+w|0,W.h5=W.h5+A|0,W.h6=W.h6+R|0,W.h7=W.h7+T|0,S-=64}}}}),wM=W1({"node_modules/node-forge/lib/prng.js"(Q,X){var Z=y0();d0();var J=null;if(Z.util.isNodejs&&!Z.options.usePureJavaScript&&!process.versions["node-webkit"])J=require("crypto");var G=X.exports=Z.prng=Z.prng||{};G.create=function(Y){var H={plugin:Y,key:null,seed:null,time:null,reseeds:0,generated:0,keyBytes:""},K=Y.md,z=new Array(32);for(var W=0;W<32;++W)z[W]=K.create();H.pools=z,H.pool=0,H.generate=function(F,P){if(!P)return H.generateSync(F);var N=H.plugin.cipher,C=H.plugin.increment,L=H.plugin.formatKey,V=H.plugin.formatSeed,M=Z.util.createBuffer();H.key=null,I();function I(E){if(E)return P(E);if(M.length()>=F)return P(null,M.getBytes(F));if(H.generated>1048575)H.key=null;if(H.key===null)return Z.util.nextTick(function(){$(I)});var w=N(H.key,H.seed);H.generated+=w.length,M.putBytes(w),H.key=L(N(H.key,C(H.seed))),H.seed=V(N(H.key,H.seed)),Z.util.setImmediate(I)}},H.generateSync=function(F){var P=H.plugin.cipher,N=H.plugin.increment,C=H.plugin.formatKey,L=H.plugin.formatSeed;H.key=null;var V=Z.util.createBuffer();while(V.length()1048575)H.key=null;if(H.key===null)q();var M=P(H.key,H.seed);H.generated+=M.length,V.putBytes(M),H.key=C(P(H.key,N(H.seed))),H.seed=L(P(H.key,H.seed))}return V.getBytes(F)};function $(F){if(H.pools[0].messageLength>=32)return B(),F();var P=32-H.pools[0].messageLength<<5;H.seedFile(P,function(N,C){if(N)return F(N);H.collect(C),B(),F()})}function q(){if(H.pools[0].messageLength>=32)return B();var F=32-H.pools[0].messageLength<<5;H.collect(H.seedFileSync(F)),B()}function B(){H.reseeds=H.reseeds===4294967295?0:H.reseeds+1;var F=H.plugin.md.create();F.update(H.keyBytes);var P=1;for(var N=0;N<32;++N){if(H.reseeds%P===0)F.update(H.pools[N].digest().getBytes()),H.pools[N].start();P=P<<1}H.keyBytes=F.digest().getBytes(),F.start(),F.update(H.keyBytes);var C=F.digest().getBytes();H.key=H.plugin.formatKey(H.keyBytes),H.seed=H.plugin.formatSeed(C),H.generated=0}function D(F){var P=null,N=Z.util.globalScope,C=N.crypto||N.msCrypto;if(C&&C.getRandomValues)P=function(T){return C.getRandomValues(T)};var L=Z.util.createBuffer();if(P)while(L.length()>16),w+=(E&32767)<<16,w+=E>>15,w=(w&2147483647)+(w>>31),R=w&4294967295;for(var I=0;I<3;++I)A=R>>>(I<<3),A^=Math.floor(Math.random()*256),L.putByte(A&255)}}return L.getBytes(F)}if(J)H.seedFile=function(F,P){J.randomBytes(F,function(N,C){if(N)return P(N);P(null,C.toString())})},H.seedFileSync=function(F){return J.randomBytes(F).toString()};else H.seedFile=function(F,P){try{P(null,D(F))}catch(N){P(N)}},H.seedFileSync=D;return H.collect=function(F){var P=F.length;for(var N=0;N>C&255);H.collect(N)},H.registerWorker=function(F){if(F===self)H.seedFile=function(N,C){function L(V){var M=V.data;if(M.forge&&M.forge.prng)self.removeEventListener("message",L),C(M.forge.prng.err,M.forge.prng.bytes)}self.addEventListener("message",L),self.postMessage({forge:{prng:{needed:N}}})};else{var P=function(N){var C=N.data;if(C.forge&&C.forge.prng)H.seedFile(C.forge.prng.needed,function(L,V){F.postMessage({forge:{prng:{err:L,bytes:V}}})})};F.addEventListener("message",P)}},H}}}),d9=W1({"node_modules/node-forge/lib/random.js"(Q,X){var Z=y0();NZ(),OM(),wM(),d0(),function(){if(Z.random&&Z.random.getBytes){X.exports=Z.random;return}(function(J){var G={},Y=new Array(4),H=Z.util.createBuffer();G.formatKey=function(F){var P=Z.util.createBuffer(F);return F=new Array(4),F[0]=P.getInt32(),F[1]=P.getInt32(),F[2]=P.getInt32(),F[3]=P.getInt32(),Z.aes._expandKey(F,!1)},G.formatSeed=function(F){var P=Z.util.createBuffer(F);return F=new Array(4),F[0]=P.getInt32(),F[1]=P.getInt32(),F[2]=P.getInt32(),F[3]=P.getInt32(),F},G.cipher=function(F,P){return Z.aes._updateBlock(F,P,Y,!1),H.putInt32(Y[0]),H.putInt32(Y[1]),H.putInt32(Y[2]),H.putInt32(Y[3]),H.getBytes()},G.increment=function(F){return++F[3],F},G.md=Z.md.sha256;function K(){var F=Z.prng.create(G);return F.getBytes=function(P,N){return F.generate(P,N)},F.getBytesSync=function(P){return F.generate(P)},F}var z=K(),W=null,$=Z.util.globalScope,q=$.crypto||$.msCrypto;if(q&&q.getRandomValues)W=function(F){return q.getRandomValues(F)};if(Z.options.usePureJavaScript||!Z.util.isNodejs&&!W){if(typeof window==="undefined"||window.document===void 0);if(z.collectInt(+new Date,32),typeof navigator!=="undefined"){var B="";for(var D in navigator)try{if(typeof navigator[D]=="string")B+=navigator[D]}catch(F){}z.collect(B),B=null}if(J)J().mousemove(function(F){z.collectInt(F.clientX,16),z.collectInt(F.clientY,16)}),J().keypress(function(F){z.collectInt(F.charCode,8)})}if(!Z.random)Z.random=z;else for(var D in z)Z.random[D]=z[D];Z.random.createInstance=K,X.exports=Z.random})(typeof jQuery!=="undefined"?jQuery:null)}()}}),EM=W1({"node_modules/node-forge/lib/rc2.js"(Q,X){var Z=y0();d0();var J=[217,120,249,196,25,221,181,237,40,233,253,121,74,160,216,157,198,126,55,131,43,118,83,142,98,76,100,136,68,139,251,162,23,154,89,245,135,179,79,19,97,69,109,141,9,129,125,50,189,143,64,235,134,183,123,11,240,149,33,34,92,107,78,130,84,214,101,147,206,96,178,28,115,86,192,20,167,140,241,220,18,117,202,31,59,190,228,209,66,61,212,48,163,60,182,38,111,191,14,218,70,105,7,87,39,242,29,155,188,148,67,3,248,17,199,246,144,239,62,231,6,195,213,47,200,102,30,215,8,232,234,222,128,82,238,247,132,170,114,172,53,77,106,42,150,26,210,113,90,21,73,116,75,159,208,94,4,24,164,236,194,224,65,110,15,81,203,204,36,145,175,80,161,244,112,57,153,124,58,133,35,184,180,122,252,2,54,91,37,85,151,49,45,93,250,152,227,138,146,174,5,223,41,16,103,108,186,201,211,0,230,207,225,158,168,44,99,22,1,63,88,226,137,169,13,56,52,27,171,51,255,176,187,72,12,95,185,177,205,46,197,243,219,71,229,165,156,119,10,166,32,104,254,127,193,173],G=[1,2,3,5],Y=function(z,W){return z<>16-W},H=function(z,W){return(z&65535)>>W|z<<16-W&65535};X.exports=Z.rc2=Z.rc2||{},Z.rc2.expandKey=function(z,W){if(typeof z==="string")z=Z.util.createBuffer(z);W=W||128;var $=z,q=z.length(),B=W,D=Math.ceil(B/8),F=255>>(B&7),P;for(P=q;P<128;P++)$.putByte(J[$.at(P-1)+$.at(P-q)&255]);$.setAt(128-D,J[$.at(128-D)&F]);for(P=127-D;P>=0;P--)$.setAt(P,J[$.at(P+1)^$.at(P+D)]);return $};var K=function(z,W,$){var q=!1,B=null,D=null,F=null,P,N,C,L,V=[];z=Z.rc2.expandKey(z,W);for(C=0;C<64;C++)V.push(z.getInt16Le());if($)P=function(E){for(C=0;C<4;C++)E[C]+=V[L]+(E[(C+3)%4]&E[(C+2)%4])+(~E[(C+3)%4]&E[(C+1)%4]),E[C]=Y(E[C],G[C]),L++},N=function(E){for(C=0;C<4;C++)E[C]+=V[E[(C+3)%4]&63]};else P=function(E){for(C=3;C>=0;C--)E[C]=H(E[C],G[C]),E[C]-=V[L]+(E[(C+3)%4]&E[(C+2)%4])+(~E[(C+3)%4]&E[(C+1)%4]),L--},N=function(E){for(C=3;C>=0;C--)E[C]-=V[E[(C+3)%4]&63]};var M=function(E){var w=[];for(C=0;C<4;C++){var A=B.getInt16Le();if(F!==null)if($)A^=F.getInt16Le();else F.putInt16Le(A);w.push(A&65535)}L=$?0:63;for(var R=0;R=8)M([[5,P],[1,N],[6,P],[1,N],[5,P]])},finish:function(E){var w=!0;if($)if(E)w=E(8,B,!$);else{var A=B.length()===8?8:8-B.length();B.fillWithByte(A,A)}if(w)q=!0,I.update();if(!$){if(w=B.length()===0,w)if(E)w=E(8,D,!$);else{var R=D.length(),T=D.at(R-1);if(T>R)w=!1;else D.truncate(T)}}return w}},I};Z.rc2.startEncrypting=function(z,W,$){var q=Z.rc2.createEncryptionCipher(z,128);return q.start(W,$),q},Z.rc2.createEncryptionCipher=function(z,W){return K(z,W,!0)},Z.rc2.startDecrypting=function(z,W,$){var q=Z.rc2.createDecryptionCipher(z,128);return q.start(W,$),q},Z.rc2.createDecryptionCipher=function(z,W){return K(z,W,!1)}}}),lq=W1({"node_modules/node-forge/lib/jsbn.js"(Q,X){var Z=y0();X.exports=Z.jsbn=Z.jsbn||{};var J,G=244837814094590,Y=(G&16777215)==15715070;function H(b,u,o){if(this.data=[],b!=null)if(typeof b=="number")this.fromNumber(b,u,o);else if(u==null&&typeof b!="string")this.fromString(b,256);else this.fromString(b,u)}Z.jsbn.BigInteger=H;function K(){return new H(null)}function z(b,u,o,z1,A1,w1){while(--w1>=0){var g1=u*this.data[b++]+o.data[z1]+A1;A1=Math.floor(g1/67108864),o.data[z1++]=g1&67108863}return A1}function W(b,u,o,z1,A1,w1){var g1=u&32767,x1=u>>15;while(--w1>=0){var o0=this.data[b]&32767,V6=this.data[b++]>>15,b6=x1*o0+V6*g1;o0=g1*o0+((b6&32767)<<15)+o.data[z1]+(A1&1073741823),A1=(o0>>>30)+(b6>>>15)+x1*V6+(A1>>>30),o.data[z1++]=o0&1073741823}return A1}function $(b,u,o,z1,A1,w1){var g1=u&16383,x1=u>>14;while(--w1>=0){var o0=this.data[b]&16383,V6=this.data[b++]>>14,b6=x1*o0+V6*g1;o0=g1*o0+((b6&16383)<<14)+o.data[z1]+A1,A1=(o0>>28)+(b6>>14)+x1*V6,o.data[z1++]=o0&268435455}return A1}if(typeof navigator==="undefined")H.prototype.am=$,J=28;else if(Y&&navigator.appName=="Microsoft Internet Explorer")H.prototype.am=W,J=30;else if(Y&&navigator.appName!="Netscape")H.prototype.am=z,J=26;else H.prototype.am=$,J=28;H.prototype.DB=J,H.prototype.DM=(1<=0;--u)b.data[u]=this.data[u];b.t=this.t,b.s=this.s}function V(b){if(this.t=1,this.s=b<0?-1:0,b>0)this.data[0]=b;else if(b<-1)this.data[0]=b+this.DV;else this.t=0}function M(b){var u=K();return u.fromInt(b),u}function I(b,u){var o;if(u==16)o=4;else if(u==8)o=3;else if(u==256)o=8;else if(u==2)o=1;else if(u==32)o=5;else if(u==4)o=2;else{this.fromRadix(b,u);return}this.t=0,this.s=0;var z1=b.length,A1=!1,w1=0;while(--z1>=0){var g1=o==8?b[z1]&255:C(b,z1);if(g1<0){if(b.charAt(z1)=="-")A1=!0;continue}if(A1=!1,w1==0)this.data[this.t++]=g1;else if(w1+o>this.DB)this.data[this.t-1]|=(g1&(1<>this.DB-w1;else this.data[this.t-1]|=g1<=this.DB)w1-=this.DB}if(o==8&&(b[0]&128)!=0){if(this.s=-1,w1>0)this.data[this.t-1]|=(1<0&&this.data[this.t-1]==b)--this.t}function w(b){if(this.s<0)return"-"+this.negate().toString(b);var u;if(b==16)u=4;else if(b==8)u=3;else if(b==2)u=1;else if(b==32)u=5;else if(b==4)u=2;else return this.toRadix(b);var o=(1<0){if(x1>x1)>0)A1=!0,w1=N(z1);while(g1>=0){if(x1>(x1+=this.DB-u);else if(z1=this.data[g1]>>(x1-=u)&o,x1<=0)x1+=this.DB,--g1;if(z1>0)A1=!0;if(A1)w1+=N(z1)}}return A1?w1:"0"}function A(){var b=K();return H.ZERO.subTo(this,b),b}function R(){return this.s<0?this.negate():this}function T(b){var u=this.s-b.s;if(u!=0)return u;var o=this.t;if(u=o-b.t,u!=0)return this.s<0?-u:u;while(--o>=0)if((u=this.data[o]-b.data[o])!=0)return u;return 0}function S(b){var u=1,o;if((o=b>>>16)!=0)b=o,u+=16;if((o=b>>8)!=0)b=o,u+=8;if((o=b>>4)!=0)b=o,u+=4;if((o=b>>2)!=0)b=o,u+=2;if((o=b>>1)!=0)b=o,u+=1;return u}function v(){if(this.t<=0)return 0;return this.DB*(this.t-1)+S(this.data[this.t-1]^this.s&this.DM)}function h(b,u){var o;for(o=this.t-1;o>=0;--o)u.data[o+b]=this.data[o];for(o=b-1;o>=0;--o)u.data[o]=0;u.t=this.t+b,u.s=this.s}function x(b,u){for(var o=b;o=0;--x1)u.data[x1+w1+1]=this.data[x1]>>z1|g1,g1=(this.data[x1]&A1)<=0;--x1)u.data[x1]=0;u.data[w1]=g1,u.t=this.t+w1+1,u.s=this.s,u.clamp()}function n(b,u){u.s=this.s;var o=Math.floor(b/this.DB);if(o>=this.t){u.t=0;return}var z1=b%this.DB,A1=this.DB-z1,w1=(1<>z1;for(var g1=o+1;g1>z1;if(z1>0)u.data[this.t-o-1]|=(this.s&w1)<>=this.DB;if(b.t>=this.DB;z1+=this.s}else{z1+=this.s;while(o>=this.DB;z1-=b.s}if(u.s=z1<0?-1:0,z1<-1)u.data[o++]=this.DV+z1;else if(z1>0)u.data[o++]=z1;u.t=o,u.clamp()}function Y1(b,u){var o=this.abs(),z1=b.abs(),A1=o.t;u.t=A1+z1.t;while(--A1>=0)u.data[A1]=0;for(A1=0;A1=0)b.data[o]=0;for(o=0;o=u.DV)b.data[o+u.t]-=u.DV,b.data[o+u.t+1]=1}if(b.t>0)b.data[b.t-1]+=u.am(o,u.data[o],b,2*o,0,1);b.s=0,b.clamp()}function V1(b,u,o){var z1=b.abs();if(z1.t<=0)return;var A1=this.abs();if(A1.t0)z1.lShiftTo(o0,w1),A1.lShiftTo(o0,o);else z1.copyTo(w1),A1.copyTo(o);var V6=w1.t,b6=w1.data[V6-1];if(b6==0)return;var v6=b6*(1<1?w1.data[V6-2]>>this.F2:0),Q9=this.FV/v6,E4=(1<=0)o.data[o.t++]=1,o.subTo(Z9,o);H.ONE.dlShiftTo(V6,Z9),Z9.subTo(w1,w1);while(w1.t=0){var U7=o.data[--B8]==b6?this.DM:Math.floor(o.data[B8]*Q9+(o.data[B8-1]+p8)*E4);if((o.data[B8]+=w1.am(0,U7,o,j4,0,V6))0)o.rShiftTo(o0,o);if(g1<0)H.ZERO.subTo(o,o)}function C1(b){var u=K();if(this.abs().divRemTo(b,null,u),this.s<0&&u.compareTo(H.ZERO)>0)b.subTo(u,u);return u}function N1(b){this.m=b}function j1(b){if(b.s<0||b.compareTo(this.m)>=0)return b.mod(this.m);else return b}function d1(b){return b}function D1(b){b.divRemTo(this.m,null,b)}function e(b,u,o){b.multiplyTo(u,o),this.reduce(o)}function P1(b,u){b.squareTo(u),this.reduce(u)}N1.prototype.convert=j1,N1.prototype.revert=d1,N1.prototype.reduce=D1,N1.prototype.mulTo=e,N1.prototype.sqrTo=P1;function Q1(){if(this.t<1)return 0;var b=this.data[0];if((b&1)==0)return 0;var u=b&3;return u=u*(2-(b&15)*u)&15,u=u*(2-(b&255)*u)&255,u=u*(2-((b&65535)*u&65535))&65535,u=u*(2-b*u%this.DV)%this.DV,u>0?this.DV-u:-u}function O1(b){this.m=b,this.mp=b.invDigit(),this.mpl=this.mp&32767,this.mph=this.mp>>15,this.um=(1<0)this.m.subTo(u,u);return u}function k(b){var u=K();return b.copyTo(u),this.reduce(u),u}function d(b){while(b.t<=this.mt2)b.data[b.t++]=0;for(var u=0;u>15)*this.mpl&this.um)<<15)&b.DM;o=u+this.m.t,b.data[o]+=this.m.am(0,z1,b,u,0,this.m.t);while(b.data[o]>=b.DV)b.data[o]-=b.DV,b.data[++o]++}if(b.clamp(),b.drShiftTo(this.m.t,b),b.compareTo(this.m)>=0)b.subTo(this.m,b)}function f(b,u){b.squareTo(u),this.reduce(u)}function j(b,u,o){b.multiplyTo(u,o),this.reduce(o)}O1.prototype.convert=S1,O1.prototype.revert=k,O1.prototype.reduce=d,O1.prototype.mulTo=j,O1.prototype.sqrTo=f;function m(){return(this.t>0?this.data[0]&1:this.s)==0}function Z1(b,u){if(b>4294967295||b<1)return H.ONE;var o=K(),z1=K(),A1=u.convert(this),w1=S(b)-1;A1.copyTo(o);while(--w1>=0)if(u.sqrTo(o,z1),(b&1<0)u.mulTo(z1,A1,o);else{var g1=o;o=z1,z1=g1}return u.revert(o)}function _(b,u){var o;if(b<256||u.isEven())o=new N1(u);else o=new O1(u);return this.exp(b,o)}H.prototype.copyTo=L,H.prototype.fromInt=V,H.prototype.fromString=I,H.prototype.clamp=E,H.prototype.dlShiftTo=h,H.prototype.drShiftTo=x,H.prototype.lShiftTo=p,H.prototype.rShiftTo=n,H.prototype.subTo=t,H.prototype.multiplyTo=Y1,H.prototype.squareTo=G1,H.prototype.divRemTo=V1,H.prototype.invDigit=Q1,H.prototype.isEven=m,H.prototype.exp=Z1,H.prototype.toString=w,H.prototype.negate=A,H.prototype.abs=R,H.prototype.compareTo=T,H.prototype.bitLength=v,H.prototype.mod=C1,H.prototype.modPowInt=_,H.ZERO=M(0),H.ONE=M(1);function J1(){var b=K();return this.copyTo(b),b}function B1(){if(this.s<0){if(this.t==1)return this.data[0]-this.DV;else if(this.t==0)return-1}else if(this.t==1)return this.data[0];else if(this.t==0)return 0;return(this.data[1]&(1<<32-this.DB)-1)<>24}function H1(){return this.t==0?this.s:this.data[0]<<16>>16}function M1(b){return Math.floor(Math.LN2*this.DB/Math.log(b))}function u1(){if(this.s<0)return-1;else if(this.t<=0||this.t==1&&this.data[0]<=0)return 0;else return 1}function s1(b){if(b==null)b=10;if(this.signum()==0||b<2||b>36)return"0";var u=this.chunkSize(b),o=Math.pow(b,u),z1=M(o),A1=K(),w1=K(),g1="";this.divRemTo(z1,A1,w1);while(A1.signum()>0)g1=(o+w1.intValue()).toString(b).substr(1)+g1,A1.divRemTo(z1,A1,w1);return w1.intValue().toString(b)+g1}function a1(b,u){if(this.fromInt(0),u==null)u=10;var o=this.chunkSize(u),z1=Math.pow(u,o),A1=!1,w1=0,g1=0;for(var x1=0;x1=o)this.dMultiply(z1),this.dAddOffset(g1,0),w1=0,g1=0}if(w1>0)this.dMultiply(Math.pow(u,w1)),this.dAddOffset(g1,0);if(A1)H.ZERO.subTo(this,this)}function X0(b,u,o){if(typeof u=="number")if(b<2)this.fromInt(1);else{if(this.fromNumber(b,o),!this.testBit(b-1))this.bitwiseTo(H.ONE.shiftLeft(b-1),U0,this);if(this.isEven())this.dAddOffset(1,0);while(!this.isProbablePrime(u))if(this.dAddOffset(2,0),this.bitLength()>b)this.subTo(H.ONE.shiftLeft(b-1),this)}else{var z1=new Array,A1=b&7;if(z1.length=(b>>3)+1,u.nextBytes(z1),A1>0)z1[0]&=(1<0){if(o>o)!=(this.s&this.DM)>>o)u[A1++]=z1|this.s<=0){if(o<8)z1=(this.data[b]&(1<>(o+=this.DB-8);else if(z1=this.data[b]>>(o-=8)&255,o<=0)o+=this.DB,--b;if((z1&128)!=0)z1|=-256;if(A1==0&&(this.s&128)!=(z1&128))++A1;if(A1>0||z1!=this.s)u[A1++]=z1}}return u}function B0(b){return this.compareTo(b)==0}function Y0(b){return this.compareTo(b)<0?this:b}function S0(b){return this.compareTo(b)>0?this:b}function D0(b,u,o){var z1,A1,w1=Math.min(b.t,this.t);for(z1=0;z1>=16,u+=16;if((b&255)==0)b>>=8,u+=8;if((b&15)==0)b>>=4,u+=4;if((b&3)==0)b>>=2,u+=2;if((b&1)==0)++u;return u}function i6(){for(var b=0;b=this.t)return this.s!=0;return(this.data[u]&1<>=this.DB;if(b.t>=this.DB;z1+=this.s}else{z1+=this.s;while(o>=this.DB;z1+=b.s}if(u.s=z1<0?-1:0,z1>0)u.data[o++]=z1;else if(z1<-1)u.data[o++]=this.DV+z1;u.t=o,u.clamp()}function _0(b){var u=K();return this.addTo(b,u),u}function i0(b){var u=K();return this.subTo(b,u),u}function H6(b){var u=K();return this.multiplyTo(b,u),u}function B6(b){var u=K();return this.divRemTo(b,u,null),u}function Z6(b){var u=K();return this.divRemTo(b,null,u),u}function e0(b){var u=K(),o=K();return this.divRemTo(b,u,o),new Array(u,o)}function z6(b){this.data[this.t]=this.am(0,b-1,this,0,0,this.t),++this.t,this.clamp()}function X6(b,u){if(b==0)return;while(this.t<=u)this.data[this.t++]=0;this.data[u]+=b;while(this.data[u]>=this.DV){if(this.data[u]-=this.DV,++u>=this.t)this.data[this.t++]=0;++this.data[u]}}function n0(){}function U6(b){return b}function gQ(b,u,o){b.multiplyTo(u,o)}function d8(b,u){b.squareTo(u)}n0.prototype.convert=U6,n0.prototype.revert=U6,n0.prototype.mulTo=gQ,n0.prototype.sqrTo=d8;function qQ(b){return this.exp(b,new n0)}function hQ(b,u,o){var z1=Math.min(this.t+b.t,u);o.s=0,o.t=z1;while(z1>0)o.data[--z1]=0;var A1;for(A1=o.t-this.t;z1=0)o.data[z1]=0;for(z1=Math.max(u-this.t,0);z12*this.m.t)return b.mod(this.m);else if(b.compareTo(this.m)<0)return b;else{var u=K();return b.copyTo(u),this.reduce(u),u}}function aX(b){return b}function L3(b){if(b.drShiftTo(this.m.t-1,this.r2),b.t>this.m.t+1)b.t=this.m.t+1,b.clamp();this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(b.compareTo(this.r2)<0)b.dAddOffset(1,this.m.t+1);b.subTo(this.r2,b);while(b.compareTo(this.m)>=0)b.subTo(this.m,b)}function sX(b,u){b.squareTo(u),this.reduce(u)}function tX(b,u,o){b.multiplyTo(u,o),this.reduce(o)}N9.prototype.convert=D3,N9.prototype.revert=aX,N9.prototype.reduce=L3,N9.prototype.mulTo=tX,N9.prototype.sqrTo=sX;function rX(b,u){var o=b.bitLength(),z1,A1=M(1),w1;if(o<=0)return A1;else if(o<18)z1=1;else if(o<48)z1=3;else if(o<144)z1=4;else if(o<768)z1=5;else z1=6;if(o<8)w1=new N1(u);else if(u.isEven())w1=new N9(u);else w1=new O1(u);var g1=new Array,x1=3,o0=z1-1,V6=(1<1){var b6=K();w1.sqrTo(g1[1],b6);while(x1<=V6)g1[x1]=K(),w1.mulTo(b6,g1[x1-2],g1[x1]),x1+=2}var v6=b.t-1,Q9,E4=!0,p8=K(),B8;o=S(b.data[v6])-1;while(v6>=0){if(o>=o0)Q9=b.data[v6]>>o-o0&V6;else if(Q9=(b.data[v6]&(1<0)Q9|=b.data[v6-1]>>this.DB+o-o0;x1=z1;while((Q9&1)==0)Q9>>=1,--x1;if((o-=x1)<0)o+=this.DB,--v6;if(E4)g1[Q9].copyTo(A1),E4=!1;else{while(x1>1)w1.sqrTo(A1,p8),w1.sqrTo(p8,A1),x1-=2;if(x1>0)w1.sqrTo(A1,p8);else B8=A1,A1=p8,p8=B8;w1.mulTo(p8,g1[Q9],A1)}while(v6>=0&&(b.data[v6]&1<0)u.rShiftTo(w1,u),o.rShiftTo(w1,o);while(u.signum()>0){if((A1=u.getLowestSetBit())>0)u.rShiftTo(A1,u);if((A1=o.getLowestSetBit())>0)o.rShiftTo(A1,o);if(u.compareTo(o)>=0)u.subTo(o,u),u.rShiftTo(1,u);else o.subTo(u,o),o.rShiftTo(1,o)}if(w1>0)o.lShiftTo(w1,o);return o}function eX(b){if(b<=0)return 0;var u=this.DV%b,o=this.s<0?b-1:0;if(this.t>0)if(u==0)o=this.data[0]%b;else for(var z1=this.t-1;z1>=0;--z1)o=(u*o+this.data[z1])%b;return o}function QJ(b){var u=b.isEven();if(this.isEven()&&u||b.signum()==0)return H.ZERO;var o=b.clone(),z1=this.clone(),A1=M(1),w1=M(0),g1=M(0),x1=M(1);while(o.signum()!=0){while(o.isEven()){if(o.rShiftTo(1,o),u){if(!A1.isEven()||!w1.isEven())A1.addTo(this,A1),w1.subTo(b,w1);A1.rShiftTo(1,A1)}else if(!w1.isEven())w1.subTo(b,w1);w1.rShiftTo(1,w1)}while(z1.isEven()){if(z1.rShiftTo(1,z1),u){if(!g1.isEven()||!x1.isEven())g1.addTo(this,g1),x1.subTo(b,x1);g1.rShiftTo(1,g1)}else if(!x1.isEven())x1.subTo(b,x1);x1.rShiftTo(1,x1)}if(o.compareTo(z1)>=0){if(o.subTo(z1,o),u)A1.subTo(g1,A1);w1.subTo(x1,w1)}else{if(z1.subTo(o,z1),u)g1.subTo(A1,g1);x1.subTo(w1,x1)}}if(z1.compareTo(H.ONE)!=0)return H.ZERO;if(x1.compareTo(b)>=0)return x1.subtract(b);if(x1.signum()<0)x1.addTo(b,x1);else return x1;if(x1.signum()<0)return x1.add(b);else return x1}var u8=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509],N3=67108864/u8[u8.length-1];function T3(b){var u,o=this.abs();if(o.t==1&&o.data[0]<=u8[u8.length-1]){for(u=0;u=0);var x1=w1.modPow(z1,this);if(x1.compareTo(H.ONE)!=0&&x1.compareTo(u)!=0){var o0=1;while(o0++>>0,F>>>0];for(var P=q.fullMessageLength.length-1;P>=0;--P)q.fullMessageLength[P]+=F[1],F[1]=F[0]+(q.fullMessageLength[P]/4294967296>>>0),q.fullMessageLength[P]=q.fullMessageLength[P]>>>0,F[0]=F[1]/4294967296>>>0;if(W.putBytes(B),K(z,$,W),W.read>2048||W.length()===0)W.compact();return q},q.digest=function(){var B=Z.util.createBuffer();B.putBytes(W.bytes());var D=q.fullMessageLength[q.fullMessageLength.length-1]+q.messageLengthSize,F=D&q.blockLength-1;B.putBytes(G.substr(0,q.blockLength-F));var P,N,C=q.fullMessageLength[0]*8;for(var L=0;L>>0,C+=N,B.putInt32(C>>>0),C=P>>>0;B.putInt32(C);var V={h0:z.h0,h1:z.h1,h2:z.h2,h3:z.h3,h4:z.h4};K(V,$,B);var M=Z.util.createBuffer();return M.putInt32(V.h0),M.putInt32(V.h1),M.putInt32(V.h2),M.putInt32(V.h3),M.putInt32(V.h4),M},q};var G=null,Y=!1;function H(){G=String.fromCharCode(128),G+=Z.util.fillString(String.fromCharCode(0),64),Y=!0}function K(z,W,$){var q,B,D,F,P,N,C,L,V=$.length();while(V>=64){B=z.h0,D=z.h1,F=z.h2,P=z.h3,N=z.h4;for(L=0;L<16;++L)q=$.getInt32(),W[L]=q,C=P^D&(F^P),q=(B<<5|B>>>27)+C+N+1518500249+q,N=P,P=F,F=(D<<30|D>>>2)>>>0,D=B,B=q;for(;L<20;++L)q=W[L-3]^W[L-8]^W[L-14]^W[L-16],q=q<<1|q>>>31,W[L]=q,C=P^D&(F^P),q=(B<<5|B>>>27)+C+N+1518500249+q,N=P,P=F,F=(D<<30|D>>>2)>>>0,D=B,B=q;for(;L<32;++L)q=W[L-3]^W[L-8]^W[L-14]^W[L-16],q=q<<1|q>>>31,W[L]=q,C=D^F^P,q=(B<<5|B>>>27)+C+N+1859775393+q,N=P,P=F,F=(D<<30|D>>>2)>>>0,D=B,B=q;for(;L<40;++L)q=W[L-6]^W[L-16]^W[L-28]^W[L-32],q=q<<2|q>>>30,W[L]=q,C=D^F^P,q=(B<<5|B>>>27)+C+N+1859775393+q,N=P,P=F,F=(D<<30|D>>>2)>>>0,D=B,B=q;for(;L<60;++L)q=W[L-6]^W[L-16]^W[L-28]^W[L-32],q=q<<2|q>>>30,W[L]=q,C=D&F|P&(D^F),q=(B<<5|B>>>27)+C+N+2400959708+q,N=P,P=F,F=(D<<30|D>>>2)>>>0,D=B,B=q;for(;L<80;++L)q=W[L-6]^W[L-16]^W[L-28]^W[L-32],q=q<<2|q>>>30,W[L]=q,C=D^F^P,q=(B<<5|B>>>27)+C+N+3395469782+q,N=P,P=F,F=(D<<30|D>>>2)>>>0,D=B,B=q;z.h0=z.h0+B|0,z.h1=z.h1+D|0,z.h2=z.h2+F|0,z.h3=z.h3+P|0,z.h4=z.h4+N|0,V-=64}}}}),jM=W1({"node_modules/node-forge/lib/pkcs1.js"(Q,X){var Z=y0();d0(),d9(),yX();var J=X.exports=Z.pkcs1=Z.pkcs1||{};J.encode_rsa_oaep=function(Y,H,K){var z,W,$,q;if(typeof K==="string")z=K,W=arguments[3]||void 0,$=arguments[4]||void 0;else if(K){if(z=K.label||void 0,W=K.seed||void 0,$=K.md||void 0,K.mgf1&&K.mgf1.md)q=K.mgf1.md}if(!$)$=Z.md.sha1.create();else $.start();if(!q)q=$;var B=Math.ceil(Y.n.bitLength()/8),D=B-2*$.digestLength-2;if(H.length>D){var F=new Error("RSAES-OAEP input message length is too long.");throw F.length=H.length,F.maxLength=D,F}if(!z)z="";$.update(z,"raw");var P=$.digest(),N="",C=D-H.length;for(var L=0;L>24&255,$>>16&255,$>>8&255,$&255);K.start(),K.update(Y+q),z+=K.digest().getBytes()}return z.substring(0,H)}}}),SM=W1({"node_modules/node-forge/lib/prime.js"(Q,X){var Z=y0();d0(),lq(),d9(),function(){if(Z.prime){X.exports=Z.prime;return}var J=X.exports=Z.prime=Z.prime||{},G=Z.jsbn.BigInteger,Y=[6,4,2,4,2,4,6,2],H=new G(null);H.fromInt(30);var K=function(F,P){return F|P};J.generateProbablePrime=function(F,P,N){if(typeof P==="function")N=P,P={};P=P||{};var C=P.algorithm||"PRIMEINC";if(typeof C==="string")C={name:C};C.options=C.options||{};var L=P.prng||Z.random,V={nextBytes:function(M){var I=L.getBytesSync(M.length);for(var E=0;EP)F=B(P,N);if(F.isProbablePrime(L))return M(null,F);F.dAddOffset(Y[C++%8],0)}while(V<0||+new Date-IF)L=B(F,P);var n=L.toString(16);h.target.postMessage({hex:n,workLoad:M}),L.dAddOffset(I,0)}}}function B(F,P){var N=new G(F,P),C=F-1;if(!N.testBit(C))N.bitwiseTo(G.ONE.shiftLeft(C),K,N);return N.dAddOffset(31-N.mod(H).byteValue(),0),N}function D(F){if(F<=100)return 27;if(F<=150)return 18;if(F<=200)return 15;if(F<=250)return 12;if(F<=300)return 9;if(F<=350)return 8;if(F<=400)return 7;if(F<=500)return 6;if(F<=600)return 5;if(F<=800)return 4;if(F<=1250)return 3;return 2}}()}}),cq=W1({"node_modules/node-forge/lib/rsa.js"(Q,X){var Z=y0();if(WQ(),lq(),TZ(),jM(),SM(),d9(),d0(),typeof J==="undefined")J=Z.jsbn.BigInteger;var J,G=Z.util.isNodejs?require("crypto"):null,Y=Z.asn1,H=Z.util;Z.pki=Z.pki||{},X.exports=Z.pki.rsa=Z.rsa=Z.rsa||{};var K=Z.pki,z=[6,4,2,4,2,4,6,2],W={name:"PrivateKeyInfo",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"PrivateKeyInfo.privateKeyAlgorithm",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:Y.Class.UNIVERSAL,type:Y.Type.OID,constructed:!1,capture:"privateKeyOid"}]},{name:"PrivateKeyInfo",tagClass:Y.Class.UNIVERSAL,type:Y.Type.OCTETSTRING,constructed:!1,capture:"privateKey"}]},$={name:"RSAPrivateKey",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPrivateKey.version",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"RSAPrivateKey.modulus",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyModulus"},{name:"RSAPrivateKey.publicExponent",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyPublicExponent"},{name:"RSAPrivateKey.privateExponent",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyPrivateExponent"},{name:"RSAPrivateKey.prime1",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyPrime1"},{name:"RSAPrivateKey.prime2",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyPrime2"},{name:"RSAPrivateKey.exponent1",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyExponent1"},{name:"RSAPrivateKey.exponent2",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyExponent2"},{name:"RSAPrivateKey.coefficient",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"privateKeyCoefficient"}]},q={name:"RSAPublicKey",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"RSAPublicKey.modulus",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"publicKeyModulus"},{name:"RSAPublicKey.exponent",tagClass:Y.Class.UNIVERSAL,type:Y.Type.INTEGER,constructed:!1,capture:"publicKeyExponent"}]},B=Z.pki.rsa.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[{name:"SubjectPublicKeyInfo.AlgorithmIdentifier",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:Y.Class.UNIVERSAL,type:Y.Type.OID,constructed:!1,capture:"publicKeyOid"}]},{name:"SubjectPublicKeyInfo.subjectPublicKey",tagClass:Y.Class.UNIVERSAL,type:Y.Type.BITSTRING,constructed:!1,value:[{name:"SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,optional:!0,captureAsn1:"rsaPublicKey"}]}]},D={name:"DigestInfo",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"DigestInfo.DigestAlgorithm",tagClass:Y.Class.UNIVERSAL,type:Y.Type.SEQUENCE,constructed:!0,value:[{name:"DigestInfo.DigestAlgorithm.algorithmIdentifier",tagClass:Y.Class.UNIVERSAL,type:Y.Type.OID,constructed:!1,capture:"algorithmIdentifier"},{name:"DigestInfo.DigestAlgorithm.parameters",tagClass:Y.Class.UNIVERSAL,type:Y.Type.NULL,capture:"parameters",optional:!0,constructed:!1}]},{name:"DigestInfo.digest",tagClass:Y.Class.UNIVERSAL,type:Y.Type.OCTETSTRING,constructed:!1,capture:"digest"}]},F=function(R){var T;if(R.algorithm in K.oids)T=K.oids[R.algorithm];else{var S=new Error("Unknown message digest algorithm.");throw S.algorithm=R.algorithm,S}var v=Y.oidToDer(T).getBytes(),h=Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[]),x=Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[]);x.value.push(Y.create(Y.Class.UNIVERSAL,Y.Type.OID,!1,v)),x.value.push(Y.create(Y.Class.UNIVERSAL,Y.Type.NULL,!1,""));var p=Y.create(Y.Class.UNIVERSAL,Y.Type.OCTETSTRING,!1,R.digest().getBytes());return h.value.push(x),h.value.push(p),Y.toDer(h).getBytes()},P=function(R,T,S){if(S)return R.modPow(T.e,T.n);if(!T.p||!T.q)return R.modPow(T.d,T.n);if(!T.dP)T.dP=T.d.mod(T.p.subtract(J.ONE));if(!T.dQ)T.dQ=T.d.mod(T.q.subtract(J.ONE));if(!T.qInv)T.qInv=T.q.modInverse(T.p);var v;do v=new J(Z.util.bytesToHex(Z.random.getBytes(T.n.bitLength()/8)),16);while(v.compareTo(T.n)>=0||!v.gcd(T.n).equals(J.ONE));R=R.multiply(v.modPow(T.e,T.n)).mod(T.n);var h=R.mod(T.p).modPow(T.dP,T.p),x=R.mod(T.q).modPow(T.dQ,T.q);while(h.compareTo(x)<0)h=h.add(T.p);var p=h.subtract(x).multiply(T.qInv).mod(T.p).multiply(T.q).add(x);return p=p.multiply(v.modInverse(T.n)).mod(T.n),p};K.rsa.encrypt=function(R,T,S){var v=S,h,x=Math.ceil(T.n.bitLength()/8);if(S!==!1&&S!==!0)v=S===2,h=N(R,T,S);else h=Z.util.createBuffer(),h.putBytes(R);var p=new J(h.toHex(),16),n=P(p,T,v),t=n.toString(16),Y1=Z.util.createBuffer(),G1=x-Math.ceil(t.length/2);while(G1>0)Y1.putByte(0),--G1;return Y1.putBytes(Z.util.hexToBytes(t)),Y1.getBytes()},K.rsa.decrypt=function(R,T,S,v){var h=Math.ceil(T.n.bitLength()/8);if(R.length!==h){var x=new Error("Encrypted message length is invalid.");throw x.length=R.length,x.expected=h,x}var p=new J(Z.util.createBuffer(R).toHex(),16);if(p.compareTo(T.n)>=0)throw new Error("Encrypted message is invalid.");var n=P(p,T,S),t=n.toString(16),Y1=Z.util.createBuffer(),G1=h-Math.ceil(t.length/2);while(G1>0)Y1.putByte(0),--G1;if(Y1.putBytes(Z.util.hexToBytes(t)),v!==!1)return C(Y1.getBytes(),T,S);return Y1.getBytes()},K.rsa.createKeyPairGenerationState=function(R,T,S){if(typeof R==="string")R=parseInt(R,10);R=R||2048,S=S||{};var v=S.prng||Z.random,h={nextBytes:function(n){var t=v.getBytesSync(n.length);for(var Y1=0;Y1>1,pBits:R-(R>>1),pqState:0,num:null,keys:null},p.e.fromInt(p.eInt);else throw new Error("Invalid key generation algorithm: "+x);return p},K.rsa.stepKeyPairGenerationState=function(R,T){if(!("algorithm"in R))R.algorithm="PRIMEINC";var S=new J(null);S.fromInt(30);var v=0,h=function(V1,C1){return V1|C1},x=+new Date,p,n=0;while(R.keys===null&&(T<=0||nt)R.pqState=0;else if(R.num.isProbablePrime(M(R.num.bitLength())))++R.pqState;else R.num.dAddOffset(z[v++%8],0);else if(R.pqState===2)R.pqState=R.num.subtract(J.ONE).gcd(R.e).compareTo(J.ONE)===0?3:0;else if(R.pqState===3){if(R.pqState=0,R.p===null)R.p=R.num;else R.q=R.num;if(R.p!==null&&R.q!==null)++R.state;R.num=null}}else if(R.state===1){if(R.p.compareTo(R.q)<0)R.num=R.p,R.p=R.q,R.q=R.num;++R.state}else if(R.state===2)R.p1=R.p.subtract(J.ONE),R.q1=R.q.subtract(J.ONE),R.phi=R.p1.multiply(R.q1),++R.state;else if(R.state===3)if(R.phi.gcd(R.e).compareTo(J.ONE)===0)++R.state;else R.p=null,R.q=null,R.state=0;else if(R.state===4)if(R.n=R.p.multiply(R.q),R.n.bitLength()===R.bits)++R.state;else R.q=null,R.state=0;else if(R.state===5){var G1=R.e.modInverse(R.phi);R.keys={privateKey:K.rsa.setPrivateKey(R.n,R.e,G1,R.p,R.q,G1.mod(R.p1),G1.mod(R.q1),R.q.modInverse(R.p)),publicKey:K.rsa.setPublicKey(R.n,R.e)}}p=+new Date,n+=p-x,x=p}return R.keys!==null},K.rsa.generateKeyPair=function(R,T,S,v){if(arguments.length===1){if(typeof R==="object")S=R,R=void 0;else if(typeof R==="function")v=R,R=void 0}else if(arguments.length===2)if(typeof R==="number"){if(typeof T==="function")v=T,T=void 0;else if(typeof T!=="number")S=T,T=void 0}else S=R,v=T,R=void 0,T=void 0;else if(arguments.length===3)if(typeof T==="number"){if(typeof S==="function")v=S,S=void 0}else v=S,S=T,T=void 0;if(S=S||{},R===void 0)R=S.bits||2048;if(T===void 0)T=S.e||65537;if(!Z.options.usePureJavaScript&&!S.prng&&R>=256&&R<=16384&&(T===65537||T===3)){if(v){if(I("generateKeyPair"))return G.generateKeyPair("rsa",{modulusLength:R,publicExponent:T,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}},function(n,t,Y1){if(n)return v(n);v(null,{privateKey:K.privateKeyFromPem(Y1),publicKey:K.publicKeyFromPem(t)})});if(E("generateKey")&&E("exportKey"))return H.globalScope.crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:R,publicExponent:A(T),hash:{name:"SHA-256"}},!0,["sign","verify"]).then(function(n){return H.globalScope.crypto.subtle.exportKey("pkcs8",n.privateKey)}).then(void 0,function(n){v(n)}).then(function(n){if(n){var t=K.privateKeyFromAsn1(Y.fromDer(Z.util.createBuffer(n)));v(null,{privateKey:t,publicKey:K.setRsaPublicKey(t.n,t.e)})}});if(w("generateKey")&&w("exportKey")){var h=H.globalScope.msCrypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:R,publicExponent:A(T),hash:{name:"SHA-256"}},!0,["sign","verify"]);h.oncomplete=function(n){var t=n.target.result,Y1=H.globalScope.msCrypto.subtle.exportKey("pkcs8",t.privateKey);Y1.oncomplete=function(G1){var V1=G1.target.result,C1=K.privateKeyFromAsn1(Y.fromDer(Z.util.createBuffer(V1)));v(null,{privateKey:C1,publicKey:K.setRsaPublicKey(C1.n,C1.e)})},Y1.onerror=function(G1){v(G1)}},h.onerror=function(n){v(n)};return}}else if(I("generateKeyPairSync")){var x=G.generateKeyPairSync("rsa",{modulusLength:R,publicExponent:T,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}});return{privateKey:K.privateKeyFromPem(x.privateKey),publicKey:K.publicKeyFromPem(x.publicKey)}}}var p=K.rsa.createKeyPairGenerationState(R,T,S);if(!v)return K.rsa.stepKeyPairGenerationState(p,0),p.keys;L(p,S,v)},K.setRsaPublicKey=K.rsa.setPublicKey=function(R,T){var S={n:R,e:T};return S.encrypt=function(v,h,x){if(typeof h==="string")h=h.toUpperCase();else if(h===void 0)h="RSAES-PKCS1-V1_5";if(h==="RSAES-PKCS1-V1_5")h={encode:function(n,t,Y1){return N(n,t,2).getBytes()}};else if(h==="RSA-OAEP"||h==="RSAES-OAEP")h={encode:function(n,t){return Z.pkcs1.encode_rsa_oaep(t,n,x)}};else if(["RAW","NONE","NULL",null].indexOf(h)!==-1)h={encode:function(n){return n}};else if(typeof h==="string")throw new Error('Unsupported encryption scheme: "'+h+'".');var p=h.encode(v,S,!0);return K.rsa.encrypt(p,S,!0)},S.verify=function(v,h,x,p){if(typeof x==="string")x=x.toUpperCase();else if(x===void 0)x="RSASSA-PKCS1-V1_5";if(p===void 0)p={_parseAllDigestBytes:!0};if(!("_parseAllDigestBytes"in p))p._parseAllDigestBytes=!0;if(x==="RSASSA-PKCS1-V1_5")x={verify:function(t,Y1){Y1=C(Y1,S,!0);var G1=Y.fromDer(Y1,{parseAllBytes:p._parseAllDigestBytes}),V1={},C1=[];if(!Y.validate(G1,D,V1,C1)){var N1=new Error("ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value.");throw N1.errors=C1,N1}var j1=Y.derToOid(V1.algorithmIdentifier);if(!(j1===Z.oids.md2||j1===Z.oids.md5||j1===Z.oids.sha1||j1===Z.oids.sha224||j1===Z.oids.sha256||j1===Z.oids.sha384||j1===Z.oids.sha512||j1===Z.oids["sha512-224"]||j1===Z.oids["sha512-256"])){var N1=new Error("Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier.");throw N1.oid=j1,N1}if(j1===Z.oids.md2||j1===Z.oids.md5){if(!("parameters"in V1))throw new Error("ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value. Missing algorithm identifer NULL parameters.")}return t===V1.digest}};else if(x==="NONE"||x==="NULL"||x===null)x={verify:function(t,Y1){return Y1=C(Y1,S,!0),t===Y1}};var n=K.rsa.decrypt(h,S,!0,!1);return x.verify(v,n,S.n.bitLength())},S},K.setRsaPrivateKey=K.rsa.setPrivateKey=function(R,T,S,v,h,x,p,n){var t={n:R,e:T,d:S,p:v,q:h,dP:x,dQ:p,qInv:n};return t.decrypt=function(Y1,G1,V1){if(typeof G1==="string")G1=G1.toUpperCase();else if(G1===void 0)G1="RSAES-PKCS1-V1_5";var C1=K.rsa.decrypt(Y1,t,!1,!1);if(G1==="RSAES-PKCS1-V1_5")G1={decode:C};else if(G1==="RSA-OAEP"||G1==="RSAES-OAEP")G1={decode:function(N1,j1){return Z.pkcs1.decode_rsa_oaep(j1,N1,V1)}};else if(["RAW","NONE","NULL",null].indexOf(G1)!==-1)G1={decode:function(N1){return N1}};else throw new Error('Unsupported encryption scheme: "'+G1+'".');return G1.decode(C1,t,!1)},t.sign=function(Y1,G1){var V1=!1;if(typeof G1==="string")G1=G1.toUpperCase();if(G1===void 0||G1==="RSASSA-PKCS1-V1_5")G1={encode:F},V1=1;else if(G1==="NONE"||G1==="NULL"||G1===null)G1={encode:function(){return Y1}},V1=1;var C1=G1.encode(Y1,t.n.bitLength());return K.rsa.encrypt(C1,t,V1)},t},K.wrapRsaPrivateKey=function(R){return Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,Y.integerToDer(0).getBytes()),Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[Y.create(Y.Class.UNIVERSAL,Y.Type.OID,!1,Y.oidToDer(K.oids.rsaEncryption).getBytes()),Y.create(Y.Class.UNIVERSAL,Y.Type.NULL,!1,"")]),Y.create(Y.Class.UNIVERSAL,Y.Type.OCTETSTRING,!1,Y.toDer(R).getBytes())])},K.privateKeyFromAsn1=function(R){var T={},S=[];if(Y.validate(R,W,T,S))R=Y.fromDer(Z.util.createBuffer(T.privateKey));if(T={},S=[],!Y.validate(R,$,T,S)){var v=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw v.errors=S,v}var h,x,p,n,t,Y1,G1,V1;return h=Z.util.createBuffer(T.privateKeyModulus).toHex(),x=Z.util.createBuffer(T.privateKeyPublicExponent).toHex(),p=Z.util.createBuffer(T.privateKeyPrivateExponent).toHex(),n=Z.util.createBuffer(T.privateKeyPrime1).toHex(),t=Z.util.createBuffer(T.privateKeyPrime2).toHex(),Y1=Z.util.createBuffer(T.privateKeyExponent1).toHex(),G1=Z.util.createBuffer(T.privateKeyExponent2).toHex(),V1=Z.util.createBuffer(T.privateKeyCoefficient).toHex(),K.setRsaPrivateKey(new J(h,16),new J(x,16),new J(p,16),new J(n,16),new J(t,16),new J(Y1,16),new J(G1,16),new J(V1,16))},K.privateKeyToAsn1=K.privateKeyToRSAPrivateKey=function(R){return Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,Y.integerToDer(0).getBytes()),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.n)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.e)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.d)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.p)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.q)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.dP)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.dQ)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.qInv))])},K.publicKeyFromAsn1=function(R){var T={},S=[];if(Y.validate(R,B,T,S)){var v=Y.derToOid(T.publicKeyOid);if(v!==K.oids.rsaEncryption){var h=new Error("Cannot read public key. Unknown OID.");throw h.oid=v,h}R=T.rsaPublicKey}if(S=[],!Y.validate(R,q,T,S)){var h=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw h.errors=S,h}var x=Z.util.createBuffer(T.publicKeyModulus).toHex(),p=Z.util.createBuffer(T.publicKeyExponent).toHex();return K.setRsaPublicKey(new J(x,16),new J(p,16))},K.publicKeyToAsn1=K.publicKeyToSubjectPublicKeyInfo=function(R){return Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[Y.create(Y.Class.UNIVERSAL,Y.Type.OID,!1,Y.oidToDer(K.oids.rsaEncryption).getBytes()),Y.create(Y.Class.UNIVERSAL,Y.Type.NULL,!1,"")]),Y.create(Y.Class.UNIVERSAL,Y.Type.BITSTRING,!1,[K.publicKeyToRSAPublicKey(R)])])},K.publicKeyToRSAPublicKey=function(R){return Y.create(Y.Class.UNIVERSAL,Y.Type.SEQUENCE,!0,[Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.n)),Y.create(Y.Class.UNIVERSAL,Y.Type.INTEGER,!1,V(R.e))])};function N(R,T,S){var v=Z.util.createBuffer(),h=Math.ceil(T.n.bitLength()/8);if(R.length>h-11){var x=new Error("Message is too long for PKCS#1 v1.5 padding.");throw x.length=R.length,x.max=h-11,x}v.putByte(0),v.putByte(S);var p=h-3-R.length,n;if(S===0||S===1){n=S===0?0:255;for(var t=0;t0){var Y1=0,G1=Z.random.getBytes(p);for(var t=0;t1){if(x.getByte()!==255){--x.read;break}++t}}else if(n===2){t=0;while(x.length()>1){if(x.getByte()===0){--x.read;break}++t}}var G1=x.getByte();if(G1!==0||t!==h-3-x.length())throw new Error("Encryption block is invalid.");return x.getBytes()}function L(R,T,S){if(typeof T==="function")S=T,T={};T=T||{};var v={algorithm:{name:T.algorithm||"PRIMEINC",options:{workers:T.workers||2,workLoad:T.workLoad||100,workerScript:T.workerScript}}};if("prng"in T)v.prng=T.prng;h();function h(){x(R.pBits,function(n,t){if(n)return S(n);if(R.p=t,R.q!==null)return p(n,R.q);x(R.qBits,p)})}function x(n,t){Z.prime.generateProbablePrime(n,v,t)}function p(n,t){if(n)return S(n);if(R.q=t,R.p.compareTo(R.q)<0){var Y1=R.p;R.p=R.q,R.q=Y1}if(R.p.subtract(J.ONE).gcd(R.e).compareTo(J.ONE)!==0){R.p=null,h();return}if(R.q.subtract(J.ONE).gcd(R.e).compareTo(J.ONE)!==0){R.q=null,x(R.qBits,p);return}if(R.p1=R.p.subtract(J.ONE),R.q1=R.q.subtract(J.ONE),R.phi=R.p1.multiply(R.q1),R.phi.gcd(R.e).compareTo(J.ONE)!==0){R.p=R.q=null,h();return}if(R.n=R.p.multiply(R.q),R.n.bitLength()!==R.bits){R.q=null,x(R.qBits,p);return}var G1=R.e.modInverse(R.phi);R.keys={privateKey:K.rsa.setPrivateKey(R.n,R.e,G1,R.p,R.q,G1.mod(R.p1),G1.mod(R.q1),R.q.modInverse(R.p)),publicKey:K.rsa.setPublicKey(R.n,R.e)},S(null,R.keys)}}function V(R){var T=R.toString(16);if(T[0]>="8")T="00"+T;var S=Z.util.hexToBytes(T);if(S.length>1&&(S.charCodeAt(0)===0&&(S.charCodeAt(1)&128)===0||S.charCodeAt(0)===255&&(S.charCodeAt(1)&128)===128))return S.substr(1);return S}function M(R){if(R<=100)return 27;if(R<=150)return 18;if(R<=200)return 15;if(R<=250)return 12;if(R<=300)return 9;if(R<=350)return 8;if(R<=400)return 7;if(R<=500)return 6;if(R<=600)return 5;if(R<=800)return 4;if(R<=1250)return 3;return 2}function I(R){return Z.util.isNodejs&&typeof G[R]==="function"}function E(R){return typeof H.globalScope!=="undefined"&&typeof H.globalScope.crypto==="object"&&typeof H.globalScope.crypto.subtle==="object"&&typeof H.globalScope.crypto.subtle[R]==="function"}function w(R){return typeof H.globalScope!=="undefined"&&typeof H.globalScope.msCrypto==="object"&&typeof H.globalScope.msCrypto.subtle==="object"&&typeof H.globalScope.msCrypto.subtle[R]==="function"}function A(R){var T=Z.util.hexToBytes(R.toString(16)),S=new Uint8Array(T.length);for(var v=0;v=0;I--)e=e>>8,e+=N1.at(I)+D1.at(I),D1.setAt(I,e&255);d1.putBuffer(D1)}t=d1,A.putBuffer(V1)}return A.truncate(A.length()-L),A},Y.pbe.getCipher=function(F,P,N){switch(F){case Y.oids.pkcs5PBES2:return Y.pbe.getCipherForPBES2(F,P,N);case Y.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case Y.oids["pbewithSHAAnd40BitRC2-CBC"]:return Y.pbe.getCipherForPKCS12PBE(F,P,N);default:var C=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw C.oid=F,C.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"],C}},Y.pbe.getCipherForPBES2=function(F,P,N){var C={},L=[];if(!G.validate(P,z,C,L)){var V=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw V.errors=L,V}if(F=G.derToOid(C.kdfOid),F!==Y.oids.pkcs5PBKDF2){var V=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw V.oid=F,V.supportedOids=["pkcs5PBKDF2"],V}if(F=G.derToOid(C.encOid),F!==Y.oids["aes128-CBC"]&&F!==Y.oids["aes192-CBC"]&&F!==Y.oids["aes256-CBC"]&&F!==Y.oids["des-EDE3-CBC"]&&F!==Y.oids.desCBC){var V=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");throw V.oid=F,V.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"],V}var M=C.kdfSalt,I=Z.util.createBuffer(C.kdfIterationCount);I=I.getInt(I.length()<<3);var E,w;switch(Y.oids[F]){case"aes128-CBC":E=16,w=Z.aes.createDecryptionCipher;break;case"aes192-CBC":E=24,w=Z.aes.createDecryptionCipher;break;case"aes256-CBC":E=32,w=Z.aes.createDecryptionCipher;break;case"des-EDE3-CBC":E=24,w=Z.des.createDecryptionCipher;break;case"desCBC":E=8,w=Z.des.createDecryptionCipher;break}var A=q(C.prfOid),R=Z.pkcs5.pbkdf2(N,M,I,E,A),T=C.encIv,S=w(R);return S.start(T),S},Y.pbe.getCipherForPKCS12PBE=function(F,P,N){var C={},L=[];if(!G.validate(P,W,C,L)){var V=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw V.errors=L,V}var M=Z.util.createBuffer(C.salt),I=Z.util.createBuffer(C.iterations);I=I.getInt(I.length()<<3);var E,w,A;switch(F){case Y.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:E=24,w=8,A=Z.des.startDecrypting;break;case Y.oids["pbewithSHAAnd40BitRC2-CBC"]:E=5,w=8,A=function(h,x){var p=Z.rc2.createDecryptionCipher(h,40);return p.start(x,null),p};break;default:var V=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw V.oid=F,V}var R=q(C.prfOid),T=Y.pbe.generatePkcs12Key(N,M,1,I,E,R);R.start();var S=Y.pbe.generatePkcs12Key(N,M,2,I,w,R);return A(T,S)},Y.pbe.opensslDeriveBytes=function(F,P,N,C){if(typeof C==="undefined"||C===null){if(!("md5"in Z.md))throw new Error('"md5" hash algorithm unavailable.');C=Z.md.md5.create()}if(P===null)P="";var L=[$(C,F+P)];for(var V=16,M=1;V>8*N-P&255;return R=String.fromCharCode(R.charCodeAt(0)&~T)+R.substr(1),R+M+String.fromCharCode(188)},q.verify=function(B,D,F){var P,N=F-1,C=Math.ceil(N/8);if(D=D.substr(-C),C>8*C-N&255;if((V.charCodeAt(0)&I)!==0)throw new Error("Bits beyond keysize not zero as expected.");var E=H.generate(M,L),w="";for(P=0;P2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(n.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(x.validity.notBefore=n[0],x.validity.notAfter=n[1],x.tbsCertificate=T.tbsCertificate,R){x.md=F({signatureOid:x.signatureOid,type:"certificate"});var t=J.toDer(x.tbsCertificate);x.md.update(t.getBytes())}var Y1=Z.md.sha1.create(),G1=J.toDer(T.certIssuer);if(Y1.update(G1.getBytes()),x.issuer.getField=function(N1){return B(x.issuer,N1)},x.issuer.addField=function(N1){C([N1]),x.issuer.attributes.push(N1)},x.issuer.attributes=G.RDNAttributesAsArray(T.certIssuer),T.certIssuerUniqueId)x.issuer.uniqueId=T.certIssuerUniqueId;x.issuer.hash=Y1.digest().toHex();var V1=Z.md.sha1.create(),C1=J.toDer(T.certSubject);if(V1.update(C1.getBytes()),x.subject.getField=function(N1){return B(x.subject,N1)},x.subject.addField=function(N1){C([N1]),x.subject.attributes.push(N1)},x.subject.attributes=G.RDNAttributesAsArray(T.certSubject),T.certSubjectUniqueId)x.subject.uniqueId=T.certSubjectUniqueId;if(x.subject.hash=V1.digest().toHex(),T.certExtensions)x.extensions=G.certificateExtensionsFromAsn1(T.certExtensions);else x.extensions=[];return x.publicKey=G.publicKeyFromAsn1(T.subjectPublicKeyInfo),x},G.certificateExtensionsFromAsn1=function(A){var R=[];for(var T=0;T1)S=T.value.charCodeAt(1),v=T.value.length>2?T.value.charCodeAt(2):0;R.digitalSignature=(S&128)===128,R.nonRepudiation=(S&64)===64,R.keyEncipherment=(S&32)===32,R.dataEncipherment=(S&16)===16,R.keyAgreement=(S&8)===8,R.keyCertSign=(S&4)===4,R.cRLSign=(S&2)===2,R.encipherOnly=(S&1)===1,R.decipherOnly=(v&128)===128}else if(R.name==="basicConstraints"){var T=J.fromDer(R.value);if(T.value.length>0&&T.value[0].type===J.Type.BOOLEAN)R.cA=T.value[0].value.charCodeAt(0)!==0;else R.cA=!1;var h=null;if(T.value.length>0&&T.value[0].type===J.Type.INTEGER)h=T.value[0].value;else if(T.value.length>1)h=T.value[1].value;if(h!==null)R.pathLenConstraint=J.derToInteger(h)}else if(R.name==="extKeyUsage"){var T=J.fromDer(R.value);for(var x=0;x1)S=T.value.charCodeAt(1);R.client=(S&128)===128,R.server=(S&64)===64,R.email=(S&32)===32,R.objsign=(S&16)===16,R.reserved=(S&8)===8,R.sslCA=(S&4)===4,R.emailCA=(S&2)===2,R.objCA=(S&1)===1}else if(R.name==="subjectAltName"||R.name==="issuerAltName"){R.altNames=[];var n,T=J.fromDer(R.value);for(var t=0;t128)throw new Error('Invalid "nsComment" content.');A.value=J.create(J.Class.UNIVERSAL,J.Type.IA5STRING,!1,A.comment)}else if(A.name==="subjectKeyIdentifier"&&R.cert){var G1=R.cert.generateSubjectKeyIdentifier();A.subjectKeyIdentifier=G1.toHex(),A.value=J.create(J.Class.UNIVERSAL,J.Type.OCTETSTRING,!1,G1.getBytes())}else if(A.name==="authorityKeyIdentifier"&&R.cert){A.value=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[]);var p=A.value.value;if(A.keyIdentifier){var V1=A.keyIdentifier===!0?R.cert.generateSubjectKeyIdentifier().getBytes():A.keyIdentifier;p.push(J.create(J.Class.CONTEXT_SPECIFIC,0,!1,V1))}if(A.authorityCertIssuer){var C1=[J.create(J.Class.CONTEXT_SPECIFIC,4,!0,[N(A.authorityCertIssuer===!0?R.cert.issuer:A.authorityCertIssuer)])];p.push(J.create(J.Class.CONTEXT_SPECIFIC,1,!0,C1))}if(A.serialNumber){var N1=Z.util.hexToBytes(A.serialNumber===!0?R.cert.serialNumber:A.serialNumber);p.push(J.create(J.Class.CONTEXT_SPECIFIC,2,!1,N1))}}else if(A.name==="cRLDistributionPoints"){A.value=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[]);var p=A.value.value,j1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[]),d1=J.create(J.Class.CONTEXT_SPECIFIC,0,!0,[]),t;for(var Y1=0;Y1=I&&A0)S.value.push(G.certificateExtensionsToAsn1(A.extensions));return S},G.getCertificationRequestInfo=function(A){var R=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.INTEGER,!1,J.integerToDer(A.version).getBytes()),N(A.subject),G.publicKeyToAsn1(A.publicKey),M(A)]);return R},G.distinguishedNameToAsn1=function(A){return N(A)},G.certificateToAsn1=function(A){var R=A.tbsCertificate||G.getTBSCertificate(A);return J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[R,J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(A.signatureOid).getBytes()),V(A.signatureOid,A.signatureParameters)]),J.create(J.Class.UNIVERSAL,J.Type.BITSTRING,!1,String.fromCharCode(0)+A.signature)])},G.certificateExtensionsToAsn1=function(A){var R=J.create(J.Class.CONTEXT_SPECIFIC,3,!0,[]),T=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[]);R.value.push(T);for(var S=0;Sn.validity.notAfter)x={message:"Certificate is not valid yet or has expired.",error:G.certificateError.certificate_expired,notBefore:n.validity.notBefore,notAfter:n.validity.notAfter,now:v}}if(x===null){if(t=R[0]||A.getIssuer(n),t===null){if(n.isIssuer(n))Y1=!0,t=n}if(t){var G1=t;if(!Z.util.isArray(G1))G1=[G1];var V1=!1;while(!V1&&G1.length>0){t=G1.shift();try{V1=t.verify(n)}catch(O1){}}if(!V1)x={message:"Certificate signature is invalid.",error:G.certificateError.bad_certificate}}if(x===null&&(!t||Y1)&&!A.hasCertificate(n))x={message:"Certificate is not trusted.",error:G.certificateError.unknown_ca}}if(x===null&&t&&!n.isIssuer(t))x={message:"Certificate issuer is invalid.",error:G.certificateError.bad_certificate};if(x===null){var C1={keyUsage:!0,basicConstraints:!0};for(var N1=0;x===null&&N1d1.pathLenConstraint)x={message:"Certificate basicConstraints pathLenConstraint violated.",error:G.certificateError.bad_certificate}}}var P1=x===null?!0:x.error,Q1=T.verify?T.verify(P1,p,S):P1;if(Q1===!0)x=null;else{if(P1===!0)x={message:"The application rejected the certificate.",error:G.certificateError.bad_certificate};if(Q1||Q1===0){if(typeof Q1==="object"&&!Z.util.isArray(Q1)){if(Q1.message)x.message=Q1.message;if(Q1.error)x.error=Q1.error}else if(typeof Q1==="string")x.error=Q1}throw x}h=!1,++p}while(R.length>0);return!0}}}),vM=W1({"node_modules/node-forge/lib/pkcs12.js"(Q,X){var Z=y0();WQ(),kX(),TZ(),yM(),kM(),d9(),cq(),yX(),d0(),T$();var{asn1:J,pki:G}=Z,Y=X.exports=Z.pkcs12=Z.pkcs12||{},H={name:"ContentInfo",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"ContentInfo.contentType",tagClass:J.Class.UNIVERSAL,type:J.Type.OID,constructed:!1,capture:"contentType"},{name:"ContentInfo.content",tagClass:J.Class.CONTEXT_SPECIFIC,constructed:!0,captureAsn1:"content"}]},K={name:"PFX",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"PFX.version",tagClass:J.Class.UNIVERSAL,type:J.Type.INTEGER,constructed:!1,capture:"version"},H,{name:"PFX.macData",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,optional:!0,captureAsn1:"mac",value:[{name:"PFX.macData.mac",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"PFX.macData.mac.digestAlgorithm",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"PFX.macData.mac.digestAlgorithm.algorithm",tagClass:J.Class.UNIVERSAL,type:J.Type.OID,constructed:!1,capture:"macAlgorithm"},{name:"PFX.macData.mac.digestAlgorithm.parameters",tagClass:J.Class.UNIVERSAL,captureAsn1:"macAlgorithmParameters"}]},{name:"PFX.macData.mac.digest",tagClass:J.Class.UNIVERSAL,type:J.Type.OCTETSTRING,constructed:!1,capture:"macDigest"}]},{name:"PFX.macData.macSalt",tagClass:J.Class.UNIVERSAL,type:J.Type.OCTETSTRING,constructed:!1,capture:"macSalt"},{name:"PFX.macData.iterations",tagClass:J.Class.UNIVERSAL,type:J.Type.INTEGER,constructed:!1,optional:!0,capture:"macIterations"}]}]},z={name:"SafeBag",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"SafeBag.bagId",tagClass:J.Class.UNIVERSAL,type:J.Type.OID,constructed:!1,capture:"bagId"},{name:"SafeBag.bagValue",tagClass:J.Class.CONTEXT_SPECIFIC,constructed:!0,captureAsn1:"bagValue"},{name:"SafeBag.bagAttributes",tagClass:J.Class.UNIVERSAL,type:J.Type.SET,constructed:!0,optional:!0,capture:"bagAttributes"}]},W={name:"Attribute",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"Attribute.attrId",tagClass:J.Class.UNIVERSAL,type:J.Type.OID,constructed:!1,capture:"oid"},{name:"Attribute.attrValues",tagClass:J.Class.UNIVERSAL,type:J.Type.SET,constructed:!0,capture:"values"}]},$={name:"CertBag",tagClass:J.Class.UNIVERSAL,type:J.Type.SEQUENCE,constructed:!0,value:[{name:"CertBag.certId",tagClass:J.Class.UNIVERSAL,type:J.Type.OID,constructed:!1,capture:"certId"},{name:"CertBag.certValue",tagClass:J.Class.CONTEXT_SPECIFIC,constructed:!0,value:[{name:"CertBag.certValue[0]",tagClass:J.Class.UNIVERSAL,type:J.Class.OCTETSTRING,constructed:!1,capture:"cert"}]}]};function q(C,L,V,M){var I=[];for(var E=0;E=0)I.push(A)}return I}Y.pkcs12FromAsn1=function(C,L,V){if(typeof L==="string")V=L,L=!0;else if(L===void 0)L=!0;var M={},I=[];if(!J.validate(C,K,M,I)){var E=new Error("Cannot read PKCS#12 PFX. ASN.1 object is not an PKCS#12 PFX.");throw E.errors=E,E}var w={version:M.version.charCodeAt(0),safeContents:[],getBags:function(t){var Y1={},G1;if("localKeyId"in t)G1=t.localKeyId;else if("localKeyIdHex"in t)G1=Z.util.hexToBytes(t.localKeyIdHex);if(G1===void 0&&!("friendlyName"in t)&&"bagType"in t)Y1[t.bagType]=q(w.safeContents,null,null,t.bagType);if(G1!==void 0)Y1.localKeyId=q(w.safeContents,"localKeyId",G1,t.bagType);if("friendlyName"in t)Y1.friendlyName=q(w.safeContents,"friendlyName",t.friendlyName,t.bagType);return Y1},getBagsByFriendlyName:function(t,Y1){return q(w.safeContents,"friendlyName",t,Y1)},getBagsByLocalKeyId:function(t,Y1){return q(w.safeContents,"localKeyId",t,Y1)}};if(M.version.charCodeAt(0)!==3){var E=new Error("PKCS#12 PFX of version other than 3 not supported.");throw E.version=M.version.charCodeAt(0),E}if(J.derToOid(M.contentType)!==G.oids.data){var E=new Error("Only PKCS#12 PFX in password integrity mode supported.");throw E.oid=J.derToOid(M.contentType),E}var A=M.content.value[0];if(A.tagClass!==J.Class.UNIVERSAL||A.type!==J.Type.OCTETSTRING)throw new Error("PKCS#12 authSafe content data is not an OCTET STRING.");if(A=B(A),M.mac){var R=null,T=0,S=J.derToOid(M.macAlgorithm);switch(S){case G.oids.sha1:R=Z.md.sha1.create(),T=20;break;case G.oids.sha256:R=Z.md.sha256.create(),T=32;break;case G.oids.sha384:R=Z.md.sha384.create(),T=48;break;case G.oids.sha512:R=Z.md.sha512.create(),T=64;break;case G.oids.md5:R=Z.md.md5.create(),T=16;break}if(R===null)throw new Error("PKCS#12 uses unsupported MAC algorithm: "+S);var v=new Z.util.ByteBuffer(M.macSalt),h="macIterations"in M?parseInt(Z.util.bytesToHex(M.macIterations),16):1,x=Y.generateKey(V,v,3,h,T,R),p=Z.hmac.create();p.start(R,x),p.update(A.value);var n=p.getMac();if(n.getBytes()!==M.macDigest)throw new Error("PKCS#12 MAC could not be verified. Invalid password?")}return D(w,A.value,L,V),w};function B(C){if(C.composed||C.constructed){var L=Z.util.createBuffer();for(var V=0;V0)E=J.create(J.Class.UNIVERSAL,J.Type.SET,!0,R);var T=[],S=[];if(L!==null)if(Z.util.isArray(L))S=L;else S=[L];var v=[];for(var h=0;h0){var t=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,v),Y1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(G.oids.data).getBytes()),J.create(J.Class.CONTEXT_SPECIFIC,0,!0,[J.create(J.Class.UNIVERSAL,J.Type.OCTETSTRING,!1,J.toDer(t).getBytes())])]);T.push(Y1)}var G1=null;if(C!==null){var V1=G.wrapRsaPrivateKey(G.privateKeyToAsn1(C));if(V===null)G1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(G.oids.keyBag).getBytes()),J.create(J.Class.CONTEXT_SPECIFIC,0,!0,[V1]),E]);else G1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(G.oids.pkcs8ShroudedKeyBag).getBytes()),J.create(J.Class.CONTEXT_SPECIFIC,0,!0,[G.encryptPrivateKeyInfo(V1,V,M)]),E]);var C1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[G1]),N1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(G.oids.data).getBytes()),J.create(J.Class.CONTEXT_SPECIFIC,0,!0,[J.create(J.Class.UNIVERSAL,J.Type.OCTETSTRING,!1,J.toDer(C1).getBytes())])]);T.push(N1)}var j1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,T),d1;if(M.useMac){var A=Z.md.sha1.create(),D1=new Z.util.ByteBuffer(Z.random.getBytes(M.saltSize)),e=M.count,C=Y.generateKey(V,D1,3,e,20),P1=Z.hmac.create();P1.start(A,C),P1.update(J.toDer(j1).getBytes());var Q1=P1.getMac();d1=J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(G.oids.sha1).getBytes()),J.create(J.Class.UNIVERSAL,J.Type.NULL,!1,"")]),J.create(J.Class.UNIVERSAL,J.Type.OCTETSTRING,!1,Q1.getBytes())]),J.create(J.Class.UNIVERSAL,J.Type.OCTETSTRING,!1,D1.getBytes()),J.create(J.Class.UNIVERSAL,J.Type.INTEGER,!1,J.integerToDer(e).getBytes())])}return J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.INTEGER,!1,J.integerToDer(3).getBytes()),J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(G.oids.data).getBytes()),J.create(J.Class.CONTEXT_SPECIFIC,0,!0,[J.create(J.Class.UNIVERSAL,J.Type.OCTETSTRING,!1,J.toDer(j1).getBytes())])]),d1])},Y.generateKey=Z.pbe.generatePkcs12Key}}),gM=W1({"node_modules/node-forge/lib/pki.js"(Q,X){var Z=y0();WQ(),TZ(),kM(),Y7(),C$(),vM(),N$(),cq(),d0(),T$();var J=Z.asn1,G=X.exports=Z.pki=Z.pki||{};G.pemToDer=function(Y){var H=Z.pem.decode(Y)[0];if(H.procType&&H.procType.type==="ENCRYPTED")throw new Error("Could not convert PEM to DER; PEM is encrypted.");return Z.util.createBuffer(H.body)},G.privateKeyFromPem=function(Y){var H=Z.pem.decode(Y)[0];if(H.type!=="PRIVATE KEY"&&H.type!=="RSA PRIVATE KEY"){var K=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');throw K.headerType=H.type,K}if(H.procType&&H.procType.type==="ENCRYPTED")throw new Error("Could not convert private key from PEM; PEM is encrypted.");var z=J.fromDer(H.body);return G.privateKeyFromAsn1(z)},G.privateKeyToPem=function(Y,H){var K={type:"RSA PRIVATE KEY",body:J.toDer(G.privateKeyToAsn1(Y)).getBytes()};return Z.pem.encode(K,{maxline:H})},G.privateKeyInfoToPem=function(Y,H){var K={type:"PRIVATE KEY",body:J.toDer(Y).getBytes()};return Z.pem.encode(K,{maxline:H})}}}),hM=W1({"node_modules/node-forge/lib/tls.js"(Q,X){var Z=y0();WQ(),kX(),L$(),Y7(),gM(),d9(),yX(),d0();var J=function(k,d,f,j){var m=Z.util.createBuffer(),Z1=k.length>>1,_=Z1+(k.length&1),J1=k.substr(0,_),B1=k.substr(Z1,_),L1=Z.util.createBuffer(),H1=Z.hmac.create();f=d+f;var M1=Math.ceil(j/16),u1=Math.ceil(j/20);H1.start("MD5",J1);var s1=Z.util.createBuffer();L1.putBytes(f);for(var a1=0;a10)W.queue(k,W.createAlert(k,{level:W.Alert.Level.warning,description:W.Alert.Description.no_renegotiation})),W.flush(k);k.process()},W.parseHelloMessage=function(k,d,f){var j=null,m=k.entity===W.ConnectionEnd.client;if(f<38)k.error(k,{message:m?"Invalid ServerHello message. Message too short.":"Invalid ClientHello message. Message too short.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.illegal_parameter}});else{var Z1=d.fragment,_=Z1.length();if(j={version:{major:Z1.getByte(),minor:Z1.getByte()},random:Z.util.createBuffer(Z1.getBytes(32)),session_id:K(Z1,1),extensions:[]},m)j.cipher_suite=Z1.getBytes(2),j.compression_method=Z1.getByte();else j.cipher_suites=K(Z1,2),j.compression_methods=K(Z1,1);if(_=f-(_-Z1.length()),_>0){var J1=K(Z1,2);while(J1.length()>0)j.extensions.push({type:[J1.getByte(),J1.getByte()],data:K(J1,2)});if(!m)for(var B1=0;B10){var M1=H1.getByte();if(M1!==0)break;k.session.extensions.server_name.serverNameList.push(K(H1,2).getBytes())}}}}if(k.session.version){if(j.version.major!==k.session.version.major||j.version.minor!==k.session.version.minor)return k.error(k,{message:"TLS version change is disallowed during renegotiation.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.protocol_version}})}if(m)k.session.cipherSuite=W.getCipherSuite(j.cipher_suite);else{var u1=Z.util.createBuffer(j.cipher_suites.bytes());while(u1.length()>0)if(k.session.cipherSuite=W.getCipherSuite(u1.getBytes(2)),k.session.cipherSuite!==null)break}if(k.session.cipherSuite===null)return k.error(k,{message:"No cipher suites in common.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.handshake_failure},cipherSuite:Z.util.bytesToHex(j.cipher_suite)});if(m)k.session.compressionMethod=j.compression_method;else k.session.compressionMethod=W.CompressionMethod.none}return j},W.createSecurityParameters=function(k,d){var f=k.entity===W.ConnectionEnd.client,j=d.random.bytes(),m=f?k.session.sp.client_random:j,Z1=f?j:W.createRandom().getBytes();k.session.sp={entity:k.entity,prf_algorithm:W.PRFAlgorithm.tls_prf_sha256,bulk_cipher_algorithm:null,cipher_type:null,enc_key_length:null,block_length:null,fixed_iv_length:null,record_iv_length:null,mac_algorithm:null,mac_length:null,mac_key_length:null,compression_algorithm:k.session.compressionMethod,pre_master_secret:null,master_secret:null,client_random:m,server_random:Z1}},W.handleServerHello=function(k,d,f){var j=W.parseHelloMessage(k,d,f);if(k.fail)return;if(j.version.minor<=k.version.minor)k.version.minor=j.version.minor;else return k.error(k,{message:"Incompatible TLS version.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.protocol_version}});k.session.version=k.version;var m=j.session_id.bytes();if(m.length>0&&m===k.session.id)k.expect=P,k.session.resuming=!0,k.session.sp.server_random=j.random.bytes();else k.expect=q,k.session.resuming=!1,W.createSecurityParameters(k,j);k.session.id=m,k.process()},W.handleClientHello=function(k,d,f){var j=W.parseHelloMessage(k,d,f);if(k.fail)return;var m=j.session_id.bytes(),Z1=null;if(k.sessionCache){if(Z1=k.sessionCache.getSession(m),Z1===null)m="";else if(Z1.version.major!==j.version.major||Z1.version.minor>j.version.minor)Z1=null,m=""}if(m.length===0)m=Z.random.getBytes(32);if(k.session.id=m,k.session.clientHelloVersion=j.version,k.session.sp={},Z1)k.version=k.session.version=Z1.version,k.session.sp=Z1.sp;else{var _;for(var J1=1;J10)Z1=K(m.certificate_list,3),_=Z.asn1.fromDer(Z1),Z1=Z.pki.certificateFromAsn1(_,!0),J1.push(Z1)}catch(L1){return k.error(k,{message:"Could not parse certificate list.",cause:L1,send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.bad_certificate}})}var B1=k.entity===W.ConnectionEnd.client;if((B1||k.verifyClient===!0)&&J1.length===0)k.error(k,{message:B1?"No server certificate provided.":"No client certificate provided.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.illegal_parameter}});else if(J1.length===0)k.expect=B1?B:I;else{if(B1)k.session.serverCertificate=J1[0];else k.session.clientCertificate=J1[0];if(W.verifyCertificateChain(k,J1))k.expect=B1?B:I}k.process()},W.handleServerKeyExchange=function(k,d,f){if(f>0)return k.error(k,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.unsupported_certificate}});k.expect=D,k.process()},W.handleClientKeyExchange=function(k,d,f){if(f<48)return k.error(k,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.unsupported_certificate}});var j=d.fragment,m={enc_pre_master_secret:K(j,2).getBytes()},Z1=null;if(k.getPrivateKey)try{Z1=k.getPrivateKey(k,k.session.serverCertificate),Z1=Z.pki.privateKeyFromPem(Z1)}catch(B1){k.error(k,{message:"Could not get private key.",cause:B1,send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.internal_error}})}if(Z1===null)return k.error(k,{message:"No private key set.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.internal_error}});try{var _=k.session.sp;_.pre_master_secret=Z1.decrypt(m.enc_pre_master_secret);var J1=k.session.clientHelloVersion;if(J1.major!==_.pre_master_secret.charCodeAt(0)||J1.minor!==_.pre_master_secret.charCodeAt(1))throw new Error("TLS version rollback attack detected.")}catch(B1){_.pre_master_secret=Z.random.getBytes(48)}if(k.expect=w,k.session.clientCertificate!==null)k.expect=E;k.process()},W.handleCertificateRequest=function(k,d,f){if(f<3)return k.error(k,{message:"Invalid CertificateRequest. Message too short.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.illegal_parameter}});var j=d.fragment,m={certificate_types:K(j,1),certificate_authorities:K(j,2)};k.session.certificateRequest=m,k.expect=F,k.process()},W.handleCertificateVerify=function(k,d,f){if(f<2)return k.error(k,{message:"Invalid CertificateVerify. Message too short.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.illegal_parameter}});var j=d.fragment;j.read-=4;var m=j.bytes();j.read+=4;var Z1={signature:K(j,2).getBytes()},_=Z.util.createBuffer();_.putBuffer(k.session.md5.digest()),_.putBuffer(k.session.sha1.digest()),_=_.getBytes();try{var J1=k.session.clientCertificate;if(!J1.publicKey.verify(_,Z1.signature,"NONE"))throw new Error("CertificateVerify signature does not match.");k.session.md5.update(m),k.session.sha1.update(m)}catch(B1){return k.error(k,{message:"Bad signature in CertificateVerify.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.handshake_failure}})}k.expect=w,k.process()},W.handleServerHelloDone=function(k,d,f){if(f>0)return k.error(k,{message:"Invalid ServerHelloDone message. Invalid length.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.record_overflow}});if(k.serverCertificate===null){var j={message:"No server certificate provided. Not enough security.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.insufficient_security}},m=0,Z1=k.verify(k,j.alert.description,m,[]);if(Z1!==!0){if(Z1||Z1===0){if(typeof Z1==="object"&&!Z.util.isArray(Z1)){if(Z1.message)j.message=Z1.message;if(Z1.alert)j.alert.description=Z1.alert}else if(typeof Z1==="number")j.alert.description=Z1}return k.error(k,j)}}if(k.session.certificateRequest!==null)d=W.createRecord(k,{type:W.ContentType.handshake,data:W.createCertificate(k)}),W.queue(k,d);d=W.createRecord(k,{type:W.ContentType.handshake,data:W.createClientKeyExchange(k)}),W.queue(k,d),k.expect=L;var _=function(J1,B1){if(J1.session.certificateRequest!==null&&J1.session.clientCertificate!==null)W.queue(J1,W.createRecord(J1,{type:W.ContentType.handshake,data:W.createCertificateVerify(J1,B1)}));W.queue(J1,W.createRecord(J1,{type:W.ContentType.change_cipher_spec,data:W.createChangeCipherSpec()})),J1.state.pending=W.createConnectionState(J1),J1.state.current.write=J1.state.pending.write,W.queue(J1,W.createRecord(J1,{type:W.ContentType.handshake,data:W.createFinished(J1)})),J1.expect=P,W.flush(J1),J1.process()};if(k.session.certificateRequest===null||k.session.clientCertificate===null)return _(k,null);W.getClientSignature(k,_)},W.handleChangeCipherSpec=function(k,d){if(d.fragment.getByte()!==1)return k.error(k,{message:"Invalid ChangeCipherSpec message received.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.illegal_parameter}});var f=k.entity===W.ConnectionEnd.client;if(k.session.resuming&&f||!k.session.resuming&&!f)k.state.pending=W.createConnectionState(k);if(k.state.current.read=k.state.pending.read,!k.session.resuming&&f||k.session.resuming&&!f)k.state.pending=null;k.expect=f?N:A,k.process()},W.handleFinished=function(k,d,f){var j=d.fragment;j.read-=4;var m=j.bytes();j.read+=4;var Z1=d.fragment.getBytes();j=Z.util.createBuffer(),j.putBuffer(k.session.md5.digest()),j.putBuffer(k.session.sha1.digest());var _=k.entity===W.ConnectionEnd.client,J1=_?"server finished":"client finished",B1=k.session.sp,L1=12,H1=J;if(j=H1(B1.master_secret,J1,j.getBytes(),L1),j.getBytes()!==Z1)return k.error(k,{message:"Invalid verify_data in Finished message.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.decrypt_error}});if(k.session.md5.update(m),k.session.sha1.update(m),k.session.resuming&&_||!k.session.resuming&&!_)W.queue(k,W.createRecord(k,{type:W.ContentType.change_cipher_spec,data:W.createChangeCipherSpec()})),k.state.current.write=k.state.pending.write,k.state.pending=null,W.queue(k,W.createRecord(k,{type:W.ContentType.handshake,data:W.createFinished(k)}));k.expect=_?C:R,k.handshaking=!1,++k.handshakes,k.peerCertificate=_?k.session.serverCertificate:k.session.clientCertificate,W.flush(k),k.isConnected=!0,k.connected(k),k.process()},W.handleAlert=function(k,d){var f=d.fragment,j={level:f.getByte(),description:f.getByte()},m;switch(j.description){case W.Alert.Description.close_notify:m="Connection closed.";break;case W.Alert.Description.unexpected_message:m="Unexpected message.";break;case W.Alert.Description.bad_record_mac:m="Bad record MAC.";break;case W.Alert.Description.decryption_failed:m="Decryption failed.";break;case W.Alert.Description.record_overflow:m="Record overflow.";break;case W.Alert.Description.decompression_failure:m="Decompression failed.";break;case W.Alert.Description.handshake_failure:m="Handshake failure.";break;case W.Alert.Description.bad_certificate:m="Bad certificate.";break;case W.Alert.Description.unsupported_certificate:m="Unsupported certificate.";break;case W.Alert.Description.certificate_revoked:m="Certificate revoked.";break;case W.Alert.Description.certificate_expired:m="Certificate expired.";break;case W.Alert.Description.certificate_unknown:m="Certificate unknown.";break;case W.Alert.Description.illegal_parameter:m="Illegal parameter.";break;case W.Alert.Description.unknown_ca:m="Unknown certificate authority.";break;case W.Alert.Description.access_denied:m="Access denied.";break;case W.Alert.Description.decode_error:m="Decode error.";break;case W.Alert.Description.decrypt_error:m="Decrypt error.";break;case W.Alert.Description.export_restriction:m="Export restriction.";break;case W.Alert.Description.protocol_version:m="Unsupported protocol version.";break;case W.Alert.Description.insufficient_security:m="Insufficient security.";break;case W.Alert.Description.internal_error:m="Internal error.";break;case W.Alert.Description.user_canceled:m="User canceled.";break;case W.Alert.Description.no_renegotiation:m="Renegotiation not supported.";break;default:m="Unknown error.";break}if(j.description===W.Alert.Description.close_notify)return k.close();k.error(k,{message:m,send:!1,origin:k.entity===W.ConnectionEnd.client?"server":"client",alert:j}),k.process()},W.handleHandshake=function(k,d){var f=d.fragment,j=f.getByte(),m=f.getInt24();if(m>f.length())return k.fragmented=d,d.fragment=Z.util.createBuffer(),f.read-=4,k.process();k.fragmented=null,f.read-=4;var Z1=f.bytes(m+4);if(f.read+=4,j in d1[k.entity][k.expect]){if(k.entity===W.ConnectionEnd.server&&!k.open&&!k.fail)k.handshaking=!0,k.session={version:null,extensions:{server_name:{serverNameList:[]}},cipherSuite:null,compressionMethod:null,serverCertificate:null,clientCertificate:null,md5:Z.md.md5.create(),sha1:Z.md.sha1.create()};if(j!==W.HandshakeType.hello_request&&j!==W.HandshakeType.certificate_verify&&j!==W.HandshakeType.finished)k.session.md5.update(Z1),k.session.sha1.update(Z1);d1[k.entity][k.expect][j](k,d,m)}else W.handleUnexpected(k,d)},W.handleApplicationData=function(k,d){k.data.putBuffer(d.fragment),k.dataReady(k),k.process()},W.handleHeartbeat=function(k,d){var f=d.fragment,j=f.getByte(),m=f.getInt16(),Z1=f.getBytes(m);if(j===W.HeartbeatMessageType.heartbeat_request){if(k.handshaking||m>Z1.length)return k.process();W.queue(k,W.createRecord(k,{type:W.ContentType.heartbeat,data:W.createHeartbeat(W.HeartbeatMessageType.heartbeat_response,Z1)})),W.flush(k)}else if(j===W.HeartbeatMessageType.heartbeat_response){if(Z1!==k.expectedHeartbeatPayload)return k.process();if(k.heartbeatReceived)k.heartbeatReceived(k,Z.util.createBuffer(Z1))}k.process()};var $=0,q=1,B=2,D=3,F=4,P=5,N=6,C=7,L=8,V=0,M=1,I=2,E=3,w=4,A=5,R=6,T=W.handleUnexpected,S=W.handleChangeCipherSpec,v=W.handleAlert,h=W.handleHandshake,x=W.handleApplicationData,p=W.handleHeartbeat,n=[];n[W.ConnectionEnd.client]=[[T,v,h,T,p],[T,v,h,T,p],[T,v,h,T,p],[T,v,h,T,p],[T,v,h,T,p],[S,v,T,T,p],[T,v,h,T,p],[T,v,h,x,p],[T,v,h,T,p]],n[W.ConnectionEnd.server]=[[T,v,h,T,p],[T,v,h,T,p],[T,v,h,T,p],[T,v,h,T,p],[S,v,T,T,p],[T,v,h,T,p],[T,v,h,x,p],[T,v,h,T,p]];var{handleHelloRequest:t,handleServerHello:Y1,handleCertificate:G1,handleServerKeyExchange:V1,handleCertificateRequest:C1,handleServerHelloDone:N1,handleFinished:j1}=W,d1=[];d1[W.ConnectionEnd.client]=[[T,T,Y1,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,G1,V1,C1,N1,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,T,V1,C1,N1,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,T,T,C1,N1,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,T,T,T,N1,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,j1],[t,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T],[t,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T]];var{handleClientHello:D1,handleClientKeyExchange:e,handleCertificateVerify:P1}=W;d1[W.ConnectionEnd.server]=[[T,D1,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T],[T,T,T,T,T,T,T,T,T,T,T,G1,T,T,T,T,T,T,T,T,T],[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,e,T,T,T,T],[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,P1,T,T,T,T,T],[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T],[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,j1],[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T],[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T]],W.generateKeys=function(k,d){var f=J,j=d.client_random+d.server_random;if(!k.session.resuming)d.master_secret=f(d.pre_master_secret,"master secret",j,48).bytes(),d.pre_master_secret=null;j=d.server_random+d.client_random;var m=2*d.mac_key_length+2*d.enc_key_length,Z1=k.version.major===W.Versions.TLS_1_0.major&&k.version.minor===W.Versions.TLS_1_0.minor;if(Z1)m+=2*d.fixed_iv_length;var _=f(d.master_secret,"key expansion",j,m),J1={client_write_MAC_key:_.getBytes(d.mac_key_length),server_write_MAC_key:_.getBytes(d.mac_key_length),client_write_key:_.getBytes(d.enc_key_length),server_write_key:_.getBytes(d.enc_key_length)};if(Z1)J1.client_write_IV=_.getBytes(d.fixed_iv_length),J1.server_write_IV=_.getBytes(d.fixed_iv_length);return J1},W.createConnectionState=function(k){var d=k.entity===W.ConnectionEnd.client,f=function(){var Z1={sequenceNumber:[0,0],macKey:null,macLength:0,macFunction:null,cipherState:null,cipherFunction:function(_){return!0},compressionState:null,compressFunction:function(_){return!0},updateSequenceNumber:function(){if(Z1.sequenceNumber[1]===4294967295)Z1.sequenceNumber[1]=0,++Z1.sequenceNumber[0];else++Z1.sequenceNumber[1]}};return Z1},j={read:f(),write:f()};if(j.read.update=function(Z1,_){if(!j.read.cipherFunction(_,j.read))Z1.error(Z1,{message:"Could not decrypt record or bad MAC.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.bad_record_mac}});else if(!j.read.compressFunction(Z1,_,j.read))Z1.error(Z1,{message:"Could not decompress record.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.decompression_failure}});return!Z1.fail},j.write.update=function(Z1,_){if(!j.write.compressFunction(Z1,_,j.write))Z1.error(Z1,{message:"Could not compress record.",send:!1,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.internal_error}});else if(!j.write.cipherFunction(_,j.write))Z1.error(Z1,{message:"Could not encrypt record.",send:!1,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.internal_error}});return!Z1.fail},k.session){var m=k.session.sp;switch(k.session.cipherSuite.initSecurityParameters(m),m.keys=W.generateKeys(k,m),j.read.macKey=d?m.keys.server_write_MAC_key:m.keys.client_write_MAC_key,j.write.macKey=d?m.keys.client_write_MAC_key:m.keys.server_write_MAC_key,k.session.cipherSuite.initConnectionState(j,k,m),m.compression_algorithm){case W.CompressionMethod.none:break;case W.CompressionMethod.deflate:j.read.compressFunction=H,j.write.compressFunction=Y;break;default:throw new Error("Unsupported compression algorithm.")}}return j},W.createRandom=function(){var k=new Date,d=+k+k.getTimezoneOffset()*60000,f=Z.util.createBuffer();return f.putInt32(d),f.putBytes(Z.random.getBytes(28)),f},W.createRecord=function(k,d){if(!d.data)return null;var f={type:d.type,version:{major:k.version.major,minor:k.version.minor},length:d.data.length(),fragment:d.data};return f},W.createAlert=function(k,d){var f=Z.util.createBuffer();return f.putByte(d.level),f.putByte(d.description),W.createRecord(k,{type:W.ContentType.alert,data:f})},W.createClientHello=function(k){k.session.clientHelloVersion={major:k.version.major,minor:k.version.minor};var d=Z.util.createBuffer();for(var f=0;f0)M1+=2;var u1=k.session.id,s1=u1.length+1+2+4+28+2+m+1+_+M1,a1=Z.util.createBuffer();if(a1.putByte(W.HandshakeType.client_hello),a1.putInt24(s1),a1.putByte(k.version.major),a1.putByte(k.version.minor),a1.putBytes(k.session.sp.client_random),z(a1,1,Z.util.createBuffer(u1)),z(a1,2,d),z(a1,1,Z1),M1>0)z(a1,2,J1);return a1},W.createServerHello=function(k){var d=k.session.id,f=d.length+1+2+4+28+2+1,j=Z.util.createBuffer();return j.putByte(W.HandshakeType.server_hello),j.putInt24(f),j.putByte(k.version.major),j.putByte(k.version.minor),j.putBytes(k.session.sp.server_random),z(j,1,Z.util.createBuffer(d)),j.putByte(k.session.cipherSuite.id[0]),j.putByte(k.session.cipherSuite.id[1]),j.putByte(k.session.compressionMethod),j},W.createCertificate=function(k){var d=k.entity===W.ConnectionEnd.client,f=null;if(k.getCertificate){var j;if(d)j=k.session.certificateRequest;else j=k.session.extensions.server_name.serverNameList;f=k.getCertificate(k,j)}var m=Z.util.createBuffer();if(f!==null)try{if(!Z.util.isArray(f))f=[f];var Z1=null;for(var _=0;_0)f.putByte(W.HandshakeType.server_key_exchange),f.putInt24(d);return f},W.getClientSignature=function(k,d){var f=Z.util.createBuffer();f.putBuffer(k.session.md5.digest()),f.putBuffer(k.session.sha1.digest()),f=f.getBytes(),k.getSignature=k.getSignature||function(j,m,Z1){var _=null;if(j.getPrivateKey)try{_=j.getPrivateKey(j,j.session.clientCertificate),_=Z.pki.privateKeyFromPem(_)}catch(J1){j.error(j,{message:"Could not get private key.",cause:J1,send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.internal_error}})}if(_===null)j.error(j,{message:"No private key set.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.internal_error}});else m=_.sign(m,null);Z1(j,m)},k.getSignature(k,f,d)},W.createCertificateVerify=function(k,d){var f=d.length+2,j=Z.util.createBuffer();return j.putByte(W.HandshakeType.certificate_verify),j.putInt24(f),j.putInt16(d.length),j.putBytes(d),j},W.createCertificateRequest=function(k){var d=Z.util.createBuffer();d.putByte(1);var f=Z.util.createBuffer();for(var j in k.caStore.certs){var m=k.caStore.certs[j],Z1=Z.pki.distinguishedNameToAsn1(m.subject),_=Z.asn1.toDer(Z1);f.putInt16(_.length()),f.putBuffer(_)}var J1=1+d.length()+2+f.length(),B1=Z.util.createBuffer();return B1.putByte(W.HandshakeType.certificate_request),B1.putInt24(J1),z(B1,1,d),z(B1,2,f),B1},W.createServerHelloDone=function(k){var d=Z.util.createBuffer();return d.putByte(W.HandshakeType.server_hello_done),d.putInt24(0),d},W.createChangeCipherSpec=function(){var k=Z.util.createBuffer();return k.putByte(1),k},W.createFinished=function(k){var d=Z.util.createBuffer();d.putBuffer(k.session.md5.digest()),d.putBuffer(k.session.sha1.digest());var f=k.entity===W.ConnectionEnd.client,j=k.session.sp,m=12,Z1=J,_=f?"client finished":"server finished";d=Z1(j.master_secret,_,d.getBytes(),m);var J1=Z.util.createBuffer();return J1.putByte(W.HandshakeType.finished),J1.putInt24(d.length()),J1.putBuffer(d),J1},W.createHeartbeat=function(k,d,f){if(typeof f==="undefined")f=d.length;var j=Z.util.createBuffer();j.putByte(k),j.putInt16(f),j.putBytes(d);var m=j.length(),Z1=Math.max(16,m-f-3);return j.putBytes(Z.random.getBytes(Z1)),j},W.queue=function(k,d){if(!d)return;if(d.fragment.length()===0){if(d.type===W.ContentType.handshake||d.type===W.ContentType.alert||d.type===W.ContentType.change_cipher_spec)return}if(d.type===W.ContentType.handshake){var f=d.fragment.bytes();k.session.md5.update(f),k.session.sha1.update(f),f=null}var j;if(d.fragment.length()<=W.MaxFragment)j=[d];else{j=[];var m=d.fragment.bytes();while(m.length>W.MaxFragment)j.push(W.createRecord(k,{type:d.type,data:Z.util.createBuffer(m.slice(0,W.MaxFragment))})),m=m.slice(W.MaxFragment);if(m.length>0)j.push(W.createRecord(k,{type:d.type,data:Z.util.createBuffer(m)}))}for(var Z1=0;Z10)_=f.order[0];if(_!==null&&_ in f.cache){Z1=f.cache[_],delete f.cache[_];for(var J1 in f.order)if(f.order[J1]===_){f.order.splice(J1,1);break}}return Z1},f.setSession=function(m,Z1){if(f.order.length===f.capacity){var _=f.order.shift();delete f.cache[_]}var _=Z.util.bytesToHex(m);f.order.push(_),f.cache[_]=Z1}}return f},W.createConnection=function(k){var d=null;if(k.caStore)if(Z.util.isArray(k.caStore))d=Z.pki.createCaStore(k.caStore);else d=k.caStore;else d=Z.pki.createCaStore();var f=k.cipherSuites||null;if(f===null){f=[];for(var j in W.CipherSuites)f.push(W.CipherSuites[j])}var m=k.server?W.ConnectionEnd.server:W.ConnectionEnd.client,Z1=k.sessionCache?W.createSessionCache(k.sessionCache):null,_={version:{major:W.Version.major,minor:W.Version.minor},entity:m,sessionId:k.sessionId,caStore:d,sessionCache:Z1,cipherSuites:f,connected:k.connected,virtualHost:k.virtualHost||null,verifyClient:k.verifyClient||!1,verify:k.verify||function(H1,M1,u1,s1){return M1},verifyOptions:k.verifyOptions||{},getCertificate:k.getCertificate||null,getPrivateKey:k.getPrivateKey||null,getSignature:k.getSignature||null,input:Z.util.createBuffer(),tlsData:Z.util.createBuffer(),data:Z.util.createBuffer(),tlsDataReady:k.tlsDataReady,dataReady:k.dataReady,heartbeatReceived:k.heartbeatReceived,closed:k.closed,error:function(H1,M1){if(M1.origin=M1.origin||(H1.entity===W.ConnectionEnd.client?"client":"server"),M1.send)W.queue(H1,W.createAlert(H1,M1.alert)),W.flush(H1);var u1=M1.fatal!==!1;if(u1)H1.fail=!0;if(k.error(H1,M1),u1)H1.close(!1)},deflate:k.deflate||null,inflate:k.inflate||null};_.reset=function(H1){_.version={major:W.Version.major,minor:W.Version.minor},_.record=null,_.session=null,_.peerCertificate=null,_.state={pending:null,current:null},_.expect=_.entity===W.ConnectionEnd.client?$:V,_.fragmented=null,_.records=[],_.open=!1,_.handshakes=0,_.handshaking=!1,_.isConnected=!1,_.fail=!(H1||typeof H1==="undefined"),_.input.clear(),_.tlsData.clear(),_.data.clear(),_.state.current=W.createConnectionState(_)},_.reset();var J1=function(H1,M1){var u1=M1.type-W.ContentType.change_cipher_spec,s1=n[H1.entity][H1.expect];if(u1 in s1)s1[u1](H1,M1);else W.handleUnexpected(H1,M1)},B1=function(H1){var M1=0,u1=H1.input,s1=u1.length();if(s1<5)M1=5-s1;else{H1.record={type:u1.getByte(),version:{major:u1.getByte(),minor:u1.getByte()},length:u1.getInt16(),fragment:Z.util.createBuffer(),ready:!1};var a1=H1.record.version.major===H1.version.major;if(a1&&H1.session&&H1.session.version)a1=H1.record.version.minor===H1.version.minor;if(!a1)H1.error(H1,{message:"Incompatible TLS version.",send:!0,alert:{level:W.Alert.Level.fatal,description:W.Alert.Description.protocol_version}})}return M1},L1=function(H1){var M1=0,u1=H1.input,s1=u1.length();if(s10){if(_.sessionCache)M1=_.sessionCache.getSession(H1);if(M1===null)H1=""}if(H1.length===0&&_.sessionCache){if(M1=_.sessionCache.getSession(),M1!==null)H1=M1.id}if(_.session={id:H1,version:null,cipherSuite:null,compressionMethod:null,serverCertificate:null,certificateRequest:null,clientCertificate:null,sp:{},md5:Z.md.md5.create(),sha1:Z.md.sha1.create()},M1)_.version=M1.version,_.session.sp=M1.sp;_.session.sp.client_random=W.createRandom().getBytes(),_.open=!0,W.queue(_,W.createRecord(_,{type:W.ContentType.handshake,data:W.createClientHello(_)})),W.flush(_)}},_.process=function(H1){var M1=0;if(H1)_.input.putBytes(H1);if(!_.fail){if(_.record!==null&&_.record.ready&&_.record.fragment.isEmpty())_.record=null;if(_.record===null)M1=B1(_);if(!_.fail&&_.record!==null&&!_.record.ready)M1=L1(_);if(!_.fail&&_.record!==null&&_.record.ready)J1(_,_.record)}return M1},_.prepare=function(H1){return W.queue(_,W.createRecord(_,{type:W.ContentType.application_data,data:Z.util.createBuffer(H1)})),W.flush(_)},_.prepareHeartbeatRequest=function(H1,M1){if(H1 instanceof Z.util.ByteBuffer)H1=H1.bytes();if(typeof M1==="undefined")M1=H1.length;return _.expectedHeartbeatPayload=H1,W.queue(_,W.createRecord(_,{type:W.ContentType.heartbeat,data:W.createHeartbeat(W.HeartbeatMessageType.heartbeat_request,H1,M1)})),W.flush(_)},_.close=function(H1){if(!_.fail&&_.sessionCache&&_.session){var M1={id:_.session.id,version:_.session.version,sp:_.session.sp};M1.sp.keys=null,_.sessionCache.setSession(M1.id,M1)}if(_.open){if(_.open=!1,_.input.clear(),_.isConnected||_.handshaking)_.isConnected=_.handshaking=!1,W.queue(_,W.createAlert(_,{level:W.Alert.Level.warning,description:W.Alert.Description.close_notify})),W.flush(_);_.closed(_)}_.reset(H1)},_},X.exports=Z.tls=Z.tls||{};for(S1 in W)if(typeof W[S1]!=="function")Z.tls[S1]=W[S1];var S1;Z.tls.prf_tls1=J,Z.tls.hmac_sha1=G,Z.tls.createSessionCache=W.createSessionCache,Z.tls.createConnection=W.createConnection}}),wo=W1({"node_modules/node-forge/lib/aesCipherSuites.js"(Q,X){var Z=y0();NZ(),hM();var J=X.exports=Z.tls;J.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA={id:[0,47],name:"TLS_RSA_WITH_AES_128_CBC_SHA",initSecurityParameters:function($){$.bulk_cipher_algorithm=J.BulkCipherAlgorithm.aes,$.cipher_type=J.CipherType.block,$.enc_key_length=16,$.block_length=16,$.fixed_iv_length=16,$.record_iv_length=16,$.mac_algorithm=J.MACAlgorithm.hmac_sha1,$.mac_length=20,$.mac_key_length=20},initConnectionState:G},J.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA={id:[0,53],name:"TLS_RSA_WITH_AES_256_CBC_SHA",initSecurityParameters:function($){$.bulk_cipher_algorithm=J.BulkCipherAlgorithm.aes,$.cipher_type=J.CipherType.block,$.enc_key_length=32,$.block_length=16,$.fixed_iv_length=16,$.record_iv_length=16,$.mac_algorithm=J.MACAlgorithm.hmac_sha1,$.mac_length=20,$.mac_key_length=20},initConnectionState:G};function G($,q,B){var D=q.entity===Z.tls.ConnectionEnd.client;$.read.cipherState={init:!1,cipher:Z.cipher.createDecipher("AES-CBC",D?B.keys.server_write_key:B.keys.client_write_key),iv:D?B.keys.server_write_IV:B.keys.client_write_IV},$.write.cipherState={init:!1,cipher:Z.cipher.createCipher("AES-CBC",D?B.keys.client_write_key:B.keys.server_write_key),iv:D?B.keys.client_write_IV:B.keys.server_write_IV},$.read.cipherFunction=z,$.write.cipherFunction=Y,$.read.macLength=$.write.macLength=B.mac_length,$.read.macFunction=$.write.macFunction=J.hmac_sha1}function Y($,q){var B=!1,D=q.macFunction(q.macKey,q.sequenceNumber,$);$.fragment.putBytes(D),q.updateSequenceNumber();var F;if($.version.minor===J.Versions.TLS_1_0.minor)F=q.cipherState.init?null:q.cipherState.iv;else F=Z.random.getBytesSync(16);q.cipherState.init=!0;var P=q.cipherState.cipher;if(P.start({iv:F}),$.version.minor>=J.Versions.TLS_1_1.minor)P.output.putBytes(F);if(P.update($.fragment),P.finish(H))$.fragment=P.output,$.length=$.fragment.length(),B=!0;return B}function H($,q,B){if(!B){var D=$-q.length()%$;q.fillWithByte(D-1,D)}return!0}function K($,q,B){var D=!0;if(B){var F=q.length(),P=q.last();for(var N=F-1-P;N=P)$.fragment=F.output.getBytes(C-P),N=F.output.getBytes(P);else $.fragment=F.output.getBytes();$.fragment=Z.util.createBuffer($.fragment),$.length=$.fragment.length();var L=q.macFunction(q.macKey,q.sequenceNumber,$);return q.updateSequenceNumber(),B=W(q.macKey,N,L)&&B,B}function W($,q,B){var D=Z.hmac.create();return D.start("SHA1",$),D.update(q),q=D.digest().getBytes(),D.start(null,null),D.update(B),B=D.digest().getBytes(),q===B}}}),fM=W1({"node_modules/node-forge/lib/sha512.js"(Q,X){var Z=y0();xQ(),d0();var J=X.exports=Z.sha512=Z.sha512||{};Z.md.sha512=Z.md.algorithms.sha512=J;var G=Z.sha384=Z.sha512.sha384=Z.sha512.sha384||{};G.create=function(){return J.create("SHA-384")},Z.md.sha384=Z.md.algorithms.sha384=G,Z.sha512.sha256=Z.sha512.sha256||{create:function(){return J.create("SHA-512/256")}},Z.md["sha512/256"]=Z.md.algorithms["sha512/256"]=Z.sha512.sha256,Z.sha512.sha224=Z.sha512.sha224||{create:function(){return J.create("SHA-512/224")}},Z.md["sha512/224"]=Z.md.algorithms["sha512/224"]=Z.sha512.sha224,J.create=function(q){if(!H)W();if(typeof q==="undefined")q="SHA-512";if(!(q in z))throw new Error("Invalid SHA-512 algorithm: "+q);var B=z[q],D=null,F=Z.util.createBuffer(),P=new Array(80);for(var N=0;N<80;++N)P[N]=new Array(2);var C=64;switch(q){case"SHA-384":C=48;break;case"SHA-512/256":C=32;break;case"SHA-512/224":C=28;break}var L={algorithm:q.replace("-","").toLowerCase(),blockLength:128,digestLength:C,messageLength:0,fullMessageLength:null,messageLengthSize:16};return L.start=function(){L.messageLength=0,L.fullMessageLength=L.messageLength128=[];var V=L.messageLengthSize/4;for(var M=0;M>>0,I>>>0];for(var E=L.fullMessageLength.length-1;E>=0;--E)L.fullMessageLength[E]+=I[1],I[1]=I[0]+(L.fullMessageLength[E]/4294967296>>>0),L.fullMessageLength[E]=L.fullMessageLength[E]>>>0,I[0]=I[1]/4294967296>>>0;if(F.putBytes(V),$(D,P,F),F.read>2048||F.length()===0)F.compact();return L},L.digest=function(){var V=Z.util.createBuffer();V.putBytes(F.bytes());var M=L.fullMessageLength[L.fullMessageLength.length-1]+L.messageLengthSize,I=M&L.blockLength-1;V.putBytes(Y.substr(0,L.blockLength-I));var E,w,A=L.fullMessageLength[0]*8;for(var R=0;R>>0,A+=w,V.putInt32(A>>>0),A=E>>>0;V.putInt32(A);var T=new Array(D.length);for(var R=0;R=128){for(e=0;e<16;++e)B[e][0]=D.getInt32()>>>0,B[e][1]=D.getInt32()>>>0;for(;e<80;++e)O1=B[e-2],P1=O1[0],Q1=O1[1],F=((P1>>>19|Q1<<13)^(Q1>>>29|P1<<3)^P1>>>6)>>>0,P=((P1<<13|Q1>>>19)^(Q1<<3|P1>>>29)^(P1<<26|Q1>>>6))>>>0,k=B[e-15],P1=k[0],Q1=k[1],N=((P1>>>1|Q1<<31)^(P1>>>8|Q1<<24)^P1>>>7)>>>0,C=((P1<<31|Q1>>>1)^(P1<<24|Q1>>>8)^(P1<<25|Q1>>>7))>>>0,S1=B[e-7],d=B[e-16],Q1=P+S1[1]+C+d[1],B[e][0]=F+S1[0]+N+d[0]+(Q1/4294967296>>>0)>>>0,B[e][1]=Q1>>>0;T=q[0][0],S=q[0][1],v=q[1][0],h=q[1][1],x=q[2][0],p=q[2][1],n=q[3][0],t=q[3][1],Y1=q[4][0],G1=q[4][1],V1=q[5][0],C1=q[5][1],N1=q[6][0],j1=q[6][1],d1=q[7][0],D1=q[7][1];for(e=0;e<80;++e)M=((Y1>>>14|G1<<18)^(Y1>>>18|G1<<14)^(G1>>>9|Y1<<23))>>>0,I=((Y1<<18|G1>>>14)^(Y1<<14|G1>>>18)^(G1<<23|Y1>>>9))>>>0,E=(N1^Y1&(V1^N1))>>>0,w=(j1^G1&(C1^j1))>>>0,L=((T>>>28|S<<4)^(S>>>2|T<<30)^(S>>>7|T<<25))>>>0,V=((T<<4|S>>>28)^(S<<30|T>>>2)^(S<<25|T>>>7))>>>0,A=(T&v|x&(T^v))>>>0,R=(S&h|p&(S^h))>>>0,Q1=D1+I+w+K[e][1]+B[e][1],F=d1+M+E+K[e][0]+B[e][0]+(Q1/4294967296>>>0)>>>0,P=Q1>>>0,Q1=V+R,N=L+A+(Q1/4294967296>>>0)>>>0,C=Q1>>>0,d1=N1,D1=j1,N1=V1,j1=C1,V1=Y1,C1=G1,Q1=t+P,Y1=n+F+(Q1/4294967296>>>0)>>>0,G1=Q1>>>0,n=x,t=p,x=v,p=h,v=T,h=S,Q1=P+C,T=F+N+(Q1/4294967296>>>0)>>>0,S=Q1>>>0;Q1=q[0][1]+S,q[0][0]=q[0][0]+T+(Q1/4294967296>>>0)>>>0,q[0][1]=Q1>>>0,Q1=q[1][1]+h,q[1][0]=q[1][0]+v+(Q1/4294967296>>>0)>>>0,q[1][1]=Q1>>>0,Q1=q[2][1]+p,q[2][0]=q[2][0]+x+(Q1/4294967296>>>0)>>>0,q[2][1]=Q1>>>0,Q1=q[3][1]+t,q[3][0]=q[3][0]+n+(Q1/4294967296>>>0)>>>0,q[3][1]=Q1>>>0,Q1=q[4][1]+G1,q[4][0]=q[4][0]+Y1+(Q1/4294967296>>>0)>>>0,q[4][1]=Q1>>>0,Q1=q[5][1]+C1,q[5][0]=q[5][0]+V1+(Q1/4294967296>>>0)>>>0,q[5][1]=Q1>>>0,Q1=q[6][1]+j1,q[6][0]=q[6][0]+N1+(Q1/4294967296>>>0)>>>0,q[6][1]=Q1>>>0,Q1=q[7][1]+D1,q[7][0]=q[7][0]+d1+(Q1/4294967296>>>0)>>>0,q[7][1]=Q1>>>0,f-=128}}}}),Eo=W1({"node_modules/node-forge/lib/asn1-validator.js"(Q){var X=y0();WQ();var Z=X.asn1;Q.privateKeyValidator={name:"PrivateKeyInfo",tagClass:Z.Class.UNIVERSAL,type:Z.Type.SEQUENCE,constructed:!0,value:[{name:"PrivateKeyInfo.version",tagClass:Z.Class.UNIVERSAL,type:Z.Type.INTEGER,constructed:!1,capture:"privateKeyVersion"},{name:"PrivateKeyInfo.privateKeyAlgorithm",tagClass:Z.Class.UNIVERSAL,type:Z.Type.SEQUENCE,constructed:!0,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:Z.Class.UNIVERSAL,type:Z.Type.OID,constructed:!1,capture:"privateKeyOid"}]},{name:"PrivateKeyInfo",tagClass:Z.Class.UNIVERSAL,type:Z.Type.OCTETSTRING,constructed:!1,capture:"privateKey"}]},Q.publicKeyValidator={name:"SubjectPublicKeyInfo",tagClass:Z.Class.UNIVERSAL,type:Z.Type.SEQUENCE,constructed:!0,captureAsn1:"subjectPublicKeyInfo",value:[{name:"SubjectPublicKeyInfo.AlgorithmIdentifier",tagClass:Z.Class.UNIVERSAL,type:Z.Type.SEQUENCE,constructed:!0,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:Z.Class.UNIVERSAL,type:Z.Type.OID,constructed:!1,capture:"publicKeyOid"}]},{tagClass:Z.Class.UNIVERSAL,type:Z.Type.BITSTRING,constructed:!1,composed:!0,captureBitStringValue:"ed25519PublicKey"}]}}}),jo=W1({"node_modules/node-forge/lib/ed25519.js"(Q,X){var Z=y0();lq(),d9(),fM(),d0();var J=Eo(),G=J.publicKeyValidator,Y=J.privateKeyValidator;if(typeof H==="undefined")H=Z.jsbn.BigInteger;var H,K=Z.util.ByteBuffer,z=typeof Buffer==="undefined"?Uint8Array:Buffer;Z.pki=Z.pki||{},X.exports=Z.pki.ed25519=Z.ed25519=Z.ed25519||{};var W=Z.ed25519;W.constants={},W.constants.PUBLIC_KEY_BYTE_LENGTH=32,W.constants.PRIVATE_KEY_BYTE_LENGTH=64,W.constants.SEED_BYTE_LENGTH=32,W.constants.SIGN_BYTE_LENGTH=64,W.constants.HASH_BYTE_LENGTH=64,W.generateKeyPair=function(k){k=k||{};var d=k.seed;if(d===void 0)d=Z.random.getBytesSync(W.constants.SEED_BYTE_LENGTH);else if(typeof d==="string"){if(d.length!==W.constants.SEED_BYTE_LENGTH)throw new TypeError('"seed" must be '+W.constants.SEED_BYTE_LENGTH+" bytes in length.")}else if(!(d instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, Uint8Array, or a binary string.');d=$({message:d,encoding:"binary"});var f=new z(W.constants.PUBLIC_KEY_BYTE_LENGTH),j=new z(W.constants.PRIVATE_KEY_BYTE_LENGTH);for(var m=0;m<32;++m)j[m]=d[m];return M(f,j),{publicKey:f,privateKey:j}},W.privateKeyFromAsn1=function(k){var d={},f=[],j=Z.asn1.validate(k,Y,d,f);if(!j){var m=new Error("Invalid Key.");throw m.errors=f,m}var Z1=Z.asn1.derToOid(d.privateKeyOid),_=Z.oids.EdDSA25519;if(Z1!==_)throw new Error('Invalid OID "'+Z1+'"; OID must be "'+_+'".');var J1=d.privateKey,B1=$({message:Z.asn1.fromDer(J1).value,encoding:"binary"});return{privateKeyBytes:B1}},W.publicKeyFromAsn1=function(k){var d={},f=[],j=Z.asn1.validate(k,G,d,f);if(!j){var m=new Error("Invalid Key.");throw m.errors=f,m}var Z1=Z.asn1.derToOid(d.publicKeyOid),_=Z.oids.EdDSA25519;if(Z1!==_)throw new Error('Invalid OID "'+Z1+'"; OID must be "'+_+'".');var J1=d.ed25519PublicKey;if(J1.length!==W.constants.PUBLIC_KEY_BYTE_LENGTH)throw new Error("Key length is invalid.");return $({message:J1,encoding:"binary"})},W.publicKeyFromPrivateKey=function(k){k=k||{};var d=$({message:k.privateKey,encoding:"binary"});if(d.length!==W.constants.PRIVATE_KEY_BYTE_LENGTH)throw new TypeError('"options.privateKey" must have a byte length of '+W.constants.PRIVATE_KEY_BYTE_LENGTH);var f=new z(W.constants.PUBLIC_KEY_BYTE_LENGTH);for(var j=0;j=0};function $(k){var d=k.message;if(d instanceof Uint8Array||d instanceof z)return d;var f=k.encoding;if(d===void 0)if(k.md)d=k.md.digest().getBytes(),f="binary";else throw new TypeError('"options.message" or "options.md" not specified.');if(typeof d==="string"&&!f)throw new TypeError('"options.encoding" must be "binary" or "utf8".');if(typeof d==="string"){if(typeof Buffer!=="undefined")return Buffer.from(d,f);d=new K(d,f)}else if(!(d instanceof K))throw new TypeError('"options.message" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a string with "options.encoding" specifying its encoding.');var j=new z(d.length());for(var m=0;m=32;--j){f=0;for(m=j-32,Z1=j-12;m>8,d[m]-=f*256;d[m]+=f,d[j]=0}f=0;for(m=0;m<32;++m)d[m]+=f-(d[31]>>4)*C[m],f=d[m]>>8,d[m]&=255;for(m=0;m<32;++m)d[m]-=f*C[m];for(j=0;j<32;++j)d[j+1]+=d[j]>>8,k[j]=d[j]&255}function A(k){var d=new Float64Array(64);for(var f=0;f<64;++f)d[f]=k[f],k[f]=0;w(k,d)}function R(k,d){var f=e(),j=e(),m=e(),Z1=e(),_=e(),J1=e(),B1=e(),L1=e(),H1=e();Q1(f,k[1],k[0]),Q1(H1,d[1],d[0]),S1(f,f,H1),P1(j,k[0],k[1]),P1(H1,d[0],d[1]),S1(j,j,H1),S1(m,k[3],d[3]),S1(m,m,F),S1(Z1,k[2],d[2]),P1(Z1,Z1,Z1),Q1(_,j,f),Q1(J1,Z1,m),P1(B1,Z1,m),P1(L1,j,f),S1(k[0],_,J1),S1(k[1],L1,B1),S1(k[2],B1,J1),S1(k[3],_,L1)}function T(k,d,f){for(var j=0;j<4;++j)D1(k[j],d[j],f)}function S(k,d){var f=e(),j=e(),m=e();j1(m,d[2]),S1(f,d[0],m),S1(j,d[1],m),v(k,j),k[31]^=G1(f)<<7}function v(k,d){var f,j,m,Z1=e(),_=e();for(f=0;f<16;++f)_[f]=d[f];d1(_),d1(_),d1(_);for(j=0;j<2;++j){Z1[0]=_[0]-65517;for(f=1;f<15;++f)Z1[f]=_[f]-65535-(Z1[f-1]>>16&1),Z1[f-1]&=65535;Z1[15]=_[15]-32767-(Z1[14]>>16&1),m=Z1[15]>>16&1,Z1[14]&=65535,D1(_,Z1,1-m)}for(f=0;f<16;f++)k[2*f]=_[f]&255,k[2*f+1]=_[f]>>8}function h(k,d){var f=e(),j=e(),m=e(),Z1=e(),_=e(),J1=e(),B1=e();if(N1(k[2],B),x(k[1],d),O1(m,k[1]),S1(Z1,m,D),Q1(m,m,k[2]),P1(Z1,k[2],Z1),O1(_,Z1),O1(J1,_),S1(B1,J1,_),S1(f,B1,m),S1(f,f,Z1),p(f,f),S1(f,f,m),S1(f,f,Z1),S1(f,f,Z1),S1(k[0],f,Z1),O1(j,k[0]),S1(j,j,Z1),n(j,m))S1(k[0],k[0],L);if(O1(j,k[0]),S1(j,j,Z1),n(j,m))return-1;if(G1(k[0])===d[31]>>7)Q1(k[0],q,k[0]);return S1(k[3],k[0],k[1]),0}function x(k,d){var f;for(f=0;f<16;++f)k[f]=d[2*f]+(d[2*f+1]<<8);k[15]&=32767}function p(k,d){var f=e(),j;for(j=0;j<16;++j)f[j]=d[j];for(j=250;j>=0;--j)if(O1(f,f),j!==1)S1(f,f,d);for(j=0;j<16;++j)k[j]=f[j]}function n(k,d){var f=new z(32),j=new z(32);return v(f,k),v(j,d),t(f,0,j,0)}function t(k,d,f,j){return Y1(k,d,f,j,32)}function Y1(k,d,f,j,m){var Z1,_=0;for(Z1=0;Z1>>8)-1}function G1(k){var d=new z(32);return v(d,k),d[0]&1}function V1(k,d,f){var j,m;N1(k[0],q),N1(k[1],B),N1(k[2],B),N1(k[3],q);for(m=255;m>=0;--m)j=f[m/8|0]>>(m&7)&1,T(k,d,j),R(d,k),R(k,k),T(k,d,j)}function C1(k,d){var f=[e(),e(),e(),e()];N1(f[0],P),N1(f[1],N),N1(f[2],B),S1(f[3],P,N),V1(k,f,d)}function N1(k,d){var f;for(f=0;f<16;f++)k[f]=d[f]|0}function j1(k,d){var f=e(),j;for(j=0;j<16;++j)f[j]=d[j];for(j=253;j>=0;--j)if(O1(f,f),j!==2&&j!==4)S1(f,f,d);for(j=0;j<16;++j)k[j]=f[j]}function d1(k){var d,f,j=1;for(d=0;d<16;++d)f=k[d]+j+65535,j=Math.floor(f/65536),k[d]=f-j*65536;k[0]+=j-1+37*(j-1)}function D1(k,d,f){var j,m=~(f-1);for(var Z1=0;Z1<16;++Z1)j=m&(k[Z1]^d[Z1]),k[Z1]^=j,d[Z1]^=j}function e(k){var d,f=new Float64Array(16);if(k)for(d=0;d0)B=Z.util.fillString(String.fromCharCode(0),D)+B;var F=W.encrypt(B,"NONE"),P=Y.generate(B,$);return{encapsulation:F,key:P}},z.decrypt=function(W,$,q){var B=W.decrypt($,"NONE");return Y.generate(B,q)},z},Z.kem.kdf1=function(Y,H){G(this,Y,0,H||Y.digestLength)},Z.kem.kdf2=function(Y,H){G(this,Y,1,H||Y.digestLength)};function G(Y,H,K,z){Y.generate=function(W,$){var q=new Z.util.ByteBuffer,B=Math.ceil($/z)+K,D=new Z.util.ByteBuffer;for(var F=K;F0)I.value[0].value.push(J.create(J.Class.CONTEXT_SPECIFIC,0,!0,L));if(M.length>0)I.value[0].value.push(J.create(J.Class.CONTEXT_SPECIFIC,1,!0,M));return I.value[0].value.push(J.create(J.Class.UNIVERSAL,J.Type.SET,!0,P.signerInfos)),J.create(J.Class.UNIVERSAL,J.Type.SEQUENCE,!0,[J.create(J.Class.UNIVERSAL,J.Type.OID,!1,J.oidToDer(P.type).getBytes()),I])},addSigner:function(L){var{issuer:V,serialNumber:M}=L;if(L.certificate){var I=L.certificate;if(typeof I==="string")I=Z.pki.certificateFromPem(I);V=I.issuer.attributes,M=I.serialNumber}var E=L.key;if(!E)throw new Error("Could not add PKCS#7 signer; no private key specified.");if(typeof E==="string")E=Z.pki.privateKeyFromPem(E);var w=L.digestAlgorithm||Z.pki.oids.sha1;switch(w){case Z.pki.oids.sha1:case Z.pki.oids.sha256:case Z.pki.oids.sha384:case Z.pki.oids.sha512:case Z.pki.oids.md5:break;default:throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: "+w)}var A=L.authenticatedAttributes||[];if(A.length>0){var R=!1,T=!1;for(var S=0;S0){var C=J.create(J.Class.CONTEXT_SPECIFIC,1,!0,[]);for(var L=0;L=C&&V="8")W="00"+W;var $=Z.util.hexToBytes(W);K.putInt32($.length),K.putBytes($)}function Y(K,z){K.putInt32(z.length),K.putString(z)}function H(){var K=Z.md.sha1.create(),z=arguments.length;for(var W=0;W{let $1=L1(),U1=_.clone().set({hour:$1.get("hour"),minute:$1.get("minute"),second:$1.get("second")});if(D0)U1.add(parseInt(x0,10),R0);if(U0)return U1.format(U0.substring(1).trim());return U1.format(M1)}).replace(/{{\s*yesterday\s*}}/gi,_.clone().subtract(1,"day").format(M1)).replace(/{{\s*tomorrow\s*}}/gi,_.clone().add(1,"d").format(M1)));return J1.foldManager.save(B0,a1),B0}catch(B0){console.error(`Failed to create file: '${t1}'`,B0),new X.Notice("Unable to create new file.")}})}function T(_,J1){var B1;return(B1=J1[L(_,"day")])!=null?B1:null}function S(){let{vault:_}=window.app,{folder:J1}=z(),B1=_.getAbstractFileByPath(X.normalizePath(J1));if(!B1)throw new A("Failed to find daily notes folder");let L1={};return X.Vault.recurseChildren(B1,(H1)=>{if(H1 instanceof X.TFile){let M1=I(H1,"day");if(M1){let u1=L(M1,"day");L1[u1]=H1}}}),L1}var v=class extends Error{};function h(){let{moment:_}=window,J1=_.localeData()._week.dow,B1=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];while(J1)B1.push(B1.shift()),J1--;return B1}function x(_){return h().indexOf(_.toLowerCase())}function p(_){return T0(this,null,function*(){let{vault:J1}=window.app,{template:B1,format:L1,folder:H1}=W(),[M1,u1]=yield C(B1),s1=_.format(L1),a1=yield N(H1,s1);try{let X0=yield J1.create(a1,M1.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(t1,B0,Y0,S0,D0,x0)=>{let R0=window.moment(),U0=_.clone().set({hour:R0.get("hour"),minute:R0.get("minute"),second:R0.get("second")});if(Y0)U0.add(parseInt(S0,10),D0);if(x0)return U0.format(x0.substring(1).trim());return U0.format(L1)}).replace(/{{\s*title\s*}}/gi,s1).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(t1,B0,Y0)=>{let S0=x(B0);return _.weekday(S0).format(Y0.trim())}));return window.app.foldManager.save(X0,u1),X0}catch(X0){console.error(`Failed to create file: '${a1}'`,X0),new X.Notice("Unable to create new file.")}})}function n(_,J1){var B1;return(B1=J1[L(_,"week")])!=null?B1:null}function t(){let _={};if(!k())return _;let{vault:J1}=window.app,{folder:B1}=W(),L1=J1.getAbstractFileByPath(X.normalizePath(B1));if(!L1)throw new v("Failed to find weekly notes folder");return X.Vault.recurseChildren(L1,(H1)=>{if(H1 instanceof X.TFile){let M1=I(H1,"week");if(M1){let u1=L(M1,"week");_[u1]=H1}}}),_}var Y1=class extends Error{};function G1(_){return T0(this,null,function*(){let{vault:J1}=window.app,{template:B1,format:L1,folder:H1}=$(),[M1,u1]=yield C(B1),s1=_.format(L1),a1=yield N(H1,s1);try{let X0=yield J1.create(a1,M1.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(t1,B0,Y0,S0,D0,x0)=>{let R0=window.moment(),U0=_.clone().set({hour:R0.get("hour"),minute:R0.get("minute"),second:R0.get("second")});if(Y0)U0.add(parseInt(S0,10),D0);if(x0)return U0.format(x0.substring(1).trim());return U0.format(L1)}).replace(/{{\s*date\s*}}/gi,s1).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s1));return window.app.foldManager.save(X0,u1),X0}catch(X0){console.error(`Failed to create file: '${a1}'`,X0),new X.Notice("Unable to create new file.")}})}function V1(_,J1){var B1;return(B1=J1[L(_,"month")])!=null?B1:null}function C1(){let _={};if(!d())return _;let{vault:J1}=window.app,{folder:B1}=$(),L1=J1.getAbstractFileByPath(X.normalizePath(B1));if(!L1)throw new Y1("Failed to find monthly notes folder");return X.Vault.recurseChildren(L1,(H1)=>{if(H1 instanceof X.TFile){let M1=I(H1,"month");if(M1){let u1=L(M1,"month");_[u1]=H1}}}),_}var N1=class extends Error{};function j1(_){return T0(this,null,function*(){let{vault:J1}=window.app,{template:B1,format:L1,folder:H1}=q(),[M1,u1]=yield C(B1),s1=_.format(L1),a1=yield N(H1,s1);try{let X0=yield J1.create(a1,M1.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(t1,B0,Y0,S0,D0,x0)=>{let R0=window.moment(),U0=_.clone().set({hour:R0.get("hour"),minute:R0.get("minute"),second:R0.get("second")});if(Y0)U0.add(parseInt(S0,10),D0);if(x0)return U0.format(x0.substring(1).trim());return U0.format(L1)}).replace(/{{\s*date\s*}}/gi,s1).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s1));return window.app.foldManager.save(X0,u1),X0}catch(X0){console.error(`Failed to create file: '${a1}'`,X0),new X.Notice("Unable to create new file.")}})}function d1(_,J1){var B1;return(B1=J1[L(_,"quarter")])!=null?B1:null}function D1(){let _={};if(!f())return _;let{vault:J1}=window.app,{folder:B1}=q(),L1=J1.getAbstractFileByPath(X.normalizePath(B1));if(!L1)throw new N1("Failed to find quarterly notes folder");return X.Vault.recurseChildren(L1,(H1)=>{if(H1 instanceof X.TFile){let M1=I(H1,"quarter");if(M1){let u1=L(M1,"quarter");_[u1]=H1}}}),_}var e=class extends Error{};function P1(_){return T0(this,null,function*(){let{vault:J1}=window.app,{template:B1,format:L1,folder:H1}=B(),[M1,u1]=yield C(B1),s1=_.format(L1),a1=yield N(H1,s1);try{let X0=yield J1.create(a1,M1.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(t1,B0,Y0,S0,D0,x0)=>{let R0=window.moment(),U0=_.clone().set({hour:R0.get("hour"),minute:R0.get("minute"),second:R0.get("second")});if(Y0)U0.add(parseInt(S0,10),D0);if(x0)return U0.format(x0.substring(1).trim());return U0.format(L1)}).replace(/{{\s*date\s*}}/gi,s1).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s1));return window.app.foldManager.save(X0,u1),X0}catch(X0){console.error(`Failed to create file: '${a1}'`,X0),new X.Notice("Unable to create new file.")}})}function Q1(_,J1){var B1;return(B1=J1[L(_,"year")])!=null?B1:null}function O1(){let _={};if(!j())return _;let{vault:J1}=window.app,{folder:B1}=B(),L1=J1.getAbstractFileByPath(X.normalizePath(B1));if(!L1)throw new e("Failed to find yearly notes folder");return X.Vault.recurseChildren(L1,(H1)=>{if(H1 instanceof X.TFile){let M1=I(H1,"year");if(M1){let u1=L(M1,"year");_[u1]=H1}}}),_}function S1(){var _,J1;let{app:B1}=window,L1=B1.internalPlugins.plugins["daily-notes"];if(L1&&L1.enabled)return!0;let H1=B1.plugins.getPlugin("periodic-notes");return H1&&((J1=(_=H1.settings)==null?void 0:_.daily)==null?void 0:J1.enabled)}function k(){var _,J1;let{app:B1}=window;if(B1.plugins.getPlugin("calendar"))return!0;let L1=B1.plugins.getPlugin("periodic-notes");return L1&&((J1=(_=L1.settings)==null?void 0:_.weekly)==null?void 0:J1.enabled)}function d(){var _,J1;let{app:B1}=window,L1=B1.plugins.getPlugin("periodic-notes");return L1&&((J1=(_=L1.settings)==null?void 0:_.monthly)==null?void 0:J1.enabled)}function f(){var _,J1;let{app:B1}=window,L1=B1.plugins.getPlugin("periodic-notes");return L1&&((J1=(_=L1.settings)==null?void 0:_.quarterly)==null?void 0:J1.enabled)}function j(){var _,J1;let{app:B1}=window,L1=B1.plugins.getPlugin("periodic-notes");return L1&&((J1=(_=L1.settings)==null?void 0:_.yearly)==null?void 0:J1.enabled)}function m(_){let J1={day:z,week:W,month:$,quarter:q,year:B}[_];return J1()}function Z1(_,J1){return{day:R,month:G1,week:p}[_](J1)}Q.DEFAULT_DAILY_NOTE_FORMAT=Z,Q.DEFAULT_MONTHLY_NOTE_FORMAT=G,Q.DEFAULT_QUARTERLY_NOTE_FORMAT=Y,Q.DEFAULT_WEEKLY_NOTE_FORMAT=J,Q.DEFAULT_YEARLY_NOTE_FORMAT=H,Q.appHasDailyNotesPluginLoaded=S1,Q.appHasMonthlyNotesPluginLoaded=d,Q.appHasQuarterlyNotesPluginLoaded=f,Q.appHasWeeklyNotesPluginLoaded=k,Q.appHasYearlyNotesPluginLoaded=j,Q.createDailyNote=R,Q.createMonthlyNote=G1,Q.createPeriodicNote=Z1,Q.createQuarterlyNote=j1,Q.createWeeklyNote=p,Q.createYearlyNote=P1,Q.getAllDailyNotes=S,Q.getAllMonthlyNotes=C1,Q.getAllQuarterlyNotes=D1,Q.getAllWeeklyNotes=t,Q.getAllYearlyNotes=O1,Q.getDailyNote=T,Q.getDailyNoteSettings=z,Q.getDateFromFile=I,Q.getDateFromPath=E,Q.getDateUID=L,Q.getMonthlyNote=V1,Q.getMonthlyNoteSettings=$,Q.getPeriodicNoteSettings=m,Q.getQuarterlyNote=d1,Q.getQuarterlyNoteSettings=q,Q.getTemplateInfo=C,Q.getWeeklyNote=n,Q.getWeeklyNoteSettings=W,Q.getYearlyNote=Q1,Q.getYearlyNoteSettings=B}}),ho=W1({"node_modules/obsidian-dataview/lib/index.js"(Q){Object.defineProperty(Q,"__esModule",{value:!0}),require("obsidian");var X=class extends Error{},Z=class extends X{constructor(U){super(`Invalid DateTime: ${U.toMessage()}`)}},J=class extends X{constructor(U){super(`Invalid Interval: ${U.toMessage()}`)}},G=class extends X{constructor(U){super(`Invalid Duration: ${U.toMessage()}`)}},Y=class extends X{},H=class extends X{constructor(U){super(`Invalid unit ${U}`)}},K=class extends X{},z=class extends X{constructor(){super("Zone is an abstract class")}},W="numeric",$="short",q="long",B={year:W,month:W,day:W},D={year:W,month:$,day:W},F={year:W,month:$,day:W,weekday:$},P={year:W,month:q,day:W},N={year:W,month:q,day:W,weekday:q},C={hour:W,minute:W},L={hour:W,minute:W,second:W},V={hour:W,minute:W,second:W,timeZoneName:$},M={hour:W,minute:W,second:W,timeZoneName:q},I={hour:W,minute:W,hourCycle:"h23"},E={hour:W,minute:W,second:W,hourCycle:"h23"},w={hour:W,minute:W,second:W,hourCycle:"h23",timeZoneName:$},A={hour:W,minute:W,second:W,hourCycle:"h23",timeZoneName:q},R={year:W,month:W,day:W,hour:W,minute:W},T={year:W,month:W,day:W,hour:W,minute:W,second:W},S={year:W,month:$,day:W,hour:W,minute:W},v={year:W,month:$,day:W,hour:W,minute:W,second:W},h={year:W,month:$,day:W,weekday:$,hour:W,minute:W},x={year:W,month:q,day:W,hour:W,minute:W,timeZoneName:$},p={year:W,month:q,day:W,hour:W,minute:W,second:W,timeZoneName:$},n={year:W,month:q,day:W,weekday:q,hour:W,minute:W,timeZoneName:q},t={year:W,month:q,day:W,weekday:q,hour:W,minute:W,second:W,timeZoneName:q},Y1=class{get type(){throw new z}get name(){throw new z}get ianaName(){return this.name}get isUniversal(){throw new z}offsetName(U,O){throw new z}formatOffset(U,O){throw new z}offset(U){throw new z}equals(U){throw new z}get isValid(){throw new z}},G1=null,V1=class extends Y1{static get instance(){if(G1===null)G1=new V1;return G1}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(U,{format:O,locale:y}){return gQ(U,O,y)}formatOffset(U,O){return l9(this.offset(U),O)}offset(U){return-new Date(U).getTimezoneOffset()}equals(U){return U.type==="system"}get isValid(){return!0}},C1={};function N1(U){if(!C1[U])C1[U]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:U,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"});return C1[U]}var j1={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function d1(U,O){let y=U.format(O).replace(/\u200E/g,""),g=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(y),[,i,c,a,K1,T1,m1,e1]=g;return[a,i,c,K1,T1,m1,e1]}function D1(U,O){let y=U.formatToParts(O),g=[];for(let i=0;i=0?W0:1000+W0,(v0-_1)/60000}equals(U){return U.type==="iana"&&U.name===this.name}get isValid(){return this.valid}},Q1={};function O1(U,O={}){let y=JSON.stringify([U,O]),g=Q1[y];if(!g)g=new Intl.ListFormat(U,O),Q1[y]=g;return g}var S1={};function k(U,O={}){let y=JSON.stringify([U,O]),g=S1[y];if(!g)g=new Intl.DateTimeFormat(U,O),S1[y]=g;return g}var d={};function f(U,O={}){let y=JSON.stringify([U,O]),g=d[y];if(!g)g=new Intl.NumberFormat(U,O),d[y]=g;return g}var j={};function m(U,O={}){let y=O,{base:g}=y,i=FM(y,["base"]),c=JSON.stringify([U,i]),a=j[c];if(!a)a=new Intl.RelativeTimeFormat(U,O),j[c]=a;return a}var Z1=null;function _(){if(Z1)return Z1;else return Z1=new Intl.DateTimeFormat().resolvedOptions().locale,Z1}function J1(U){let O=U.indexOf("-x-");if(O!==-1)U=U.substring(0,O);let y=U.indexOf("-u-");if(y===-1)return[U];else{let g,i;try{g=k(U).resolvedOptions(),i=U}catch(K1){let T1=U.substring(0,y);g=k(T1).resolvedOptions(),i=T1}let{numberingSystem:c,calendar:a}=g;return[i,c,a]}}function B1(U,O,y){if(y||O){if(!U.includes("-u-"))U+="-u";if(y)U+=`-ca-${y}`;if(O)U+=`-nu-${O}`;return U}else return U}function L1(U){let O=[];for(let y=1;y<=12;y++){let g=Z0.utc(2009,y,1);O.push(U(g))}return O}function H1(U){let O=[];for(let y=1;y<=7;y++){let g=Z0.utc(2016,11,13+y);O.push(U(g))}return O}function M1(U,O,y,g){let i=U.listingMode();if(i==="error")return null;else if(i==="en")return y(O);else return g(O)}function u1(U){if(U.numberingSystem&&U.numberingSystem!=="latn")return!1;else return U.numberingSystem==="latn"||!U.locale||U.locale.startsWith("en")||new Intl.DateTimeFormat(U.intl).resolvedOptions().numberingSystem==="latn"}var s1=class{constructor(U,O,y){this.padTo=y.padTo||0,this.floor=y.floor||!1;let g=y,{padTo:i,floor:c}=g,a=FM(g,["padTo","floor"]);if(!O||Object.keys(a).length>0){let K1=K0({useGrouping:!1},y);if(y.padTo>0)K1.minimumIntegerDigits=y.padTo;this.inf=f(U,K1)}}format(U){if(this.inf){let O=this.floor?Math.floor(U):U;return this.inf.format(O)}else{let O=this.floor?Math.floor(U):B6(U,3);return M0(O,this.padTo)}}},a1=class{constructor(U,O,y){this.opts=y,this.originalZone=void 0;let g=void 0;if(this.opts.timeZone)this.dt=U;else if(U.zone.type==="fixed"){let c=-1*(U.offset/60),a=c>=0?`Etc/GMT+${c}`:`Etc/GMT${c}`;if(U.offset!==0&&P1.create(a).valid)g=a,this.dt=U;else g="UTC",this.dt=U.offset===0?U:U.setZone("UTC").plus({minutes:U.offset}),this.originalZone=U.zone}else if(U.zone.type==="system")this.dt=U;else if(U.zone.type==="iana")this.dt=U,g=U.zone.name;else g="UTC",this.dt=U.setZone("UTC").plus({minutes:U.offset}),this.originalZone=U.zone;let i=K0({},this.opts);i.timeZone=i.timeZone||g,this.dtf=k(O,i)}format(){if(this.originalZone)return this.formatToParts().map(({value:U})=>U).join("");return this.dtf.format(this.dt.toJSDate())}formatToParts(){let U=this.dtf.formatToParts(this.dt.toJSDate());if(this.originalZone)return U.map((O)=>{if(O.type==="timeZoneName"){let y=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return m9(K0({},O),{value:y})}else return O});return U}resolvedOptions(){return this.dtf.resolvedOptions()}},X0=class{constructor(U,O,y){if(this.opts=K0({style:"long"},y),!O&&e8())this.rtf=m(U,y)}format(U,O){if(this.rtf)return this.rtf.format(U,O);else return z1(O,U,this.opts.numeric,this.opts.style!=="long")}formatToParts(U,O){if(this.rtf)return this.rtf.formatToParts(U,O);else return[]}},t1=class{static fromOpts(U){return t1.create(U.locale,U.numberingSystem,U.outputCalendar,U.defaultToEN)}static create(U,O,y,g=!1){let i=U||J0.defaultLocale,c=i||(g?"en-US":_()),a=O||J0.defaultNumberingSystem,K1=y||J0.defaultOutputCalendar;return new t1(c,a,K1,i)}static resetCache(){Z1=null,S1={},d={},j={}}static fromObject({locale:U,numberingSystem:O,outputCalendar:y}={}){return t1.create(U,O,y)}constructor(U,O,y,g){let[i,c,a]=J1(U);this.locale=i,this.numberingSystem=O||c||null,this.outputCalendar=y||a||null,this.intl=B1(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=g,this.fastNumbersCached=null}get fastNumbers(){if(this.fastNumbersCached==null)this.fastNumbersCached=u1(this);return this.fastNumbersCached}listingMode(){let U=this.isEnglish(),O=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return U&&O?"en":"intl"}clone(U){if(!U||Object.getOwnPropertyNames(U).length===0)return this;else return t1.create(U.locale||this.specifiedLocale,U.numberingSystem||this.numberingSystem,U.outputCalendar||this.outputCalendar,U.defaultToEN||!1)}redefaultToEN(U={}){return this.clone(m9(K0({},U),{defaultToEN:!0}))}redefaultToSystem(U={}){return this.clone(m9(K0({},U),{defaultToEN:!1}))}months(U,O=!1){return M1(this,U,sX,()=>{let y=O?{month:U,day:"numeric"}:{month:U},g=O?"format":"standalone";if(!this.monthsCache[g][U])this.monthsCache[g][U]=L1((i)=>this.extract(i,y,"month"));return this.monthsCache[g][U]})}weekdays(U,O=!1){return M1(this,U,eX,()=>{let y=O?{weekday:U,year:"numeric",month:"long",day:"numeric"}:{weekday:U},g=O?"format":"standalone";if(!this.weekdaysCache[g][U])this.weekdaysCache[g][U]=H1((i)=>this.extract(i,y,"weekday"));return this.weekdaysCache[g][U]})}meridiems(){return M1(this,void 0,()=>QJ,()=>{if(!this.meridiemCache){let U={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Z0.utc(2016,11,13,9),Z0.utc(2016,11,13,19)].map((O)=>this.extract(O,U,"dayperiod"))}return this.meridiemCache})}eras(U){return M1(this,U,ZJ,()=>{let O={era:U};if(!this.eraCache[U])this.eraCache[U]=[Z0.utc(-40,1,1),Z0.utc(2017,1,1)].map((y)=>this.extract(y,O,"era"));return this.eraCache[U]})}extract(U,O,y){let g=this.dtFormatter(U,O),i=g.formatToParts(),c=i.find((a)=>a.type.toLowerCase()===y);return c?c.value:null}numberFormatter(U={}){return new s1(this.intl,U.forceSimple||this.fastNumbers,U)}dtFormatter(U,O={}){return new a1(U,this.intl,O)}relFormatter(U={}){return new X0(this.intl,this.isEnglish(),U)}listFormatter(U={}){return O1(this.intl,U)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(U){return this.locale===U.locale&&this.numberingSystem===U.numberingSystem&&this.outputCalendar===U.outputCalendar}},B0=null,Y0=class extends Y1{static get utcInstance(){if(B0===null)B0=new Y0(0);return B0}static instance(U){return U===0?Y0.utcInstance:new Y0(U)}static parseSpecifier(U){if(U){let O=U.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(O)return new Y0(d8(O[1],O[2]))}return null}constructor(U){super();this.fixed=U}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${l9(this.fixed,"narrow")}`}get ianaName(){if(this.fixed===0)return"Etc/UTC";else return`Etc/GMT${l9(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(U,O){return l9(this.fixed,O)}get isUniversal(){return!0}offset(){return this.fixed}equals(U){return U.type==="fixed"&&U.fixed===this.fixed}get isValid(){return!0}},S0=class extends Y1{constructor(U){super();this.zoneName=U}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function D0(U,O){if(v1(U)||U===null)return O;else if(U instanceof Y1)return U;else if(I6(U)){let y=U.toLowerCase();if(y==="default")return O;else if(y==="local"||y==="system")return V1.instance;else if(y==="utc"||y==="gmt")return Y0.utcInstance;else return Y0.parseSpecifier(y)||P1.create(U)}else if(W6(U))return Y0.instance(U);else if(typeof U==="object"&&"offset"in U&&typeof U.offset==="function")return U;else return new S0(U)}var x0=()=>Date.now(),R0="system",U0=null,$1=null,U1=null,z0=60,L0,J0=class{static get now(){return x0}static set now(U){x0=U}static set defaultZone(U){R0=U}static get defaultZone(){return D0(R0,V1.instance)}static get defaultLocale(){return U0}static set defaultLocale(U){U0=U}static get defaultNumberingSystem(){return $1}static set defaultNumberingSystem(U){$1=U}static get defaultOutputCalendar(){return U1}static set defaultOutputCalendar(U){U1=U}static get twoDigitCutoffYear(){return z0}static set twoDigitCutoffYear(U){z0=U%100}static get throwOnInvalid(){return L0}static set throwOnInvalid(U){L0=U}static resetCaches(){t1.resetCache(),P1.resetCache()}};function v1(U){return typeof U==="undefined"}function W6(U){return typeof U==="number"}function j6(U){return typeof U==="number"&&U%1===0}function I6(U){return typeof U==="string"}function i6(U){return Object.prototype.toString.call(U)==="[object Date]"}function e8(){try{return typeof Intl!=="undefined"&&!!Intl.RelativeTimeFormat}catch(U){return!1}}function _8(U){return Array.isArray(U)?U:[U]}function b0(U,O,y){if(U.length===0)return;return U.reduce((g,i)=>{let c=[O(i),i];if(!g)return c;else if(y(g[0],c[0])===g[0])return g;else return c},null)[1]}function R6(U,O){return O.reduce((y,g)=>{return y[g]=U[g],y},{})}function r0(U,O){return Object.prototype.hasOwnProperty.call(U,O)}function u0(U,O,y){return j6(U)&&U>=O&&U<=y}function q6(U,O){return U-O*Math.floor(U/O)}function M0(U,O=2){let y=U<0,g;if(y)g="-"+(""+-U).padStart(O,"0");else g=(""+U).padStart(O,"0");return g}function _0(U){if(v1(U)||U===null||U==="")return;else return parseInt(U,10)}function i0(U){if(v1(U)||U===null||U==="")return;else return parseFloat(U)}function H6(U){if(v1(U)||U===null||U==="")return;else{let O=parseFloat("0."+U)*1000;return Math.floor(O)}}function B6(U,O,y=!1){let g=Mo(10,O);return(y?Math.trunc:Math.round)(U*g)/g}function Z6(U){return U%4===0&&(U%100!==0||U%400===0)}function e0(U){return Z6(U)?366:365}function z6(U,O){let y=q6(O-1,12)+1,g=U+(O-y)/12;if(y===2)return Z6(g)?29:28;else return[31,null,31,30,31,30,31,31,30,31,30,31][y-1]}function X6(U){let O=Date.UTC(U.year,U.month-1,U.day,U.hour,U.minute,U.second,U.millisecond);if(U.year<100&&U.year>=0)O=new Date(O),O.setUTCFullYear(U.year,U.month-1,U.day);return+O}function n0(U){let O=(U+Math.floor(U/4)-Math.floor(U/100)+Math.floor(U/400))%7,y=U-1,g=(y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400))%7;return O===4||g===3?53:52}function U6(U){if(U>99)return U;else return U>J0.twoDigitCutoffYear?1900+U:2000+U}function gQ(U,O,y,g=null){let i=new Date(U),c={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};if(g)c.timeZone=g;let a=K0({timeZoneName:O},c),K1=new Intl.DateTimeFormat(y,a).formatToParts(i).find((T1)=>T1.type.toLowerCase()==="timezonename");return K1?K1.value:null}function d8(U,O){let y=parseInt(U,10);if(Number.isNaN(y))y=0;let g=parseInt(O,10)||0,i=y<0||Object.is(y,-0)?-g:g;return y*60+i}function qQ(U){let O=Number(U);if(typeof U==="boolean"||U===""||Number.isNaN(O))throw new K(`Invalid unit value ${U}`);return O}function hQ(U,O){let y={};for(let g in U)if(r0(U,g)){let i=U[g];if(i===void 0||i===null)continue;y[O(g)]=qQ(i)}return y}function l9(U,O){let y=Math.trunc(Math.abs(U/60)),g=Math.trunc(Math.abs(U%60)),i=U>=0?"+":"-";switch(O){case"short":return`${i}${M0(y,2)}:${M0(g,2)}`;case"narrow":return`${i}${y}${g>0?`:${g}`:""}`;case"techie":return`${i}${M0(y,2)}${M0(g,2)}`;default:throw new RangeError(`Value format ${O} is out of range for property format`)}}function N9(U){return R6(U,["hour","minute","second","millisecond"])}var D3=["January","February","March","April","May","June","July","August","September","October","November","December"],aX=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],L3=["J","F","M","A","M","J","J","A","S","O","N","D"];function sX(U){switch(U){case"narrow":return[...L3];case"short":return[...aX];case"long":return[...D3];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var tX=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],rX=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],C3=["M","T","W","T","F","S","S"];function eX(U){switch(U){case"narrow":return[...C3];case"short":return[...rX];case"long":return[...tX];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var QJ=["AM","PM"],u8=["Before Christ","Anno Domini"],N3=["BC","AD"],T3=["B","A"];function ZJ(U){switch(U){case"narrow":return[...T3];case"short":return[...N3];case"long":return[...u8];default:return null}}function M3(U){return QJ[U.hour<12?0:1]}function b(U,O){return eX(O)[U.weekday-1]}function u(U,O){return sX(O)[U.month-1]}function o(U,O){return ZJ(O)[U.year<0?0:1]}function z1(U,O,y="always",g=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},c=["hours","minutes","seconds"].indexOf(U)===-1;if(y==="auto"&&c){let v0=U==="days";switch(O){case 1:return v0?"tomorrow":`next ${i[U][0]}`;case-1:return v0?"yesterday":`last ${i[U][0]}`;case 0:return v0?"today":`this ${i[U][0]}`}}let a=Object.is(O,-0)||O<0,K1=Math.abs(O),T1=K1===1,m1=i[U],e1=g?T1?m1[1]:m1[2]||m1[1]:T1?i[U][0]:U;return a?`${K1} ${e1} ago`:`in ${K1} ${e1}`}function A1(U,O){let y="";for(let g of U)if(g.literal)y+=g.val;else y+=O(g.val);return y}var w1={D:B,DD:D,DDD:P,DDDD:N,t:C,tt:L,ttt:V,tttt:M,T:I,TT:E,TTT:w,TTTT:A,f:R,ff:S,fff:x,ffff:n,F:T,FF:v,FFF:p,FFFF:t},g1=class{static create(U,O={}){return new g1(U,O)}static parseFormat(U){let O=null,y="",g=!1,i=[];for(let c=0;c0)i.push({literal:g||/^\s+$/.test(y),val:y});O=null,y="",g=!g}else if(g)y+=a;else if(a===O)y+=a;else{if(y.length>0)i.push({literal:/^\s+$/.test(y),val:y});y=a,O=a}}if(y.length>0)i.push({literal:g||/^\s+$/.test(y),val:y});return i}static macroTokenToFormatOpts(U){return w1[U]}constructor(U,O){this.opts=O,this.loc=U,this.systemLoc=null}formatWithSystemDefault(U,O){if(this.systemLoc===null)this.systemLoc=this.loc.redefaultToSystem();return this.systemLoc.dtFormatter(U,K0(K0({},this.opts),O)).format()}dtFormatter(U,O={}){return this.loc.dtFormatter(U,K0(K0({},this.opts),O))}formatDateTime(U,O){return this.dtFormatter(U,O).format()}formatDateTimeParts(U,O){return this.dtFormatter(U,O).formatToParts()}formatInterval(U,O){return this.dtFormatter(U.start,O).dtf.formatRange(U.start.toJSDate(),U.end.toJSDate())}resolvedOptions(U,O){return this.dtFormatter(U,O).resolvedOptions()}num(U,O=0){if(this.opts.forceSimple)return M0(U,O);let y=K0({},this.opts);if(O>0)y.padTo=O;return this.loc.numberFormatter(y).format(U)}formatDateTimeFromString(U,O){let y=this.loc.listingMode()==="en",g=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",i=(_1,W0)=>this.loc.extract(U,_1,W0),c=(_1)=>{if(U.isOffsetFixed&&U.offset===0&&_1.allowZ)return"Z";return U.isValid?U.zone.formatOffset(U.ts,_1.format):""},a=()=>y?M3(U):i({hour:"numeric",hourCycle:"h12"},"dayperiod"),K1=(_1,W0)=>y?u(U,_1):i(W0?{month:_1}:{month:_1,day:"numeric"},"month"),T1=(_1,W0)=>y?b(U,_1):i(W0?{weekday:_1}:{weekday:_1,month:"long",day:"numeric"},"weekday"),m1=(_1)=>{let W0=g1.macroTokenToFormatOpts(_1);if(W0)return this.formatWithSystemDefault(U,W0);else return _1},e1=(_1)=>y?o(U,_1):i({era:_1},"era"),v0=(_1)=>{switch(_1){case"S":return this.num(U.millisecond);case"u":case"SSS":return this.num(U.millisecond,3);case"s":return this.num(U.second);case"ss":return this.num(U.second,2);case"uu":return this.num(Math.floor(U.millisecond/10),2);case"uuu":return this.num(Math.floor(U.millisecond/100));case"m":return this.num(U.minute);case"mm":return this.num(U.minute,2);case"h":return this.num(U.hour%12===0?12:U.hour%12);case"hh":return this.num(U.hour%12===0?12:U.hour%12,2);case"H":return this.num(U.hour);case"HH":return this.num(U.hour,2);case"Z":return c({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return c({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return c({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return U.zone.offsetName(U.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return U.zone.offsetName(U.ts,{format:"long",locale:this.loc.locale});case"z":return U.zoneName;case"a":return a();case"d":return g?i({day:"numeric"},"day"):this.num(U.day);case"dd":return g?i({day:"2-digit"},"day"):this.num(U.day,2);case"c":return this.num(U.weekday);case"ccc":return T1("short",!0);case"cccc":return T1("long",!0);case"ccccc":return T1("narrow",!0);case"E":return this.num(U.weekday);case"EEE":return T1("short",!1);case"EEEE":return T1("long",!1);case"EEEEE":return T1("narrow",!1);case"L":return g?i({month:"numeric",day:"numeric"},"month"):this.num(U.month);case"LL":return g?i({month:"2-digit",day:"numeric"},"month"):this.num(U.month,2);case"LLL":return K1("short",!0);case"LLLL":return K1("long",!0);case"LLLLL":return K1("narrow",!0);case"M":return g?i({month:"numeric"},"month"):this.num(U.month);case"MM":return g?i({month:"2-digit"},"month"):this.num(U.month,2);case"MMM":return K1("short",!1);case"MMMM":return K1("long",!1);case"MMMMM":return K1("narrow",!1);case"y":return g?i({year:"numeric"},"year"):this.num(U.year);case"yy":return g?i({year:"2-digit"},"year"):this.num(U.year.toString().slice(-2),2);case"yyyy":return g?i({year:"numeric"},"year"):this.num(U.year,4);case"yyyyyy":return g?i({year:"numeric"},"year"):this.num(U.year,6);case"G":return e1("short");case"GG":return e1("long");case"GGGGG":return e1("narrow");case"kk":return this.num(U.weekYear.toString().slice(-2),2);case"kkkk":return this.num(U.weekYear,4);case"W":return this.num(U.weekNumber);case"WW":return this.num(U.weekNumber,2);case"o":return this.num(U.ordinal);case"ooo":return this.num(U.ordinal,3);case"q":return this.num(U.quarter);case"qq":return this.num(U.quarter,2);case"X":return this.num(Math.floor(U.ts/1000));case"x":return this.num(U.ts);default:return m1(_1)}};return A1(g1.parseFormat(O),v0)}formatDurationFromString(U,O){let y=(K1)=>{switch(K1[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},g=(K1)=>(T1)=>{let m1=y(T1);if(m1)return this.num(K1.get(m1),T1.length);else return T1},i=g1.parseFormat(O),c=i.reduce((K1,{literal:T1,val:m1})=>T1?K1:K1.concat(m1),[]),a=U.shiftTo(...c.map(y).filter((K1)=>K1));return A1(i,g(a))}},x1=class{constructor(U,O){this.reason=U,this.explanation=O}toMessage(){if(this.explanation)return`${this.reason}: ${this.explanation}`;else return this.reason}},o0=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function V6(...U){let O=U.reduce((y,g)=>y+g.source,"");return RegExp(`^${O}$`)}function b6(...U){return(O)=>U.reduce(([y,g,i],c)=>{let[a,K1,T1]=c(O,i);return[K0(K0({},y),a),K1||g,T1]},[{},null,1]).slice(0,2)}function v6(U,...O){if(U==null)return[null,null];for(let[y,g]of O){let i=y.exec(U);if(i)return g(i)}return[null,null]}function Q9(...U){return(O,y)=>{let g={},i;for(i=0;iW0!==void 0&&(J6||W0&&e1)?-W0:W0;return[{years:_1(i0(y)),months:_1(i0(g)),weeks:_1(i0(i)),days:_1(i0(c)),hours:_1(i0(a)),minutes:_1(i0(K1)),seconds:_1(i0(T1),T1==="-0"),milliseconds:_1(H6(m1),v0)}]}var yA={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function I3(U,O,y,g,i,c,a){let K1={year:O.length===2?U6(_0(O)):_0(O),month:aX.indexOf(y)+1,day:_0(g),hour:_0(i),minute:_0(c)};if(a)K1.second=_0(a);if(U)K1.weekday=U.length>3?tX.indexOf(U)+1:rX.indexOf(U)+1;return K1}var xA=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function vA(U){let[,O,y,g,i,c,a,K1,T1,m1,e1,v0]=U,_1=I3(O,i,g,y,c,a,K1),W0;if(T1)W0=yA[T1];else if(m1)W0=0;else W0=d8(e1,v0);return[_1,new Y0(W0)]}function gA(U){return U.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var hA=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,fA=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,bA=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function HB(U){let[,O,y,g,i,c,a,K1]=U;return[I3(O,i,g,y,c,a,K1),Y0.utcInstance]}function mA(U){let[,O,y,g,i,c,a,K1]=U;return[I3(O,K1,y,g,i,c,a),Y0.utcInstance]}var _A=V6(U7,Z9),dA=V6(MA,Z9),uA=V6(IA,Z9),pA=V6(j4),zB=b6(EA,wZ,V7,P7),lA=b6(RA,wZ,V7,P7),cA=b6(AA,wZ,V7,P7),iA=b6(wZ,V7,P7);function nA(U){return v6(U,[_A,zB],[dA,lA],[uA,cA],[pA,iA])}function oA(U){return v6(gA(U),[xA,vA])}function aA(U){return v6(U,[hA,HB],[fA,HB],[bA,mA])}function sA(U){return v6(U,[SA,kA])}var tA=b6(wZ);function rA(U){return v6(U,[jA,tA])}var eA=V6(OA,wA),QO=V6(qB),ZO=b6(wZ,V7,P7);function XO(U){return v6(U,[eA,zB],[QO,ZO])}var KB="Invalid Duration",$B={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:604800000},days:{hours:24,minutes:1440,seconds:86400,milliseconds:86400000},hours:{minutes:60,seconds:3600,milliseconds:3600000},minutes:{seconds:60,milliseconds:60000},seconds:{milliseconds:1000}},JO=K0({years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536000,milliseconds:31536000000},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:7862400000},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592000,milliseconds:2592000000}},$B),X9=365.2425,EZ=30.436875,GO=K0({years:{quarters:4,months:12,weeks:X9/7,days:X9,hours:X9*24,minutes:X9*24*60,seconds:X9*24*60*60,milliseconds:X9*24*60*60*1000},quarters:{months:3,weeks:X9/28,days:X9/4,hours:X9*24/4,minutes:X9*24*60/4,seconds:X9*24*60*60/4,milliseconds:X9*24*60*60*1000/4},months:{weeks:EZ/7,days:EZ,hours:EZ*24,minutes:EZ*24*60,seconds:EZ*24*60*60,milliseconds:EZ*24*60*60*1000}},$B),S4=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],YO=S4.slice(0).reverse();function fQ(U,O,y=!1){let g={values:y?O.values:K0(K0({},U.values),O.values||{}),loc:U.loc.clone(O.loc),conversionAccuracy:O.conversionAccuracy||U.conversionAccuracy,matrix:O.matrix||U.matrix};return new o1(g)}function BB(U,O){var y;let g=(y=O.milliseconds)!=null?y:0;for(let i of YO.slice(1))if(O[i])g+=O[i]*U[i].milliseconds;return g}function UB(U,O){let y=BB(U,O)<0?-1:1;S4.reduceRight((g,i)=>{if(!v1(O[i])){if(g){let c=O[g]*y,a=U[i][g],K1=Math.floor(c/a);O[i]+=K1*y,O[g]-=K1*a*y}return i}else return g},null),S4.reduce((g,i)=>{if(!v1(O[i])){if(g){let c=O[g]%1;O[g]-=c,O[i]+=c*U[g][i]}return i}else return g},null)}function WO(U){let O={};for(let[y,g]of Object.entries(U))if(g!==0)O[y]=g;return O}var o1=class{constructor(U){let O=U.conversionAccuracy==="longterm"||!1,y=O?GO:JO;if(U.matrix)y=U.matrix;this.values=U.values,this.loc=U.loc||t1.create(),this.conversionAccuracy=O?"longterm":"casual",this.invalid=U.invalid||null,this.matrix=y,this.isLuxonDuration=!0}static fromMillis(U,O){return o1.fromObject({milliseconds:U},O)}static fromObject(U,O={}){if(U==null||typeof U!=="object")throw new K(`Duration.fromObject: argument expected to be an object, got ${U===null?"null":typeof U}`);return new o1({values:hQ(U,o1.normalizeUnit),loc:t1.fromObject(O),conversionAccuracy:O.conversionAccuracy,matrix:O.matrix})}static fromDurationLike(U){if(W6(U))return o1.fromMillis(U);else if(o1.isDuration(U))return U;else if(typeof U==="object")return o1.fromObject(U);else throw new K(`Unknown duration argument ${U} of type ${typeof U}`)}static fromISO(U,O){let[y]=sA(U);if(y)return o1.fromObject(y,O);else return o1.invalid("unparsable",`the input "${U}" can't be parsed as ISO 8601`)}static fromISOTime(U,O){let[y]=rA(U);if(y)return o1.fromObject(y,O);else return o1.invalid("unparsable",`the input "${U}" can't be parsed as ISO 8601`)}static invalid(U,O=null){if(!U)throw new K("need to specify a reason the Duration is invalid");let y=U instanceof x1?U:new x1(U,O);if(J0.throwOnInvalid)throw new G(y);else return new o1({invalid:y})}static normalizeUnit(U){let O={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[U?U.toLowerCase():U];if(!O)throw new H(U);return O}static isDuration(U){return U&&U.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(U,O={}){let y=m9(K0({},O),{floor:O.round!==!1&&O.floor!==!1});return this.isValid?g1.create(this.loc,y).formatDurationFromString(this,U):KB}toHuman(U={}){if(!this.isValid)return KB;let O=S4.map((y)=>{let g=this.values[y];if(v1(g))return null;return this.loc.numberFormatter(m9(K0({style:"unit",unitDisplay:"long"},U),{unit:y.slice(0,-1)})).format(g)}).filter((y)=>y);return this.loc.listFormatter(K0({type:"conjunction",style:U.listStyle||"narrow"},U)).format(O)}toObject(){if(!this.isValid)return{};return K0({},this.values)}toISO(){if(!this.isValid)return null;let U="P";if(this.years!==0)U+=this.years+"Y";if(this.months!==0||this.quarters!==0)U+=this.months+this.quarters*3+"M";if(this.weeks!==0)U+=this.weeks+"W";if(this.days!==0)U+=this.days+"D";if(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)U+="T";if(this.hours!==0)U+=this.hours+"H";if(this.minutes!==0)U+=this.minutes+"M";if(this.seconds!==0||this.milliseconds!==0)U+=B6(this.seconds+this.milliseconds/1000,3)+"S";if(U==="P")U+="T0S";return U}toISOTime(U={}){if(!this.isValid)return null;let O=this.toMillis();if(O<0||O>=86400000)return null;return U=m9(K0({suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended"},U),{includeOffset:!1}),Z0.fromMillis(O,{zone:"UTC"}).toISOTime(U)}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){if(!this.isValid)return NaN;return BB(this.matrix,this.values)}valueOf(){return this.toMillis()}plus(U){if(!this.isValid)return this;let O=o1.fromDurationLike(U),y={};for(let g of S4)if(r0(O.values,g)||r0(this.values,g))y[g]=O.get(g)+this.get(g);return fQ(this,{values:y},!0)}minus(U){if(!this.isValid)return this;let O=o1.fromDurationLike(U);return this.plus(O.negate())}mapUnits(U){if(!this.isValid)return this;let O={};for(let y of Object.keys(this.values))O[y]=qQ(U(this.values[y],y));return fQ(this,{values:O},!0)}get(U){return this[o1.normalizeUnit(U)]}set(U){if(!this.isValid)return this;let O=K0(K0({},this.values),hQ(U,o1.normalizeUnit));return fQ(this,{values:O})}reconfigure({locale:U,numberingSystem:O,conversionAccuracy:y,matrix:g}={}){let c={loc:this.loc.clone({locale:U,numberingSystem:O}),matrix:g,conversionAccuracy:y};return fQ(this,c)}as(U){return this.isValid?this.shiftTo(U).get(U):NaN}normalize(){if(!this.isValid)return this;let U=this.toObject();return UB(this.matrix,U),fQ(this,{values:U},!0)}rescale(){if(!this.isValid)return this;let U=WO(this.normalize().shiftToAll().toObject());return fQ(this,{values:U},!0)}shiftTo(...U){if(!this.isValid)return this;if(U.length===0)return this;U=U.map((c)=>o1.normalizeUnit(c));let O={},y={},g=this.toObject(),i;for(let c of S4)if(U.indexOf(c)>=0){i=c;let a=0;for(let T1 in y)a+=this.matrix[T1][c]*y[T1],y[T1]=0;if(W6(g[c]))a+=g[c];let K1=Math.trunc(a);O[c]=K1,y[c]=(a*1000-K1*1000)/1000}else if(W6(g[c]))y[c]=g[c];for(let c in y)if(y[c]!==0)O[i]+=c===i?y[c]:y[c]/this.matrix[i][c];return UB(this.matrix,O),fQ(this,{values:O},!0)}shiftToAll(){if(!this.isValid)return this;return this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds")}negate(){if(!this.isValid)return this;let U={};for(let O of Object.keys(this.values))U[O]=this.values[O]===0?0:-this.values[O];return fQ(this,{values:U},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(U){if(!this.isValid||!U.isValid)return!1;if(!this.loc.equals(U.loc))return!1;function O(y,g){if(y===void 0||y===0)return g===void 0||g===0;return y===g}for(let y of S4)if(!O(this.values[y],U.values[y]))return!1;return!0}},jZ="Invalid Interval";function qO(U,O){if(!U||!U.isValid)return S6.invalid("missing or invalid start");else if(!O||!O.isValid)return S6.invalid("missing or invalid end");else if(OU}isBefore(U){if(!this.isValid)return!1;return this.e<=U}contains(U){if(!this.isValid)return!1;return this.s<=U&&this.e>U}set({start:U,end:O}={}){if(!this.isValid)return this;return S6.fromDateTimes(U||this.s,O||this.e)}splitAt(...U){if(!this.isValid)return[];let O=U.map(D7).filter((c)=>this.contains(c)).sort(),y=[],{s:g}=this,i=0;while(g+this.e?this.e:c;y.push(S6.fromDateTimes(g,a)),g=a,i+=1}return y}splitBy(U){let O=o1.fromDurationLike(U);if(!this.isValid||!O.isValid||O.as("milliseconds")===0)return[];let{s:y}=this,g=1,i,c=[];while(yK1*g));i=+a>+this.e?this.e:a,c.push(S6.fromDateTimes(y,i)),y=i,g+=1}return c}divideEqually(U){if(!this.isValid)return[];return this.splitBy(this.length()/U).slice(0,U)}overlaps(U){return this.e>U.s&&this.s=U.e}equals(U){if(!this.isValid||!U.isValid)return!1;return this.s.equals(U.s)&&this.e.equals(U.e)}intersection(U){if(!this.isValid)return this;let O=this.s>U.s?this.s:U.s,y=this.e=y)return null;else return S6.fromDateTimes(O,y)}union(U){if(!this.isValid)return this;let O=this.sU.e?this.e:U.e;return S6.fromDateTimes(O,y)}static merge(U){let[O,y]=U.sort((g,i)=>g.s-i.s).reduce(([g,i],c)=>{if(!i)return[g,c];else if(i.overlaps(c)||i.abutsStart(c))return[g,i.union(c)];else return[g.concat([i]),c]},[[],null]);if(y)O.push(y);return O}static xor(U){let O=null,y=0,g=[],i=U.map((K1)=>[{time:K1.s,type:"s"},{time:K1.e,type:"e"}]),c=Array.prototype.concat(...i),a=c.sort((K1,T1)=>K1.time-T1.time);for(let K1 of a)if(y+=K1.type==="s"?1:-1,y===1)O=K1.time;else{if(O&&+O!==+K1.time)g.push(S6.fromDateTimes(O,K1.time));O=null}return S6.merge(g)}difference(...U){return S6.xor([this].concat(U)).map((O)=>this.intersection(O)).filter((O)=>O&&!O.isEmpty())}toString(){if(!this.isValid)return jZ;return`[${this.s.toISO()} – ${this.e.toISO()})`}toLocaleString(U=B,O={}){return this.isValid?g1.create(this.s.loc.clone(O),U).formatInterval(this):jZ}toISO(U){if(!this.isValid)return jZ;return`${this.s.toISO(U)}/${this.e.toISO(U)}`}toISODate(){if(!this.isValid)return jZ;return`${this.s.toISODate()}/${this.e.toISODate()}`}toISOTime(U){if(!this.isValid)return jZ;return`${this.s.toISOTime(U)}/${this.e.toISOTime(U)}`}toFormat(U,{separator:O=" – "}={}){if(!this.isValid)return jZ;return`${this.s.toFormat(U)}${O}${this.e.toFormat(U)}`}toDuration(U,O){if(!this.isValid)return o1.invalid(this.invalidReason);return this.e.diff(this.s,U,O)}mapEndpoints(U){return S6.fromDateTimes(U(this.s),U(this.e))}},XJ=class{static hasDST(U=J0.defaultZone){let O=Z0.now().setZone(U).set({month:12});return!U.isUniversal&&O.offset!==O.set({month:6}).offset}static isValidIANAZone(U){return P1.isValidZone(U)}static normalizeZone(U){return D0(U,J0.defaultZone)}static months(U="long",{locale:O=null,numberingSystem:y=null,locObj:g=null,outputCalendar:i="gregory"}={}){return(g||t1.create(O,y,i)).months(U)}static monthsFormat(U="long",{locale:O=null,numberingSystem:y=null,locObj:g=null,outputCalendar:i="gregory"}={}){return(g||t1.create(O,y,i)).months(U,!0)}static weekdays(U="long",{locale:O=null,numberingSystem:y=null,locObj:g=null}={}){return(g||t1.create(O,y,null)).weekdays(U)}static weekdaysFormat(U="long",{locale:O=null,numberingSystem:y=null,locObj:g=null}={}){return(g||t1.create(O,y,null)).weekdays(U,!0)}static meridiems({locale:U=null}={}){return t1.create(U).meridiems()}static eras(U="short",{locale:O=null}={}){return t1.create(O,null,"gregory").eras(U)}static features(){return{relative:e8()}}};function VB(U,O){let y=(i)=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),g=y(O)-y(U);return Math.floor(o1.fromMillis(g).as("days"))}function HO(U,O,y){let g=[["years",(T1,m1)=>m1.year-T1.year],["quarters",(T1,m1)=>m1.quarter-T1.quarter+(m1.year-T1.year)*4],["months",(T1,m1)=>m1.month-T1.month+(m1.year-T1.year)*12],["weeks",(T1,m1)=>{let e1=VB(T1,m1);return(e1-e1%7)/7}],["days",VB]],i={},c=U,a,K1;for(let[T1,m1]of g)if(y.indexOf(T1)>=0)if(a=T1,i[T1]=m1(U,O),K1=c.plus(i),K1>O){if(i[T1]--,U=c.plus(i),U>O)K1=U,i[T1]--,U=c.plus(i)}else U=K1;return[U,i,K1,a]}function zO(U,O,y,g){let[i,c,a,K1]=HO(U,O,y),T1=O-i,m1=y.filter((v0)=>["hours","minutes","seconds","milliseconds"].indexOf(v0)>=0);if(m1.length===0){if(a0)return o1.fromMillis(T1,g).shiftTo(...m1).plus(e1);else return e1}var R3={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},PB={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},KO=R3.hanidec.replace(/[\[|\]]/g,"").split("");function $O(U){let O=parseInt(U,10);if(isNaN(O)){O="";for(let y=0;y=c&&g<=a)O+=g-c}}return parseInt(O,10)}else return O}function T9({numberingSystem:U},O=""){return new RegExp(`${R3[U||"latn"]}${O}`)}var BO="missing Intl.DateTimeFormat.formatToParts support";function p0(U,O=(y)=>y){return{regex:U,deser:([y])=>O($O(y))}}var UO=String.fromCharCode(160),FB=`[ ${UO}]`,DB=new RegExp(FB,"g");function VO(U){return U.replace(/\./g,"\\.?").replace(DB,FB)}function LB(U){return U.replace(/\./g,"").replace(DB," ").toLowerCase()}function M9(U,O){if(U===null)return null;else return{regex:RegExp(U.map(VO).join("|")),deser:([y])=>U.findIndex((g)=>LB(y)===LB(g))+O}}function CB(U,O){return{regex:U,deser:([,y,g])=>d8(y,g),groups:O}}function JJ(U){return{regex:U,deser:([O])=>O}}function PO(U){return U.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function FO(U,O){let y=T9(O),g=T9(O,"{2}"),i=T9(O,"{3}"),c=T9(O,"{4}"),a=T9(O,"{6}"),K1=T9(O,"{1,2}"),T1=T9(O,"{1,3}"),m1=T9(O,"{1,6}"),e1=T9(O,"{1,9}"),v0=T9(O,"{2,4}"),_1=T9(O,"{4,6}"),W0=(n6)=>({regex:RegExp(PO(n6.val)),deser:([G9])=>G9,literal:!0}),k6=((n6)=>{if(U.literal)return W0(n6);switch(n6.val){case"G":return M9(O.eras("short"),0);case"GG":return M9(O.eras("long"),0);case"y":return p0(m1);case"yy":return p0(v0,U6);case"yyyy":return p0(c);case"yyyyy":return p0(_1);case"yyyyyy":return p0(a);case"M":return p0(K1);case"MM":return p0(g);case"MMM":return M9(O.months("short",!0),1);case"MMMM":return M9(O.months("long",!0),1);case"L":return p0(K1);case"LL":return p0(g);case"LLL":return M9(O.months("short",!1),1);case"LLLL":return M9(O.months("long",!1),1);case"d":return p0(K1);case"dd":return p0(g);case"o":return p0(T1);case"ooo":return p0(i);case"HH":return p0(g);case"H":return p0(K1);case"hh":return p0(g);case"h":return p0(K1);case"mm":return p0(g);case"m":return p0(K1);case"q":return p0(K1);case"qq":return p0(g);case"s":return p0(K1);case"ss":return p0(g);case"S":return p0(T1);case"SSS":return p0(i);case"u":return JJ(e1);case"uu":return JJ(K1);case"uuu":return p0(y);case"a":return M9(O.meridiems(),0);case"kkkk":return p0(c);case"kk":return p0(v0,U6);case"W":return p0(K1);case"WW":return p0(g);case"E":case"c":return p0(y);case"EEE":return M9(O.weekdays("short",!1),1);case"EEEE":return M9(O.weekdays("long",!1),1);case"ccc":return M9(O.weekdays("short",!0),1);case"cccc":return M9(O.weekdays("long",!0),1);case"Z":case"ZZ":return CB(new RegExp(`([+-]${K1.source})(?::(${g.source}))?`),2);case"ZZZ":return CB(new RegExp(`([+-]${K1.source})(${g.source})?`),2);case"z":return JJ(/[a-z_+-/]{1,256}?/i);case" ":return JJ(/[^\S\n\r]/);default:return W0(n6)}})(U)||{invalidReason:BO};return k6.token=U,k6}var DO={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function LO(U,O,y){let{type:g,value:i}=U;if(g==="literal"){let T1=/^\s+$/.test(i);return{literal:!T1,val:T1?" ":i}}let c=O[g],a=g;if(g==="hour")if(O.hour12!=null)a=O.hour12?"hour12":"hour24";else if(O.hourCycle!=null)if(O.hourCycle==="h11"||O.hourCycle==="h12")a="hour12";else a="hour24";else a=y.hour12?"hour12":"hour24";let K1=DO[a];if(typeof K1==="object")K1=K1[c];if(K1)return{literal:!1,val:K1};return}function CO(U){return[`^${U.map((y)=>y.regex).reduce((y,g)=>`${y}(${g.source})`,"")}$`,U]}function NO(U,O,y){let g=U.match(O);if(g){let i={},c=1;for(let a in y)if(r0(y,a)){let K1=y[a],T1=K1.groups?K1.groups+1:1;if(!K1.literal&&K1.token)i[K1.token.val[0]]=K1.deser(g.slice(c,c+T1));c+=T1}return[g,i]}else return[g,{}]}function TO(U){let O=(c)=>{switch(c){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},y=null,g;if(!v1(U.z))y=P1.create(U.z);if(!v1(U.Z)){if(!y)y=new Y0(U.Z);g=U.Z}if(!v1(U.q))U.M=(U.q-1)*3+1;if(!v1(U.h)){if(U.h<12&&U.a===1)U.h+=12;else if(U.h===12&&U.a===0)U.h=0}if(U.G===0&&U.y)U.y=-U.y;if(!v1(U.u))U.S=H6(U.u);return[Object.keys(U).reduce((c,a)=>{let K1=O(a);if(K1)c[K1]=U[a];return c},{}),y,g]}var A3=null;function MO(){if(!A3)A3=Z0.fromMillis(1555555555555);return A3}function IO(U,O){if(U.literal)return U;let y=g1.macroTokenToFormatOpts(U.val),g=MB(y,O);if(g==null||g.includes(void 0))return U;return g}function NB(U,O){return Array.prototype.concat(...U.map((y)=>IO(y,O)))}function TB(U,O,y){let g=NB(g1.parseFormat(y),U),i=g.map((a)=>FO(a,U)),c=i.find((a)=>a.invalidReason);if(c)return{input:O,tokens:g,invalidReason:c.invalidReason};else{let[a,K1]=CO(i),T1=RegExp(a,"i"),[m1,e1]=NO(O,T1,K1),[v0,_1,W0]=e1?TO(e1):[null,null,void 0];if(r0(e1,"a")&&r0(e1,"H"))throw new Y("Can't include meridiem when specifying 24-hour format");return{input:O,tokens:g,regex:T1,rawMatches:m1,matches:e1,result:v0,zone:_1,specificOffset:W0}}}function RO(U,O,y){let{result:g,zone:i,specificOffset:c,invalidReason:a}=TB(U,O,y);return[g,i,c,a]}function MB(U,O){if(!U)return null;let g=g1.create(O,U).dtFormatter(MO()),i=g.formatToParts(),c=g.resolvedOptions();return i.map((a)=>LO(a,U,c))}var IB=[0,31,59,90,120,151,181,212,243,273,304,334],RB=[0,31,60,91,121,152,182,213,244,274,305,335];function J9(U,O){return new x1("unit out of range",`you specified ${O} (of type ${typeof O}) as a ${U}, which is invalid`)}function AB(U,O,y){let g=new Date(Date.UTC(U,O-1,y));if(U<100&&U>=0)g.setUTCFullYear(g.getUTCFullYear()-1900);let i=g.getUTCDay();return i===0?7:i}function OB(U,O,y){return y+(Z6(U)?RB:IB)[O-1]}function wB(U,O){let y=Z6(U)?RB:IB,g=y.findIndex((c)=>cn0(O))K1=O+1,a=1;else K1=O;return K0({weekYear:K1,weekNumber:a,weekday:c},N9(U))}function EB(U){let{weekYear:O,weekNumber:y,weekday:g}=U,i=AB(O,1,4),c=e0(O),a=y*7+g-i-3,K1;if(a<1)K1=O-1,a+=e0(K1);else if(a>c)K1=O+1,a-=e0(O);else K1=O;let{month:T1,day:m1}=wB(K1,a);return K0({year:K1,month:T1,day:m1},N9(U))}function w3(U){let{year:O,month:y,day:g}=U,i=OB(O,y,g);return K0({year:O,ordinal:i},N9(U))}function jB(U){let{year:O,ordinal:y}=U,{month:g,day:i}=wB(O,y);return K0({year:O,month:g,day:i},N9(U))}function AO(U){let O=j6(U.weekYear),y=u0(U.weekNumber,1,n0(U.weekYear)),g=u0(U.weekday,1,7);if(!O)return J9("weekYear",U.weekYear);else if(!y)return J9("week",U.week);else if(!g)return J9("weekday",U.weekday);else return!1}function OO(U){let O=j6(U.year),y=u0(U.ordinal,1,e0(U.year));if(!O)return J9("year",U.year);else if(!y)return J9("ordinal",U.ordinal);else return!1}function SB(U){let O=j6(U.year),y=u0(U.month,1,12),g=u0(U.day,1,z6(U.year,U.month));if(!O)return J9("year",U.year);else if(!y)return J9("month",U.month);else if(!g)return J9("day",U.day);else return!1}function kB(U){let{hour:O,minute:y,second:g,millisecond:i}=U,c=u0(O,0,23)||O===24&&y===0&&g===0&&i===0,a=u0(y,0,59),K1=u0(g,0,59),T1=u0(i,0,999);if(!c)return J9("hour",O);else if(!a)return J9("minute",y);else if(!K1)return J9("second",g);else if(!T1)return J9("millisecond",i);else return!1}var E3="Invalid DateTime",yB=8640000000000000;function GJ(U){return new x1("unsupported zone",`the zone "${U.name}" is not supported`)}function j3(U){if(U.weekData===null)U.weekData=O3(U.c);return U.weekData}function k4(U,O){let y={ts:U.ts,zone:U.zone,c:U.c,o:U.o,loc:U.loc,invalid:U.invalid};return new Z0(m9(K0(K0({},y),O),{old:y}))}function xB(U,O,y){let g=U-O*60*1000,i=y.offset(g);if(O===i)return[g,O];g-=(i-O)*60*1000;let c=y.offset(g);if(i===c)return[g,i];return[U-Math.min(i,c)*60*1000,Math.max(i,c)]}function YJ(U,O){U+=O*60*1000;let y=new Date(U);return{year:y.getUTCFullYear(),month:y.getUTCMonth()+1,day:y.getUTCDate(),hour:y.getUTCHours(),minute:y.getUTCMinutes(),second:y.getUTCSeconds(),millisecond:y.getUTCMilliseconds()}}function WJ(U,O,y){return xB(X6(U),O,y)}function vB(U,O){let y=U.o,g=U.c.year+Math.trunc(O.years),i=U.c.month+Math.trunc(O.months)+Math.trunc(O.quarters)*3,c=m9(K0({},U.c),{year:g,month:i,day:Math.min(U.c.day,z6(g,i))+Math.trunc(O.days)+Math.trunc(O.weeks)*7}),a=o1.fromObject({years:O.years-Math.trunc(O.years),quarters:O.quarters-Math.trunc(O.quarters),months:O.months-Math.trunc(O.months),weeks:O.weeks-Math.trunc(O.weeks),days:O.days-Math.trunc(O.days),hours:O.hours,minutes:O.minutes,seconds:O.seconds,milliseconds:O.milliseconds}).as("milliseconds"),K1=X6(c),[T1,m1]=xB(K1,y,U.zone);if(a!==0)T1+=a,m1=U.zone.offset(T1);return{ts:T1,o:m1}}function F7(U,O,y,g,i,c){let{setZone:a,zone:K1}=y;if(U&&Object.keys(U).length!==0||O){let T1=O||K1,m1=Z0.fromObject(U,m9(K0({},y),{zone:T1,specificOffset:c}));return a?m1:m1.setZone(K1)}else return Z0.invalid(new x1("unparsable",`the input "${i}" can't be parsed as ${g}`))}function qJ(U,O,y=!0){return U.isValid?g1.create(t1.create("en-US"),{allowZ:y,forceSimple:!0}).formatDateTimeFromString(U,O):null}function S3(U,O){let y=U.c.year>9999||U.c.year<0,g="";if(y&&U.c.year>=0)g+="+";if(g+=M0(U.c.year,y?6:4),O)g+="-",g+=M0(U.c.month),g+="-",g+=M0(U.c.day);else g+=M0(U.c.month),g+=M0(U.c.day);return g}function gB(U,O,y,g,i,c){let a=M0(U.c.hour);if(O){if(a+=":",a+=M0(U.c.minute),U.c.millisecond!==0||U.c.second!==0||!y)a+=":"}else a+=M0(U.c.minute);if(U.c.millisecond!==0||U.c.second!==0||!y){if(a+=M0(U.c.second),U.c.millisecond!==0||!g)a+=".",a+=M0(U.c.millisecond,3)}if(i)if(U.isOffsetFixed&&U.offset===0&&!c)a+="Z";else if(U.o<0)a+="-",a+=M0(Math.trunc(-U.o/60)),a+=":",a+=M0(Math.trunc(-U.o%60));else a+="+",a+=M0(Math.trunc(U.o/60)),a+=":",a+=M0(Math.trunc(U.o%60));if(c)a+="["+U.zone.ianaName+"]";return a}var hB={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},wO={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},EO={ordinal:1,hour:0,minute:0,second:0,millisecond:0},fB=["year","month","day","hour","minute","second","millisecond"],jO=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],SO=["year","ordinal","hour","minute","second","millisecond"];function bB(U){let O={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[U.toLowerCase()];if(!O)throw new H(U);return O}function mB(U,O){let y=D0(O.zone,J0.defaultZone),g=t1.fromObject(O),i=J0.now(),c,a;if(!v1(U.year)){for(let m1 of fB)if(v1(U[m1]))U[m1]=hB[m1];let K1=SB(U)||kB(U);if(K1)return Z0.invalid(K1);let T1=y.offset(i);[c,a]=WJ(U,T1,y)}else c=i;return new Z0({ts:c,zone:y,loc:g,o:a})}function _B(U,O,y){let g=v1(y.round)?!0:y.round,i=(a,K1)=>{return a=B6(a,g||y.calendary?0:2,!0),O.loc.clone(y).relFormatter(y).format(a,K1)},c=(a)=>{if(y.calendary)if(!O.hasSame(U,a))return O.startOf(a).diff(U.startOf(a),a).get(a);else return 0;else return O.diff(U,a).get(a)};if(y.unit)return i(c(y.unit),y.unit);for(let a of y.units){let K1=c(a);if(Math.abs(K1)>=1)return i(K1,a)}return i(U>O?-0:0,y.units[y.units.length-1])}function dB(U){let O={},y;if(U.length>0&&typeof U[U.length-1]==="object")O=U[U.length-1],y=Array.from(U).slice(0,U.length-1);else y=Array.from(U);return[O,y]}var Z0=class{constructor(U){let O=U.zone||J0.defaultZone,y=U.invalid||(Number.isNaN(U.ts)?new x1("invalid input"):null)||(!O.isValid?GJ(O):null);this.ts=v1(U.ts)?J0.now():U.ts;let g=null,i=null;if(!y)if(U.old&&U.old.ts===this.ts&&U.old.zone.equals(O))[g,i]=[U.old.c,U.old.o];else{let a=O.offset(this.ts);g=YJ(this.ts,a),y=Number.isNaN(g.year)?new x1("invalid input"):null,g=y?null:g,i=y?null:a}this._zone=O,this.loc=U.loc||t1.create(),this.invalid=y,this.weekData=null,this.c=g,this.o=i,this.isLuxonDateTime=!0}static now(){return new Z0({})}static local(){let[U,O]=dB(arguments),[y,g,i,c,a,K1,T1]=O;return mB({year:y,month:g,day:i,hour:c,minute:a,second:K1,millisecond:T1},U)}static utc(){let[U,O]=dB(arguments),[y,g,i,c,a,K1,T1]=O;return U.zone=Y0.utcInstance,mB({year:y,month:g,day:i,hour:c,minute:a,second:K1,millisecond:T1},U)}static fromJSDate(U,O={}){let y=i6(U)?U.valueOf():NaN;if(Number.isNaN(y))return Z0.invalid("invalid input");let g=D0(O.zone,J0.defaultZone);if(!g.isValid)return Z0.invalid(GJ(g));return new Z0({ts:y,zone:g,loc:t1.fromObject(O)})}static fromMillis(U,O={}){if(!W6(U))throw new K(`fromMillis requires a numerical input, but received a ${typeof U} with value ${U}`);else if(U<-yB||U>yB)return Z0.invalid("Timestamp out of range");else return new Z0({ts:U,zone:D0(O.zone,J0.defaultZone),loc:t1.fromObject(O)})}static fromSeconds(U,O={}){if(!W6(U))throw new K("fromSeconds requires a numerical input");else return new Z0({ts:U*1000,zone:D0(O.zone,J0.defaultZone),loc:t1.fromObject(O)})}static fromObject(U,O={}){U=U||{};let y=D0(O.zone,J0.defaultZone);if(!y.isValid)return Z0.invalid(GJ(y));let g=J0.now(),i=!v1(O.specificOffset)?O.specificOffset:y.offset(g),c=hQ(U,bB),a=!v1(c.ordinal),K1=!v1(c.year),T1=!v1(c.month)||!v1(c.day),m1=K1||T1,e1=c.weekYear||c.weekNumber,v0=t1.fromObject(O);if((m1||a)&&e1)throw new Y("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(T1&&a)throw new Y("Can't mix ordinal dates with month/day");let _1=e1||c.weekday&&!m1,W0,J6,k6=YJ(g,i);if(_1)W0=jO,J6=wO,k6=O3(k6);else if(a)W0=SO,J6=EO,k6=w3(k6);else W0=fB,J6=hB;let n6=!1;for(let q0 of W0){let P6=c[q0];if(!v1(P6))n6=!0;else if(n6)c[q0]=J6[q0];else c[q0]=k6[q0]}let G9=_1?AO(c):a?OO(c):SB(c),R9=G9||kB(c);if(R9)return Z0.invalid(R9);let HQ=_1?EB(c):a?jB(c):c,[k1,C0]=WJ(HQ,i,y),A6=new Z0({ts:k1,zone:y,o:C0,loc:v0});if(c.weekday&&m1&&U.weekday!==A6.weekday)return Z0.invalid("mismatched weekday",`you can't specify both a weekday of ${c.weekday} and a date of ${A6.toISO()}`);return A6}static fromISO(U,O={}){let[y,g]=nA(U);return F7(y,g,O,"ISO 8601",U)}static fromRFC2822(U,O={}){let[y,g]=oA(U);return F7(y,g,O,"RFC 2822",U)}static fromHTTP(U,O={}){let[y,g]=aA(U);return F7(y,g,O,"HTTP",O)}static fromFormat(U,O,y={}){if(v1(U)||v1(O))throw new K("fromFormat requires an input string and a format");let{locale:g=null,numberingSystem:i=null}=y,c=t1.fromOpts({locale:g,numberingSystem:i,defaultToEN:!0}),[a,K1,T1,m1]=RO(c,U,O);if(m1)return Z0.invalid(m1);else return F7(a,K1,y,`format ${O}`,U,T1)}static fromString(U,O,y={}){return Z0.fromFormat(U,O,y)}static fromSQL(U,O={}){let[y,g]=XO(U);return F7(y,g,O,"SQL",U)}static invalid(U,O=null){if(!U)throw new K("need to specify a reason the DateTime is invalid");let y=U instanceof x1?U:new x1(U,O);if(J0.throwOnInvalid)throw new Z(y);else return new Z0({invalid:y})}static isDateTime(U){return U&&U.isLuxonDateTime||!1}static parseFormatForOpts(U,O={}){let y=MB(U,t1.fromObject(O));return!y?null:y.map((g)=>g?g.val:null).join("")}static expandFormat(U,O={}){return NB(g1.parseFormat(U),t1.fromObject(O)).map((g)=>g.val).join("")}get(U){return this[U]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?j3(this).weekYear:NaN}get weekNumber(){return this.isValid?j3(this).weekNumber:NaN}get weekday(){return this.isValid?j3(this).weekday:NaN}get ordinal(){return this.isValid?w3(this.c).ordinal:NaN}get monthShort(){return this.isValid?XJ.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?XJ.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?XJ.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?XJ.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){if(this.isValid)return this.zone.offsetName(this.ts,{format:"short",locale:this.locale});else return null}get offsetNameLong(){if(this.isValid)return this.zone.offsetName(this.ts,{format:"long",locale:this.locale});else return null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){if(this.isOffsetFixed)return!1;else return this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let U=86400000,O=60000,y=X6(this.c),g=this.zone.offset(y-U),i=this.zone.offset(y+U),c=this.zone.offset(y-g*O),a=this.zone.offset(y-i*O);if(c===a)return[this];let K1=y-c*O,T1=y-a*O,m1=YJ(K1,c),e1=YJ(T1,a);if(m1.hour===e1.hour&&m1.minute===e1.minute&&m1.second===e1.second&&m1.millisecond===e1.millisecond)return[k4(this,{ts:K1}),k4(this,{ts:T1})];return[this]}get isInLeapYear(){return Z6(this.year)}get daysInMonth(){return z6(this.year,this.month)}get daysInYear(){return this.isValid?e0(this.year):NaN}get weeksInWeekYear(){return this.isValid?n0(this.weekYear):NaN}resolvedLocaleOptions(U={}){let{locale:O,numberingSystem:y,calendar:g}=g1.create(this.loc.clone(U),U).resolvedOptions(this);return{locale:O,numberingSystem:y,outputCalendar:g}}toUTC(U=0,O={}){return this.setZone(Y0.instance(U),O)}toLocal(){return this.setZone(J0.defaultZone)}setZone(U,{keepLocalTime:O=!1,keepCalendarTime:y=!1}={}){if(U=D0(U,J0.defaultZone),U.equals(this.zone))return this;else if(!U.isValid)return Z0.invalid(GJ(U));else{let g=this.ts;if(O||y){let i=U.offset(this.ts),c=this.toObject();[g]=WJ(c,i,U)}return k4(this,{ts:g,zone:U})}}reconfigure({locale:U,numberingSystem:O,outputCalendar:y}={}){let g=this.loc.clone({locale:U,numberingSystem:O,outputCalendar:y});return k4(this,{loc:g})}setLocale(U){return this.reconfigure({locale:U})}set(U){if(!this.isValid)return this;let O=hQ(U,bB),y=!v1(O.weekYear)||!v1(O.weekNumber)||!v1(O.weekday),g=!v1(O.ordinal),i=!v1(O.year),c=!v1(O.month)||!v1(O.day),a=i||c,K1=O.weekYear||O.weekNumber;if((a||g)&&K1)throw new Y("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&g)throw new Y("Can't mix ordinal dates with month/day");let T1;if(y)T1=EB(K0(K0({},O3(this.c)),O));else if(!v1(O.ordinal))T1=jB(K0(K0({},w3(this.c)),O));else if(T1=K0(K0({},this.toObject()),O),v1(O.day))T1.day=Math.min(z6(T1.year,T1.month),T1.day);let[m1,e1]=WJ(T1,this.o,this.zone);return k4(this,{ts:m1,o:e1})}plus(U){if(!this.isValid)return this;let O=o1.fromDurationLike(U);return k4(this,vB(this,O))}minus(U){if(!this.isValid)return this;let O=o1.fromDurationLike(U).negate();return k4(this,vB(this,O))}startOf(U){if(!this.isValid)return this;let O={},y=o1.normalizeUnit(U);switch(y){case"years":O.month=1;case"quarters":case"months":O.day=1;case"weeks":case"days":O.hour=0;case"hours":O.minute=0;case"minutes":O.second=0;case"seconds":O.millisecond=0;break}if(y==="weeks")O.weekday=1;if(y==="quarters"){let g=Math.ceil(this.month/3);O.month=(g-1)*3+1}return this.set(O)}endOf(U){return this.isValid?this.plus({[U]:1}).startOf(U).minus(1):this}toFormat(U,O={}){return this.isValid?g1.create(this.loc.redefaultToEN(O)).formatDateTimeFromString(this,U):E3}toLocaleString(U=B,O={}){return this.isValid?g1.create(this.loc.clone(O),U).formatDateTime(this):E3}toLocaleParts(U={}){return this.isValid?g1.create(this.loc.clone(U),U).formatDateTimeParts(this):[]}toISO({format:U="extended",suppressSeconds:O=!1,suppressMilliseconds:y=!1,includeOffset:g=!0,extendedZone:i=!1}={}){if(!this.isValid)return null;let c=U==="extended",a=S3(this,c);return a+="T",a+=gB(this,c,O,y,g,i),a}toISODate({format:U="extended"}={}){if(!this.isValid)return null;return S3(this,U==="extended")}toISOWeekDate(){return qJ(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:U=!1,suppressSeconds:O=!1,includeOffset:y=!0,includePrefix:g=!1,extendedZone:i=!1,format:c="extended"}={}){if(!this.isValid)return null;return(g?"T":"")+gB(this,c==="extended",O,U,y,i)}toRFC2822(){return qJ(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return qJ(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){if(!this.isValid)return null;return S3(this,!0)}toSQLTime({includeOffset:U=!0,includeZone:O=!1,includeOffsetSpace:y=!0}={}){let g="HH:mm:ss.SSS";if(O||U){if(y)g+=" ";if(O)g+="z";else if(U)g+="ZZ"}return qJ(this,g,!0)}toSQL(U={}){if(!this.isValid)return null;return`${this.toSQLDate()} ${this.toSQLTime(U)}`}toString(){return this.isValid?this.toISO():E3}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1000:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1000):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(U={}){if(!this.isValid)return{};let O=K0({},this.c);if(U.includeConfig)O.outputCalendar=this.outputCalendar,O.numberingSystem=this.loc.numberingSystem,O.locale=this.loc.locale;return O}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(U,O="milliseconds",y={}){if(!this.isValid||!U.isValid)return o1.invalid("created by diffing an invalid DateTime");let g=K0({locale:this.locale,numberingSystem:this.numberingSystem},y),i=_8(O).map(o1.normalizeUnit),c=U.valueOf()>this.valueOf(),a=c?this:U,K1=c?U:this,T1=zO(a,K1,i,g);return c?T1.negate():T1}diffNow(U="milliseconds",O={}){return this.diff(Z0.now(),U,O)}until(U){return this.isValid?S6.fromDateTimes(this,U):this}hasSame(U,O){if(!this.isValid)return!1;let y=U.valueOf(),g=this.setZone(U.zone,{keepLocalTime:!0});return g.startOf(O)<=y&&y<=g.endOf(O)}equals(U){return this.isValid&&U.isValid&&this.valueOf()===U.valueOf()&&this.zone.equals(U.zone)&&this.loc.equals(U.loc)}toRelative(U={}){if(!this.isValid)return null;let O=U.base||Z0.fromObject({},{zone:this.zone}),y=U.padding?thisO.valueOf(),Math.min)}static max(...U){if(!U.every(Z0.isDateTime))throw new K("max requires all arguments be DateTimes");return b0(U,(O)=>O.valueOf(),Math.max)}static fromFormatExplain(U,O,y={}){let{locale:g=null,numberingSystem:i=null}=y,c=t1.fromOpts({locale:g,numberingSystem:i,defaultToEN:!0});return TB(c,U,O)}static fromStringExplain(U,O,y={}){return Z0.fromFormatExplain(U,O,y)}static get DATE_SHORT(){return B}static get DATE_MED(){return D}static get DATE_MED_WITH_WEEKDAY(){return F}static get DATE_FULL(){return P}static get DATE_HUGE(){return N}static get TIME_SIMPLE(){return C}static get TIME_WITH_SECONDS(){return L}static get TIME_WITH_SHORT_OFFSET(){return V}static get TIME_WITH_LONG_OFFSET(){return M}static get TIME_24_SIMPLE(){return I}static get TIME_24_WITH_SECONDS(){return E}static get TIME_24_WITH_SHORT_OFFSET(){return w}static get TIME_24_WITH_LONG_OFFSET(){return A}static get DATETIME_SHORT(){return R}static get DATETIME_SHORT_WITH_SECONDS(){return T}static get DATETIME_MED(){return S}static get DATETIME_MED_WITH_SECONDS(){return v}static get DATETIME_MED_WITH_WEEKDAY(){return h}static get DATETIME_FULL(){return x}static get DATETIME_FULL_WITH_SECONDS(){return p}static get DATETIME_HUGE(){return n}static get DATETIME_HUGE_WITH_SECONDS(){return t}};function D7(U){if(Z0.isDateTime(U))return U;else if(U&&U.valueOf&&W6(U.valueOf()))return Z0.fromJSDate(U);else if(U&&typeof U==="object")return Z0.fromObject(U);else throw new K(`Unknown datetime argument: ${U}, of type ${typeof U}`)}var k3={renderNullAs:"\\-",taskCompletionTracking:!1,taskCompletionUseEmojiShorthand:!1,taskCompletionText:"completion",taskCompletionDateFormat:"yyyy-MM-dd",recursiveSubTaskCompletion:!1,warnOnEmptyResult:!0,refreshEnabled:!0,refreshInterval:2500,defaultDateFormat:"MMMM dd, yyyy",defaultDateTimeFormat:"h:mm a - MMMM dd, yyyy",maxRecursiveRenderDepth:4,tableIdColumnName:"File",tableGroupColumnName:"Group",showResultCount:!0},kO={allowHtml:!0};K0(K0(K0({},k3),kO),{inlineQueryPrefix:"=",inlineJsQueryPrefix:"$=",inlineQueriesInCodeblocks:!0,enableInlineDataview:!0,enableDataviewJs:!1,enableInlineDataviewJs:!1,prettyRenderInlineFields:!0,prettyRenderInlineFieldsInLivePreview:!0,dataviewJsKeyword:"dataviewjs"});var uB=class{constructor(U){b8(this,"value"),b8(this,"successful"),this.value=U,this.successful=!0}map(U){return new uB(U(this.value))}flatMap(U){return U(this.value)}mapErr(U){return this}bimap(U,O){return this.map(U)}orElse(U){return this.value}cast(){return this}orElseThrow(U){return this.value}},pB=class{constructor(U){b8(this,"error"),b8(this,"successful"),this.error=U,this.successful=!1}map(U){return this}flatMap(U){return this}mapErr(U){return new pB(U(this.error))}bimap(U,O){return this.mapErr(O)}orElse(U){return U}cast(){return this}orElseThrow(U){if(U)throw new Error(U(this.error));else throw new Error(""+this.error)}},HJ;(function(U){function O(c){return new uB(c)}U.success=O;function y(c){return new pB(c)}U.failure=y;function g(c,a,K1){if(c.successful)if(a.successful)return K1(c.value,a.value);else return y(a.error);else return y(c.error)}U.flatMap2=g;function i(c,a,K1){return g(c,a,(T1,m1)=>O(K1(T1,m1)))}U.map2=i})(HJ||(HJ={}));var yO=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{},zJ={exports:{}};zJ.exports,function(U,O){(function(y,g){U.exports=g()})(typeof self!="undefined"?self:yO,function(){return function(y){var g={};function i(c){if(g[c])return g[c].exports;var a=g[c]={i:c,l:!1,exports:{}};return y[c].call(a.exports,a,a.exports,i),a.l=!0,a.exports}return i.m=y,i.c=g,i.d=function(c,a,K1){i.o(c,a)||Object.defineProperty(c,a,{configurable:!1,enumerable:!0,get:K1})},i.r=function(c){Object.defineProperty(c,"__esModule",{value:!0})},i.n=function(c){var a=c&&c.__esModule?function(){return c.default}:function(){return c};return i.d(a,"a",a),a},i.o=function(c,a){return Object.prototype.hasOwnProperty.call(c,a)},i.p="",i(i.s=0)}([function(y,g,i){function c(s){if(!(this instanceof c))return new c(s);this._=s}var a=c.prototype;function K1(s,q1){for(var F1=0;F1>7),buf:function(y1){var h1=T1(function(f1,V0,K6,V8){return f1.concat(K6===V8.length-1?Buffer.from([V0,0]).readUInt16BE(0):V8.readUInt16BE(K6))},[],y1);return Buffer.from(m1(function(f1){return(f1<<1&65535)>>8},h1))}(F1.buf)}}),F1}function v0(){return typeof Buffer!="undefined"}function _1(){if(!v0())throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.")}function W0(s){_1();var q1=T1(function(h1,f1){return h1+f1},0,s);if(q1%8!=0)throw new Error("The bits ["+s.join(", ")+"] add up to "+q1+" which is not an even number of bytes; the total should be divisible by 8");var F1,R1=q1/8,y1=(F1=function(h1){return h1>48},T1(function(h1,f1){return h1||(F1(f1)?f1:h1)},null,s));if(y1)throw new Error(y1+" bit range requested exceeds 48 bit (6 byte) Number max.");return new c(function(h1,f1){var V0=R1+f1;return V0>h1.length?P6(f1,R1.toString()+" bytes"):q0(V0,T1(function(K6,V8){var o6=e1(V8,K6.buf);return{coll:K6.coll.concat(o6.v),buf:o6.buf}},{coll:[],buf:h1.slice(f1,V0)},s).coll)})}function J6(s,q1){return new c(function(F1,R1){return _1(),R1+q1>F1.length?P6(R1,q1+" bytes for "+s):q0(R1+q1,F1.slice(R1,R1+q1))})}function k6(s,q1){if(typeof(F1=q1)!="number"||Math.floor(F1)!==F1||q1<0||q1>6)throw new Error(s+" requires integer length in range [0, 6].");var F1}function n6(s){return k6("uintBE",s),J6("uintBE("+s+")",s).map(function(q1){return q1.readUIntBE(0,s)})}function G9(s){return k6("uintLE",s),J6("uintLE("+s+")",s).map(function(q1){return q1.readUIntLE(0,s)})}function R9(s){return k6("intBE",s),J6("intBE("+s+")",s).map(function(q1){return q1.readIntBE(0,s)})}function HQ(s){return k6("intLE",s),J6("intLE("+s+")",s).map(function(q1){return q1.readIntLE(0,s)})}function k1(s){return s instanceof c}function C0(s){return{}.toString.call(s)==="[object Array]"}function A6(s){return v0()&&Buffer.isBuffer(s)}function q0(s,q1){return{status:!0,index:s,value:q1,furthest:-1,expected:[]}}function P6(s,q1){return C0(q1)||(q1=[q1]),{status:!1,index:-1,value:null,furthest:s,expected:q1}}function g0(s,q1){if(!q1)return s;if(s.furthest>q1.furthest)return s;var F1=s.furthest===q1.furthest?function(R1,y1){if(function(){if(c._supportsSet!==void 0)return c._supportsSet;var VQ=typeof Set!="undefined";return c._supportsSet=VQ,VQ}()&&Array.from){for(var h1=new Set(R1),f1=0;f1=0;){if(f1 in F1){R1=F1[f1].line,h1===0&&(h1=F1[f1].lineStart);break}(s.charAt(f1)===` +`||s.charAt(f1)==="\r"&&s.charAt(f1+1)!==` +`)&&(y1++,h1===0&&(h1=f1+1)),f1--}var V0=R1+y1,K6=q1-h1;return F1[q1]={line:V0,lineStart:h1},{offset:q1,line:V0+1,column:K6+1}}function l8(s){if(!k1(s))throw new Error("not a parser: "+s)}function y4(s,q1){return typeof s=="string"?s.charAt(q1):s[q1]}function KQ(s){if(typeof s!="number")throw new Error("not a number: "+s)}function i9(s){if(typeof s!="function")throw new Error("not a function: "+s)}function $Q(s){if(typeof s!="string")throw new Error("not a string: "+s)}var N7=2,$J=3,A9=8,T7=5*A9,BJ=4*A9,M7=" ";function T8(s,q1){return new Array(q1+1).join(s)}function n9(s,q1,F1){var R1=q1-s.length;return R1<=0?s:T8(F1,R1)+s}function tB(s,q1,F1,R1){return{from:s-q1>0?s-q1:0,to:s+F1>R1?R1:s+F1}}function iO(s,q1){var F1,R1,y1,h1,f1,V0=q1.index,K6=V0.offset,V8=1;if(K6===s.length)return"Got the end of the input";if(A6(s)){var o6=K6-K6%A9,UQ=K6-o6,c8=tB(o6,T7,BJ+A9,s.length),VQ=m1(function(m6){return m1(function(kZ){return n9(kZ.toString(16),2,"0")},m6)},function(m6,kZ){var yZ=m6.length,g4=[],xZ=0;if(yZ<=kZ)return[m6.slice()];for(var vZ=0;vZ=4&&(F1+=1),V8=2,y1=m1(function(m6){return m6.length<=4?m6.join(" "):m6.slice(0,4).join(" ")+" "+m6.slice(4).join(" ")},VQ),(f1=(8*(h1.to>0?h1.to-1:h1.to)).toString(16).length)<2&&(f1=2)}else{var SZ=s.split(/\r\n|[\n\r\u2028\u2029]/);F1=V0.column-1,R1=V0.line-1,h1=tB(R1,N7,$J,SZ.length),y1=SZ.slice(h1.from,h1.to),f1=h1.to.toString().length}var Xw=R1-h1.from;return A6(s)&&(f1=(8*(h1.to>0?h1.to-1:h1.to)).toString(16).length)<2&&(f1=2),T1(function(m6,kZ,yZ){var g4,xZ=yZ===Xw,vZ=xZ?"> ":M7;return g4=A6(s)?n9((8*(h1.from+yZ)).toString(16),f1,"0"):n9((h1.from+yZ+1).toString(),f1," "),[].concat(m6,[vZ+g4+" | "+kZ],xZ?[M7+T8(" ",f1)+" | "+n9("",F1," ")+T8("^",V8)]:[])},[],y1).join(` +`)}function rB(s,q1){return[` +`,"-- PARSING FAILED "+T8("-",50),` + +`,iO(s,q1),` + +`,(F1=q1.expected,F1.length===1?`Expected: + +`+F1[0]:`Expected one of the following: + +`+F1.join(", ")),` +`].join("");var F1}function eB(s){return s.flags!==void 0?s.flags:[s.global?"g":"",s.ignoreCase?"i":"",s.multiline?"m":"",s.unicode?"u":"",s.sticky?"y":""].join("")}function UJ(){for(var s=[].slice.call(arguments),q1=s.length,F1=0;F1=2?KQ(q1):q1=0;var F1=function(y1){return RegExp("^(?:"+y1.source+")",eB(y1))}(s),R1=""+s;return c(function(y1,h1){var f1=F1.exec(y1.slice(h1));if(f1){if(0<=q1&&q1<=f1.length){var V0=f1[0],K6=f1[q1];return q0(h1+V0.length,K6)}return P6(h1,"valid match group (0 to "+f1.length+") in "+R1)}return P6(h1,R1)})}function v4(s){return c(function(q1,F1){return q0(F1,s)})}function PJ(s){return c(function(q1,F1){return P6(F1,s)})}function FJ(s){if(k1(s))return c(function(q1,F1){var R1=s._(q1,F1);return R1.index=F1,R1.value="",R1});if(typeof s=="string")return FJ(I7(s));if(s instanceof RegExp)return FJ(BQ(s));throw new Error("not a string, regexp, or parser: "+s)}function ZU(s){return l8(s),c(function(q1,F1){var R1=s._(q1,F1),y1=q1.slice(F1,R1.index);return R1.status?P6(F1,'not "'+y1+'"'):q0(F1,null)})}function DJ(s){return i9(s),c(function(q1,F1){var R1=y4(q1,F1);return F1=s.length?P6(q1,"any character/byte"):q0(q1+1,y4(s,q1))}),oO=c(function(s,q1){return q0(s.length,s.slice(q1))}),_3=c(function(s,q1){return q1=0}).desc(q1)},c.optWhitespace=eO,c.Parser=c,c.range=function(s,q1){return DJ(function(F1){return s<=F1&&F1<=q1}).desc(s+"-"+q1)},c.regex=BQ,c.regexp=BQ,c.sepBy=QU,c.sepBy1=b3,c.seq=UJ,c.seqMap=x4,c.seqObj=function(){for(var s,q1={},F1=0,R1=(s=arguments,Array.prototype.slice.call(s)),y1=R1.length,h1=0;h1255)throw new Error("Value specified to byte constructor ("+s+"=0x"+s.toString(16)+") is larger in value than a single byte.");var q1=(s>15?"0x":"0x0")+s.toString(16);return c(function(F1,R1){var y1=y4(F1,R1);return y1===s?q0(R1+1,y1):P6(R1,q1)})},buffer:function(s){return J6("buffer",s).map(function(q1){return Buffer.from(q1)})},encodedString:function(s,q1){return J6("string",q1).map(function(F1){return F1.toString(s)})},uintBE:n6,uint8BE:n6(1),uint16BE:n6(2),uint32BE:n6(4),uintLE:G9,uint8LE:G9(1),uint16LE:G9(2),uint32LE:G9(4),intBE:R9,int8BE:R9(1),int16BE:R9(2),int32BE:R9(4),intLE:HQ,int8LE:HQ(1),int16LE:HQ(2),int32LE:HQ(4),floatBE:J6("floatBE",4).map(function(s){return s.readFloatBE(0)}),floatLE:J6("floatLE",4).map(function(s){return s.readFloatLE(0)}),doubleBE:J6("doubleBE",8).map(function(s){return s.readDoubleBE(0)}),doubleLE:J6("doubleLE",8).map(function(s){return s.readDoubleLE(0)})},y.exports=c}])})}(zJ,zJ.exports);var X1=zJ.exports,y3=()=>{return/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g};function lB(U){if(U===void 0||U===null)return U;return U.shiftToAll().normalize()}function cB(U){if(U.includes("/"))U=U.substring(U.lastIndexOf("/")+1);if(U.endsWith(".md"))U=U.substring(0,U.length-3);return U}X1.alt(X1.regex(new RegExp(y3(),"")),X1.regex(/[0-9\p{Letter}_-]+/u).map((U)=>U.toLocaleLowerCase()),X1.whitespace.map((U)=>"-"),X1.any.map((U)=>"")).many().map((U)=>U.join(""));var xO=X1.alt(X1.regex(new RegExp(y3(),"")),X1.regex(/[0-9\p{Letter}_-]+/u),X1.whitespace.map((U)=>" "),X1.any.map((U)=>" ")).many().map((U)=>{return U.join("").split(/\s+/).join(" ").trim()});function vO(U){return xO.tryParse(U)}function gO(U){return U=lB(U),U=o1.fromObject(Object.fromEntries(Object.entries(U.toObject()).filter(([,O])=>O!=0))),U.toHuman()}var L7;(function(U){function O(k1,C0=k3,A6=!1){let q0=y(k1);if(!q0)return C0.renderNullAs;switch(q0.type){case"null":return C0.renderNullAs;case"string":return q0.value;case"number":case"boolean":return""+q0.value;case"html":return q0.value.outerHTML;case"widget":return q0.value.markdown();case"link":return q0.value.markdown();case"function":return"";case"array":let P6="";if(A6)P6+="[";if(P6+=q0.value.map((g0)=>O(g0,C0,!0)).join(", "),A6)P6+="]";return P6;case"object":return"{ "+Object.entries(q0.value).map((g0)=>g0[0]+": "+O(g0[1],C0,!0)).join(", ")+" }";case"date":if(q0.value.second==0&&q0.value.hour==0&&q0.value.minute==0)return q0.value.toFormat(C0.defaultDateFormat);return q0.value.toFormat(C0.defaultDateTimeFormat);case"duration":return gO(q0.value)}}U.toString=O;function y(k1){if(_1(k1))return{type:"null",value:k1};else if(m1(k1))return{type:"number",value:k1};else if(T1(k1))return{type:"string",value:k1};else if(J6(k1))return{type:"boolean",value:k1};else if(v0(k1))return{type:"duration",value:k1};else if(e1(k1))return{type:"date",value:k1};else if(n6(k1))return{type:"widget",value:k1};else if(W0(k1))return{type:"array",value:k1};else if(k6(k1))return{type:"link",value:k1};else if(HQ(k1))return{type:"function",value:k1};else if(G9(k1))return{type:"html",value:k1};else if(R9(k1))return{type:"object",value:k1};else return}U.wrapValue=y;function g(k1,C0){if(R9(k1)){let A6={};for(let[q0,P6]of Object.entries(k1))A6[q0]=g(P6,C0);return A6}else if(W0(k1)){let A6=[];for(let q0 of k1)A6.push(g(q0,C0));return A6}else return C0(k1)}U.mapLeaves=g;function i(k1,C0,A6){var q0,P6;if(k1===void 0)k1=null;if(C0===void 0)C0=null;if(k1===null&&C0===null)return 0;else if(k1===null)return-1;else if(C0===null)return 1;let g0=y(k1),y6=y(C0);if(g0===void 0&&y6===void 0)return 0;else if(g0===void 0)return-1;else if(y6===void 0)return 1;if(g0.type!=y6.type)return g0.type.localeCompare(y6.type);if(g0.value===y6.value)return 0;switch(g0.type){case"string":return g0.value.localeCompare(y6.value);case"number":if(g0.valueT8,KQ=y4(zQ.path).localeCompare(y4(l8.path));if(KQ!=0)return KQ;let i9=zQ.type.localeCompare(l8.type);if(i9!=0)return i9;if(zQ.subpath&&!l8.subpath)return 1;if(!zQ.subpath&&l8.subpath)return-1;if(!zQ.subpath&&!l8.subpath)return 0;return((q0=zQ.subpath)!=null?q0:"").localeCompare((P6=l8.subpath)!=null?P6:"");case"date":return g0.value0;case"boolean":return C0.value;case"link":return!!C0.value.path;case"date":return C0.value.toMillis()!=0;case"duration":return C0.value.as("seconds")!=0;case"object":return Object.keys(C0.value).length>0;case"array":return C0.value.length>0;case"null":return!1;case"html":case"widget":case"function":return!0}}U.isTruthy=a;function K1(k1){if(k1===null||k1===void 0)return k1;if(U.isArray(k1))return[].concat(k1.map((C0)=>K1(C0)));else if(U.isObject(k1)){let C0={};for(let[A6,q0]of Object.entries(k1))C0[A6]=K1(q0);return C0}else return k1}U.deepCopy=K1;function T1(k1){return typeof k1=="string"}U.isString=T1;function m1(k1){return typeof k1=="number"}U.isNumber=m1;function e1(k1){return k1 instanceof Z0}U.isDate=e1;function v0(k1){return k1 instanceof o1}U.isDuration=v0;function _1(k1){return k1===null||k1===void 0}U.isNull=_1;function W0(k1){return Array.isArray(k1)}U.isArray=W0;function J6(k1){return typeof k1==="boolean"}U.isBoolean=J6;function k6(k1){return k1 instanceof U8}U.isLink=k6;function n6(k1){return k1 instanceof x3}U.isWidget=n6;function G9(k1){if(typeof HTMLElement!=="undefined")return k1 instanceof HTMLElement;else return!1}U.isHtml=G9;function R9(k1){return typeof k1=="object"&&!G9(k1)&&!n6(k1)&&!W0(k1)&&!v0(k1)&&!e1(k1)&&!k6(k1)&&k1!==void 0&&!_1(k1)}U.isObject=R9;function HQ(k1){return typeof k1=="function"}U.isFunction=HQ})(L7||(L7={}));var iB;(function(U){function O(i){return L7.isObject(i)&&Object.keys(i).length==2&&"key"in i&&"rows"in i}U.isElementGroup=O;function y(i){for(let c of i)if(!O(c))return!1;return!0}U.isGrouping=y;function g(i){if(y(i)){let c=0;for(let a of i)c+=g(a.rows);return c}else return i.length}U.count=g})(iB||(iB={}));var U8=class{constructor(U){b8(this,"path"),b8(this,"display"),b8(this,"subpath"),b8(this,"embed"),b8(this,"type"),Object.assign(this,U)}static file(U,O=!1,y){return new U8({path:U,embed:O,display:y,subpath:void 0,type:"file"})}static infer(U,O=!1,y){if(U.includes("#^")){let g=U.split("#^");return U8.block(g[0],g[1],O,y)}else if(U.includes("#")){let g=U.split("#");return U8.header(g[0],g[1],O,y)}else return U8.file(U,O,y)}static header(U,O,y,g){return new U8({path:U,embed:y,display:g,subpath:vO(O),type:"header"})}static block(U,O,y,g){return new U8({path:U,embed:y,display:g,subpath:O,type:"block"})}static fromObject(U){return new U8(U)}equals(U){if(U==null||U==null)return!1;return this.path==U.path&&this.type==U.type&&this.subpath==U.subpath}toString(){return this.markdown()}toObject(){return{path:this.path,type:this.type,subpath:this.subpath,display:this.display,embed:this.embed}}withPath(U){return new U8(Object.assign({},this,{path:U}))}withDisplay(U){return new U8(Object.assign({},this,{display:U}))}withHeader(U){return U8.header(this.path,U,this.embed,this.display)}toFile(){return U8.file(this.path,this.embed,this.display)}toEmbed(){if(this.embed)return this;else{let U=new U8(this);return U.embed=!0,U}}fromEmbed(){if(!this.embed)return this;else{let U=new U8(this);return U.embed=!1,U}}markdown(){let U=(this.embed?"!":"")+"[["+this.obsidianLink();if(this.display)U+="|"+this.display;else if(U+="|"+cB(this.path),this.type=="header"||this.type=="block")U+=" > "+this.subpath;return U+="]]",U}obsidianLink(){var U,O;let y=this.path.replaceAll("|","\\|");if(this.type=="header")return y+"#"+((U=this.subpath)==null?void 0:U.replaceAll("|","\\|"));if(this.type=="block")return y+"#^"+((O=this.subpath)==null?void 0:O.replaceAll("|","\\|"));else return y}fileName(){return cB(this.path).replace(".md","")}},x3=class{constructor(U){b8(this,"$widget"),this.$widget=U}},hO=class extends x3{constructor(U,O){super("dataview:list-pair");b8(this,"key"),b8(this,"value"),this.key=U,this.value=O}markdown(){return`${L7.toString(this.key)}: ${L7.toString(this.value)}`}},fO=class extends x3{constructor(U,O){super("dataview:external-link");b8(this,"url"),b8(this,"display"),this.url=U,this.display=O}markdown(){var U;return`[${(U=this.display)!=null?U:this.url}](${this.url})`}},nB;(function(U){function O(a,K1){return new hO(a,K1)}U.listPair=O;function y(a,K1){return new fO(a,K1)}U.externalLink=y;function g(a){return a.$widget==="dataview:list-pair"}U.isListPair=g;function i(a){return a.$widget==="dataview:external-link"}U.isExternalLink=i;function c(a){return g(a)||i(a)}U.isBuiltin=c})(nB||(nB={}));var w6;(function(U){function O(_1){return{type:"variable",name:_1}}U.variable=O;function y(_1){return{type:"literal",value:_1}}U.literal=y;function g(_1,W0,J6){return{type:"binaryop",left:_1,op:W0,right:J6}}U.binaryOp=g;function i(_1,W0){return{type:"index",object:_1,index:W0}}U.index=i;function c(_1){let W0=_1.split("."),J6=U.variable(W0[0]);for(let k6=1;k6"||_1==">="||_1=="!="||_1=="="}U.isCompareOp=v0,U.NULL=U.literal(null)})(w6||(w6={}));var c9;(function(U){function O(e1){return{type:"tag",tag:e1}}U.tag=O;function y(e1){return{type:"csv",path:e1}}U.csv=y;function g(e1){return{type:"folder",folder:e1}}U.folder=g;function i(e1,v0){return{type:"link",file:e1,direction:v0?"incoming":"outgoing"}}U.link=i;function c(e1,v0,_1){return{type:"binaryop",left:e1,op:v0,right:_1}}U.binaryOp=c;function a(e1,v0){return{type:"binaryop",left:e1,op:"&",right:v0}}U.and=a;function K1(e1,v0){return{type:"binaryop",left:e1,op:"|",right:v0}}U.or=K1;function T1(e1){return{type:"negate",child:e1}}U.negate=T1;function m1(){return{type:"empty"}}U.empty=m1})(c9||(c9={}));var oB=new RegExp(y3(),""),v3={year:o1.fromObject({years:1}),years:o1.fromObject({years:1}),yr:o1.fromObject({years:1}),yrs:o1.fromObject({years:1}),month:o1.fromObject({months:1}),months:o1.fromObject({months:1}),mo:o1.fromObject({months:1}),mos:o1.fromObject({months:1}),week:o1.fromObject({weeks:1}),weeks:o1.fromObject({weeks:1}),wk:o1.fromObject({weeks:1}),wks:o1.fromObject({weeks:1}),w:o1.fromObject({weeks:1}),day:o1.fromObject({days:1}),days:o1.fromObject({days:1}),d:o1.fromObject({days:1}),hour:o1.fromObject({hours:1}),hours:o1.fromObject({hours:1}),hr:o1.fromObject({hours:1}),hrs:o1.fromObject({hours:1}),h:o1.fromObject({hours:1}),minute:o1.fromObject({minutes:1}),minutes:o1.fromObject({minutes:1}),min:o1.fromObject({minutes:1}),mins:o1.fromObject({minutes:1}),m:o1.fromObject({minutes:1}),second:o1.fromObject({seconds:1}),seconds:o1.fromObject({seconds:1}),sec:o1.fromObject({seconds:1}),secs:o1.fromObject({seconds:1}),s:o1.fromObject({seconds:1})},g3={now:()=>Z0.local(),today:()=>Z0.local().startOf("day"),yesterday:()=>Z0.local().startOf("day").minus(o1.fromObject({days:1})),tomorrow:()=>Z0.local().startOf("day").plus(o1.fromObject({days:1})),sow:()=>Z0.local().startOf("week"),"start-of-week":()=>Z0.local().startOf("week"),eow:()=>Z0.local().endOf("week"),"end-of-week":()=>Z0.local().endOf("week"),soy:()=>Z0.local().startOf("year"),"start-of-year":()=>Z0.local().startOf("year"),eoy:()=>Z0.local().endOf("year"),"end-of-year":()=>Z0.local().endOf("year"),som:()=>Z0.local().startOf("month"),"start-of-month":()=>Z0.local().startOf("month"),eom:()=>Z0.local().endOf("month"),"end-of-month":()=>Z0.local().endOf("month")},h3=["FROM","WHERE","LIMIT","GROUP","FLATTEN"];function bO(U){let O=-1;while((O=U.indexOf("|",O+1))>=0){if(O>0&&U[O-1]=="\\")continue;return[U.substring(0,O).replace(/\\\|/g,"|"),U.substring(O+1)]}return[U.replace(/\\\|/g,"|"),void 0]}function mO(U){let[O,y]=bO(U);return U8.infer(O,!1,y)}function C7(U,O,y){return X1.seqMap(U,X1.seq(X1.optWhitespace,O,X1.optWhitespace,U).many(),(g,i)=>{if(i.length==0)return g;let c=y(g,i[0][1],i[0][3]);for(let a=1;a{return(i,c)=>{let a=U._(i,c);if(!a.status)return a;for(let K1 of O){let T1=K1(a.value)._(i,a.index);if(!T1.status)return a;a=T1}return a}})}var I9=X1.createLanguage({number:(U)=>X1.regexp(/-?[0-9]+(\.[0-9]+)?/).map((O)=>Number.parseFloat(O)).desc("number"),string:(U)=>X1.string('"').then(X1.alt(U.escapeCharacter,X1.noneOf('"\\')).atLeast(0).map((O)=>O.join(""))).skip(X1.string('"')).desc("string"),escapeCharacter:(U)=>X1.string("\\").then(X1.any).map((O)=>{if(O==='"')return'"';if(O==="\\")return"\\";else return"\\"+O}),bool:(U)=>X1.regexp(/true|false|True|False/).map((O)=>O.toLowerCase()=="true").desc("boolean ('true' or 'false')"),tag:(U)=>X1.seqMap(X1.string("#"),X1.alt(X1.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(),(O,y)=>O+y.join("")).desc("tag ('#hello/stuff')"),identifier:(U)=>X1.seqMap(X1.alt(X1.regexp(/\p{Letter}/u),X1.regexp(oB).desc("text")),X1.alt(X1.regexp(/[0-9\p{Letter}_-]/u),X1.regexp(oB).desc("text")).many(),(O,y)=>O+y.join("")).desc("variable identifier"),link:(U)=>X1.regexp(/\[\[([^\[\]]*?)\]\]/u,1).map((O)=>mO(O)).desc("file link"),embedLink:(U)=>X1.seqMap(X1.string("!").atMost(1),U.link,(O,y)=>{if(O.length>0)y.embed=!0;return y}).desc("file link"),binaryPlusMinus:(U)=>X1.regexp(/\+|-/).map((O)=>O).desc("'+' or '-'"),binaryMulDiv:(U)=>X1.regexp(/\*|\/|%/).map((O)=>O).desc("'*' or '/' or '%'"),binaryCompareOp:(U)=>X1.regexp(/>=|<=|!=|>|<|=/).map((O)=>O).desc("'>=' or '<=' or '!=' or '=' or '>' or '<'"),binaryBooleanOp:(U)=>X1.regexp(/and|or|&|\|/i).map((O)=>{if(O.toLowerCase()=="and")return"&";else if(O.toLowerCase()=="or")return"|";else return O}).desc("'and' or 'or'"),rootDate:(U)=>X1.seqMap(X1.regexp(/\d{4}/),X1.string("-"),X1.regexp(/\d{2}/),(O,y,g)=>{return Z0.fromObject({year:Number.parseInt(O),month:Number.parseInt(g)})}).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),dateShorthand:(U)=>X1.alt(...Object.keys(g3).sort((O,y)=>y.length-O.length).map(X1.string)),date:(U)=>_O(U.rootDate,(O)=>X1.seqMap(X1.string("-"),X1.regexp(/\d{2}/),(y,g)=>O.set({day:Number.parseInt(g)})),(O)=>X1.seqMap(X1.string("T"),X1.regexp(/\d{2}/),(y,g)=>O.set({hour:Number.parseInt(g)})),(O)=>X1.seqMap(X1.string(":"),X1.regexp(/\d{2}/),(y,g)=>O.set({minute:Number.parseInt(g)})),(O)=>X1.seqMap(X1.string(":"),X1.regexp(/\d{2}/),(y,g)=>O.set({second:Number.parseInt(g)})),(O)=>X1.alt(X1.seqMap(X1.string("."),X1.regexp(/\d{3}/),(y,g)=>O.set({millisecond:Number.parseInt(g)})),X1.succeed(O)),(O)=>X1.alt(X1.seqMap(X1.string("+").or(X1.string("-")),X1.regexp(/\d{1,2}(:\d{2})?/),(y,g)=>O.setZone("UTC"+y+g,{keepLocalTime:!0})),X1.seqMap(X1.string("Z"),()=>O.setZone("utc",{keepLocalTime:!0})),X1.seqMap(X1.string("["),X1.regexp(/[0-9A-Za-z+-\/]+/u),X1.string("]"),(y,g,i)=>O.setZone(g,{keepLocalTime:!0})))).assert((O)=>O.isValid,"valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),datePlus:(U)=>X1.alt(U.dateShorthand.map((O)=>g3[O]()),U.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"),durationType:(U)=>X1.alt(...Object.keys(v3).sort((O,y)=>y.length-O.length).map(X1.string)),duration:(U)=>X1.seqMap(U.number,X1.optWhitespace,U.durationType,(O,y,g)=>v3[g].mapUnits((i)=>i*O)).sepBy1(X1.string(",").trim(X1.optWhitespace).or(X1.optWhitespace)).map((O)=>O.reduce((y,g)=>y.plus(g))).desc("duration like 4hr2min"),rawNull:(U)=>X1.string("null"),tagSource:(U)=>U.tag.map((O)=>c9.tag(O)),csvSource:(U)=>X1.seqMap(X1.string("csv(").skip(X1.optWhitespace),U.string,X1.string(")"),(O,y,g)=>c9.csv(y)),linkIncomingSource:(U)=>U.link.map((O)=>c9.link(O.path,!0)),linkOutgoingSource:(U)=>X1.seqMap(X1.string("outgoing(").skip(X1.optWhitespace),U.link,X1.string(")"),(O,y,g)=>c9.link(y.path,!1)),folderSource:(U)=>U.string.map((O)=>c9.folder(O)),parensSource:(U)=>X1.seqMap(X1.string("("),X1.optWhitespace,U.source,X1.optWhitespace,X1.string(")"),(O,y,g,i,c)=>g),negateSource:(U)=>X1.seqMap(X1.alt(X1.string("-"),X1.string("!")),U.atomSource,(O,y)=>c9.negate(y)),atomSource:(U)=>X1.alt(U.parensSource,U.negateSource,U.linkOutgoingSource,U.linkIncomingSource,U.folderSource,U.tagSource,U.csvSource),binaryOpSource:(U)=>C7(U.atomSource,U.binaryBooleanOp.map((O)=>O),c9.binaryOp),source:(U)=>U.binaryOpSource,variableField:(U)=>U.identifier.chain((O)=>{if(h3.includes(O.toUpperCase()))return X1.fail("Variable fields cannot be a keyword ("+h3.join(" or ")+")");else return X1.succeed(w6.variable(O))}).desc("variable"),numberField:(U)=>U.number.map((O)=>w6.literal(O)).desc("number"),stringField:(U)=>U.string.map((O)=>w6.literal(O)).desc("string"),boolField:(U)=>U.bool.map((O)=>w6.literal(O)).desc("boolean"),dateField:(U)=>X1.seqMap(X1.string("date("),X1.optWhitespace,U.datePlus,X1.optWhitespace,X1.string(")"),(O,y,g,i,c)=>w6.literal(g)).desc("date"),durationField:(U)=>X1.seqMap(X1.string("dur("),X1.optWhitespace,U.duration,X1.optWhitespace,X1.string(")"),(O,y,g,i,c)=>w6.literal(g)).desc("duration"),nullField:(U)=>U.rawNull.map((O)=>w6.NULL),linkField:(U)=>U.link.map((O)=>w6.literal(O)),listField:(U)=>U.field.sepBy(X1.string(",").trim(X1.optWhitespace)).wrap(X1.string("[").skip(X1.optWhitespace),X1.optWhitespace.then(X1.string("]"))).map((O)=>w6.list(O)).desc("list ('[1, 2, 3]')"),objectField:(U)=>X1.seqMap(U.identifier.or(U.string),X1.string(":").trim(X1.optWhitespace),U.field,(O,y,g)=>{return{name:O,value:g}}).sepBy(X1.string(",").trim(X1.optWhitespace)).wrap(X1.string("{").skip(X1.optWhitespace),X1.optWhitespace.then(X1.string("}"))).map((O)=>{let y={};for(let g of O)y[g.name]=g.value;return w6.object(y)}).desc("object ('{ a: 1, b: 2 }')"),atomInlineField:(U)=>X1.alt(U.date,U.duration.map((O)=>lB(O)),U.string,U.tag,U.embedLink,U.bool,U.number,U.rawNull),inlineFieldList:(U)=>U.atomInlineField.sepBy(X1.string(",").trim(X1.optWhitespace).lookahead(U.atomInlineField)),inlineField:(U)=>X1.alt(X1.seqMap(U.atomInlineField,X1.string(",").trim(X1.optWhitespace),U.inlineFieldList,(O,y,g)=>[O].concat(g)),U.atomInlineField),atomField:(U)=>X1.alt(U.embedLink.map((O)=>w6.literal(O)),U.negatedField,U.linkField,U.listField,U.objectField,U.lambdaField,U.parensField,U.boolField,U.numberField,U.stringField,U.dateField,U.durationField,U.nullField,U.variableField),indexField:(U)=>X1.seqMap(U.atomField,X1.alt(U.dotPostfix,U.indexPostfix,U.functionPostfix).many(),(O,y)=>{let g=O;for(let i of y)switch(i.type){case"dot":g=w6.index(g,w6.literal(i.field));break;case"index":g=w6.index(g,i.field);break;case"function":g=w6.func(g,i.fields);break}return g}),negatedField:(U)=>X1.seqMap(X1.string("!"),U.indexField,(O,y)=>w6.negate(y)).desc("negated field"),parensField:(U)=>X1.seqMap(X1.string("("),X1.optWhitespace,U.field,X1.optWhitespace,X1.string(")"),(O,y,g,i,c)=>g),lambdaField:(U)=>X1.seqMap(U.identifier.sepBy(X1.string(",").trim(X1.optWhitespace)).wrap(X1.string("(").trim(X1.optWhitespace),X1.string(")").trim(X1.optWhitespace)),X1.string("=>").trim(X1.optWhitespace),U.field,(O,y,g)=>{return{type:"lambda",arguments:O,value:g}}),dotPostfix:(U)=>X1.seqMap(X1.string("."),U.identifier,(O,y)=>{return{type:"dot",field:y}}),indexPostfix:(U)=>X1.seqMap(X1.string("["),X1.optWhitespace,U.field,X1.optWhitespace,X1.string("]"),(O,y,g,i,c)=>{return{type:"index",field:g}}),functionPostfix:(U)=>X1.seqMap(X1.string("("),X1.optWhitespace,U.field.sepBy(X1.string(",").trim(X1.optWhitespace)),X1.optWhitespace,X1.string(")"),(O,y,g,i,c)=>{return{type:"function",fields:g}}),binaryMulDivField:(U)=>C7(U.indexField,U.binaryMulDiv,w6.binaryOp),binaryPlusMinusField:(U)=>C7(U.binaryMulDivField,U.binaryPlusMinus,w6.binaryOp),binaryCompareField:(U)=>C7(U.binaryPlusMinusField,U.binaryCompareOp,w6.binaryOp),binaryBooleanField:(U)=>C7(U.binaryCompareField,U.binaryBooleanOp,w6.binaryOp),binaryOpField:(U)=>U.binaryBooleanField,field:(U)=>U.binaryOpField});function dO(U){try{return HJ.success(I9.field.tryParse(U))}catch(O){return HJ.failure(""+O)}}var KJ;(function(U){function O(g,i){return{name:g,field:i}}U.named=O;function y(g,i){return{field:g,direction:i}}U.sortBy=y})(KJ||(KJ={}));function uO(U){return X1.custom((O,y)=>{return(g,i)=>{let c=U._(g,i);if(!c.status)return c;return Object.assign({},c,{value:[c.value,g.substring(i,c.index)]})}})}function pO(U){return U.split(/[\r\n]+/).map((O)=>O.trim()).join("")}function aB(U,O){return X1.eof.map(U).or(X1.whitespace.then(O))}var sB=X1.createLanguage({queryType:(U)=>X1.alt(X1.regexp(/TABLE|LIST|TASK|CALENDAR/i)).map((O)=>O.toLowerCase()).desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"),explicitNamedField:(U)=>X1.seqMap(I9.field.skip(X1.whitespace),X1.regexp(/AS/i).skip(X1.whitespace),I9.identifier.or(I9.string),(O,y,g)=>KJ.named(g,O)),comment:()=>X1.Parser((U,O)=>{let y=U.substring(O);if(!y.startsWith("//"))return X1.makeFailure(O,"Not a comment");y=y.split(` +`)[0];let g=y.substring(2).trim();return X1.makeSuccess(O+y.length,g)}),namedField:(U)=>X1.alt(U.explicitNamedField,uO(I9.field).map(([O,y])=>KJ.named(pO(y),O))),sortField:(U)=>X1.seqMap(I9.field.skip(X1.optWhitespace),X1.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1),(O,y)=>{let g=y.length==0?"ascending":y[0].toLowerCase();if(g=="desc")g="descending";if(g=="asc")g="ascending";return{field:O,direction:g}}),headerClause:(U)=>U.queryType.chain((O)=>{switch(O){case"table":return aB(()=>({type:O,fields:[],showId:!0}),X1.seqMap(X1.regexp(/WITHOUT\s+ID/i).skip(X1.optWhitespace).atMost(1),X1.sepBy(U.namedField,X1.string(",").trim(X1.optWhitespace)),(y,g)=>{return{type:O,fields:g,showId:y.length==0}}));case"list":return aB(()=>({type:O,format:void 0,showId:!0}),X1.seqMap(X1.regexp(/WITHOUT\s+ID/i).skip(X1.optWhitespace).atMost(1),I9.field.atMost(1),(y,g)=>{return{type:O,format:g.length==1?g[0]:void 0,showId:y.length==0}}));case"task":return X1.succeed({type:O});case"calendar":return X1.whitespace.then(X1.seqMap(U.namedField,(y)=>{return{type:O,showId:!0,field:y}}));default:return X1.fail(`Unrecognized query type '${O}'`)}}).desc("TABLE or LIST or TASK or CALENDAR"),fromClause:(U)=>X1.seqMap(X1.regexp(/FROM/i),X1.whitespace,I9.source,(O,y,g)=>g),whereClause:(U)=>X1.seqMap(X1.regexp(/WHERE/i),X1.whitespace,I9.field,(O,y,g)=>{return{type:"where",clause:g}}).desc("WHERE "),sortByClause:(U)=>X1.seqMap(X1.regexp(/SORT/i),X1.whitespace,U.sortField.sepBy1(X1.string(",").trim(X1.optWhitespace)),(O,y,g)=>{return{type:"sort",fields:g}}).desc("SORT field [ASC/DESC]"),limitClause:(U)=>X1.seqMap(X1.regexp(/LIMIT/i),X1.whitespace,I9.field,(O,y,g)=>{return{type:"limit",amount:g}}).desc("LIMIT "),flattenClause:(U)=>X1.seqMap(X1.regexp(/FLATTEN/i).skip(X1.whitespace),U.namedField,(O,y)=>{return{type:"flatten",field:y}}).desc("FLATTEN [AS ]"),groupByClause:(U)=>X1.seqMap(X1.regexp(/GROUP BY/i).skip(X1.whitespace),U.namedField,(O,y)=>{return{type:"group",field:y}}).desc("GROUP BY [AS ]"),clause:(U)=>X1.alt(U.fromClause,U.whereClause,U.sortByClause,U.limitClause,U.groupByClause,U.flattenClause),query:(U)=>X1.seqMap(U.headerClause.trim(f3),U.fromClause.trim(f3).atMost(1),U.clause.trim(f3).many(),(O,y,g)=>{return{header:O,source:y.length==0?c9.folder(""):y[0],operations:g,settings:k3}})}),f3=X1.alt(X1.whitespace,sB.comment).many().map((U)=>U.join("")),lO=(U)=>{var O;if(U)return(O=U.plugins.plugins.dataview)==null?void 0:O.api;else return window.DataviewAPI},cO=(U)=>U.plugins.enabledPlugins.has("dataview");Q.DATE_SHORTHANDS=g3,Q.DURATION_TYPES=v3,Q.EXPRESSION=I9,Q.KEYWORDS=h3,Q.QUERY_LANGUAGE=sB,Q.getAPI=lO,Q.isPluginEnabled=cO,Q.parseField=dO}}),xX=W1({"node_modules/bytes/index.js"(Q,X){X.exports=H,X.exports.format=K,X.exports.parse=z;var Z=/\B(?=(\d{3})+(?!\d))/g,J=/(?:\.0*|(\.[^0]+)0+)$/,G={b:1,kb:1024,mb:1048576,gb:1073741824,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},Y=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function H(W,$){if(typeof W==="string")return z(W);if(typeof W==="number")return K(W,$);return null}function K(W,$){if(!Number.isFinite(W))return null;var q=Math.abs(W),B=$&&$.thousandsSeparator||"",D=$&&$.unitSeparator||"",F=$&&$.decimalPlaces!==void 0?$.decimalPlaces:2,P=Boolean($&&$.fixedDecimals),N=$&&$.unit||"";if(!N||!G[N.toLowerCase()])if(q>=G.pb)N="PB";else if(q>=G.tb)N="TB";else if(q>=G.gb)N="GB";else if(q>=G.mb)N="MB";else if(q>=G.kb)N="KB";else N="B";var C=W/G[N.toLowerCase()],L=C.toFixed(F);if(!P)L=L.replace(J,"$1");if(B)L=L.split(".").map(function(V,M){return M===0?V.replace(Z,B):V}).join(".");return L+D+N}function z(W){if(typeof W==="number"&&!isNaN(W))return W;if(typeof W!=="string")return null;var $=Y.exec(W),q,B="b";if(!$)q=parseInt(W,10),B="b";else q=parseFloat($[1]),B=$[4].toLowerCase();if(isNaN(q))return null;return Math.floor(G[B]*q)}}}),iq=W1({"node_modules/content-type/index.js"(Q){var X=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,Z=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,J=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,G=/\\([\u000b\u0020-\u00ff])/g,Y=/([\\"])/g,H=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Q.format=K,Q.parse=z;function K(B){if(!B||typeof B!=="object")throw new TypeError("argument obj is required");var{parameters:D,type:F}=B;if(!F||!H.test(F))throw new TypeError("invalid type");var P=F;if(D&&typeof D==="object"){var N,C=Object.keys(D).sort();for(var L=0;L0&&!Z.test(D))throw new TypeError("invalid parameter value");return'"'+D.replace(Y,"\\$1")+'"'}function q(B){this.parameters=Object.create(null),this.type=B}}}),mM=W1({"node_modules/depd/index.js"(Q,X){var Z=require("path").relative;X.exports=z;var J=process.cwd();function G(w,A){var R=w.split(/[ ,]+/),T=String(A).toLowerCase();for(var S=0;S0}function $(w){if(process.noDeprecation)return!0;var A=process.env.NO_DEPRECATION||"";return G(A,w)}function q(w){if(process.traceDeprecation)return!0;var A=process.env.TRACE_DEPRECATION||"";return G(A,w)}function B(w,A){var R=W(process,"deprecation");if(!R&&this._ignored)return;var T,S,v,h,x=0,p=!1,n=L(),t=this._file;if(A)h=A,v=D(n[1]),v.name=h.name,t=v[0];else x=2,h=D(n[x]),v=h;for(;x",R=w.getLineNumber(),T=w.getColumnNumber();if(w.isEval())A=w.getEvalOrigin()+", "+A;var S=[A,R,T];return S.callSite=w,S.name=w.getFunctionName(),S}function F(w){var{callSite:A,name:R}=w;if(!R)R="";var T=A.getThis(),S=T&&A.getTypeName();if(S==="Object")S=void 0;if(S==="Function")S=T.name||S;return S&&A.getMethodName()?S+"."+R:R}function P(w,A,R){var T=new Date().toUTCString(),S=T+" "+this._namespace+" deprecated "+w;if(this._traced){for(var v=0;v=600))Z("non-error status code; use only 4xx or 5xx status codes");if(typeof L!=="number"||!G.message[L]&&(L<400||L>=600))L=500;var w=z[L]||z[K(L)];if(!N)N=w?new w(C):new Error(C||G.message[L]),Error.captureStackTrace(N,z);if(!w||!(N instanceof w)||N.status!==L)N.expose=L<500,N.status=N.statusCode=L;for(var A in V)if(A!=="status"&&A!=="statusCode")N[A]=V[A];return N}function W(){function N(){throw new TypeError("cannot construct abstract class")}return Y(N,Error),N}function $(N,C,L){var V=P(C);function M(I){var E=I!=null?I:G.message[L],w=new Error(E);return Error.captureStackTrace(w,M),J(w,M.prototype),Object.defineProperty(w,"message",{enumerable:!0,configurable:!0,value:E,writable:!0}),Object.defineProperty(w,"name",{enumerable:!1,configurable:!0,value:V,writable:!0}),w}return Y(M,N),D(M,V),M.prototype.status=L,M.prototype.statusCode=L,M.prototype.expose=!0,M}function q(N){return function C(L){if(!L||typeof L!=="object")return!1;if(L instanceof N)return!0;return L instanceof Error&&typeof L.expose==="boolean"&&typeof L.statusCode==="number"&&L.status===L.statusCode}}function B(N,C,L){var V=P(C);function M(I){var E=I!=null?I:G.message[L],w=new Error(E);return Error.captureStackTrace(w,M),J(w,M.prototype),Object.defineProperty(w,"message",{enumerable:!0,configurable:!0,value:E,writable:!0}),Object.defineProperty(w,"name",{enumerable:!1,configurable:!0,value:V,writable:!0}),w}return Y(M,N),D(M,V),M.prototype.status=L,M.prototype.statusCode=L,M.prototype.expose=!1,M}function D(N,C){var L=Object.getOwnPropertyDescriptor(N,"name");if(L&&L.configurable)L.value=C,Object.defineProperty(N,"name",L)}function F(N,C,L){C.forEach(function V(M){var I,E=H(G.message[M]);switch(K(M)){case 400:I=$(L,E,M);break;case 500:I=B(L,E,M);break}if(I)N[M]=I,N[E]=I})}function P(N){return N.substr(-5)!=="Error"?N+"Error":N}}}),uo=W1({"node_modules/body-parser/node_modules/ms/index.js"(Q,X){var Z=1000,J=Z*60,G=J*60,Y=G*24,H=Y*365.25;X.exports=function(q,B){B=B||{};var D=typeof q;if(D==="string"&&q.length>0)return K(q);else if(D==="number"&&isNaN(q)===!1)return B.long?W(q):z(q);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(q))};function K(q){if(q=String(q),q.length>100)return;var B=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(q);if(!B)return;var D=parseFloat(B[1]),F=(B[2]||"ms").toLowerCase();switch(F){case"years":case"year":case"yrs":case"yr":case"y":return D*H;case"days":case"day":case"d":return D*Y;case"hours":case"hour":case"hrs":case"hr":case"h":return D*G;case"minutes":case"minute":case"mins":case"min":case"m":return D*J;case"seconds":case"second":case"secs":case"sec":case"s":return D*Z;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}function z(q){if(q>=Y)return Math.round(q/Y)+"d";if(q>=G)return Math.round(q/G)+"h";if(q>=J)return Math.round(q/J)+"m";if(q>=Z)return Math.round(q/Z)+"s";return q+"ms"}function W(q){return $(q,Y,"day")||$(q,G,"hour")||$(q,J,"minute")||$(q,Z,"second")||q+" ms"}function $(q,B,D){if(q=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Q.formatters.j=function(z){try{return JSON.stringify(z)}catch(W){return"[UnexpectedJSONParseError]: "+W.message}};function J(z){var W=this.useColors;if(z[0]=(W?"%c":"")+this.namespace+(W?" %c":" ")+z[0]+(W?"%c ":" ")+"+"+Q.humanize(this.diff),!W)return;var $="color: "+this.color;z.splice(1,0,$,"color: inherit");var q=0,B=0;z[0].replace(/%[a-zA-Z%]/g,function(D){if(D==="%%")return;if(q++,D==="%c")B=q}),z.splice(B,0,$)}function G(){return typeof console==="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function Y(z){try{if(z==null)Q.storage.removeItem("debug");else Q.storage.debug=z}catch(W){}}function H(){var z;try{z=Q.storage.debug}catch(W){}if(!z&&typeof process!=="undefined"&&"env"in process)z=process.env.DEBUG;return z}Q.enable(H());function K(){try{return window.localStorage}catch(z){}}}}),lo=W1({"node_modules/has-flag/index.js"(Q,X){X.exports=(Z,J=process.argv)=>{let G=Z.startsWith("-")?"":Z.length===1?"-":"--",Y=J.indexOf(G+Z),H=J.indexOf("--");return Y!==-1&&(H===-1||Y=2,has16m:$>=3}}function z($,q){if(H===0)return 0;if(G("color=16m")||G("color=full")||G("color=truecolor"))return 3;if(G("color=256"))return 2;if($&&!q&&H===void 0)return 0;let B=H||0;if(Y.TERM==="dumb")return B;if(process.platform==="win32"){let D=Z.release().split(".");if(Number(D[0])>=10&&Number(D[2])>=10586)return Number(D[2])>=14931?3:2;return 1}if("CI"in Y){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((D)=>(D in Y))||Y.CI_NAME==="codeship")return 1;return B}if("TEAMCITY_VERSION"in Y)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Y.TEAMCITY_VERSION)?1:0;if(Y.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Y){let D=parseInt((Y.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Y.TERM_PROGRAM){case"iTerm.app":return D>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(Y.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Y.TERM))return 1;if("COLORTERM"in Y)return 1;return B}function W($){let q=z($,$&&$.isTTY);return K(q)}X.exports={supportsColor:W,stdout:K(z(!0,J.isatty(1))),stderr:K(z(!0,J.isatty(2)))}}}),co=W1({"node_modules/body-parser/node_modules/debug/src/node.js"(Q,X){var Z=require("tty"),J=require("util");Q=X.exports=_M(),Q.init=q,Q.log=z,Q.formatArgs=H,Q.save=W,Q.load=$,Q.useColors=Y,Q.colors=[6,2,3,4,5,1];try{if(G=I$(),G&&G.level>=2)Q.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(B){}var G;Q.inspectOpts=Object.keys(process.env).filter(function(B){return/^debug_/i.test(B)}).reduce(function(B,D){var F=D.substring(6).toLowerCase().replace(/_([a-z])/g,function(N,C){return C.toUpperCase()}),P=process.env[D];if(/^(yes|on|true|enabled)$/i.test(P))P=!0;else if(/^(no|off|false|disabled)$/i.test(P))P=!1;else if(P==="null")P=null;else P=Number(P);return B[F]=P,B},{});function Y(){return"colors"in Q.inspectOpts?Boolean(Q.inspectOpts.colors):Z.isatty(process.stderr.fd)}Q.formatters.o=function(B){return this.inspectOpts.colors=this.useColors,J.inspect(B,this.inspectOpts).split(` +`).map(function(D){return D.trim()}).join(" ")},Q.formatters.O=function(B){return this.inspectOpts.colors=this.useColors,J.inspect(B,this.inspectOpts)};function H(B){var D=this.namespace,F=this.useColors;if(F){var P=this.color,N="\x1B[3"+(P<8?P:"8;5;"+P),C=" "+N+";1m"+D+" \x1B[0m";B[0]=C+B[0].split(` +`).join(` +`+C),B.push(N+"m+"+Q.humanize(this.diff)+"\x1B[0m")}else B[0]=K()+D+" "+B[0]}function K(){if(Q.inspectOpts.hideDate)return"";else return new Date().toISOString()+" "}function z(){return process.stderr.write(J.format.apply(J,arguments)+` +`)}function W(B){if(B==null)delete process.env.DEBUG;else process.env.DEBUG=B}function $(){return process.env.DEBUG}function q(B){B.inspectOpts={};var D=Object.keys(Q.inspectOpts);for(var F=0;F=2147483648)throw new RangeError('The value "'+K+'" is invalid for option "size"');var $=J(K);if(!z||z.length===0)$.fill(0);else if(typeof W==="string")$.fill(z,W);else $.fill(z);return $};if(!G.kStringMaxLength)try{G.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch(K){}if(!G.constants){if(G.constants={MAX_LENGTH:G.kMaxLength},G.kStringMaxLength)G.constants.MAX_STRING_LENGTH=G.kStringMaxLength}X.exports=G}}),no=W1({"node_modules/iconv-lite/lib/bom-handling.js"(Q){var X="\uFEFF";Q.PrependBOM=Z;function Z(G,Y){this.encoder=G,this.addBOM=!0}Z.prototype.write=function(G){if(this.addBOM)G=X+G,this.addBOM=!1;return this.encoder.write(G)},Z.prototype.end=function(){return this.encoder.end()},Q.StripBOM=J;function J(G,Y){this.decoder=G,this.pass=!1,this.options=Y||{}}J.prototype.write=function(G){var Y=this.decoder.write(G);if(this.pass||!Y)return Y;if(Y[0]===X){if(Y=Y.slice(1),typeof this.options.stripBOM==="function")this.options.stripBOM()}return this.pass=!0,Y},J.prototype.end=function(){return this.decoder.end()}}}),oo=W1({"node_modules/iconv-lite/encodings/internal.js"(Q,X){var Z=MZ().Buffer;X.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:J};function J($,q){if(this.enc=$.encodingName,this.bomAware=$.bomAware,this.enc==="base64")this.encoder=K;else if(this.enc==="cesu8"){if(this.enc="utf8",this.encoder=z,Z.from("eda0bdedb2a9","hex").toString()!=="\uD83D\uDCA9")this.decoder=W,this.defaultCharUnicode=q.defaultCharUnicode}}J.prototype.encoder=H,J.prototype.decoder=Y;var G=require("string_decoder").StringDecoder;if(!G.prototype.end)G.prototype.end=function(){};function Y($,q){G.call(this,q.enc)}Y.prototype=G.prototype;function H($,q){this.enc=q.enc}H.prototype.write=function($){return Z.from($,this.enc)},H.prototype.end=function(){};function K($,q){this.prevStr=""}K.prototype.write=function($){$=this.prevStr+$;var q=$.length-$.length%4;return this.prevStr=$.slice(q),$=$.slice(0,q),Z.from($,"base64")},K.prototype.end=function(){return Z.from(this.prevStr,"base64")};function z($,q){}z.prototype.write=function($){var q=Z.alloc($.length*3),B=0;for(var D=0;D<$.length;D++){var F=$.charCodeAt(D);if(F<128)q[B++]=F;else if(F<2048)q[B++]=192+(F>>>6),q[B++]=128+(F&63);else q[B++]=224+(F>>>12),q[B++]=128+(F>>>6&63),q[B++]=128+(F&63)}return q.slice(0,B)},z.prototype.end=function(){};function W($,q){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=q.defaultCharUnicode}W.prototype.write=function($){var q=this.acc,B=this.contBytes,D=this.accBytes,F="";for(var P=0;P<$.length;P++){var N=$[P];if((N&192)!==128){if(B>0)F+=this.defaultCharUnicode,B=0;if(N<128)F+=String.fromCharCode(N);else if(N<224)q=N&31,B=1,D=1;else if(N<240)q=N&15,B=2,D=1;else F+=this.defaultCharUnicode}else if(B>0){if(q=q<<6|N&63,B--,D++,B===0)if(D===2&&q<128&&q>0)F+=this.defaultCharUnicode;else if(D===3&&q<2048)F+=this.defaultCharUnicode;else F+=String.fromCharCode(q)}else F+=this.defaultCharUnicode}return this.acc=q,this.contBytes=B,this.accBytes=D,F},W.prototype.end=function(){var $=0;if(this.contBytes>0)$+=this.defaultCharUnicode;return $}}}),ao=W1({"node_modules/iconv-lite/encodings/utf32.js"(Q){var X=MZ().Buffer;Q._utf32=Z;function Z(W,$){this.iconv=$,this.bomAware=!0,this.isLE=W.isLE}Q.utf32le={type:"_utf32",isLE:!0},Q.utf32be={type:"_utf32",isLE:!1},Q.ucs4le="utf32le",Q.ucs4be="utf32be",Z.prototype.encoder=J,Z.prototype.decoder=G;function J(W,$){this.isLE=$.isLE,this.highSurrogate=0}J.prototype.write=function(W){var $=X.from(W,"ucs2"),q=X.alloc($.length*2),B=this.isLE?q.writeUInt32LE:q.writeUInt32BE,D=0;for(var F=0;F<$.length;F+=2){var P=$.readUInt16LE(F),N=55296<=P&&P<56320,C=56320<=P&&P<57344;if(this.highSurrogate)if(N||!C)B.call(q,this.highSurrogate,D),D+=4;else{var L=(this.highSurrogate-55296<<10|P-56320)+65536;B.call(q,L,D),D+=4,this.highSurrogate=0;continue}if(N)this.highSurrogate=P;else B.call(q,P,D),D+=4,this.highSurrogate=0}if(D1114111)q.writeUInt16LE(this.badChar,B),B+=2;else{F-=65536;var P=55296|F>>10,N=56320+(F&1023);q.writeUInt16LE(P,B),B+=2,q.writeUInt16LE(N,B),B+=2}}return q.slice(0,B).toString("ucs2")},G.prototype.end=function(){this.overflow=null},Q.utf32=Y,Q.ucs4=Y;function Y(W,$){this.iconv=$}Y.prototype.encoder=H,Y.prototype.decoder=K;function H(W,$){if(W=W||{},W.addBOM===void 0)W.addBOM=!0;this.encoder=$.iconv.getEncoder(W.defaultEncoding||"utf-32le",W)}H.prototype.write=function(W){return this.encoder.write(W)},H.prototype.end=function(){return this.encoder.end()};function K(W,$){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=W||{},this.iconv=$.iconv}K.prototype.write=function(W){if(!this.decoder){if(this.initialBytes.push(W),this.initialBytesLen+=W.length,this.initialBytesLen<32)return"";var $=X.concat(this.initialBytes),q=z($,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(q,this.options),this.initialBytes.length=this.initialBytesLen=0}return this.decoder.write(W)},K.prototype.end=function(){if(!this.decoder){var W=X.concat(this.initialBytes),$=z(W,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder($,this.options);var q=this.decoder.write(W),B=this.decoder.end();return B?q+B:q}return this.decoder.end()};function z(W,$){var q=$||"utf-32le";if(W.length>=4)if(W.readUInt32BE(0)===65279)q="utf-32be";else if(W.readUInt32LE(0)===65279)q="utf-32le";else{var B=0,D=0,F=0,P=0,N=Math.min(W.length-W.length%4,128);for(var C=0;C16)++D;if(I!==0||M>16)++B;if(L===0&&V===0&&M===0&&I!==0)P++;if(L!==0&&V===0&&M===0&&I===0)F++}if(DF)q="utf-32be";else if(P=2)if(W[0]==254&&W[1]==255)q="utf-16be";else if(W[0]==255&&W[1]==254)q="utf-16le";else{var B=0,D=0,F=Math.min(W.length-W.length%2,64);for(var P=0;PB)q="utf-16be";else if(D0)N=this.iconv.decode(X.from(this.base64Accum,"base64"),"utf16-be");return this.inBase64=!1,this.base64Accum="",N},Q.utf7imap=B;function B(N,C){this.iconv=C}B.prototype.encoder=D,B.prototype.decoder=F,B.prototype.bomAware=!0;function D(N,C){this.iconv=C.iconv,this.inBase64=!1,this.base64Accum=X.alloc(6),this.base64AccumIdx=0}D.prototype.write=function(N){var C=this.inBase64,L=this.base64Accum,V=this.base64AccumIdx,M=X.alloc(N.length*5+10),I=0;for(var E=0;E0)I+=M.write(L.slice(0,V).toString("base64").replace(/\//g,",").replace(/=+$/,""),I),V=0;M[I++]=$,C=!1}if(!C){if(M[I++]=w,w===q)M[I++]=$}}else{if(!C)M[I++]=q,C=!0;if(C){if(L[V++]=w>>8,L[V++]=w&255,V==L.length)I+=M.write(L.toString("base64").replace(/\//g,","),I),V=0}}}return this.inBase64=C,this.base64AccumIdx=V,M.slice(0,I)},D.prototype.end=function(){var N=X.alloc(10),C=0;if(this.inBase64){if(this.base64AccumIdx>0)C+=N.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),C),this.base64AccumIdx=0;N[C++]=$,this.inBase64=!1}return N.slice(0,C)};function F(N,C){this.iconv=C.iconv,this.inBase64=!1,this.base64Accum=""}var P=K.slice();P[44]=!0,F.prototype.write=function(N){var C="",L=0,V=this.inBase64,M=this.base64Accum;for(var I=0;I0)N=this.iconv.decode(X.from(this.base64Accum,"base64"),"utf16-be");return this.inBase64=!1,this.base64Accum="",N}}}),ro=W1({"node_modules/iconv-lite/encodings/sbcs-codec.js"(Q){var X=MZ().Buffer;Q._sbcs=Z;function Z(Y,H){if(!Y)throw new Error("SBCS codec is called without the data.");if(!Y.chars||Y.chars.length!==128&&Y.chars.length!==256)throw new Error("Encoding '"+Y.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(Y.chars.length===128){var K="";for(var z=0;z<128;z++)K+=String.fromCharCode(z);Y.chars=K+Y.chars}this.decodeBuf=X.from(Y.chars,"ucs2");var W=X.alloc(65536,H.defaultCharSingleByte.charCodeAt(0));for(var z=0;z?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\uFEFF​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:`\x00ÚỤ\x03ỪỬỮ\x07\b +\v\f\r\x0E\x0F\x10ỨỰỲỶỸÝỴ\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ`},georgianacademy:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:`\x00\x01Ẳ\x03\x04ẴẪ\x07\b +\v\f\r\x0E\x0F\x10\x11\x12\x13Ỷ\x15\x16\x17\x18Ỹ\x1A\x1B\x1C\x1DỴ\x1F !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ`},iso646cn:{type:"_sbcs",chars:`\x00\x01\x02\x03\x04\x05\x06\x07\b +\v\f\r\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F !"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������`},iso646jp:{type:"_sbcs",chars:`\x00\x01\x02\x03\x04\x05\x06\x07\b +\v\f\r\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_\`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������`},hproman8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}}}),Za=W1({"node_modules/iconv-lite/encodings/dbcs-codec.js"(Q){var X=MZ().Buffer;Q._dbcs=W;var Z=-1,J=-2,G=-10,Y=-1000,H=new Array(256),K=-1;for(z=0;z<256;z++)H[z]=Z;var z;function W(D,F){if(this.encodingName=D.encodingName,!D)throw new Error("DBCS codec is called without the data.");if(!D.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var P=D.table();this.decodeTables=[],this.decodeTables[0]=H.slice(0),this.decodeTableSeq=[];for(var N=0;N0;D>>=8)F.push(D&255);if(F.length==0)F.push(0);var P=this.decodeTables[0];for(var N=F.length-1;N>0;N--){var C=P[F[N]];if(C==Z)P[F[N]]=Y-this.decodeTables.length,this.decodeTables.push(P=H.slice(0));else if(C<=Y)P=this.decodeTables[Y-C];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+D.toString(16))}return P},W.prototype._addDecodeChunk=function(D){var F=parseInt(D[0],16),P=this._getDecodeTrieNode(F);F=F&255;for(var N=1;N255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+D[0]+": too long"+F)},W.prototype._getEncodeBucket=function(D){var F=D>>8;if(this.encodeTable[F]===void 0)this.encodeTable[F]=H.slice(0);return this.encodeTable[F]},W.prototype._setEncodeChar=function(D,F){var P=this._getEncodeBucket(D),N=D&255;if(P[N]<=G)this.encodeTableSeq[G-P[N]][K]=F;else if(P[N]==Z)P[N]=F},W.prototype._setEncodeSequence=function(D,F){var P=D[0],N=this._getEncodeBucket(P),C=P&255,L;if(N[C]<=G)L=this.encodeTableSeq[G-N[C]];else{if(L={},N[C]!==Z)L[K]=N[C];N[C]=G-this.encodeTableSeq.length,this.encodeTableSeq.push(L)}for(var V=1;V=0)this._setEncodeChar(L,V);else if(L<=Y)this._fillEncodeTable(Y-L,V<<8,P);else if(L<=G)this._setEncodeSequence(this.decodeTableSeq[G-L],V)}};function $(D,F){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=F.encodeTable,this.encodeTableSeq=F.encodeTableSeq,this.defaultCharSingleByte=F.defCharSB,this.gb18030=F.gb18030}$.prototype.write=function(D){var F=X.alloc(D.length*(this.gb18030?4:3)),P=this.leadSurrogate,N=this.seqObj,C=-1,L=0,V=0;while(!0){if(C===-1){if(L==D.length)break;var M=D.charCodeAt(L++)}else{var M=C;C=-1}if(55296<=M&&M<57344)if(M<56320)if(P===-1){P=M;continue}else P=M,M=Z;else if(P!==-1)M=65536+(P-55296)*1024+(M-56320),P=-1;else M=Z;else if(P!==-1)C=M,M=Z,P=-1;var I=Z;if(N!==void 0&&M!=Z){var E=N[M];if(typeof E==="object"){N=E;continue}else if(typeof E=="number")I=E;else if(E==null){if(E=N[K],E!==void 0)I=E,C=M}N=void 0}else if(M>=0){var w=this.encodeTable[M>>8];if(w!==void 0)I=w[M&255];if(I<=G){N=this.encodeTableSeq[G-I];continue}if(I==Z&&this.gb18030){var A=B(this.gb18030.uChars,M);if(A!=-1){var I=this.gb18030.gbChars[A]+(M-this.gb18030.uChars[A]);F[V++]=129+Math.floor(I/12600),I=I%12600,F[V++]=48+Math.floor(I/1260),I=I%1260,F[V++]=129+Math.floor(I/10),I=I%10,F[V++]=48+I;continue}}}if(I===Z)I=this.defaultCharSingleByte;if(I<256)F[V++]=I;else if(I<65536)F[V++]=I>>8,F[V++]=I&255;else F[V++]=I>>16,F[V++]=I>>8&255,F[V++]=I&255}return this.seqObj=N,this.leadSurrogate=P,F.slice(0,V)},$.prototype.end=function(){if(this.leadSurrogate===-1&&this.seqObj===void 0)return;var D=X.alloc(10),F=0;if(this.seqObj){var P=this.seqObj[K];if(P!==void 0)if(P<256)D[F++]=P;else D[F++]=P>>8,D[F++]=P&255;this.seqObj=void 0}if(this.leadSurrogate!==-1)D[F++]=this.defaultCharSingleByte,this.leadSurrogate=-1;return D.slice(0,F)},$.prototype.findIdx=B;function q(D,F){this.nodeIdx=0,this.prevBuf=X.alloc(0),this.decodeTables=F.decodeTables,this.decodeTableSeq=F.decodeTableSeq,this.defaultCharUnicode=F.defaultCharUnicode,this.gb18030=F.gb18030}q.prototype.write=function(D){var F=X.alloc(D.length*2),P=this.nodeIdx,N=this.prevBuf,C=this.prevBuf.length,L=-this.prevBuf.length,V;if(C>0)N=X.concat([N,D.slice(0,10)]);for(var M=0,I=0;M=0?D[M]:N[M+C],V=this.decodeTables[P][E];if(V>=0);else if(V===Z)M=L,V=this.defaultCharUnicode.charCodeAt(0);else if(V===J){var w=L>=0?D.slice(L,M+1):N.slice(L+C,M+1+C),A=(w[0]-129)*12600+(w[1]-48)*1260+(w[2]-129)*10+(w[3]-48),R=B(this.gb18030.gbChars,A);V=this.gb18030.uChars[R]+A-this.gb18030.gbChars[R]}else if(V<=Y){P=Y-V;continue}else if(V<=G){var T=this.decodeTableSeq[G-V];for(var S=0;S>8;V=T[T.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+V+" at "+P+"/"+E);if(V>65535){V-=65536;var v=55296+Math.floor(V/1024);F[I++]=v&255,F[I++]=v>>8,V=56320+V%1024}F[I++]=V&255,F[I++]=V>>8,P=0,L=M+1}return this.nodeIdx=P,this.prevBuf=L>=0?D.slice(L):N.slice(L+C),F.slice(0,I).toString("ucs2")},q.prototype.end=function(){var D="";while(this.prevBuf.length>0){D+=this.defaultCharUnicode;var F=this.prevBuf.slice(1);if(this.prevBuf=X.alloc(0),this.nodeIdx=0,F.length>0)D+=this.write(F)}return this.nodeIdx=0,D};function B(D,F){if(D[0]>F)return-1;var P=0,N=D.length;while(PF)q=F;if(B=String(B||"utf8").toLowerCase(),Z.isNativeEncoding(B))return G.SlowBufferWrite.call(this,W,$,q,B);if(W.length>0&&(q<0||$<0))throw new RangeError("attempt to write beyond buffer bounds");var P=J.encode(W,B);if(P.lengthC)q=C;if(W.length>0&&(q<0||$<0))throw new RangeError("attempt to write beyond buffer bounds");var L=J.encode(W,B);if(L.length0?Z.concat([B,D]):B},G.decode=function K(z,W,$){if(typeof z==="string"){if(!G.skipDecodeWarning)console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),G.skipDecodeWarning=!0;z=Z.from(""+(z||""),"binary")}var q=G.getDecoder(W,$),B=q.write(z),D=q.end();return D?B+D:B},G.encodingExists=function K(z){try{return G.getCodec(z),!0}catch(W){return!1}},G.toEncoding=G.encode,G.fromEncoding=G.decode,G._codecDataCache={},G.getCodec=function K(z){if(!G.encodings)G.encodings=Ha();var W=G._canonicalizeEncoding(z),$={};while(!0){var q=G._codecDataCache[W];if(q)return q;var B=G.encodings[W];switch(typeof B){case"string":W=B;break;case"object":for(var D in B)$[D]=B[D];if(!$.encodingName)$.encodingName=W;W=B.type;break;case"function":if(!$.encodingName)$.encodingName=W;return q=new B($,G),G._codecDataCache[$.encodingName]=q,q;default:throw new Error("Encoding not recognized: '"+z+"' (searched as: '"+W+"')")}}},G._canonicalizeEncoding=function(K){return(""+K).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},G.getEncoder=function K(z,W){var $=G.getCodec(z),q=new $.encoder(W,$);if($.bomAware&&W&&W.addBOM)q=new J.PrependBOM(q,W);return q},G.getDecoder=function K(z,W){var $=G.getCodec(z),q=new $.decoder(W,$);if($.bomAware&&!(W&&W.stripBOM===!1))q=new J.StripBOM(q,W);return q};var Y=typeof process!=="undefined"&&process.versions&&process.versions.node;if(Y){if(H=Y.split(".").map(Number),H[0]>0||H[1]>=10)za()(G);Ka()(G)}var H}}),R$=W1({"node_modules/unpipe/index.js"(Q,X){X.exports=J;function Z(G){var Y=G.listeners("data");for(var H=0;HC)return R(G(413,"request entity too large",{expected:N,length:N,limit:C,type:"entity.too.large"}));var I=F._readableState;if(F._decoder||I&&(I.encoding||I.decoder))return R(G(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof F.readable!=="undefined"&&!F.readable)return R(G(500,"stream is not readable",{type:"stream.not.readable"}));var E=0,w;try{w=z(P)}catch(x){return R(x)}var A=w?"":[];F.on("aborted",T),F.on("close",h),F.on("data",S),F.on("end",v),F.on("error",v),M=!1;function R(){var x=new Array(arguments.length);for(var p=0;pC)R(G(413,"request entity too large",{limit:C,received:E,type:"entity.too.large"}));else if(w)A+=w.write(x);else A.push(x)}function v(x){if(V)return;if(x)return R(x);if(N!==null&&E!==N)R(G(400,"request size did not match content length",{expected:N,length:N,received:E,type:"request.size.invalid"}));else{var p=w?A+(w.end()||""):Buffer.concat(A);R(null,p)}}function h(){A=null,F.removeListener("aborted",T),F.removeListener("data",S),F.removeListener("end",v),F.removeListener("error",v),F.removeListener("close",h)}}function B(){try{return require("async_hooks")}catch(F){return{}}}function D(F){var P;if(Z.AsyncResource)P=new Z.AsyncResource(F.name||"bound-anonymous-fn");if(!P||!P.runInAsyncScope)return F;return P.runInAsyncScope.bind(P,F,null)}}}),aq=W1({"node_modules/body-parser/lib/read.js"(Q,X){var Z=W7(),J=dM(),G=$a(),Y=uM(),H=O4(),K=R$(),z=require("zlib");X.exports=W;function W(B,D,F,P,N,C){var L,V=C,M,I=V.encoding!==null?V.encoding:null,E=V.verify;try{M=$(B,N,V.inflate),L=M.length,M.length=void 0}catch(w){return F(w)}if(V.length=L,V.encoding=E?null:I,V.encoding===null&&I!==null&&!Y.encodingExists(I))return F(Z(415,'unsupported charset "'+I.toUpperCase()+'"',{charset:I.toLowerCase(),type:"charset.unsupported"}));N("read body"),G(M,V,function(w,A){if(w){var R;if(w.type==="encoding.unsupported")R=Z(415,'unsupported charset "'+I.toUpperCase()+'"',{charset:I.toLowerCase(),type:"charset.unsupported"});else R=Z(400,w);if(M!==B)K(B),J(M,!0);q(B,function S(){F(Z(400,R))});return}if(E)try{N("verify body"),E(B,D,A,I)}catch(S){F(Z(403,S,{body:A,type:S.type||"entity.verify.failed"}));return}var T=A;try{N("parse body"),T=typeof A!=="string"&&I!==null?Y.decode(A,I):A,B.body=P(T)}catch(S){F(Z(400,S,{body:T,type:S.type||"entity.parse.failed"}));return}F()})}function $(B,D,F){var P=(B.headers["content-encoding"]||"identity").toLowerCase(),N=B.headers["content-length"],C;if(D('content-encoding "%s"',P),F===!1&&P!=="identity")throw Z(415,"content encoding unsupported",{encoding:P,type:"encoding.unsupported"});switch(P){case"deflate":C=z.createInflate(),D("inflate body"),B.pipe(C);break;case"gzip":C=z.createGunzip(),D("gunzip body"),B.pipe(C);break;case"identity":C=B,C.length=N;break;default:throw Z(415,'unsupported content encoding "'+P+'"',{encoding:P,type:"encoding.unsupported"})}return C}function q(B,D){if(H.isFinished(B))D(null);else H(B,D),B.resume()}}}),Ba=W1({"node_modules/media-typer/index.js"(Q){var X=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,Z=/^[\u0020-\u007e\u0080-\u00ff]+$/,J=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,G=/\\([\u0000-\u007f])/g,Y=/([\\"])/g,H=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,K=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,z=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Q.format=W,Q.parse=$;function W(F){if(!F||typeof F!=="object")throw new TypeError("argument obj is required");var{parameters:P,subtype:N,suffix:C,type:L}=F;if(!L||!K.test(L))throw new TypeError("invalid type");if(!N||!H.test(N))throw new TypeError("invalid subtype");var V=L+"/"+N;if(C){if(!K.test(C))throw new TypeError("invalid suffix");V+="+"+C}if(P&&typeof P==="object"){var M,I=Object.keys(P).sort();for(var E=0;E0&&!Z.test(P))throw new TypeError("invalid parameter value");return'"'+P.replace(Y,"\\$1")+'"'}function D(F){var P=z.exec(F.toLowerCase());if(!P)throw new TypeError("invalid media type");var N=P[1],C=P[2],L,V=C.lastIndexOf("+");if(V!==-1)L=C.substr(V+1),C=C.substr(0,V);var M={type:N,subtype:C,suffix:L};return M}}}),Ua=W1({"node_modules/mime-db/db.json"(Q,X){X.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}}}),Va=W1({"node_modules/mime-db/index.js"(Q,X){X.exports=Ua()}}),q7=W1({"node_modules/mime-types/index.js"(Q){var X=Va(),Z=require("path").extname,J=/^\s*([^;\s]*)(?:;|\s|$)/,G=/^text\//i;Q.charset=Y,Q.charsets={lookup:Y},Q.contentType=H,Q.extension=K,Q.extensions=Object.create(null),Q.lookup=z,Q.types=Object.create(null),W(Q.extensions,Q.types);function Y($){if(!$||typeof $!=="string")return!1;var q=J.exec($),B=q&&X[q[1].toLowerCase()];if(B&&B.charset)return B.charset;if(q&&G.test(q[1]))return"UTF-8";return!1}function H($){if(!$||typeof $!=="string")return!1;var q=$.indexOf("/")===-1?Q.lookup($):$;if(!q)return!1;if(q.indexOf("charset")===-1){var B=Q.charset(q);if(B)q+="; charset="+B.toLowerCase()}return q}function K($){if(!$||typeof $!=="string")return!1;var q=J.exec($),B=q&&Q.extensions[q[1].toLowerCase()];if(!B||!B.length)return!1;return B[0]}function z($){if(!$||typeof $!=="string")return!1;var q=Z("x."+$).toLowerCase().substr(1);if(!q)return!1;return Q.types[q]||!1}function W($,q){var B=["nginx","apache",void 0,"iana"];Object.keys(X).forEach(function D(F){var P=X[F],N=P.extensions;if(!N||!N.length)return;$[F]=N;for(var C=0;CM||V===M&&q[L].substr(0,12)==="application/"))continue}q[L]=F}})}}}),vX=W1({"node_modules/type-is/index.js"(Q,X){var Z=Ba(),J=q7();X.exports=H,X.exports.is=G,X.exports.hasBody=Y,X.exports.normalize=K,X.exports.match=z;function G(q,B){var D,F=B,P=$(q);if(!P)return!1;if(F&&!Array.isArray(F)){F=new Array(arguments.length-1);for(D=0;D2){D=new Array(arguments.length-1);for(var F=0;F1&&typeof C1!=="boolean")throw new z('"allowMissing" argument must be a boolean');if(x(/^%?[^%]*%?$/,V1)===null)throw new K("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var N1=t(V1),j1=N1.length>0?N1[0]:"",d1=Y1("%"+j1+"%",C1),D1=d1.name,e=d1.value,P1=!1,Q1=d1.alias;if(Q1)j1=Q1[0],S(N1,T([0,1],Q1));for(var O1=1,S1=!0;O1=N1.length){var j=B(e,k);if(S1=!!j,S1&&"get"in j&&!("originalValue"in j.get))e=j.get;else e=e[k]}else S1=R(e,k),e=e[k];if(S1&&!P1)M[D1]=e}}return e}}}),O$=W1({"node_modules/es-define-property/index.js"(Q,X){var Z=H7(),J=Z("%Object.defineProperty%",!0)||!1;if(J)try{J({},"a",{value:1})}catch(G){J=!1}X.exports=J}}),lM=W1({"node_modules/gopd/index.js"(Q,X){var Z=H7(),J=Z("%Object.getOwnPropertyDescriptor%",!0);if(J)try{J([],"length")}catch(G){J=null}X.exports=J}}),Ea=W1({"node_modules/define-data-property/index.js"(Q,X){var Z=O$(),J=pM(),G=gX(),Y=lM();X.exports=function H(K,z,W){if(!K||typeof K!=="object"&&typeof K!=="function")throw new G("`obj` must be an object or a function`");if(typeof z!=="string"&&typeof z!=="symbol")throw new G("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!=="boolean"&&arguments[3]!==null)throw new G("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!=="boolean"&&arguments[4]!==null)throw new G("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!=="boolean"&&arguments[5]!==null)throw new G("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!=="boolean")throw new G("`loose`, if provided, must be a boolean");var $=arguments.length>3?arguments[3]:null,q=arguments.length>4?arguments[4]:null,B=arguments.length>5?arguments[5]:null,D=arguments.length>6?arguments[6]:!1,F=!!Y&&Y(K,z);if(Z)Z(K,z,{configurable:B===null&&F?F.configurable:!B,enumerable:$===null&&F?F.enumerable:!$,value:W,writable:q===null&&F?F.writable:!q});else if(D||!$&&!q&&!B)K[z]=W;else throw new J("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}}}),ja=W1({"node_modules/has-property-descriptors/index.js"(Q,X){var Z=O$(),J=function G(){return!!Z};J.hasArrayLengthDefineBug=function G(){if(!Z)return null;try{return Z([],"length",{value:1}).length!==1}catch(Y){return!0}},X.exports=J}}),Sa=W1({"node_modules/set-function-length/index.js"(Q,X){var Z=H7(),J=Ea(),G=ja()(),Y=lM(),H=gX(),K=Z("%Math.floor%");X.exports=function z(W,$){if(typeof W!=="function")throw new H("`fn` is not a function");if(typeof $!=="number"||$<0||$>4294967295||K($)!==$)throw new H("`length` must be a positive 32-bit integer");var q=arguments.length>2&&!!arguments[2],B=!0,D=!0;if("length"in W&&Y){var F=Y(W,"length");if(F&&!F.configurable)B=!1;if(F&&!F.writable)D=!1}if(B||D||!q)if(G)J(W,"length",$,!0,!0);else J(W,"length",$);return W}}}),ka=W1({"node_modules/call-bind/index.js"(Q,X){var Z=A$(),J=H7(),G=Sa(),Y=gX(),H=J("%Function.prototype.apply%"),K=J("%Function.prototype.call%"),z=J("%Reflect.apply%",!0)||Z.call(K,H),W=O$(),$=J("%Math.max%");X.exports=function B(D){if(typeof D!=="function")throw new Y("a function is required");var F=z(Z,K,arguments);return G(F,1+$(0,D.length-(arguments.length-1)),!0)};var q=function B(){return z(Z,H,arguments)};if(W)W(X.exports,"apply",{value:q});else X.exports.apply=q}}),ya=W1({"node_modules/call-bind/callBound.js"(Q,X){var Z=H7(),J=ka(),G=J(Z("String.prototype.indexOf"));X.exports=function Y(H,K){var z=Z(H,!!K);if(typeof z==="function"&&G(H,".prototype.")>-1)return J(z);return z}}}),xa=W1({"node_modules/object-inspect/util.inspect.js"(Q,X){X.exports=require("util").inspect}}),va=W1({"node_modules/object-inspect/index.js"(Q,X){var Z=typeof Map==="function"&&Map.prototype,J=Object.getOwnPropertyDescriptor&&Z?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,G=Z&&J&&typeof J.get==="function"?J.get:null,Y=Z&&Map.prototype.forEach,H=typeof Set==="function"&&Set.prototype,K=Object.getOwnPropertyDescriptor&&H?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,z=H&&K&&typeof K.get==="function"?K.get:null,W=H&&Set.prototype.forEach,$=typeof WeakMap==="function"&&WeakMap.prototype,q=$?WeakMap.prototype.has:null,B=typeof WeakSet==="function"&&WeakSet.prototype,D=B?WeakSet.prototype.has:null,F=typeof WeakRef==="function"&&WeakRef.prototype,P=F?WeakRef.prototype.deref:null,N=Boolean.prototype.valueOf,C=Object.prototype.toString,L=Function.prototype.toString,V=String.prototype.match,M=String.prototype.slice,I=String.prototype.replace,E=String.prototype.toUpperCase,w=String.prototype.toLowerCase,A=RegExp.prototype.test,R=Array.prototype.concat,T=Array.prototype.join,S=Array.prototype.slice,v=Math.floor,h=typeof BigInt==="function"?BigInt.prototype.valueOf:null,x=Object.getOwnPropertySymbols,p=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?Symbol.prototype.toString:null,n=typeof Symbol==="function"&&typeof Symbol.iterator==="object",t=typeof Symbol==="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===n?"object":"symbol")?Symbol.toStringTag:null,Y1=Object.prototype.propertyIsEnumerable,G1=(typeof Reflect==="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function($1){return $1.__proto__}:null);function V1($1,U1){if($1===1/0||$1===-1/0||$1!==$1||$1&&$1>-1000&&$1<1000||A.call(/e/,U1))return U1;var z0=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof $1==="number"){var L0=$1<0?-v(-$1):v($1);if(L0!==$1){var J0=String(L0),v1=M.call(U1,J0.length+1);return I.call(J0,z0,"$&_")+"."+I.call(I.call(v1,/([0-9]{3})/g,"$&_"),/_$/,"")}}return I.call(U1,z0,"$&_")}var C1=xa(),N1=C1.custom,j1=f(N1)?N1:null;X.exports=function $1(U1,z0,L0,J0){var v1=z0||{};if(Z1(v1,"quoteStyle")&&(v1.quoteStyle!=="single"&&v1.quoteStyle!=="double"))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Z1(v1,"maxStringLength")&&(typeof v1.maxStringLength==="number"?v1.maxStringLength<0&&v1.maxStringLength!==1/0:v1.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var W6=Z1(v1,"customInspect")?v1.customInspect:!0;if(typeof W6!=="boolean"&&W6!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Z1(v1,"indent")&&v1.indent!==null&&v1.indent!=="\t"&&!(parseInt(v1.indent,10)===v1.indent&&v1.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Z1(v1,"numericSeparator")&&typeof v1.numericSeparator!=="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var j6=v1.numericSeparator;if(typeof U1==="undefined")return"undefined";if(U1===null)return"null";if(typeof U1==="boolean")return U1?"true":"false";if(typeof U1==="string")return X0(U1,v1);if(typeof U1==="number"){if(U1===0)return 1/0/U1>0?"0":"-0";var I6=String(U1);return j6?V1(U1,I6):I6}if(typeof U1==="bigint"){var i6=String(U1)+"n";return j6?V1(U1,i6):i6}var e8=typeof v1.depth==="undefined"?5:v1.depth;if(typeof L0==="undefined")L0=0;if(L0>=e8&&e8>0&&typeof U1==="object")return e(U1)?"[Array]":"[Object]";var _8=x0(v1,L0);if(typeof J0==="undefined")J0=[];else if(B1(J0,U1)>=0)return"[Circular]";function b0(d8,qQ,hQ){if(qQ)J0=S.call(J0),J0.push(qQ);if(hQ){var l9={depth:v1.depth};if(Z1(v1,"quoteStyle"))l9.quoteStyle=v1.quoteStyle;return $1(d8,l9,L0+1,J0)}return $1(d8,v1,L0+1,J0)}if(typeof U1==="function"&&!Q1(U1)){var R6=J1(U1),r0=U0(U1,b0);return"[Function"+(R6?": "+R6:" (anonymous)")+"]"+(r0.length>0?" { "+T.call(r0,", ")+" }":"")}if(f(U1)){var u0=n?I.call(String(U1),/^(Symbol\(.*\))_[^)]*$/,"$1"):p.call(U1);return typeof U1==="object"&&!n?B0(u0):u0}if(a1(U1)){var q6="<"+w.call(String(U1.nodeName)),M0=U1.attributes||[];for(var _0=0;_0",q6}if(e(U1)){if(U1.length===0)return"[]";var i0=U0(U1,b0);if(_8&&!D0(i0))return"["+R0(i0,_8)+"]";return"[ "+T.call(i0,", ")+" ]"}if(O1(U1)){var H6=U0(U1,b0);if(!("cause"in Error.prototype)&&"cause"in U1&&!Y1.call(U1,"cause"))return"{ ["+String(U1)+"] "+T.call(R.call("[cause]: "+b0(U1.cause),H6),", ")+" }";if(H6.length===0)return"["+String(U1)+"]";return"{ ["+String(U1)+"] "+T.call(H6,", ")+" }"}if(typeof U1==="object"&&W6){if(j1&&typeof U1[j1]==="function"&&C1)return C1(U1,{depth:e8-L0});else if(W6!=="symbol"&&typeof U1.inspect==="function")return U1.inspect()}if(L1(U1)){var B6=[];if(Y)Y.call(U1,function(d8,qQ){B6.push(b0(qQ,U1,!0)+" => "+b0(d8,U1))});return S0("Map",G.call(U1),B6,_8)}if(u1(U1)){var Z6=[];if(W)W.call(U1,function(d8){Z6.push(b0(d8,U1))});return S0("Set",z.call(U1),Z6,_8)}if(H1(U1))return Y0("WeakMap");if(s1(U1))return Y0("WeakSet");if(M1(U1))return Y0("WeakRef");if(k(U1))return B0(b0(Number(U1)));if(j(U1))return B0(b0(h.call(U1)));if(d(U1))return B0(N.call(U1));if(S1(U1))return B0(b0(String(U1)));if(typeof window!=="undefined"&&U1===window)return"{ [object Window] }";if(typeof globalThis!=="undefined"&&U1===globalThis||typeof global!=="undefined"&&U1===global)return"{ [object globalThis] }";if(!P1(U1)&&!Q1(U1)){var e0=U0(U1,b0),z6=G1?G1(U1)===Object.prototype:U1 instanceof Object||U1.constructor===Object,X6=U1 instanceof Object?"":"null prototype",n0=!z6&&t&&Object(U1)===U1&&t in U1?M.call(_(U1),8,-1):X6?"Object":"",U6=z6||typeof U1.constructor!=="function"?"":U1.constructor.name?U1.constructor.name+" ":"",gQ=U6+(n0||X6?"["+T.call(R.call([],n0||[],X6||[]),": ")+"] ":"");if(e0.length===0)return gQ+"{}";if(_8)return gQ+"{"+R0(e0,_8)+"}";return gQ+"{ "+T.call(e0,", ")+" }"}return String(U1)};function d1($1,U1,z0){var L0=(z0.quoteStyle||U1)==="double"?'"':"'";return L0+$1+L0}function D1($1){return I.call(String($1),/"/g,""")}function e($1){return _($1)==="[object Array]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function P1($1){return _($1)==="[object Date]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function Q1($1){return _($1)==="[object RegExp]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function O1($1){return _($1)==="[object Error]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function S1($1){return _($1)==="[object String]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function k($1){return _($1)==="[object Number]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function d($1){return _($1)==="[object Boolean]"&&(!t||!(typeof $1==="object"&&(t in $1)))}function f($1){if(n)return $1&&typeof $1==="object"&&$1 instanceof Symbol;if(typeof $1==="symbol")return!0;if(!$1||typeof $1!=="object"||!p)return!1;try{return p.call($1),!0}catch(U1){}return!1}function j($1){if(!$1||typeof $1!=="object"||!h)return!1;try{return h.call($1),!0}catch(U1){}return!1}var m=Object.prototype.hasOwnProperty||function($1){return $1 in this};function Z1($1,U1){return m.call($1,U1)}function _($1){return C.call($1)}function J1($1){if($1.name)return $1.name;var U1=V.call(L.call($1),/^function\s*([\w$]+)/);if(U1)return U1[1];return null}function B1($1,U1){if($1.indexOf)return $1.indexOf(U1);for(var z0=0,L0=$1.length;z0U1.maxStringLength){var z0=$1.length-U1.maxStringLength,L0="... "+z0+" more character"+(z0>1?"s":"");return X0(M.call($1,0,U1.maxStringLength),U1)+L0}var J0=I.call(I.call($1,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,t1);return d1(J0,"single",U1)}function t1($1){var U1=$1.charCodeAt(0),z0={8:"b",9:"t",10:"n",12:"f",13:"r"}[U1];if(z0)return"\\"+z0;return"\\x"+(U1<16?"0":"")+E.call(U1.toString(16))}function B0($1){return"Object("+$1+")"}function Y0($1){return $1+" { ? }"}function S0($1,U1,z0,L0){var J0=L0?R0(z0,L0):T.call(z0,", ");return $1+" ("+U1+") {"+J0+"}"}function D0($1){for(var U1=0;U1<$1.length;U1++)if(B1($1[U1],` +`)>=0)return!1;return!0}function x0($1,U1){var z0;if($1.indent==="\t")z0="\t";else if(typeof $1.indent==="number"&&$1.indent>0)z0=T.call(Array($1.indent+1)," ");else return null;return{base:z0,prev:T.call(Array(U1+1),z0)}}function R0($1,U1){if($1.length===0)return"";var z0=` +`+U1.prev+U1.base;return z0+T.call($1,","+z0)+` +`+U1.prev}function U0($1,U1){var z0=e($1),L0=[];if(z0){L0.length=$1.length;for(var J0=0;J0<$1.length;J0++)L0[J0]=Z1($1,J0)?U1($1[J0],$1):""}var v1=typeof x==="function"?x($1):[],W6;if(n){W6={};for(var j6=0;j61){var V=L.pop(),M=V.obj[V.prop];if(G(M)){var I=[];for(var E=0;E=48&&T<=57||T>=65&&T<=90||T>=97&&T<=122||E===Z.RFC1738&&(T===40||T===41)){A+=w.charAt(R);continue}if(T<128){A=A+Y[T];continue}if(T<2048){A=A+(Y[192|T>>6]+Y[128|T&63]);continue}if(T<55296||T>=57344){A=A+(Y[224|T>>12]+Y[128|T>>6&63]+Y[128|T&63]);continue}R+=1,T=65536+((T&1023)<<10|w.charCodeAt(R)&1023),A+=Y[240|T>>18]+Y[128|T>>12&63]+Y[128|T>>6&63]+Y[128|T&63]}return A},B=function C(L){var V=[{obj:{o:L},prop:"o"}],M=[];for(var I=0;I0?G1.join(",")||null:void 0}];else if(K(T))O1=T;else{var S1=Object.keys(G1);O1=S?S1.sort(S):S1}var k=E&&K(G1)&&G1.length===1?M+"[]":M;for(var d=0;d0?n+p:""}}}),fa=W1({"node_modules/qs/lib/parse.js"(Q,X){var Z=cM(),J=Object.prototype.hasOwnProperty,G=Array.isArray,Y={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Z.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1000,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},H=function(F){return F.replace(/&#(\d+);/g,function(P,N){return String.fromCharCode(parseInt(N,10))})},K=function(F,P){if(F&&typeof F==="string"&&P.comma&&F.indexOf(",")>-1)return F.split(",");return F},z="utf8=%26%2310003%3B",W="utf8=%E2%9C%93",$=function F(P,N){var C={},L=N.ignoreQueryPrefix?P.replace(/^\?/,""):P,V=N.parameterLimit===1/0?void 0:N.parameterLimit,M=L.split(N.delimiter,V),I=-1,E,w=N.charset;if(N.charsetSentinel){for(E=0;E-1)v=G(v)?[v]:v;if(J.call(C,S))C[S]=Z.combine(C[S],v);else C[S]=v}return C},q=function(F,P,N,C){var L=C?P:K(P,N);for(var V=F.length-1;V>=0;--V){var M,I=F[V];if(I==="[]"&&N.parseArrays)M=[].concat(L);else{M=N.plainObjects?Object.create(null):{};var E=I.charAt(0)==="["&&I.charAt(I.length-1)==="]"?I.slice(1,-1):I,w=parseInt(E,10);if(!N.parseArrays&&E==="")M={0:L};else if(!isNaN(w)&&I!==E&&String(w)===E&&w>=0&&(N.parseArrays&&w<=N.arrayLimit))M=[],M[w]=L;else if(E!=="__proto__")M[E]=L}L=M}return L},B=function F(P,N,C,L){if(!P)return;var V=C.allowDots?P.replace(/\.([^.[]+)/g,"[$1]"):P,M=/(\[[^[\]]*])/,I=/(\[[^[\]]*])/g,E=C.depth>0&&M.exec(V),w=E?V.slice(0,E.index):V,A=[];if(w){if(!C.plainObjects&&J.call(Object.prototype,w)){if(!C.allowPrototypes)return}A.push(w)}var R=0;while(C.depth>0&&(E=I.exec(V))!==null&&R0)return K(q);else if(D==="number"&&isNaN(q)===!1)return B.long?W(q):z(q);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(q))};function K(q){if(q=String(q),q.length>100)return;var B=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(q);if(!B)return;var D=parseFloat(B[1]),F=(B[2]||"ms").toLowerCase();switch(F){case"years":case"year":case"yrs":case"yr":case"y":return D*H;case"days":case"day":case"d":return D*Y;case"hours":case"hour":case"hrs":case"hr":case"h":return D*G;case"minutes":case"minute":case"mins":case"min":case"m":return D*J;case"seconds":case"second":case"secs":case"sec":case"s":return D*Z;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}function z(q){if(q>=Y)return Math.round(q/Y)+"d";if(q>=G)return Math.round(q/G)+"h";if(q>=J)return Math.round(q/J)+"m";if(q>=Z)return Math.round(q/Z)+"s";return q+"ms"}function W(q){return $(q,Y,"day")||$(q,G,"hour")||$(q,J,"minute")||$(q,Z,"second")||q+" ms"}function $(q,B,D){if(q=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Q.formatters.j=function(z){try{return JSON.stringify(z)}catch(W){return"[UnexpectedJSONParseError]: "+W.message}};function J(z){var W=this.useColors;if(z[0]=(W?"%c":"")+this.namespace+(W?" %c":" ")+z[0]+(W?"%c ":" ")+"+"+Q.humanize(this.diff),!W)return;var $="color: "+this.color;z.splice(1,0,$,"color: inherit");var q=0,B=0;z[0].replace(/%[a-zA-Z%]/g,function(D){if(D==="%%")return;if(q++,D==="%c")B=q}),z.splice(B,0,$)}function G(){return typeof console==="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function Y(z){try{if(z==null)Q.storage.removeItem("debug");else Q.storage.debug=z}catch(W){}}function H(){var z;try{z=Q.storage.debug}catch(W){}if(!z&&typeof process!=="undefined"&&"env"in process)z=process.env.DEBUG;return z}Q.enable(H());function K(){try{return window.localStorage}catch(z){}}}}),ua=W1({"node_modules/finalhandler/node_modules/debug/src/node.js"(Q,X){var Z=require("tty"),J=require("util");Q=X.exports=oM(),Q.init=B,Q.log=z,Q.formatArgs=K,Q.save=W,Q.load=$,Q.useColors=H,Q.colors=[6,2,3,4,5,1],Q.inspectOpts=Object.keys(process.env).filter(function(D){return/^debug_/i.test(D)}).reduce(function(D,F){var P=F.substring(6).toLowerCase().replace(/_([a-z])/g,function(C,L){return L.toUpperCase()}),N=process.env[F];if(/^(yes|on|true|enabled)$/i.test(N))N=!0;else if(/^(no|off|false|disabled)$/i.test(N))N=!1;else if(N==="null")N=null;else N=Number(N);return D[P]=N,D},{});var G=parseInt(process.env.DEBUG_FD,10)||2;if(G!==1&&G!==2)J.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var Y=G===1?process.stdout:G===2?process.stderr:q(G);function H(){return"colors"in Q.inspectOpts?Boolean(Q.inspectOpts.colors):Z.isatty(G)}Q.formatters.o=function(D){return this.inspectOpts.colors=this.useColors,J.inspect(D,this.inspectOpts).split(` +`).map(function(F){return F.trim()}).join(" ")},Q.formatters.O=function(D){return this.inspectOpts.colors=this.useColors,J.inspect(D,this.inspectOpts)};function K(D){var F=this.namespace,P=this.useColors;if(P){var N=this.color,C=" \x1B[3"+N+";1m"+F+" \x1B[0m";D[0]=C+D[0].split(` +`).join(` +`+C),D.push("\x1B[3"+N+"m+"+Q.humanize(this.diff)+"\x1B[0m")}else D[0]=new Date().toUTCString()+" "+F+" "+D[0]}function z(){return Y.write(J.format.apply(J,arguments)+` +`)}function W(D){if(D==null)delete process.env.DEBUG;else process.env.DEBUG=D}function $(){return process.env.DEBUG}function q(D){var F,P=process.binding("tty_wrap");switch(P.guessHandleType(D)){case"TTY":if(F=new Z.WriteStream(D),F._type="tty",F._handle&&F._handle.unref)F._handle.unref();break;case"FILE":var N=require("fs");F=new N.SyncWriteStream(D,{autoClose:!1}),F._type="fs";break;case"PIPE":case"TCP":var C=require("net");if(F=new C.Socket({fd:D,readable:!1,writable:!0}),F.readable=!1,F.read=null,F._type="pipe",F._handle&&F._handle.unref)F._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return F.fd=D,F._isStdio=!0,F}function B(D){D.inspectOpts={};var F=Object.keys(Q.inspectOpts);for(var P=0;P]/;X.exports=J;function J(G){var Y=""+G,H=Z.exec(Y);if(!H)return Y;var K,z="",W=0,$=0;for(W=H.index;W").replace(W,"  ");return` + + + +Error + + +
`+A+`
+ + +`}X.exports=F;function F(w,A,R){var T=R||{},S=T.env||"production",v=T.onerror;return function(h){var x,p,n;if(!h&&M(A)){Z("cannot 404 after headers sent");return}if(h){if(n=C(h),n===void 0)n=V(A);else x=P(h);p=N(h,n,S)}else n=404,p="Cannot "+w.method+" "+J(L(w));if(Z("default %s",n),h&&v)q(v,h,w,A);if(M(A)){Z("cannot %d after headers sent",n),w.socket.destroy();return}I(w,A,n,x,p)}}function P(w){if(!w.headers||typeof w.headers!=="object")return;var A=Object.create(null),R=Object.keys(w.headers);for(var T=0;T=400&&w.status<600)return w.status;if(typeof w.statusCode==="number"&&w.statusCode>=400&&w.statusCode<600)return w.statusCode;return}function L(w){try{return H.original(w).pathname}catch(A){return"resource"}}function V(w){var A=w.statusCode;if(typeof A!=="number"||A<400||A>599)A=500;return A}function M(w){return typeof w.headersSent!=="boolean"?Boolean(w._header):w.headersSent}function I(w,A,R,T,S){function v(){var h=D(S);if(A.statusCode=R,A.statusMessage=K.message[R],A.removeHeader("Content-Encoding"),A.removeHeader("Content-Language"),A.removeHeader("Content-Range"),E(A,T),A.setHeader("Content-Security-Policy","default-src 'none'"),A.setHeader("X-Content-Type-Options","nosniff"),A.setHeader("Content-Type","text/html; charset=utf-8"),A.setHeader("Content-Length",Buffer.byteLength(h,"utf8")),w.method==="HEAD"){A.end();return}A.end(h,"utf8")}if(B(w)){v();return}z(w),Y(w,v),w.resume()}function E(w,A){if(!A)return;var R=Object.keys(A);for(var T=0;T0)return K(q);else if(D==="number"&&isNaN(q)===!1)return B.long?W(q):z(q);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(q))};function K(q){if(q=String(q),q.length>100)return;var B=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(q);if(!B)return;var D=parseFloat(B[1]),F=(B[2]||"ms").toLowerCase();switch(F){case"years":case"year":case"yrs":case"yr":case"y":return D*H;case"days":case"day":case"d":return D*Y;case"hours":case"hour":case"hrs":case"hr":case"h":return D*G;case"minutes":case"minute":case"mins":case"min":case"m":return D*J;case"seconds":case"second":case"secs":case"sec":case"s":return D*Z;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}function z(q){if(q>=Y)return Math.round(q/Y)+"d";if(q>=G)return Math.round(q/G)+"h";if(q>=J)return Math.round(q/J)+"m";if(q>=Z)return Math.round(q/Z)+"s";return q+"ms"}function W(q){return $(q,Y,"day")||$(q,G,"hour")||$(q,J,"minute")||$(q,Z,"second")||q+" ms"}function $(q,B,D){if(q=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Q.formatters.j=function(z){try{return JSON.stringify(z)}catch(W){return"[UnexpectedJSONParseError]: "+W.message}};function J(z){var W=this.useColors;if(z[0]=(W?"%c":"")+this.namespace+(W?" %c":" ")+z[0]+(W?"%c ":" ")+"+"+Q.humanize(this.diff),!W)return;var $="color: "+this.color;z.splice(1,0,$,"color: inherit");var q=0,B=0;z[0].replace(/%[a-zA-Z%]/g,function(D){if(D==="%%")return;if(q++,D==="%c")B=q}),z.splice(B,0,$)}function G(){return typeof console==="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function Y(z){try{if(z==null)Q.storage.removeItem("debug");else Q.storage.debug=z}catch(W){}}function H(){var z;try{z=Q.storage.debug}catch(W){}if(!z&&typeof process!=="undefined"&&"env"in process)z=process.env.DEBUG;return z}Q.enable(H());function K(){try{return window.localStorage}catch(z){}}}}),na=W1({"node_modules/express/node_modules/debug/src/node.js"(Q,X){var Z=require("tty"),J=require("util");Q=X.exports=aM(),Q.init=q,Q.log=z,Q.formatArgs=H,Q.save=W,Q.load=$,Q.useColors=Y,Q.colors=[6,2,3,4,5,1];try{if(G=I$(),G&&G.level>=2)Q.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(B){}var G;Q.inspectOpts=Object.keys(process.env).filter(function(B){return/^debug_/i.test(B)}).reduce(function(B,D){var F=D.substring(6).toLowerCase().replace(/_([a-z])/g,function(N,C){return C.toUpperCase()}),P=process.env[D];if(/^(yes|on|true|enabled)$/i.test(P))P=!0;else if(/^(no|off|false|disabled)$/i.test(P))P=!1;else if(P==="null")P=null;else P=Number(P);return B[F]=P,B},{});function Y(){return"colors"in Q.inspectOpts?Boolean(Q.inspectOpts.colors):Z.isatty(process.stderr.fd)}Q.formatters.o=function(B){return this.inspectOpts.colors=this.useColors,J.inspect(B,this.inspectOpts).split(` +`).map(function(D){return D.trim()}).join(" ")},Q.formatters.O=function(B){return this.inspectOpts.colors=this.useColors,J.inspect(B,this.inspectOpts)};function H(B){var D=this.namespace,F=this.useColors;if(F){var P=this.color,N="\x1B[3"+(P<8?P:"8;5;"+P),C=" "+N+";1m"+D+" \x1B[0m";B[0]=C+B[0].split(` +`).join(` +`+C),B.push(N+"m+"+Q.humanize(this.diff)+"\x1B[0m")}else B[0]=K()+D+" "+B[0]}function K(){if(Q.inspectOpts.hideDate)return"";else return new Date().toISOString()+" "}function z(){return process.stderr.write(J.format.apply(J,arguments)+` +`)}function W(B){if(B==null)delete process.env.DEBUG;else process.env.DEBUG=B}function $(){return process.env.DEBUG}function q(B){B.inspectOpts={};var D=Object.keys(Q.inspectOpts);for(var F=0;F=0;W--)switch(Y.charCodeAt(W)){case 32:if(z===H)z=H=W;break;case 44:if(z!==H)K.push(Y.substring(z,H));z=H=W;break;default:z=W;break}if(z!==H)K.push(Y.substring(z,H));return K}}}),sa=W1({"node_modules/ipaddr.js/lib/ipaddr.js"(Q,X){(function(){var Z,J,G,Y,H,K,z,W,$;if(J={},W=this,typeof X!=="undefined"&&X!==null&&X.exports)X.exports=J;else W.ipaddr=J;z=function(q,B,D,F){var P,N;if(q.length!==B.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");P=0;while(F>0){if(N=D-F,N<0)N=0;if(q[P]>>N!==B[P]>>N)return!1;F-=D,P+=1}return!0},J.subnetMatch=function(q,B,D){var F,P,N,C,L;if(D==null)D="unicast";for(N in B){if(C=B[N],C[0]&&!(C[0]instanceof Array))C=[C];for(F=0,P=C.length;F=0;D=F+=-1)if(P=this.octets[D],P in L){if(C=L[P],N&&C!==0)return null;if(C!==8)N=!0;B+=C}else return null;return 32-B},q}(),G="(0?\\d+|0x[a-f0-9]+)",Y={fourOctet:new RegExp("^"+G+"\\."+G+"\\."+G+"\\."+G+"$","i"),longValue:new RegExp("^"+G+"$","i")},J.IPv4.parser=function(q){var B,D,F,P,N;if(D=function(C){if(C[0]==="0"&&C[1]!=="x")return parseInt(C,8);else return parseInt(C)},B=q.match(Y.fourOctet))return function(){var C,L,V,M;V=B.slice(1,6),M=[];for(C=0,L=V.length;C4294967295||N<0)throw new Error("ipaddr: address outside defined range");return function(){var C,L;L=[];for(P=C=0;C<=24;P=C+=8)L.push(N>>P&255);return L}().reverse()}else return null},J.IPv6=function(){function q(B,D){var F,P,N,C,L,V;if(B.length===16){this.parts=[];for(F=P=0;P<=14;F=P+=2)this.parts.push(B[F]<<8|B[F+1])}else if(B.length===8)this.parts=B;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");V=this.parts;for(N=0,C=V.length;ND)B=F.index,D=F[0].length;if(D<0)return N;return N.substring(0,B)+"::"+N.substring(B+D)},q.prototype.toByteArray=function(){var B,D,F,P,N;B=[],N=this.parts;for(D=0,F=N.length;D>8),B.push(P&255);return B},q.prototype.toNormalizedString=function(){var B,D,F;if(B=function(){var P,N,C,L;C=this.parts,L=[];for(P=0,N=C.length;P>8,B&255,D>>8,D&255])},q.prototype.prefixLengthFromSubnetMask=function(){var B,D,F,P,N,C,L;L={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},B=0,N=!1;for(D=F=7;F>=0;D=F+=-1)if(P=this.parts[D],P in L){if(C=L[P],N&&C!==0)return null;if(C!==16)N=!0;B+=C}else return null;return 128-B},q}(),H="(?:[0-9a-f]+::?)+",$="%[0-9a-z]{1,}",K={zoneIndex:new RegExp($,"i"),native:new RegExp("^(::)?("+H+")?([0-9a-f]+)?(::)?("+$+")?$","i"),transitional:new RegExp("^((?:"+H+")|(?:::)(?:"+H+")?)"+(G+"\\."+G+"\\."+G+"\\."+G)+("("+$+")?$"),"i")},Z=function(q,B){var D,F,P,N,C,L;if(q.indexOf("::")!==q.lastIndexOf("::"))return null;if(L=(q.match(K.zoneIndex)||[])[0],L)L=L.substring(1),q=q.replace(/%.+$/,"");D=0,F=-1;while((F=q.indexOf(":",F+1))>=0)D++;if(q.substr(0,2)==="::")D--;if(q.substr(-2,2)==="::")D--;if(D>B)return null;C=B-D,N=":";while(C--)N+="0:";if(q=q.replace("::",N),q[0]===":")q=q.slice(1);if(q[q.length-1]===":")q=q.slice(0,-1);return B=function(){var V,M,I,E;I=q.split(":"),E=[];for(V=0,M=I.length;V=0&&B<=32)return F=[this.parse(D[1]),B],Object.defineProperty(F,"toString",{value:function(){return this.join("/")}}),F}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},J.IPv4.subnetMaskFromPrefixLength=function(q){var B,D,F;if(q=parseInt(q),q<0||q>32)throw new Error("ipaddr: invalid IPv4 prefix length");F=[0,0,0,0],D=0,B=Math.floor(q/8);while(D=0&&B<=128)return F=[this.parse(D[1]),B],Object.defineProperty(F,"toString",{value:function(){return this.join("/")}}),F}throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},J.isValid=function(q){return J.IPv6.isValid(q)||J.IPv4.isValid(q)},J.parse=function(q){if(J.IPv6.isValid(q))return J.IPv6.parse(q);else if(J.IPv4.isValid(q))return J.IPv4.parse(q);else throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},J.parseCIDR=function(q){var B;try{return J.IPv6.parseCIDR(q)}catch(D){B=D;try{return J.IPv4.parseCIDR(q)}catch(F){throw B=F,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},J.fromByteArray=function(q){var B=q.length;if(B===4)return new J.IPv4(q);else if(B===16)return new J.IPv6(q);else throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},J.process=function(q){var B=this.parse(q);if(B.kind()==="ipv6"&&B.isIPv4MappedAddress())return B.toIPv4Address();else return B}}).call(Q)}}),rM=W1({"node_modules/proxy-addr/index.js"(Q,X){X.exports=F,X.exports.all=z,X.exports.compile=W;var Z=aa(),J=sa(),G=/^[0-9]+$/,Y=J.isValid,H=J.parse,K={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function z(L,V){var M=Z(L);if(!V)return M;if(typeof V!=="function")V=W(V);for(var I=0;IE)throw new TypeError("invalid range on address: "+L);return[I,w]}function D(L){var V=H(L),M=V.kind();return M==="ipv4"?V.prefixLengthFromSubnetMask():null}function F(L,V){if(!L)throw new TypeError("req argument is required");if(!V)throw new TypeError("trust argument is required");var M=z(L,V),I=M[M.length-1];return I}function P(){return!1}function N(L){return function V(M){if(!Y(M))return!1;var I=H(M),E,w=I.kind();for(var A=0;A-1:!0;if(C1)x=V1,E=E.slice(0,G1)}if(E)V.push(E),E="",R=!1;var N1=Y1==="+"||Y1==="*",j1=Y1==="?"||Y1==="*",d1=n||t,D1=x||w;V.push({name:p||M++,prefix:x,delimiter:D1,optional:j1,repeat:N1,pattern:d1?$(d1):"[^"+W(D1===w?D1:D1+w)+"]+?"})}if(E||I",this.params=void 0,this.path=void 0,this.regexp=J(B.strict?W:z(W),this.keys,B),this.regexp._slash=W==="/"&&B.end===!1}H.prototype.handleError=function W($,q,B,D){var F=this.handle;if(F.length!==4)return D($);try{var P=F($,q,B,D);if(Z(P))P.then(null,function(N){D(N||new Error("Rejected promise"))})}catch(N){D(N)}},H.prototype.handleRequest=function W($,q,B){var D=this.handle;if(D.length>3)return B();try{var F=D($,q,B);if(Z(F))F.then(null,function(P){B(P||new Error("Rejected promise"))})}catch(P){B(P)}},H.prototype.match=function W($){var q;if($!=null){if(this.regexp._slash)return this.params={},this.path="",!0;q=this.regexp.exec($)}if(!q)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=q[0];var B=this.keys,D=this.params;for(var F=1;F=D.length)return q(C);if(++F>100)return H(N,C);var L,V;while(V!==!0&&B=Y1.length){setImmediate(C1,D1);return}if(++n>100)return setImmediate(N1,d1);var e=D(w);if(e==null)return C1(D1);var P1,Q1,O1;while(Q1!==!0&&T=0;R--)if(E[R+T]=E[R],R=v.length)return S();if(p=0,n=v[h++],x=n.name,t=R.params[x],Y1=E[x],G1=A[x],t===void 0||!Y1)return V1();if(G1&&(G1.match===t||G1.error&&G1.error!=="route"))return R.params[x]=G1.value,V1(G1.error);A[x]=G1={error:null,match:t,value:t},C1()}function C1(N1){var j1=Y1[p++];if(G1.value=R.params[n.name],N1){G1.error=N1,V1(N1);return}if(!j1)return V1();try{var d1=j1(R,T,C1,t,n.name);if(J(d1))d1.then(null,function(D1){C1(D1||new Error("Rejected promise"))})}catch(D1){C1(D1)}}V1()}function L(E,w){var A=new Array(arguments.length-2),R=new Array(arguments.length-2);for(var T=0;T1?'directories "'+x.root.slice(0,-1).join('", "')+'" or "'+x.root[x.root.length-1]+'"':'directory "'+x.root+'"',t=new Error('Failed to lookup view "'+E+'" in views '+n);return t.view=x,T(t)}if(h.cache)R[E]=x}M(x,h,T)},C.listen=function I(){var E=H.createServer(this);return E.listen.apply(E,arguments)};function V(I){if(this.get("env")!=="test")console.error(I.stack||I.toString())}function M(I,E,w){try{I.render(E,w)}catch(A){w(A)}}}}),Qs=W1({"node_modules/negotiator/lib/charset.js"(Q,X){X.exports=K,X.exports.preferredCharsets=K;var Z=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function J(q){var B=q.split(",");for(var D=0,F=0;D0}}}),Zs=W1({"node_modules/negotiator/lib/encoding.js"(Q,X){X.exports=K,X.exports.preferredEncodings=K;var Z=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function J(q){var B=q.split(","),D=!1,F=1;for(var P=0,N=0;P0}}}),Xs=W1({"node_modules/negotiator/lib/language.js"(Q,X){X.exports=K,X.exports.preferredLanguages=K;var Z=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function J(q){var B=q.split(",");for(var D=0,F=0;D0}}}),Js=W1({"node_modules/negotiator/lib/mediaType.js"(Q,X){X.exports=K,X.exports.preferredMediaTypes=K;var Z=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function J(P){var N=D(P);for(var C=0,L=0;C0)if(M.every(function(I){return N.params[I]=="*"||(N.params[I]||"").toLowerCase()==(L.params[I]||"").toLowerCase()}))V|=1;else return null;return{i:C,o:N.i,q:N.q,s:V}}function K(P,N){var C=J(P===void 0?"*/*":P||"");if(!N)return C.filter($).sort(z).map(W);var L=N.map(function V(M,I){return Y(M,C,I)});return L.filter($).sort(z).map(function V(M){return N[L.indexOf(M)]})}function z(P,N){return N.q-P.q||N.s-P.s||P.o-N.o||P.i-N.i||0}function W(P){return P.type+"/"+P.subtype}function $(P){return P.q>0}function q(P){var N=0,C=0;while((C=P.indexOf('"',C))!==-1)N++,C++;return N}function B(P){var N=P.indexOf("="),C,L;if(N===-1)C=P;else C=P.substr(0,N),L=P.substr(N+1);return[C,L]}function D(P){var N=P.split(",");for(var C=1,L=0;Cz-1)C=z-1;if(isNaN(N)||isNaN(C)||N>C||N<0)continue;D.push({start:N,end:C})}if(D.length<1)return-1;return $&&$.combine?J(D):D}function J(z){var W=z.map(G).sort(K);for(var $=0,q=1;qD.end+1)W[++$]=B;else if(B.end>D.end)D.end=B.end,D.index=Math.min(D.index,B.index)}W.length=$+1;var F=W.sort(H).map(Y);return F.type=z.type,F}function G(z,W){return{start:z.start,end:z.end,index:W}}function Y(z){return{start:z.start,end:z.end}}function H(z,W){return z.index-W.index}function K(z,W){return z.start-W.start}}}),Ws=W1({"node_modules/express/lib/request.js"(Q,X){var Z=Ys(),J=require("net").isIP,G=vX(),Y=require("http"),H=XI(),K=JI(),z=rq(),W=rM(),$=Object.create(Y.IncomingMessage.prototype);X.exports=$,$.get=$.header=function B(D){if(!D)throw new TypeError("name argument is required to req.get");if(typeof D!=="string")throw new TypeError("name must be a string to req.get");var F=D.toLowerCase();switch(F){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[F]}},$.accepts=function(){var B=Z(this);return B.types.apply(B,arguments)},$.acceptsEncodings=function(){var B=Z(this);return B.encodings.apply(B,arguments)},$.acceptsCharsets=function(){var B=Z(this);return B.charsets.apply(B,arguments)},$.acceptsLanguages=function(){var B=Z(this);return B.languages.apply(B,arguments)},$.range=function B(D,F){var P=this.get("Range");if(!P)return;return K(D,P,F)},q($,"query",function B(){var D=this.app.get("query parser fn");if(!D)return Object.create(null);var F=z(this).query;return D(F)}),$.is=function B(D){var F=D;if(!Array.isArray(D)){F=new Array(arguments.length);for(var P=0;P=200&&F<300||F===304)return H(this.headers,{etag:D.get("ETag"),"last-modified":D.get("Last-Modified")});return!1}),q($,"stale",function B(){return!this.fresh}),q($,"xhr",function B(){var D=this.get("X-Requested-With")||"";return D.toLowerCase()==="xmlhttprequest"});function q(B,D,F){Object.defineProperty(B,D,{configurable:!0,enumerable:!0,get:F})}}}),qs=W1({"node_modules/content-disposition/index.js"(Q,X){X.exports=P,X.exports.parse=M;var Z=require("path").basename,J=j$().Buffer,G=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,Y=/%[0-9A-Fa-f]{2}/,H=/%([0-9A-Fa-f]{2})/g,K=/[^\x20-\x7e\xa0-\xff]/g,z=/\\([\u0000-\u007f])/g,W=/([\\"])/g,$=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,q=/^[\x20-\x7e\x80-\xff]+$/,B=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,D=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,F=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function P(T,S){var v=S||{},h=v.type||"attachment",x=N(T,v.fallback);return C(new R(h,x))}function N(T,S){if(T===void 0)return;var v={};if(typeof T!=="string")throw new TypeError("filename must be a string");if(S===void 0)S=!0;if(typeof S!=="string"&&typeof S!=="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof S==="string"&&K.test(S))throw new TypeError("fallback must be ISO-8859-1 string");var h=Z(T),x=q.test(h),p=typeof S!=="string"?S&&V(h):Z(S),n=typeof p==="string"&&p!==h;if(n||!x||Y.test(h))v["filename*"]=h;if(x||n)v.filename=n?p:h;return v}function C(T){var{parameters:S,type:v}=T;if(!v||typeof v!=="string"||!B.test(v))throw new TypeError("invalid type");var h=String(v).toLowerCase();if(S&&typeof S==="object"){var x,p=Object.keys(S).sort();for(var n=0;n0)return K(q);else if(D==="number"&&isNaN(q)===!1)return B.long?W(q):z(q);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(q))};function K(q){if(q=String(q),q.length>100)return;var B=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(q);if(!B)return;var D=parseFloat(B[1]),F=(B[2]||"ms").toLowerCase();switch(F){case"years":case"year":case"yrs":case"yr":case"y":return D*H;case"days":case"day":case"d":return D*Y;case"hours":case"hour":case"hrs":case"hr":case"h":return D*G;case"minutes":case"minute":case"mins":case"min":case"m":return D*J;case"seconds":case"second":case"secs":case"sec":case"s":return D*Z;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}function z(q){if(q>=Y)return Math.round(q/Y)+"d";if(q>=G)return Math.round(q/G)+"h";if(q>=J)return Math.round(q/J)+"m";if(q>=Z)return Math.round(q/Z)+"s";return q+"ms"}function W(q){return $(q,Y,"day")||$(q,G,"hour")||$(q,J,"minute")||$(q,Z,"second")||q+" ms"}function $(q,B,D){if(q=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}Q.formatters.j=function(z){try{return JSON.stringify(z)}catch(W){return"[UnexpectedJSONParseError]: "+W.message}};function J(z){var W=this.useColors;if(z[0]=(W?"%c":"")+this.namespace+(W?" %c":" ")+z[0]+(W?"%c ":" ")+"+"+Q.humanize(this.diff),!W)return;var $="color: "+this.color;z.splice(1,0,$,"color: inherit");var q=0,B=0;z[0].replace(/%[a-zA-Z%]/g,function(D){if(D==="%%")return;if(q++,D==="%c")B=q}),z.splice(B,0,$)}function G(){return typeof console==="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function Y(z){try{if(z==null)Q.storage.removeItem("debug");else Q.storage.debug=z}catch(W){}}function H(){var z;try{z=Q.storage.debug}catch(W){}if(!z&&typeof process!=="undefined"&&"env"in process)z=process.env.DEBUG;return z}Q.enable(H());function K(){try{return window.localStorage}catch(z){}}}}),Us=W1({"node_modules/send/node_modules/debug/src/node.js"(Q,X){var Z=require("tty"),J=require("util");Q=X.exports=GI(),Q.init=q,Q.log=z,Q.formatArgs=H,Q.save=W,Q.load=$,Q.useColors=Y,Q.colors=[6,2,3,4,5,1];try{if(G=I$(),G&&G.level>=2)Q.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(B){}var G;Q.inspectOpts=Object.keys(process.env).filter(function(B){return/^debug_/i.test(B)}).reduce(function(B,D){var F=D.substring(6).toLowerCase().replace(/_([a-z])/g,function(N,C){return C.toUpperCase()}),P=process.env[D];if(/^(yes|on|true|enabled)$/i.test(P))P=!0;else if(/^(no|off|false|disabled)$/i.test(P))P=!1;else if(P==="null")P=null;else P=Number(P);return B[F]=P,B},{});function Y(){return"colors"in Q.inspectOpts?Boolean(Q.inspectOpts.colors):Z.isatty(process.stderr.fd)}Q.formatters.o=function(B){return this.inspectOpts.colors=this.useColors,J.inspect(B,this.inspectOpts).split(` +`).map(function(D){return D.trim()}).join(" ")},Q.formatters.O=function(B){return this.inspectOpts.colors=this.useColors,J.inspect(B,this.inspectOpts)};function H(B){var D=this.namespace,F=this.useColors;if(F){var P=this.color,N="\x1B[3"+(P<8?P:"8;5;"+P),C=" "+N+";1m"+D+" \x1B[0m";B[0]=C+B[0].split(` +`).join(` +`+C),B.push(N+"m+"+Q.humanize(this.diff)+"\x1B[0m")}else B[0]=K()+D+" "+B[0]}function K(){if(Q.inspectOpts.hideDate)return"";else return new Date().toISOString()+" "}function z(){return process.stderr.write(J.format.apply(J,arguments)+` +`)}function W(B){if(B==null)delete process.env.DEBUG;else process.env.DEBUG=B}function $(){return process.env.DEBUG}function q(B){B.inspectOpts={};var D=Object.keys(Q.inspectOpts);for(var F=0;F0)return z(B);else if(F==="number"&&isFinite(B))return D.long?$(B):W(B);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(B))};function z(B){if(B=String(B),B.length>100)return;var D=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(B);if(!D)return;var F=parseFloat(D[1]),P=(D[2]||"ms").toLowerCase();switch(P){case"years":case"year":case"yrs":case"yr":case"y":return F*K;case"weeks":case"week":case"w":return F*H;case"days":case"day":case"d":return F*Y;case"hours":case"hour":case"hrs":case"hr":case"h":return F*G;case"minutes":case"minute":case"mins":case"min":case"m":return F*J;case"seconds":case"second":case"secs":case"sec":case"s":return F*Z;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return F;default:return}}function W(B){var D=Math.abs(B);if(D>=Y)return Math.round(B/Y)+"d";if(D>=G)return Math.round(B/G)+"h";if(D>=J)return Math.round(B/J)+"m";if(D>=Z)return Math.round(B/Z)+"s";return B+"ms"}function $(B){var D=Math.abs(B);if(D>=Y)return q(B,D,Y,"day");if(D>=G)return q(B,D,G,"hour");if(D>=J)return q(B,D,J,"minute");if(D>=Z)return q(B,D,Z,"second");return B+" ms"}function q(B,D,F,P){var N=D>=F*1.5;return Math.round(B/F)+" "+P+(N?"s":"")}}}),YI=W1({"node_modules/send/index.js"(Q,X){var Z=W7(),J=Vs()("send"),G=dM(),Y=sq(),H=tq(),K=tM(),z=XI(),W=require("fs"),$=q7(),q=Ps(),B=O4(),D=JI(),F=require("path"),P=nq(),N=require("stream"),C=require("util"),L=F.extname,V=F.join,M=F.normalize,I=F.resolve,E=F.sep,w=/^ *bytes=/,A=31536000000,R=/(?:^|[\\/])\.\.(?:[\\/]|$)/;X.exports=T;function T(D1,e,P1){return new S(D1,e,P1)}function S(D1,e,P1){N.call(this);var Q1=P1||{};if(this.options=Q1,this.path=e,this.req=D1,this._acceptRanges=Q1.acceptRanges!==void 0?Boolean(Q1.acceptRanges):!0,this._cacheControl=Q1.cacheControl!==void 0?Boolean(Q1.cacheControl):!0,this._etag=Q1.etag!==void 0?Boolean(Q1.etag):!0,this._dotfiles=Q1.dotfiles!==void 0?Q1.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._extensions=Q1.extensions!==void 0?C1(Q1.extensions,"extensions option"):[],this._immutable=Q1.immutable!==void 0?Boolean(Q1.immutable):!1,this._index=Q1.index!==void 0?C1(Q1.index,"index option"):["index.html"],this._lastModified=Q1.lastModified!==void 0?Boolean(Q1.lastModified):!0,this._maxage=Q1.maxAge||Q1.maxage,this._maxage=typeof this._maxage==="string"?q(this._maxage):Number(this._maxage),this._maxage=!isNaN(this._maxage)?Math.min(Math.max(0,this._maxage),A):0,this._root=Q1.root?I(Q1.root):null}C.inherits(S,N),S.prototype.error=function D1(e,P1){if(V1(this,"error"))return this.emit("error",t(e,P1));var Q1=this.res,O1=P.message[e]||String(e),S1=n("Error",H(O1));if(v(Q1),P1&&P1.headers)d1(Q1,P1.headers);Q1.statusCode=e,Q1.setHeader("Content-Type","text/html; charset=UTF-8"),Q1.setHeader("Content-Length",Buffer.byteLength(S1)),Q1.setHeader("Content-Security-Policy","default-src 'none'"),Q1.setHeader("X-Content-Type-Options","nosniff"),Q1.end(S1)},S.prototype.hasTrailingSlash=function D1(){return this.path[this.path.length-1]==="/"},S.prototype.isConditionalGET=function D1(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]},S.prototype.isPreconditionFailure=function D1(){var e=this.req,P1=this.res,Q1=e.headers["if-match"];if(Q1){var O1=P1.getHeader("ETag");return!O1||Q1!=="*"&&j1(Q1).every(function(d){return d!==O1&&d!=="W/"+O1&&"W/"+d!==O1})}var S1=N1(e.headers["if-unmodified-since"]);if(!isNaN(S1)){var k=N1(P1.getHeader("Last-Modified"));return isNaN(k)||k>S1}return!1},S.prototype.removeContentHeaderFields=function D1(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")},S.prototype.notModified=function D1(){var e=this.res;J("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()},S.prototype.headersAlreadySent=function D1(){var e=new Error("Can't set headers after they are sent.");J("headers already sent"),this.error(500,e)},S.prototype.isCachable=function D1(){var e=this.res.statusCode;return e>=200&&e<300||e===304},S.prototype.onStatError=function D1(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}},S.prototype.isFresh=function D1(){return z(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})},S.prototype.isRangeFresh=function D1(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var P1=this.res.getHeader("ETag");return Boolean(P1&&e.indexOf(P1)!==-1)}var Q1=this.res.getHeader("Last-Modified");return N1(Q1)<=N1(e)},S.prototype.redirect=function D1(e){var P1=this.res;if(V1(this,"directory")){this.emit("directory",P1,e);return}if(this.hasTrailingSlash()){this.error(403);return}var Q1=Y(h(this.path+"/")),O1=n("Redirecting",'Redirecting to '+H(Q1)+"");P1.statusCode=301,P1.setHeader("Content-Type","text/html; charset=UTF-8"),P1.setHeader("Content-Length",Buffer.byteLength(O1)),P1.setHeader("Content-Security-Policy","default-src 'none'"),P1.setHeader("X-Content-Type-Options","nosniff"),P1.setHeader("Location",Q1),P1.end(O1)},S.prototype.pipe=function D1(e){var P1=this._root;this.res=e;var Q1=Y1(this.path);if(Q1===-1)return this.error(400),e;if(~Q1.indexOf("\x00"))return this.error(400),e;var O1;if(P1!==null){if(Q1)Q1=M("."+E+Q1);if(R.test(Q1))return J('malicious path "%s"',Q1),this.error(403),e;O1=Q1.split(E),Q1=M(V(P1,Q1))}else{if(R.test(Q1))return J('malicious path "%s"',Q1),this.error(403),e;O1=M(Q1).split(E),Q1=I(Q1)}if(x(O1))switch(J('%s dotfile "%s"',this._dotfiles,Q1),this._dotfiles){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}if(this._index.length&&this.hasTrailingSlash())return this.sendIndex(Q1),e;return this.sendFile(Q1),e},S.prototype.send=function D1(e,P1){var Q1=P1.size,O1=this.options,S1={},k=this.res,d=this.req,f=d.headers.range,j=O1.start||0;if(k.headersSent){this.headersAlreadySent();return}if(J('pipe "%s"',e),this.setHeader(e,P1),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(Q1=Math.max(0,Q1-j),O1.end!==void 0){var m=O1.end-j+1;if(Q1>m)Q1=m}if(this._acceptRanges&&w.test(f)){if(f=D(Q1,f,{combine:!0}),!this.isRangeFresh())J("range stale"),f=-2;if(f===-1)return J("range unsatisfiable"),k.setHeader("Content-Range",p("bytes",Q1)),this.error(416,{headers:{"Content-Range":k.getHeader("Content-Range")}});if(f!==-2&&f.length===1)J("range %j",f),k.statusCode=206,k.setHeader("Content-Range",p("bytes",Q1,f[0])),j+=f[0].start,Q1=f[0].end-f[0].start+1}for(var Z1 in O1)S1[Z1]=O1[Z1];if(S1.start=j,S1.end=Math.max(j,j+Q1-1),k.setHeader("Content-Length",Q1),d.method==="HEAD"){k.end();return}this.stream(e,S1)},S.prototype.sendFile=function D1(e){var P1=0,Q1=this;J('stat "%s"',e),W.stat(e,function S1(k,d){if(k&&k.code==="ENOENT"&&!L(e)&&e[e.length-1]!==E)return O1(k);if(k)return Q1.onStatError(k);if(d.isDirectory())return Q1.redirect(e);Q1.emit("file",e,d),Q1.send(e,d)});function O1(S1){if(Q1._extensions.length<=P1)return S1?Q1.onStatError(S1):Q1.error(404);var k=e+"."+Q1._extensions[P1++];J('stat "%s"',k),W.stat(k,function(d,f){if(d)return O1(d);if(f.isDirectory())return O1();Q1.emit("file",k,f),Q1.send(k,f)})}},S.prototype.sendIndex=function D1(e){var P1=-1,Q1=this;function O1(S1){if(++P1>=Q1._index.length){if(S1)return Q1.onStatError(S1);return Q1.error(404)}var k=V(e,Q1._index[P1]);J('stat "%s"',k),W.stat(k,function(d,f){if(d)return O1(d);if(f.isDirectory())return O1();Q1.emit("file",k,f),Q1.send(k,f)})}O1()},S.prototype.stream=function D1(e,P1){var Q1=this,O1=this.res,S1=W.createReadStream(e,P1);this.emit("stream",S1),S1.pipe(O1);function k(){G(S1,!0)}B(O1,k),S1.on("error",function d(f){k(),Q1.onStatError(f)}),S1.on("end",function d(){Q1.emit("end")})},S.prototype.type=function D1(e){var P1=this.res;if(P1.getHeader("Content-Type"))return;var Q1=L(e),O1=$.contentType(Q1)||"application/octet-stream";J("content-type %s",O1),P1.setHeader("Content-Type",O1)},S.prototype.setHeader=function D1(e,P1){var Q1=this.res;if(this.emit("headers",Q1,e,P1),this._acceptRanges&&!Q1.getHeader("Accept-Ranges"))J("accept ranges"),Q1.setHeader("Accept-Ranges","bytes");if(this._cacheControl&&!Q1.getHeader("Cache-Control")){var O1="public, max-age="+Math.floor(this._maxage/1000);if(this._immutable)O1+=", immutable";J("cache-control %s",O1),Q1.setHeader("Cache-Control",O1)}if(this._lastModified&&!Q1.getHeader("Last-Modified")){var S1=P1.mtime.toUTCString();J("modified %s",S1),Q1.setHeader("Last-Modified",S1)}if(this._etag&&!Q1.getHeader("ETag")){var k=K(P1);J("etag %s",k),Q1.setHeader("ETag",k)}};function v(D1){var e=G1(D1);for(var P1=0;P11?"/"+D1.substr(e):D1}function x(D1){for(var e=0;e1&&P1[0]===".")return!0}return!1}function p(D1,e,P1){return D1+" "+(P1?P1.start+"-"+P1.end:"*")+"/"+e}function n(D1,e){return` + + + +`+D1+` + + +
`+e+`
+ + +`}function t(D1,e){if(!e)return Z(D1);return e instanceof Error?Z(D1,e,{expose:!1}):Z(D1,e)}function Y1(D1){try{return decodeURIComponent(D1)}catch(e){return-1}}function G1(D1){return typeof D1.getHeaderNames!=="function"?Object.keys(D1._headers||{}):D1.getHeaderNames()}function V1(D1,e){var P1=typeof D1.listenerCount!=="function"?D1.listeners(e).length:D1.listenerCount(e);return P1>0}function C1(D1,e){var P1=[].concat(D1||[]);for(var Q1=0;Q199&&h<1000)Y("res.status("+JSON.stringify(h)+"): use res.status("+Math.floor(h)+") instead");return this.statusCode=h,this},A.links=function(v){var h=this.get("Link")||"";if(h)h+=", ";return this.set("Link",h+Object.keys(v).map(function(x){return"<"+v[x]+'>; rel="'+x+'"'}).join(", "))},A.send=function v(h){var x=h,p,n=this.req,t,Y1=this.app;switch(typeof x){case"string":if(!this.get("Content-Type"))this.type("html");break;case"boolean":case"number":case"object":if(x===null)x="";else if(Z.isBuffer(x)){if(!this.get("Content-Type"))this.type("bin")}else return this.json(x);break}if(typeof x==="string"){if(p="utf8",t=this.get("Content-Type"),typeof t==="string")this.set("Content-Type",L(t,"utf-8"))}var G1=Y1.get("etag fn"),V1=!this.get("ETag")&&typeof G1==="function",C1;if(x!==void 0){if(Z.isBuffer(x))C1=x.length;else if(!V1&&x.length<1000)C1=Z.byteLength(x,p);else x=Z.from(x,p),p=void 0,C1=x.length;this.set("Content-Length",C1)}var N1;if(V1&&C1!==void 0){if(N1=G1(x,p))this.set("ETag",N1)}if(n.fresh)this.statusCode=304;if(this.statusCode===204||this.statusCode===304)this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),x="";if(this.statusCode===205)this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),x="";if(n.method==="HEAD")this.end();else this.end(x,p);return this},A.json=function v(h){var x=this.app,p=x.get("json escape"),n=x.get("json replacer"),t=x.get("json spaces"),Y1=S(h,n,t,p);if(!this.get("Content-Type"))this.set("Content-Type","application/json");return this.send(Y1)},A.jsonp=function v(h){var x=this.app,p=x.get("json escape"),n=x.get("json replacer"),t=x.get("json spaces"),Y1=S(h,n,t,p),G1=this.req.query[x.get("jsonp callback name")];if(!this.get("Content-Type"))this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json");if(Array.isArray(G1))G1=G1[0];if(typeof G1==="string"&&G1.length!==0){if(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),G1=G1.replace(/[^\[\]\w$.]/g,""),Y1===void 0)Y1="";else if(typeof Y1==="string")Y1=Y1.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");Y1="/**/ typeof "+G1+" === 'function' && "+G1+"("+Y1+");"}return this.send(Y1)},A.sendStatus=function v(h){var x=D.message[h]||String(h);return this.statusCode=h,this.type("txt"),this.send(x)},A.sendFile=function v(h,x,p){var n=p,t=this.req,Y1=this,G1=t.next,V1=x||{};if(!h)throw new TypeError("path argument is required to res.sendFile");if(typeof h!=="string")throw new TypeError("path must be a string to res.sendFile");if(typeof x==="function")n=x,V1={};if(!V1.root&&!B(h))throw new TypeError("path must be absolute or specify root to res.sendFile");var C1=encodeURI(h),N1=M(t,C1,V1);T(Y1,N1,V1,function(j1){if(n)return n(j1);if(j1&&j1.code==="EISDIR")return G1();if(j1&&j1.code!=="ECONNABORTED"&&j1.syscall!=="write")G1(j1)})},A.download=function v(h,x,p,n){var t=n,Y1=x,G1=p||null;if(typeof x==="function")t=x,Y1=null,G1=null;else if(typeof p==="function")t=p,G1=null;if(typeof x==="object"&&(typeof p==="function"||p===void 0))Y1=null,G1=x;var V1={"Content-Disposition":J(Y1||h)};if(G1&&G1.headers){var C1=Object.keys(G1.headers);for(var N1=0;N10?h.accepts(p):!1;if(this.vary("Accept"),n)this.set("Content-Type",N(n).value),v[n](h,this,x);else if(v.default)v.default(h,this,x);else x(G(406,{types:C(p).map(function(t){return t.value})}));return this},A.attachment=function v(h){if(h)this.type(I(h));return this.set("Content-Disposition",J(h)),this},A.append=function v(h,x){var p=this.get(h),n=x;if(p)n=Array.isArray(p)?p.concat(x):Array.isArray(x)?[p].concat(x):[p,x];return this.set(h,n)},A.set=A.header=function v(h,x){if(arguments.length===2){var p=Array.isArray(x)?x.map(String):String(x);if(h.toLowerCase()==="content-type"){if(Array.isArray(p))throw new TypeError("Content-Type cannot be set to an Array");p=$.contentType(p)}this.setHeader(h,p)}else for(var n in h)this.set(n,h[n]);return this},A.get=function(v){return this.getHeader(v)},A.clearCookie=function v(h,x){var p=F({expires:new Date(1),path:"/"},x);return this.cookie(h,"",p)},A.cookie=function(v,h,x){var p=F({},x),n=this.req.secret,t=p.signed;if(t&&!n)throw new Error('cookieParser("secret") required for signed cookies');var Y1=typeof h==="object"?"j:"+JSON.stringify(h):String(h);if(t)Y1="s:"+P(Y1,n);if(p.maxAge!=null){var G1=p.maxAge-0;if(!isNaN(G1))p.expires=new Date(Date.now()+G1),p.maxAge=Math.floor(G1/1000)}if(p.path==null)p.path="/";return this.append("Set-Cookie",V.serialize(v,String(Y1),p)),this},A.location=function v(h){var x;if(h==="back")x=this.req.get("Referrer")||"/";else x=String(h);var p=R.exec(x),n=p?p[0].length+1:0;return x=x.slice(0,n)+H(x.slice(n)),this.set("Location",x)},A.redirect=function v(h){var x=h,p,n=302;if(arguments.length===2)n=arguments[0],x=arguments[1];if(x=this.location(x).get("Location"),this.format({text:function(){p=D.message[n]+". Redirecting to "+x},html:function(){var t=K(x);p="

"+D.message[n]+'. Redirecting to '+t+"

"},default:function(){p=""}}),this.statusCode=n,this.set("Content-Length",Z.byteLength(p)),this.req.method==="HEAD")this.end();else this.end(p)},A.vary=function(v){return w(this,v),this},A.render=function v(h,x,p){var n=this.req.app,t=p,Y1=x||{},G1=this.req,V1=this;if(typeof x==="function")t=x,Y1={};Y1._locals=V1.locals,t=t||function(C1,N1){if(C1)return G1.next(C1);V1.send(N1)},n.render(h,Y1,t)};function T(v,h,x,p){var n=!1,t;function Y1(){if(n)return;n=!0;var D1=new Error("Request aborted");D1.code="ECONNABORTED",p(D1)}function G1(){if(n)return;n=!0;var D1=new Error("EISDIR, read");D1.code="EISDIR",p(D1)}function V1(D1){if(n)return;n=!0,p(D1)}function C1(){if(n)return;n=!0,p()}function N1(){t=!1}function j1(D1){if(D1&&D1.code==="ECONNRESET")return Y1();if(D1)return V1(D1);if(n)return;setImmediate(function(){if(t!==!1&&!n){Y1();return}if(n)return;n=!0,p()})}function d1(){t=!0}if(h.on("directory",G1),h.on("end",C1),h.on("error",V1),h.on("file",N1),h.on("stream",d1),W(v,j1),x.headers)h.on("headers",function D1(e){var P1=x.headers,Q1=Object.keys(P1);for(var O1=0;O1&]/g,function(t){switch(t.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return t}});return n}}}),Ds=W1({"node_modules/serve-static/index.js"(Q,X){var Z=sq(),J=tq(),G=rq(),Y=require("path").resolve,H=YI(),K=require("url");X.exports=z;function z(D,F){if(!D)throw new TypeError("root path required");if(typeof D!=="string")throw new TypeError("root path must be a string");var P=Object.create(F||null),N=P.fallthrough!==!1,C=P.redirect!==!1,L=P.setHeaders;if(L&&typeof L!=="function")throw new TypeError("option setHeaders must be function");P.maxage=P.maxage||P.maxAge||0,P.root=Y(D);var V=C?B():q();return function M(I,E,w){if(I.method!=="GET"&&I.method!=="HEAD"){if(N)return w();E.statusCode=405,E.setHeader("Allow","GET, HEAD"),E.setHeader("Content-Length","0"),E.end();return}var A=!N,R=G.original(I),T=G(I).pathname;if(T==="/"&&R.pathname.substr(-1)!=="/")T="";var S=H(I,T,P);if(S.on("directory",V),L)S.on("headers",L);if(N)S.on("file",function v(){A=!0});S.on("error",function v(h){if(A||!(h.statusCode<500)){w(h);return}w()}),S.pipe(E)}}function W(D){for(var F=0;F1?"/"+D.substr(F):D}function $(D,F){return` + + + +`+D+` + + +
`+F+`
+ + +`}function q(){return function D(){this.error(404)}}function B(){return function D(F){if(this.hasTrailingSlash()){this.error(404);return}var P=G.original(this.req);P.path=null,P.pathname=W(P.pathname+"/");var N=Z(K.format(P)),C=$("Redirecting",'Redirecting to '+J(N)+"");F.statusCode=301,F.setHeader("Content-Type","text/html; charset=UTF-8"),F.setHeader("Content-Length",Buffer.byteLength(C)),F.setHeader("Content-Security-Policy","default-src 'none'"),F.setHeader("X-Content-Type-Options","nosniff"),F.setHeader("Location",N),F.end(C)}}}}),Ls=W1({"node_modules/express/lib/express.js"(Q,X){var Z=nM(),J=require("events").EventEmitter,G=ma(),Y=ea(),H=ZI(),K=Ws(),z=Fs();Q=X.exports=W;function W(){var $=function(q,B,D){$.handle(q,B,D)};return G($,J.prototype,!1),G($,Y,!1),$.request=Object.create(K,{app:{configurable:!0,enumerable:!0,writable:!0,value:$}}),$.response=Object.create(z,{app:{configurable:!0,enumerable:!0,writable:!0,value:$}}),$.init(),$}Q.application=Y,Q.request=K,Q.response=z,Q.Route=H.Route,Q.Router=H,Q.json=Z.json,Q.raw=Z.raw,Q.static=Ds(),Q.text=Z.text,Q.urlencoded=Z.urlencoded}}),Cs=W1({"node_modules/express/index.js"(Q,X){X.exports=Ls()}}),Ns=W1({"node_modules/object-assign/index.js"(Q,X){var Z=Object.getOwnPropertySymbols,J=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;function Y(K){if(K===null||K===void 0)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(K)}function H(){try{if(!Object.assign)return!1;var K=new String("abc");if(K[5]="de",Object.getOwnPropertyNames(K)[0]==="5")return!1;var z={};for(var W=0;W<10;W++)z["_"+String.fromCharCode(W)]=W;var $=Object.getOwnPropertyNames(z).map(function(B){return z[B]});if($.join("")!=="0123456789")return!1;var q={};if("abcdefghijklmnopqrst".split("").forEach(function(B){q[B]=B}),Object.keys(Object.assign({},q)).join("")!=="abcdefghijklmnopqrst")return!1;return!0}catch(B){return!1}}X.exports=H()?Object.assign:function(K,z){var W,$=Y(K),q;for(var B=1;B":function(Y,H){return Y>H},">=":function(Y,H){return Y>=H},"<":function(Y,H,K){return K===void 0?Y=Y)return[];else return K}};return J.is_logic=function(Y){return typeof Y==="object"&&Y!==null&&!Array.isArray(Y)&&Object.keys(Y).length===1},J.truthy=function(Y){if(Array.isArray(Y)&&Y.length===0)return!1;return!!Y},J.get_operator=function(Y){return Object.keys(Y)[0]},J.get_values=function(Y){return Y[J.get_operator(Y)]},J.apply=function(Y,H){if(Array.isArray(Y))return Y.map(function(N){return J.apply(N,H)});if(!J.is_logic(Y))return Y;var K=J.get_operator(Y),z=Y[K],W,$,q,B,D;if(!Array.isArray(z))z=[z];if(K==="if"||K=="?:"){for(W=0;W0){var F=String(K).split("."),P=G;for(W=0;W")}else if(W)q+="new "+(z||"");else if(z)q+=z;else H=!1,q+=K;if(H)q+=" ("+K+")";return q}function G(Y){var H=Y.receiver;return H.constructor&&H.constructor.name||null}}}),Rs=W1({"node_modules/response-time/node_modules/depd/lib/compat/event-listener-count.js"(Q,X){X.exports=Z;function Z(J,G){return J.listeners(G).length}}}),CM=W1({"node_modules/response-time/node_modules/depd/lib/compat/index.js"(Q,X){var Z=require("events").EventEmitter;J(X.exports,"callSiteToString",function Y(){var H=Error.stackTraceLimit,K={},z=Error.prepareStackTrace;function W(q,B){return B}Error.prepareStackTrace=W,Error.stackTraceLimit=2,Error.captureStackTrace(K);var $=K.stack.slice();return Error.prepareStackTrace=z,Error.stackTraceLimit=H,$[0].toString?G:Is()}),J(X.exports,"eventListenerCount",function Y(){return Z.listenerCount||Rs()});function J(Y,H,K){function z(){var W=K();return Object.defineProperty(Y,H,{configurable:!0,enumerable:!0,value:W}),W}Object.defineProperty(Y,H,{configurable:!0,enumerable:!0,get:z})}function G(Y){return Y.toString()}}}),As=W1({"node_modules/response-time/node_modules/depd/index.js"(exports,module){var callSiteToString=CM().callSiteToString,eventListenerCount=CM().eventListenerCount,relative=require("path").relative;module.exports=depd;var basePath=process.cwd();function containsNamespace(Q,X){var Z=Q.split(/[ ,]+/),J=String(X).toLowerCase();for(var G=0;G",Z=Q.getLineNumber(),J=Q.getColumnNumber();if(Q.isEval())X=Q.getEvalOrigin()+", "+X;var G=[X,Z,J];return G.callSite=Q,G.name=Q.getFunctionName(),G}function defaultMessage(Q){var{callSite:X,name:Z}=Q;if(!Z)Z="";var J=X.getThis(),G=J&&X.getTypeName();if(G==="Object")G=void 0;if(G==="Function")G=J.name||G;return G&&X.getMethodName()?G+"."+Z:Z}function formatPlain(Q,X,Z){var J=new Date().toUTCString(),G=J+" "+this._namespace+" deprecated "+Q;if(this._traced){for(var Y=0;Y1&&typeof arguments[1]==="string"?2:1,$=z>=W+1?arguments[W]:void 0;if(this.statusCode=K,Array.isArray($))G(this,$);else if($)Y(this,$);var q=new Array(Math.min(z,W));for(var B=0;BencodeURIComponent(Z).replace(/[!'()*]/g,(J)=>`%${J.charCodeAt(0).toString(16).toUpperCase()}`)}}),js=W1({"node_modules/decode-uri-component/index.js"(Q,X){var Z="%[a-f0-9]{2}",J=new RegExp("("+Z+")|([^%]+?)","gi"),G=new RegExp("("+Z+")+","gi");function Y(z,W){try{return[decodeURIComponent(z.join(""))]}catch(B){}if(z.length===1)return z;W=W||1;var $=z.slice(0,W),q=z.slice(W);return Array.prototype.concat.call([],Y($),Y(q))}function H(z){try{return decodeURIComponent(z)}catch(q){var W=z.match(J)||[];for(var $=1;${if(!(typeof Z==="string"&&typeof J==="string"))throw new TypeError("Expected the arguments to be of type `string`");if(J==="")return[Z];let G=Z.indexOf(J);if(G===-1)return[Z];return[Z.slice(0,G),Z.slice(G+J.length)]}}}),ks=W1({"node_modules/filter-obj/index.js"(Q,X){X.exports=function(Z,J){var G={},Y=Object.keys(Z),H=Array.isArray(J);for(var K=0;KL===null||L===void 0,H=Symbol("encodeFragmentIdentifier");function K(L){switch(L.arrayFormat){case"index":return(V)=>(M,I)=>{let E=M.length;if(I===void 0||L.skipNull&&I===null||L.skipEmptyString&&I==="")return M;if(I===null)return[...M,[$(V,L),"[",E,"]"].join("")];return[...M,[$(V,L),"[",$(E,L),"]=",$(I,L)].join("")]};case"bracket":return(V)=>(M,I)=>{if(I===void 0||L.skipNull&&I===null||L.skipEmptyString&&I==="")return M;if(I===null)return[...M,[$(V,L),"[]"].join("")];return[...M,[$(V,L),"[]=",$(I,L)].join("")]};case"colon-list-separator":return(V)=>(M,I)=>{if(I===void 0||L.skipNull&&I===null||L.skipEmptyString&&I==="")return M;if(I===null)return[...M,[$(V,L),":list="].join("")];return[...M,[$(V,L),":list=",$(I,L)].join("")]};case"comma":case"separator":case"bracket-separator":{let V=L.arrayFormat==="bracket-separator"?"[]=":"=";return(M)=>(I,E)=>{if(E===void 0||L.skipNull&&E===null||L.skipEmptyString&&E==="")return I;if(E=E===null?"":E,I.length===0)return[[$(M,L),V,$(E,L)].join("")];return[[I,$(E,L)].join(L.arrayFormatSeparator)]}}default:return(V)=>(M,I)=>{if(I===void 0||L.skipNull&&I===null||L.skipEmptyString&&I==="")return M;if(I===null)return[...M,$(V,L)];return[...M,[$(V,L),"=",$(I,L)].join("")]}}}function z(L){let V;switch(L.arrayFormat){case"index":return(M,I,E)=>{if(V=/\[(\d*)\]$/.exec(M),M=M.replace(/\[\d*\]$/,""),!V){E[M]=I;return}if(E[M]===void 0)E[M]={};E[M][V[1]]=I};case"bracket":return(M,I,E)=>{if(V=/(\[\])$/.exec(M),M=M.replace(/\[\]$/,""),!V){E[M]=I;return}if(E[M]===void 0){E[M]=[I];return}E[M]=[].concat(E[M],I)};case"colon-list-separator":return(M,I,E)=>{if(V=/(:list)$/.exec(M),M=M.replace(/:list$/,""),!V){E[M]=I;return}if(E[M]===void 0){E[M]=[I];return}E[M]=[].concat(E[M],I)};case"comma":case"separator":return(M,I,E)=>{let w=typeof I==="string"&&I.includes(L.arrayFormatSeparator),A=typeof I==="string"&&!w&&q(I,L).includes(L.arrayFormatSeparator);I=A?q(I,L):I;let R=w||A?I.split(L.arrayFormatSeparator).map((T)=>q(T,L)):I===null?I:q(I,L);E[M]=R};case"bracket-separator":return(M,I,E)=>{let w=/(\[\])$/.test(M);if(M=M.replace(/\[\]$/,""),!w){E[M]=I?q(I,L):I;return}let A=I===null?[]:I.split(L.arrayFormatSeparator).map((R)=>q(R,L));if(E[M]===void 0){E[M]=A;return}E[M]=[].concat(E[M],A)};default:return(M,I,E)=>{if(E[M]===void 0){E[M]=I;return}E[M]=[].concat(E[M],I)}}}function W(L){if(typeof L!=="string"||L.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function $(L,V){if(V.encode)return V.strict?X(L):encodeURIComponent(L);return L}function q(L,V){if(V.decode)return Z(L);return L}function B(L){if(Array.isArray(L))return L.sort();if(typeof L==="object")return B(Object.keys(L)).sort((V,M)=>Number(V)-Number(M)).map((V)=>L[V]);return L}function D(L){let V=L.indexOf("#");if(V!==-1)L=L.slice(0,V);return L}function F(L){let V="",M=L.indexOf("#");if(M!==-1)V=L.slice(M);return V}function P(L){L=D(L);let V=L.indexOf("?");if(V===-1)return"";return L.slice(V+1)}function N(L,V){if(V.parseNumbers&&!Number.isNaN(Number(L))&&(typeof L==="string"&&L.trim()!==""))L=Number(L);else if(V.parseBooleans&&L!==null&&(L.toLowerCase()==="true"||L.toLowerCase()==="false"))L=L.toLowerCase()==="true";return L}function C(L,V){V=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},V),W(V.arrayFormatSeparator);let M=z(V),I=Object.create(null);if(typeof L!=="string")return I;if(L=L.trim().replace(/^[?#&]/,""),!L)return I;for(let E of L.split("&")){if(E==="")continue;let[w,A]=J(V.decode?E.replace(/\+/g," "):E,"=");A=A===void 0?null:["comma","separator","bracket-separator"].includes(V.arrayFormat)?A:q(A,V),M(q(w,V),A,I)}for(let E of Object.keys(I)){let w=I[E];if(typeof w==="object"&&w!==null)for(let A of Object.keys(w))w[A]=N(w[A],V);else I[E]=N(w,V)}if(V.sort===!1)return I;return(V.sort===!0?Object.keys(I).sort():Object.keys(I).sort(V.sort)).reduce((E,w)=>{let A=I[w];if(Boolean(A)&&typeof A==="object"&&!Array.isArray(A))E[w]=B(A);else E[w]=A;return E},Object.create(null))}Q.extract=P,Q.parse=C,Q.stringify=(L,V)=>{if(!L)return"";V=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},V),W(V.arrayFormatSeparator);let M=(A)=>V.skipNull&&Y(L[A])||V.skipEmptyString&&L[A]==="",I=K(V),E={};for(let A of Object.keys(L))if(!M(A))E[A]=L[A];let w=Object.keys(E);if(V.sort!==!1)w.sort(V.sort);return w.map((A)=>{let R=L[A];if(R===void 0)return"";if(R===null)return $(A,V);if(Array.isArray(R)){if(R.length===0&&V.arrayFormat==="bracket-separator")return $(A,V)+"[]";return R.reduce(I(A),[]).join("&")}return $(A,V)+"="+$(R,V)}).filter((A)=>A.length>0).join("&")},Q.parseUrl=(L,V)=>{V=Object.assign({decode:!0},V);let[M,I]=J(L,"#");return Object.assign({url:M.split("?")[0]||"",query:C(P(L),V)},V&&V.parseFragmentIdentifier&&I?{fragmentIdentifier:q(I,V)}:{})},Q.stringifyUrl=(L,V)=>{V=Object.assign({encode:!0,strict:!0,[H]:!0},V);let M=D(L.url).split("?")[0]||"",I=Q.extract(L.url),E=Q.parse(I,{sort:!1}),w=Object.assign(E,L.query),A=Q.stringify(w,V);if(A)A=`?${A}`;let R=F(L.url);if(L.fragmentIdentifier)R=`#${V[H]?$(L.fragmentIdentifier,V):L.fragmentIdentifier}`;return`${M}${A}${R}`},Q.pick=(L,V,M)=>{M=Object.assign({parseFragmentIdentifier:!0,[H]:!1},M);let{url:I,query:E,fragmentIdentifier:w}=Q.parseUrl(L,M);return Q.stringifyUrl({url:I,query:G(E,V),fragmentIdentifier:w},M)},Q.exclude=(L,V,M)=>{let I=Array.isArray(V)?(E)=>!V.includes(E):(E,w)=>!V(E,w);return Q.pick(L,I,M)}}}),xs=W1({"node_modules/glob-to-regexp/index.js"(Q,X){X.exports=function(Z,J){if(typeof Z!=="string")throw new TypeError("Expected a string");var G=String(Z),Y="",H=J?!!J.extended:!1,K=J?!!J.globstar:!1,z=!1,W=J&&typeof J.flags==="string"?J.flags:"",$;for(var q=0,B=G.length;q1&&(D==="/"||D===void 0)&&(P==="/"||P===void 0);if(N)Y+="((?:[^/]*(?:/|$))*)",q++;else Y+="([^/]*)"}break;default:Y+=$}if(!W||!~W.indexOf("g"))Y="^"+Y+"$";return new RegExp(Y,W)}}});Io(y$,{default:()=>ss,getAPI:()=>rs});var Q8=c6(require("obsidian")),vs=c6(require("https")),gs=c6(require("http")),yQ=c6(bM()),_q=c6(require("obsidian")),L6=c6(go()),hs=c6(ho()),fs=c6(bM()),U$=c6(Cs()),bs=c6(require("http")),ms=c6(Ts()),_s=c6(q7()),X7=c6(nM()),V$=c6(Ms()),ds=c6(ws()),us=c6(ys()),ps=c6(xs()),NM=c6(require("path")),l0;(function(Q){Q[Q.TextContentEncodingRequired=40010]="TextContentEncodingRequired",Q[Q.ContentTypeSpecificationRequired=40011]="ContentTypeSpecificationRequired",Q[Q.InvalidContentForContentType=40015]="InvalidContentForContentType",Q[Q.InvalidContentInsertionPositionValue=40050]="InvalidContentInsertionPositionValue",Q[Q.MissingHeadingHeader=40051]="MissingHeadingHeader",Q[Q.InvalidHeadingHeader=40052]="InvalidHeadingHeader",Q[Q.PeriodIsNotEnabled=40060]="PeriodIsNotEnabled",Q[Q.InvalidFilterQuery=40070]="InvalidFilterQuery",Q[Q.ApiKeyAuthorizationRequired=40101]="ApiKeyAuthorizationRequired",Q[Q.PeriodDoesNotExist=40460]="PeriodDoesNotExist",Q[Q.PeriodicNoteDoesNotExist=40461]="PeriodicNoteDoesNotExist",Q[Q.RequestMethodValidOnlyForFiles=40510]="RequestMethodValidOnlyForFiles"})(l0||(l0={}));function ls(Q,X){let Z=[...X].reverse(),J=[];for(let[G,Y]of Q.headings.entries()){J[Y.level]=Y,J.splice(Y.level+1);let H=[...J.map((z)=>z.heading)].reverse(),K=!0;for(let[z,W]of Z.entries())if(H[z]!=W){K=!1;break}if(K){let z=Y.position.end,W=Q.headings.slice(G+1).find((q)=>q.level<=Y.level),$=W==null?void 0:W.position.start;return{start:z,end:$}}}return null}function cs(Q,X,Z,J){var G,Y;let H=Z===!1?(Y=(G=X.end)==null?void 0:G.line)!=null?Y:Q.length:X.start.line+1;if(!J||Z)return H;while(Q[H-1]==="")H--;return H}function is(Q){if(Q instanceof Uint8Array)return Q.buffer.slice(Q.byteOffset,Q.byteOffset+Q.byteLength);if(Q instanceof DataView)return Q.buffer.slice(Q.byteOffset,Q.byteOffset+Q.byteLength);if(Q instanceof ArrayBuffer)return Q;return new TextEncoder().encode(JSON.stringify(Q)).buffer}function qI(Q){return(Q.validity.notAfter.getTime()-new Date().getTime())/86400000}function HI(Q){let X=Q.getExtension("subjectAltName"),Z=!1;if(X&&X.altNames)X.altNames.forEach((J)=>{if(J.type===7&&J.value==="\x00\x00\x00\x00")Z=!0});return!Z}var dq="obsidian-local-rest-api.crt",zI={port:27124,insecurePort:27123,enableInsecureServer:!1},ns={[l0.ApiKeyAuthorizationRequired]:"Authorization required. Find your API Key in the 'Local REST API' section of your Obsidian settings.",[l0.ContentTypeSpecificationRequired]:"Content-Type header required; this API accepts data in multiple content-types and you must indicate the content-type of your request body via the Content-Type header.",[l0.InvalidContentInsertionPositionValue]:"Invalid 'Content-Insertion-Position' header value.",[l0.InvalidContentForContentType]:"Your request body could not be processed as the content-type specified in your Content-Type header.",[l0.InvalidHeadingHeader]:"No heading in specified file could be found matching the heading specified in 'Heading' header.",[l0.MissingHeadingHeader]:"'Heading' header is required for identifying where to insert content.",[l0.PeriodDoesNotExist]:"Specified period does not exist.",[l0.PeriodIsNotEnabled]:"Specified period is not enabled.",[l0.PeriodicNoteDoesNotExist]:"Periodic note does not exist for the specified period.",[l0.RequestMethodValidOnlyForFiles]:"Request method is valid only for file paths, not directories.",[l0.TextContentEncodingRequired]:"Incoming content must be text data and have an appropriate text/* Content-type header set (e.g. text/markdown).",[l0.InvalidFilterQuery]:"The query you provided could not be processed."},_9;(function(Q){Q.json="application/json",Q.markdown="text/markdown",Q.olrapiNoteJson="application/vnd.olrapi.note+json",Q.jsonLogic="application/vnd.olrapi.jsonlogic+json",Q.dataviewDql="application/vnd.olrapi.dataview.dql+txt"})(_9||(_9={}));var TM="Authorization",CZ="127.0.0.1",MM="https://raw.githubusercontent.com/coddingtonbear/obsidian-local-rest-api/main/LICENSE",J7="1024mb",os=class{constructor(Q,X){this.unregistered=!1,this.router=Q,this.onUnregister=X,this.unregistered=!1}addRoute(Q){if(this.unregistered)throw new Error("Routes cannot be added after API extension has been unregistered.");return this.router.route(Q)}unregister(){this.onUnregister(),this.unregistered=!0}},as=class{constructor(Q,X,Z){this.apiExtensions=[],this.app=Q,this.manifest=X,this.api=U$.default(),this.settings=Z,this.apiExtensionRouter=U$.default.Router(),this.api.set("json spaces",2),V$.default.add_operation("glob",(J,G)=>{if(typeof G==="string"&&typeof J==="string")return ps.default(J).test(G);return!1}),V$.default.add_operation("regexp",(J,G)=>{if(typeof G==="string"&&typeof J==="string")return new RegExp(J).test(G);return!1})}registerApiExtension(Q){let X=void 0;for(let{manifest:Z,api:J}of this.apiExtensions)if(JSON.stringify(Z)===JSON.stringify(Q)){X=J;break}if(!X){let Z=U$.default.Router();this.apiExtensionRouter.use(Z),X=new os(Z,()=>{let J=this.apiExtensions.findIndex(({manifest:G})=>JSON.stringify(Q)===JSON.stringify(G));if(J!==-1)this.apiExtensions.splice(J,1),this.apiExtensionRouter.stack.splice(J,1)}),this.apiExtensions.push({manifest:Q,api:X})}return X}requestIsAuthenticated(Q){var X;if(Q.get((X=this.settings.authorizationHeaderName)!=null?X:"Authorization")===`Bearer ${this.settings.apiKey}`)return!0;return!1}authenticationMiddleware(Q,X,Z){return T0(this,null,function*(){if(!["/",`/${dq}`].includes(Q.path)&&!this.requestIsAuthenticated(Q)){this.returnCannedResponse(X,{errorCode:l0.ApiKeyAuthorizationRequired});return}Z()})}getFileMetadataObject(Q){return T0(this,null,function*(){var X,Z,J;let G=this.app.metadataCache.getFileCache(Q),Y=K0({},(X=G.frontmatter)!=null?X:{});delete Y.position;let H=(J=((Z=G.tags)!=null?Z:[]).filter((W)=>W).map((W)=>W.tag))!=null?J:[];return{tags:[...Array.isArray(Y.tags)?Y.tags:[],...H].filter((W)=>W).map((W)=>W.toString().replace(/^#/,"")).filter((W,$,q)=>q.indexOf(W)===$),frontmatter:Y,stat:Q.stat,path:Q.path,content:yield this.app.vault.cachedRead(Q)}})}getResponseMessage({statusCode:Q=400,message:X,errorCode:Z}){let J=[];if(Z)J.push(ns[Z]);else J.push(bs.default.STATUS_CODES[Q]);if(X)J.push(X);return J.join(` +`)}getStatusCode({statusCode:Q,errorCode:X}){if(Q)return Q;return Math.floor(X/100)}returnCannedResponse(Q,{statusCode:X,message:Z,errorCode:J}){let G={message:this.getResponseMessage({statusCode:X,message:Z,errorCode:J}),errorCode:J!=null?J:X*100};Q.status(this.getStatusCode({statusCode:X,errorCode:J})).json(G)}root(Q,X){let Z;try{Z=fs.default.pki.certificateFromPem(this.settings.crypto.cert)}catch(J){}X.status(200).json({status:"OK",manifest:this.manifest,versions:{obsidian:_q.apiVersion,self:this.manifest.version},service:"Obsidian Local REST API",authenticated:this.requestIsAuthenticated(Q),certificateInfo:this.requestIsAuthenticated(Q)&&Z?{validityDays:qI(Z),regenerateRecommended:!HI(Z)}:void 0,apiExtensions:this.requestIsAuthenticated(Q)?this.apiExtensions.map(({manifest:J})=>J):void 0})}_vaultGet(Q,X,Z){return T0(this,null,function*(){if(!Q||Q.endsWith("/")){let J=[...new Set(this.app.vault.getFiles().map((G)=>G.path).filter((G)=>G.startsWith(Q)).map((G)=>{let Y=G.slice(Q.length);if(Y.indexOf("/")>-1)return Y.slice(0,Y.indexOf("/")+1);return Y}))];if(J.sort(),J.length===0){this.returnCannedResponse(Z,{statusCode:404});return}Z.json({files:J})}else if((yield this.app.vault.adapter.exists(Q))&&(yield this.app.vault.adapter.stat(Q)).type==="file"){let G=yield this.app.vault.adapter.readBinary(Q),Y=_s.default.lookup(Q);if(Z.set({"Content-Disposition":`attachment; filename="${encodeURI(Q).replace(",","%2C")}"`,"Content-Type":`${Y}`+(Y==_9.markdown?"; charset=utf-8":"")}),X.headers.accept===_9.olrapiNoteJson){let H=this.app.vault.getAbstractFileByPath(Q);Z.setHeader("Content-Type",_9.olrapiNoteJson),Z.send(JSON.stringify(yield this.getFileMetadataObject(H),null,2));return}Z.send(Buffer.from(G))}else{this.returnCannedResponse(Z,{statusCode:404});return}})}vaultGet(Q,X){return T0(this,null,function*(){let Z=Q.params[0];return this._vaultGet(Z,Q,X)})}_vaultPut(Q,X,Z){return T0(this,null,function*(){if(!Q||Q.endsWith("/")){this.returnCannedResponse(Z,{errorCode:l0.RequestMethodValidOnlyForFiles});return}try{yield this.app.vault.createFolder(NM.default.dirname(Q))}catch(J){}if(typeof X.body==="string")yield this.app.vault.adapter.write(Q,X.body);else yield this.app.vault.adapter.writeBinary(Q,is(X.body));this.returnCannedResponse(Z,{statusCode:204});return})}vaultPut(Q,X){return T0(this,null,function*(){let Z=Q.params[0];return this._vaultPut(Z,Q,X)})}_vaultPatch(Q,X,Z){return T0(this,null,function*(){let J=X.get("Heading-Boundary")||"::",G=(X.get("Heading")||"").split(J).filter(Boolean),Y=X.get("Content-Insertion-Position"),H=!1,K=!1;if(!Q||Q.endsWith("/")){this.returnCannedResponse(Z,{errorCode:l0.RequestMethodValidOnlyForFiles});return}if(Y===void 0)H=!1;else if(Y==="beginning")H=!0;else if(Y==="end")H=!1;else{this.returnCannedResponse(Z,{errorCode:l0.InvalidContentInsertionPositionValue});return}if(typeof X.body!="string"){this.returnCannedResponse(Z,{errorCode:l0.TextContentEncodingRequired});return}if(typeof X.get("Content-Insertion-Ignore-Newline")=="string")K=X.get("Content-Insertion-Ignore-Newline").toLowerCase()=="true";if(!G.length){this.returnCannedResponse(Z,{errorCode:l0.MissingHeadingHeader});return}let z=this.app.vault.getAbstractFileByPath(Q);if(!(z instanceof _q.TFile)){this.returnCannedResponse(Z,{statusCode:404});return}let W=this.app.metadataCache.getFileCache(z),$=ls(W,G);if(!$){this.returnCannedResponse(Z,{errorCode:l0.InvalidHeadingHeader});return}let B=(yield this.app.vault.read(z)).split(` +`),D=cs(B,$,H,K);B.splice(D,0,X.body);let F=B.join(` +`);yield this.app.vault.adapter.write(Q,F),Z.status(200).send(F)})}vaultPatch(Q,X){return T0(this,null,function*(){let Z=Q.params[0];return this._vaultPatch(Z,Q,X)})}_vaultPost(Q,X,Z){return T0(this,null,function*(){if(!Q||Q.endsWith("/")){this.returnCannedResponse(Z,{errorCode:l0.RequestMethodValidOnlyForFiles});return}if(typeof X.body!="string"){this.returnCannedResponse(Z,{errorCode:l0.TextContentEncodingRequired});return}try{yield this.app.vault.createFolder(NM.default.dirname(Q))}catch(Y){}let J="",G=this.app.vault.getAbstractFileByPath(Q);if(G instanceof _q.TFile){if(J=yield this.app.vault.read(G),!J.endsWith(` +`))J+=` +`}J+=X.body,yield this.app.vault.adapter.write(Q,J),this.returnCannedResponse(Z,{statusCode:204});return})}vaultPost(Q,X){return T0(this,null,function*(){let Z=Q.params[0];return this._vaultPost(Z,Q,X)})}_vaultDelete(Q,X,Z){return T0(this,null,function*(){if(!Q||Q.endsWith("/")){this.returnCannedResponse(Z,{errorCode:l0.RequestMethodValidOnlyForFiles});return}if(!(yield this.app.vault.adapter.exists(Q))){this.returnCannedResponse(Z,{statusCode:404});return}yield this.app.vault.adapter.remove(Q),this.returnCannedResponse(Z,{statusCode:204});return})}vaultDelete(Q,X){return T0(this,null,function*(){let Z=Q.params[0];return this._vaultDelete(Z,Q,X)})}getPeriodicNoteInterface(){return{daily:{settings:L6.default.getDailyNoteSettings(),loaded:L6.default.appHasDailyNotesPluginLoaded(),create:L6.default.createDailyNote,get:L6.default.getDailyNote,getAll:L6.default.getAllDailyNotes},weekly:{settings:L6.default.getWeeklyNoteSettings(),loaded:L6.default.appHasWeeklyNotesPluginLoaded(),create:L6.default.createWeeklyNote,get:L6.default.getWeeklyNote,getAll:L6.default.getAllWeeklyNotes},monthly:{settings:L6.default.getMonthlyNoteSettings(),loaded:L6.default.appHasMonthlyNotesPluginLoaded(),create:L6.default.createMonthlyNote,get:L6.default.getMonthlyNote,getAll:L6.default.getAllMonthlyNotes},quarterly:{settings:L6.default.getQuarterlyNoteSettings(),loaded:L6.default.appHasQuarterlyNotesPluginLoaded(),create:L6.default.createQuarterlyNote,get:L6.default.getQuarterlyNote,getAll:L6.default.getAllQuarterlyNotes},yearly:{settings:L6.default.getYearlyNoteSettings(),loaded:L6.default.appHasYearlyNotesPluginLoaded(),create:L6.default.createYearlyNote,get:L6.default.getYearlyNote,getAll:L6.default.getAllYearlyNotes}}}periodicGetInterface(Q){let X=this.getPeriodicNoteInterface();if(!X[Q])return[null,l0.PeriodDoesNotExist];if(!X[Q].loaded)return[null,l0.PeriodIsNotEnabled];return[X[Q],null]}periodicGetNote(Q){let[X,Z]=this.periodicGetInterface(Q);if(Z)return[null,Z];let J=window.moment(Date.now()),G=X.getAll(),Y=X.get(J,G);if(!Y)return[null,l0.PeriodicNoteDoesNotExist];return[Y,null]}periodicGetOrCreateNote(Q){return T0(this,null,function*(){let[X,Z]=this.periodicGetNote(Q),J=X;if(Z===l0.PeriodicNoteDoesNotExist){let[G]=this.periodicGetInterface(Q),Y=window.moment(Date.now());J=yield G.create(Y),yield new Promise((K)=>{let z=null,W=setInterval(()=>{if(z=this.app.metadataCache.getFileCache(J),z)clearInterval(W),K(z)},100)})}else if(Z)return[null,Z];return[J,null]})}redirectToVaultPath(Q,X,Z,J){let G=Q.path;return Z.set("Content-Location",encodeURI(G)),J(G,X,Z)}periodicGet(Q,X){return T0(this,null,function*(){let[Z,J]=this.periodicGetNote(Q.params.period);if(J){this.returnCannedResponse(X,{errorCode:J});return}return this.redirectToVaultPath(Z,Q,X,this._vaultGet.bind(this))})}periodicPut(Q,X){return T0(this,null,function*(){let[Z,J]=yield this.periodicGetOrCreateNote(Q.params.period);if(J){this.returnCannedResponse(X,{errorCode:J});return}return this.redirectToVaultPath(Z,Q,X,this._vaultPut.bind(this))})}periodicPost(Q,X){return T0(this,null,function*(){let[Z,J]=yield this.periodicGetOrCreateNote(Q.params.period);if(J){this.returnCannedResponse(X,{errorCode:J});return}return this.redirectToVaultPath(Z,Q,X,this._vaultPost.bind(this))})}periodicPatch(Q,X){return T0(this,null,function*(){let[Z,J]=yield this.periodicGetOrCreateNote(Q.params.period);if(J){this.returnCannedResponse(X,{errorCode:J});return}return this.redirectToVaultPath(Z,Q,X,this._vaultPatch.bind(this))})}periodicDelete(Q,X){return T0(this,null,function*(){let[Z,J]=this.periodicGetNote(Q.params.period);if(J){this.returnCannedResponse(X,{errorCode:J});return}return this.redirectToVaultPath(Z,Q,X,this._vaultDelete.bind(this))})}activeFileGet(Q,X){return T0(this,null,function*(){let Z=this.app.workspace.getActiveFile();return this.redirectToVaultPath(Z,Q,X,this._vaultGet.bind(this))})}activeFilePut(Q,X){return T0(this,null,function*(){let Z=this.app.workspace.getActiveFile();return this.redirectToVaultPath(Z,Q,X,this._vaultPut.bind(this))})}activeFilePost(Q,X){return T0(this,null,function*(){let Z=this.app.workspace.getActiveFile();return this.redirectToVaultPath(Z,Q,X,this._vaultPost.bind(this))})}activeFilePatch(Q,X){return T0(this,null,function*(){let Z=this.app.workspace.getActiveFile();return this.redirectToVaultPath(Z,Q,X,this._vaultPatch.bind(this))})}activeFileDelete(Q,X){return T0(this,null,function*(){let Z=this.app.workspace.getActiveFile();return this.redirectToVaultPath(Z,Q,X,this._vaultDelete.bind(this))})}commandGet(Q,X){return T0(this,null,function*(){let Z=[];for(let G in this.app.commands.commands)Z.push({id:G,name:this.app.commands.commands[G].name});let J={commands:Z};X.json(J)})}commandPost(Q,X){return T0(this,null,function*(){if(!this.app.commands.commands[Q.params.commandId]){this.returnCannedResponse(X,{statusCode:404});return}try{this.app.commands.executeCommandById(Q.params.commandId)}catch(J){this.returnCannedResponse(X,{statusCode:500,message:J.message});return}this.returnCannedResponse(X,{statusCode:204});return})}searchSimplePost(Q,X){return T0(this,null,function*(){var Z;let J=[],G=Q.query.query,Y=(Z=parseInt(Q.query.contextLength,10))!=null?Z:100,H=_q.prepareSimpleSearch(G);for(let K of this.app.vault.getMarkdownFiles()){let z=yield this.app.vault.cachedRead(K),W=H(z);if(W){let $=[];for(let q of W.matches)$.push({match:{start:q[0],end:q[1]},context:z.slice(Math.max(q[0]-Y,0),q[1]+Y)});J.push({filename:K.path,score:W.score,matches:$})}}J.sort((K,z)=>K.score>z.score?1:-1),X.json(J)})}valueIsSaneTruthy(Q){if(Q===void 0||Q===null)return!1;else if(Array.isArray(Q))return Q.length>0;else if(typeof Q==="object")return Object.keys(Q).length>0;return Boolean(Q)}searchQueryPost(Q,X){return T0(this,null,function*(){let Z=hs.getAPI(),J={[_9.dataviewDql]:()=>T0(this,null,function*(){let Y=[],H=yield Z.tryQuery(Q.body),K=Z.evaluationContext.settings.tableIdColumnName;if(H.type!=="table")throw new Error("Only TABLE dataview queries are supported.");if(!H.headers.includes(K))throw new Error("TABLE WITHOUT ID queries are not supported.");for(let z of H.values){let W={};H.headers.forEach(($,q)=>{if($!==K)W[$]=z[q]}),Y.push({filename:z[0].path,result:W})}return Y}),[_9.jsonLogic]:()=>T0(this,null,function*(){let Y=[];for(let H of this.app.vault.getMarkdownFiles()){let K=yield this.getFileMetadataObject(H);try{let z=V$.default.apply(Q.body,K);if(this.valueIsSaneTruthy(z))Y.push({filename:H.path,result:z})}catch(z){throw new Error(`${z.message} (while processing ${H.path})`)}}return Y})},G=Q.headers["content-type"];if(!J[G]){this.returnCannedResponse(X,{errorCode:l0.ContentTypeSpecificationRequired});return}try{let Y=yield J[G]();X.json(Y)}catch(Y){this.returnCannedResponse(X,{errorCode:l0.InvalidFilterQuery,message:`${Y.message}`});return}})}openPost(Q,X){return T0(this,null,function*(){let Z=Q.params[0],J=us.default.parseUrl(Q.originalUrl,{parseBooleans:!0}).query,G=Boolean(J.newLeaf);this.app.workspace.openLinkText(Z,"/",G),X.json()})}certificateGet(Q,X){return T0(this,null,function*(){X.set("Content-type",`application/octet-stream; filename="${dq}"`),X.status(200).send(this.settings.crypto.cert)})}notFoundHandler(Q,X,Z){return T0(this,null,function*(){this.returnCannedResponse(X,{statusCode:404});return})}errorHandler(Q,X,Z,J){return T0(this,null,function*(){if(Q instanceof SyntaxError){this.returnCannedResponse(Z,{errorCode:l0.InvalidContentForContentType});return}this.returnCannedResponse(Z,{statusCode:500,message:Q.message});return})}setupRouter(){this.api.use((Q,X,Z)=>{let J=X.send;X.send=function(G,...Y){return console.log(`[REST API] ${Q.method} ${Q.url} => ${X.statusCode}`),J.apply(X,[G,...Y])},Z()}),this.api.use(ds.default()),this.api.use(ms.default()),this.api.use(this.authenticationMiddleware.bind(this)),this.api.use(X7.default.text({type:"text/*",limit:J7})),this.api.use(X7.default.text({type:_9.dataviewDql,limit:J7})),this.api.use(X7.default.json({type:_9.json,limit:J7})),this.api.use(X7.default.json({type:_9.olrapiNoteJson,limit:J7})),this.api.use(X7.default.json({type:_9.jsonLogic,limit:J7})),this.api.use(X7.default.raw({type:"*/*",limit:J7})),this.api.route("/active/").get(this.activeFileGet.bind(this)).put(this.activeFilePut.bind(this)).patch(this.activeFilePatch.bind(this)).post(this.activeFilePost.bind(this)).delete(this.activeFileDelete.bind(this)),this.api.route("/vault/(.*)").get(this.vaultGet.bind(this)).put(this.vaultPut.bind(this)).patch(this.vaultPatch.bind(this)).post(this.vaultPost.bind(this)).delete(this.vaultDelete.bind(this)),this.api.route("/periodic/:period/").get(this.periodicGet.bind(this)).put(this.periodicPut.bind(this)).patch(this.periodicPatch.bind(this)).post(this.periodicPost.bind(this)).delete(this.periodicDelete.bind(this)),this.api.route("/commands/").get(this.commandGet.bind(this)),this.api.route("/commands/:commandId/").post(this.commandPost.bind(this)),this.api.route("/search/").post(this.searchQueryPost.bind(this)),this.api.route("/search/simple/").post(this.searchSimplePost.bind(this)),this.api.route("/open/(.*)").post(this.openPost.bind(this)),this.api.get(`/${dq}`,this.certificateGet.bind(this)),this.api.get("/",this.root.bind(this)),this.api.use(this.apiExtensionRouter),this.api.use(this.notFoundHandler.bind(this)),this.api.use(this.errorHandler.bind(this))}},ss=class extends Q8.Plugin{constructor(){super(...arguments);this.secureServer=null,this.insecureServer=null}onload(){return T0(this,null,function*(){if(this.refreshServerState=this.debounce(this._refreshServerState.bind(this),1000),yield this.loadSettings(),this.requestHandler=new as(this.app,this.manifest,this.settings),this.requestHandler.setupRouter(),!this.settings.apiKey)this.settings.apiKey=yQ.default.md.sha256.create().update(yQ.default.random.getBytesSync(128)).digest().toHex(),this.saveSettings();if(!this.settings.crypto){let Q=new Date,X=new Date;Q.setDate(X.getDate()+365);let Z=yQ.default.pki.rsa.generateKeyPair(2048),J=[{name:"commonName",value:"Obsidian Local REST API"}],G=yQ.default.pki.createCertificate();G.setIssuer(J),G.setSubject(J);let Y=[{type:7,ip:CZ}];if(this.settings.bindingHost&&this.settings.bindingHost!=="0.0.0.0")Y.push({type:7,ip:this.settings.bindingHost});if(this.settings.subjectAltNames){for(let H of this.settings.subjectAltNames.split(` +`))if(H.trim())Y.push({type:2,value:H.trim()})}G.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,digitalSignature:!0,nonRepudiation:!0,keyEncipherment:!1,dataEncipherment:!1,critical:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0,codeSigning:!0,emailProtection:!0,timeStamping:!0},{name:"nsCertType",client:!0,server:!0,email:!0,objsign:!0,sslCA:!0,emailCA:!0,objCA:!0},{name:"subjectAltName",altNames:Y}]),G.serialNumber="1",G.publicKey=Z.publicKey,G.validity.notAfter=Q,G.validity.notBefore=X,G.sign(Z.privateKey,yQ.default.md.sha256.create()),this.settings.crypto={cert:yQ.pki.certificateToPem(G),privateKey:yQ.pki.privateKeyToPem(Z.privateKey),publicKey:yQ.pki.publicKeyToPem(Z.publicKey)},this.saveSettings()}this.addSettingTab(new ts(this.app,this)),this.refreshServerState(),this.app.workspace.trigger("obsidian-local-rest-api:loaded")})}getPublicApi(Q){if(!Q.id||!Q.name||!Q.version)throw new Error("PluginManifest instance must include a defined id, name, and version to be accempted.");return console.log("[REST API] Added new API extension",Q),this.requestHandler.registerApiExtension(Q)}debounce(Q,X){let Z;return(...J)=>{clearTimeout(Z),Z=setTimeout(()=>Q(...J),X)}}_refreshServerState(){var Q,X,Z,J,G;if(this.secureServer)this.secureServer.close(),this.secureServer=null;if((Q=this.settings.enableSecureServer)!=null?Q:!0)this.secureServer=vs.createServer({key:this.settings.crypto.privateKey,cert:this.settings.crypto.cert},this.requestHandler.api),this.secureServer.listen(this.settings.port,(X=this.settings.bindingHost)!=null?X:CZ),console.log(`[REST API] Listening on https://${(Z=this.settings.bindingHost)!=null?Z:CZ}:${this.settings.port}/`);if(this.insecureServer)this.insecureServer.close(),this.insecureServer=null;if(this.settings.enableInsecureServer)this.insecureServer=gs.createServer(this.requestHandler.api),this.insecureServer.listen(this.settings.insecurePort,(J=this.settings.bindingHost)!=null?J:CZ),console.log(`[REST API] Listening on http://${(G=this.settings.bindingHost)!=null?G:CZ}:${this.settings.insecurePort}/`)}onunload(){if(this.secureServer)this.secureServer.close();if(this.insecureServer)this.insecureServer.close()}loadSettings(){return T0(this,null,function*(){this.settings=Object.assign({},zI,yield this.loadData())})}saveSettings(){return T0(this,null,function*(){yield this.saveData(this.settings)})}},ts=class extends Q8.PluginSettingTab{constructor(Q,X){super(Q,X);this.showAdvancedSettings=!1,this.plugin=X}display(){var Q;let{containerEl:X}=this;X.replaceChildren();let Z=yQ.default.pki.certificateFromPem(this.plugin.settings.crypto.cert),J=qI(Z),G=!HI(Z);X.empty(),X.classList.add("obsidian-local-rest-api-settings"),X.createEl("h2",{text:"Local REST API"}),X.createEl("h3",{text:"How to Access"});let Y=X.createEl("div");Y.classList.add("api-key-display");let H=Y.createEl("p");H.innerHTML=` + You can access Obsidian Local REST API via the following URLs: + `;let z=Y.createEl("table",{cls:"api-urls"}).createEl("tbody"),W=z.createEl("tr",this.plugin.settings.enableSecureServer===!1?{cls:"disabled",title:"Disabled. You can enable this in 'Settings' below."}:{title:"Enabled"}),$=`https://127.0.0.1:${this.plugin.settings.port}/`;W.innerHTML=` + + ${this.plugin.settings.enableSecureServer===!1?"❌":"✅"} + + + Encrypted (HTTPS) API URL

+ + Requires that this certificate be + configured as a trusted certificate authority for + your browser. See wiki for more information. + + + `;let q=W.createEl("td",{cls:"url"});if(q.innerHTML=` + ${$} (copy)
+ `,this.plugin.settings.subjectAltNames){for(let C of this.plugin.settings.subjectAltNames.split(` +`))if(C.trim()){let L=`https://${C.trim()}:${this.plugin.settings.port}/`;q.innerHTML+=` + ${L} (copy)
+ `}}let B=z.createEl("tr",this.plugin.settings.enableInsecureServer===!1?{cls:"disabled",title:"Disabled. You can enable this in 'Settings' below."}:{title:"Enabled"}),D=`http://127.0.0.1:${this.plugin.settings.insecurePort}/`;B.innerHTML=` + + ${this.plugin.settings.enableInsecureServer===!1?"❌":"✅"} + + + Non-encrypted (HTTP) API URL + + `;let F=B.createEl("td",{cls:"url"});if(F.innerHTML=` + ${D} (copy)
+ `,this.plugin.settings.subjectAltNames){for(let C of this.plugin.settings.subjectAltNames.split(` +`))if(C.trim()){let L=`http://${C.trim()}:${this.plugin.settings.insecurePort}/`;F.innerHTML+=` + ${L} (copy)
+ `}}let P=Y.createEl("p");P.innerHTML=` + Your API Key must be passed in requests via an authorization header + (copy): + `,Y.createEl("pre",{text:this.plugin.settings.apiKey}),Y.createEl("p",{text:"For example, the following request will return all notes in the root directory of your vault:"}),Y.createEl("pre",{text:`GET /vault/ HTTP/1.1 +${(Q=this.plugin.settings.authorizationHeaderName)!=null?Q:"Authorization"}: Bearer ${this.plugin.settings.apiKey}`});let N=Y.createEl("p");if(N.innerHTML=` + Comprehensive documentation of what API endpoints are available can + be found in + the online docs. + `,X.createEl("h3",{text:"Settings"}),J<0){let C=Y.createEl("div");C.classList.add("certificate-expired"),C.innerHTML=` + Your certificate has expired! + You must re-generate your certificate below by pressing + the "Re-generate Certificates" button below in + order to connect securely to this API. + `}else if(J<30){let C=Y.createEl("div");C.classList.add("certificate-expiring-soon"),C.innerHTML=` + Your certificate will expire in ${Math.floor(J)} day${Math.floor(J)===1?"":"s"}s! + You should re-generate your certificate below by pressing + the "Re-generate Certificates" button below in + order to continue to connect securely to this API. + `}if(G){let C=Y.createEl("div");C.classList.add("certificate-regeneration-recommended"),C.innerHTML=` + You should re-generate your certificate! + Your certificate was generated using earlier standards than + are currently used by Obsidian Local REST API. Some systems + or tools may not accept your certificate with its current + configuration, and re-generating your certificate may + improve compatibility with such tools. To re-generate your + certificate, press the "Re-generate Certificates" button + below. + `}if(new Q8.Setting(X).setName("Enable Non-encrypted (HTTP) Server").setDesc("Enables a non-encrypted (HTTP) server on the port designated below. By default this plugin requires a secure HTTPS connection, but in safe environments you may turn on the non-encrypted server to simplify interacting with the API. Interactions with the API will still require the API Key shown above. Under no circumstances is it recommended that you expose this service to the internet, especially if you turn on this feature!").addToggle((C)=>C.onChange((L)=>{let V=this.plugin.settings.enableInsecureServer;if(this.plugin.settings.enableInsecureServer=L,this.plugin.saveSettings(),this.plugin.refreshServerState(),L!==V)this.display()}).setValue(this.plugin.settings.enableInsecureServer)),new Q8.Setting(X).setName("Reset All Cryptography").setDesc(`Pressing this button will cause your certificate, + private key, public key, and API key to be regenerated. + This settings panel will be closed when you press this.`).addButton((C)=>{C.setWarning().setButtonText("Reset All Crypto").onClick(()=>{delete this.plugin.settings.apiKey,delete this.plugin.settings.crypto,this.plugin.saveSettings(),this.plugin.unload(),this.plugin.load()})}),new Q8.Setting(X).setName("Re-generate Certificates").setDesc(`Pressing this button will cause your certificate, + private key, and public key to be re-generated, but your API key will remain unchanged. + This settings panel will be closed when you press this.`).addButton((C)=>{C.setWarning().setButtonText("Re-generate Certificates").onClick(()=>{delete this.plugin.settings.crypto,this.plugin.saveSettings(),this.plugin.unload(),this.plugin.load()})}),new Q8.Setting(X).setName("Restore Default Settings").setDesc(`Pressing this button will reset this plugin's + settings to defaults. + This settings panel will be closed when you press this.`).addButton((C)=>{C.setWarning().setButtonText("Restore Defaults").onClick(()=>{this.plugin.settings=Object.assign({},zI),this.plugin.saveSettings(),this.plugin.unload(),this.plugin.load()})}),new Q8.Setting(X).setName("Show advanced settings").setDesc("Advanced settings are dangerous and may make your environment less secure.").addToggle((C)=>{C.onChange((L)=>{if(this.showAdvancedSettings!==L)this.showAdvancedSettings=L,this.display()}).setValue(this.showAdvancedSettings)}),this.showAdvancedSettings){X.createEl("hr"),X.createEl("h3",{text:"Advanced Settings"}),X.createEl("p",{text:` + The settings below are potentially dangerous and + are intended for use only by people who know what + they are doing. Do not change any of these settings if + you do not understand what that setting is used for + and what security impacts changing that setting will have. + `});let C=X.createEl("p");C.createEl("span",{text:` + Use of this software is licensed to you under the + MIT license, and it is important that you understand that + this license provides you with no warranty. + For the complete license text please see + `}),C.createEl("a",{href:MM,text:MM}),C.createEl("span",{text:"."}),new Q8.Setting(X).setName("Enable Encrypted (HTTPs) Server").setDesc(` + This controls whether the HTTPs server is enabled. You almost certainly want to leave this switch in its default state ('on'), + but may find it useful to turn this switch off for + troubleshooting. + `).addToggle((L)=>{var V;return L.onChange((M)=>{let I=this.plugin.settings.enableSecureServer;if(this.plugin.settings.enableSecureServer=M,this.plugin.saveSettings(),this.plugin.refreshServerState(),M!==I)this.display()}).setValue((V=this.plugin.settings.enableSecureServer)!=null?V:!0)}),new Q8.Setting(X).setName("Encrypted (HTTPS) Server Port").setDesc("This configures the port on which your REST API will listen for HTTPS connections. It is recommended that you leave this port with its default setting as tools integrating with this API may expect the default port to be in use. Under no circumstances is it recommended that you expose this service directly to the internet.").addText((L)=>L.onChange((V)=>{this.plugin.settings.port=parseInt(V,10),this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue(this.plugin.settings.port.toString())),new Q8.Setting(X).setName("Non-encrypted (HTTP) Server Port").addText((L)=>L.onChange((V)=>{this.plugin.settings.insecurePort=parseInt(V,10),this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue(this.plugin.settings.insecurePort.toString())),new Q8.Setting(X).setName("API Key").addText((L)=>{L.onChange((V)=>{this.plugin.settings.apiKey=V,this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue(this.plugin.settings.apiKey)}),new Q8.Setting(X).setName("Certificate Hostnames").setDesc(` + List of extra hostnames to add + to your certificate's \`subjectAltName\` field. + One hostname per line. + You must click the "Re-generate Certificates" button above after changing this value + for this to have an effect. This is useful for + situations in which you are accessing Obsidian + from a hostname other than the host on which + it is running. + `).addTextArea((L)=>L.onChange((V)=>{this.plugin.settings.subjectAltNames=V,this.plugin.saveSettings()}).setValue(this.plugin.settings.subjectAltNames)),new Q8.Setting(X).setName("Certificate").addTextArea((L)=>L.onChange((V)=>{this.plugin.settings.crypto.cert=V,this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue(this.plugin.settings.crypto.cert)),new Q8.Setting(X).setName("Public Key").addTextArea((L)=>L.onChange((V)=>{this.plugin.settings.crypto.publicKey=V,this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue(this.plugin.settings.crypto.publicKey)),new Q8.Setting(X).setName("Private Key").addTextArea((L)=>L.onChange((V)=>{this.plugin.settings.crypto.privateKey=V,this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue(this.plugin.settings.crypto.privateKey)),new Q8.Setting(X).setName("Authorization Header").addText((L)=>{var V;L.onChange((M)=>{if(M!==TM)this.plugin.settings.authorizationHeaderName=M;else delete this.plugin.settings.authorizationHeaderName;this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue((V=this.plugin.settings.authorizationHeaderName)!=null?V:TM)}),new Q8.Setting(X).setName("Binding Host").addText((L)=>{var V;L.onChange((M)=>{if(M!==CZ)this.plugin.settings.bindingHost=M;else delete this.plugin.settings.bindingHost;this.plugin.saveSettings(),this.plugin.refreshServerState()}).setValue((V=this.plugin.settings.bindingHost)!=null?V:CZ)})}}},rs=(Q,X)=>{let Z=Q.plugins.plugins["obsidian-local-rest-api"];if(Z)return Z.getPublicApi(X)};/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + *//*! + * content-disposition + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *//*! + * content-type + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * depd + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + *//*! + * depd + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * depd + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *//*! + * depd + * Copyright(c) 2014-2018 Douglas Christopher Wilson + * MIT Licensed + *//*! + * depd + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * destroy + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + *//*! + * ee-first + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + *//*! + * encodeurl + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + *//*! + * etag + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * finalhandler + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + *//*! + * forwarded + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *//*! + * fresh + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2016-2017 Douglas Christopher Wilson + * MIT Licensed + *//*! + * http-errors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * media-typer + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + *//*! + * merge-descriptors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * methods + * Copyright(c) 2013-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + *//*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * negotiator + * Copyright(c) 2012 Federico Romero + * Copyright(c) 2012-2014 Isaac Z. Schlueter + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * on-finished + * Copyright(c) 2013 Jonathan Ong + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + *//*! + * on-headers + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + *//*! + * parseurl + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *//*! + * proxy-addr + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * range-parser + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * raw-body + * Copyright(c) 2013-2014 Jonathan Ong + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + *//*! + * response-time + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * router + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + *//*! + * send + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + *//*! + * serve-static + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * statuses + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * toidentifier + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + *//*! + * type-is + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * unpipe + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *//*! + * vary + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *//*! safe-buffer. MIT License. Feross Aboukhadijeh */});var hX=r((kL1,LI)=>{var Zt=Number.MAX_SAFE_INTEGER||9007199254740991,Xt=["major","premajor","minor","preminor","patch","prepatch","prerelease"];LI.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Zt,RELEASE_TYPES:Xt,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var fX=r((yL1,CI)=>{var Jt=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...Q)=>console.error("SEMVER",...Q):()=>{};CI.exports=Jt});var K7=r((vQ,NI)=>{var{MAX_SAFE_COMPONENT_LENGTH:m$,MAX_SAFE_BUILD_LENGTH:Gt,MAX_LENGTH:Yt}=hX(),Wt=fX();vQ=NI.exports={};var qt=vQ.re=[],Ht=vQ.safeRe=[],i1=vQ.src=[],n1=vQ.t={},zt=0,_$="[a-zA-Z0-9-]",Kt=[["\\s",1],["\\d",Yt],[_$,Gt]],$t=(Q)=>{for(let[X,Z]of Kt)Q=Q.split(`${X}*`).join(`${X}{0,${Z}}`).split(`${X}+`).join(`${X}{1,${Z}}`);return Q},I0=(Q,X,Z)=>{let J=$t(X),G=zt++;Wt(Q,G,X),n1[Q]=G,i1[G]=X,qt[G]=new RegExp(X,Z?"g":void 0),Ht[G]=new RegExp(J,Z?"g":void 0)};I0("NUMERICIDENTIFIER","0|[1-9]\\d*");I0("NUMERICIDENTIFIERLOOSE","\\d+");I0("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${_$}*`);I0("MAINVERSION",`(${i1[n1.NUMERICIDENTIFIER]})\\.(${i1[n1.NUMERICIDENTIFIER]})\\.(${i1[n1.NUMERICIDENTIFIER]})`);I0("MAINVERSIONLOOSE",`(${i1[n1.NUMERICIDENTIFIERLOOSE]})\\.(${i1[n1.NUMERICIDENTIFIERLOOSE]})\\.(${i1[n1.NUMERICIDENTIFIERLOOSE]})`);I0("PRERELEASEIDENTIFIER",`(?:${i1[n1.NUMERICIDENTIFIER]}|${i1[n1.NONNUMERICIDENTIFIER]})`);I0("PRERELEASEIDENTIFIERLOOSE",`(?:${i1[n1.NUMERICIDENTIFIERLOOSE]}|${i1[n1.NONNUMERICIDENTIFIER]})`);I0("PRERELEASE",`(?:-(${i1[n1.PRERELEASEIDENTIFIER]}(?:\\.${i1[n1.PRERELEASEIDENTIFIER]})*))`);I0("PRERELEASELOOSE",`(?:-?(${i1[n1.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i1[n1.PRERELEASEIDENTIFIERLOOSE]})*))`);I0("BUILDIDENTIFIER",`${_$}+`);I0("BUILD",`(?:\\+(${i1[n1.BUILDIDENTIFIER]}(?:\\.${i1[n1.BUILDIDENTIFIER]})*))`);I0("FULLPLAIN",`v?${i1[n1.MAINVERSION]}${i1[n1.PRERELEASE]}?${i1[n1.BUILD]}?`);I0("FULL",`^${i1[n1.FULLPLAIN]}$`);I0("LOOSEPLAIN",`[v=\\s]*${i1[n1.MAINVERSIONLOOSE]}${i1[n1.PRERELEASELOOSE]}?${i1[n1.BUILD]}?`);I0("LOOSE",`^${i1[n1.LOOSEPLAIN]}$`);I0("GTLT","((?:<|>)?=?)");I0("XRANGEIDENTIFIERLOOSE",`${i1[n1.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);I0("XRANGEIDENTIFIER",`${i1[n1.NUMERICIDENTIFIER]}|x|X|\\*`);I0("XRANGEPLAIN",`[v=\\s]*(${i1[n1.XRANGEIDENTIFIER]})(?:\\.(${i1[n1.XRANGEIDENTIFIER]})(?:\\.(${i1[n1.XRANGEIDENTIFIER]})(?:${i1[n1.PRERELEASE]})?${i1[n1.BUILD]}?)?)?`);I0("XRANGEPLAINLOOSE",`[v=\\s]*(${i1[n1.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i1[n1.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i1[n1.XRANGEIDENTIFIERLOOSE]})(?:${i1[n1.PRERELEASELOOSE]})?${i1[n1.BUILD]}?)?)?`);I0("XRANGE",`^${i1[n1.GTLT]}\\s*${i1[n1.XRANGEPLAIN]}$`);I0("XRANGELOOSE",`^${i1[n1.GTLT]}\\s*${i1[n1.XRANGEPLAINLOOSE]}$`);I0("COERCEPLAIN",`(^|[^\\d])(\\d{1,${m$}})(?:\\.(\\d{1,${m$}}))?(?:\\.(\\d{1,${m$}}))?`);I0("COERCE",`${i1[n1.COERCEPLAIN]}(?:$|[^\\d])`);I0("COERCEFULL",i1[n1.COERCEPLAIN]+`(?:${i1[n1.PRERELEASE]})?(?:${i1[n1.BUILD]})?(?:$|[^\\d])`);I0("COERCERTL",i1[n1.COERCE],!0);I0("COERCERTLFULL",i1[n1.COERCEFULL],!0);I0("LONETILDE","(?:~>?)");I0("TILDETRIM",`(\\s*)${i1[n1.LONETILDE]}\\s+`,!0);vQ.tildeTrimReplace="$1~";I0("TILDE",`^${i1[n1.LONETILDE]}${i1[n1.XRANGEPLAIN]}$`);I0("TILDELOOSE",`^${i1[n1.LONETILDE]}${i1[n1.XRANGEPLAINLOOSE]}$`);I0("LONECARET","(?:\\^)");I0("CARETTRIM",`(\\s*)${i1[n1.LONECARET]}\\s+`,!0);vQ.caretTrimReplace="$1^";I0("CARET",`^${i1[n1.LONECARET]}${i1[n1.XRANGEPLAIN]}$`);I0("CARETLOOSE",`^${i1[n1.LONECARET]}${i1[n1.XRANGEPLAINLOOSE]}$`);I0("COMPARATORLOOSE",`^${i1[n1.GTLT]}\\s*(${i1[n1.LOOSEPLAIN]})$|^$`);I0("COMPARATOR",`^${i1[n1.GTLT]}\\s*(${i1[n1.FULLPLAIN]})$|^$`);I0("COMPARATORTRIM",`(\\s*)${i1[n1.GTLT]}\\s*(${i1[n1.LOOSEPLAIN]}|${i1[n1.XRANGEPLAIN]})`,!0);vQ.comparatorTrimReplace="$1$2$3";I0("HYPHENRANGE",`^\\s*(${i1[n1.XRANGEPLAIN]})\\s+-\\s+(${i1[n1.XRANGEPLAIN]})\\s*$`);I0("HYPHENRANGELOOSE",`^\\s*(${i1[n1.XRANGEPLAINLOOSE]})\\s+-\\s+(${i1[n1.XRANGEPLAINLOOSE]})\\s*$`);I0("STAR","(<|>)?=?\\s*\\*");I0("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");I0("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var X3=r((xL1,TI)=>{var Bt=Object.freeze({loose:!0}),Ut=Object.freeze({}),Vt=(Q)=>{if(!Q)return Ut;if(typeof Q!=="object")return Bt;return Q};TI.exports=Vt});var d$=r((vL1,RI)=>{var MI=/^[0-9]+$/,II=(Q,X)=>{let Z=MI.test(Q),J=MI.test(X);if(Z&&J)Q=+Q,X=+X;return Q===X?0:Z&&!J?-1:J&&!Z?1:QII(X,Q);RI.exports={compareIdentifiers:II,rcompareIdentifiers:Pt}});var $8=r((gL1,EI)=>{var J3=fX(),{MAX_LENGTH:AI,MAX_SAFE_INTEGER:G3}=hX(),{safeRe:OI,t:wI}=K7(),Ft=X3(),{compareIdentifiers:$7}=d$();class u9{constructor(Q,X){if(X=Ft(X),Q instanceof u9)if(Q.loose===!!X.loose&&Q.includePrerelease===!!X.includePrerelease)return Q;else Q=Q.version;else if(typeof Q!=="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof Q}".`);if(Q.length>AI)throw new TypeError(`version is longer than ${AI} characters`);J3("SemVer",Q,X),this.options=X,this.loose=!!X.loose,this.includePrerelease=!!X.includePrerelease;let Z=Q.trim().match(X.loose?OI[wI.LOOSE]:OI[wI.FULL]);if(!Z)throw new TypeError(`Invalid Version: ${Q}`);if(this.raw=Q,this.major=+Z[1],this.minor=+Z[2],this.patch=+Z[3],this.major>G3||this.major<0)throw new TypeError("Invalid major version");if(this.minor>G3||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>G3||this.patch<0)throw new TypeError("Invalid patch version");if(!Z[4])this.prerelease=[];else this.prerelease=Z[4].split(".").map((J)=>{if(/^[0-9]+$/.test(J)){let G=+J;if(G>=0&&G=0)if(typeof this.prerelease[G]==="number")this.prerelease[G]++,G=-2;if(G===-1){if(X===this.prerelease.join(".")&&Z===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(J)}}if(X){let G=[X,J];if(Z===!1)G=[X];if($7(this.prerelease[0],X)===0){if(isNaN(this.prerelease[1]))this.prerelease=G}else this.prerelease=G}break}default:throw new Error(`invalid increment argument: ${Q}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}EI.exports=u9});var IZ=r((hL1,SI)=>{var jI=$8(),Dt=(Q,X,Z=!1)=>{if(Q instanceof jI)return Q;try{return new jI(Q,X)}catch(J){if(!Z)return null;throw J}};SI.exports=Dt});var yI=r((fL1,kI)=>{var Lt=IZ(),Ct=(Q,X)=>{let Z=Lt(Q,X);return Z?Z.version:null};kI.exports=Ct});var vI=r((bL1,xI)=>{var Nt=IZ(),Tt=(Q,X)=>{let Z=Nt(Q.trim().replace(/^[=v]+/,""),X);return Z?Z.version:null};xI.exports=Tt});var fI=r((mL1,hI)=>{var gI=$8(),Mt=(Q,X,Z,J,G)=>{if(typeof Z==="string")G=J,J=Z,Z=void 0;try{return new gI(Q instanceof gI?Q.version:Q,Z).inc(X,J,G).version}catch(Y){return null}};hI.exports=Mt});var _I=r((_L1,mI)=>{var bI=IZ(),It=(Q,X)=>{let Z=bI(Q,null,!0),J=bI(X,null,!0),G=Z.compare(J);if(G===0)return null;let Y=G>0,H=Y?Z:J,K=Y?J:Z,z=!!H.prerelease.length;if(!!K.prerelease.length&&!z){if(!K.patch&&!K.minor)return"major";if(H.patch)return"patch";if(H.minor)return"minor";return"major"}let $=z?"pre":"";if(Z.major!==J.major)return $+"major";if(Z.minor!==J.minor)return $+"minor";if(Z.patch!==J.patch)return $+"patch";return"prerelease"};mI.exports=It});var uI=r((dL1,dI)=>{var Rt=$8(),At=(Q,X)=>new Rt(Q,X).major;dI.exports=At});var lI=r((uL1,pI)=>{var Ot=$8(),wt=(Q,X)=>new Ot(Q,X).minor;pI.exports=wt});var iI=r((pL1,cI)=>{var Et=$8(),jt=(Q,X)=>new Et(Q,X).patch;cI.exports=jt});var oI=r((lL1,nI)=>{var St=IZ(),kt=(Q,X)=>{let Z=St(Q,X);return Z&&Z.prerelease.length?Z.prerelease:null};nI.exports=kt});var L9=r((cL1,sI)=>{var aI=$8(),yt=(Q,X,Z)=>new aI(Q,Z).compare(new aI(X,Z));sI.exports=yt});var rI=r((iL1,tI)=>{var xt=L9(),vt=(Q,X,Z)=>xt(X,Q,Z);tI.exports=vt});var QR=r((nL1,eI)=>{var gt=L9(),ht=(Q,X)=>gt(Q,X,!0);eI.exports=ht});var Y3=r((oL1,XR)=>{var ZR=$8(),ft=(Q,X,Z)=>{let J=new ZR(Q,Z),G=new ZR(X,Z);return J.compare(G)||J.compareBuild(G)};XR.exports=ft});var GR=r((aL1,JR)=>{var bt=Y3(),mt=(Q,X)=>Q.sort((Z,J)=>bt(Z,J,X));JR.exports=mt});var WR=r((sL1,YR)=>{var _t=Y3(),dt=(Q,X)=>Q.sort((Z,J)=>_t(J,Z,X));YR.exports=dt});var bX=r((tL1,qR)=>{var ut=L9(),pt=(Q,X,Z)=>ut(Q,X,Z)>0;qR.exports=pt});var W3=r((rL1,HR)=>{var lt=L9(),ct=(Q,X,Z)=>lt(Q,X,Z)<0;HR.exports=ct});var u$=r((eL1,zR)=>{var it=L9(),nt=(Q,X,Z)=>it(Q,X,Z)===0;zR.exports=nt});var p$=r((QC1,KR)=>{var ot=L9(),at=(Q,X,Z)=>ot(Q,X,Z)!==0;KR.exports=at});var q3=r((ZC1,$R)=>{var st=L9(),tt=(Q,X,Z)=>st(Q,X,Z)>=0;$R.exports=tt});var H3=r((XC1,BR)=>{var rt=L9(),et=(Q,X,Z)=>rt(Q,X,Z)<=0;BR.exports=et});var l$=r((JC1,UR)=>{var Qr=u$(),Zr=p$(),Xr=bX(),Jr=q3(),Gr=W3(),Yr=H3(),Wr=(Q,X,Z,J)=>{switch(X){case"===":if(typeof Q==="object")Q=Q.version;if(typeof Z==="object")Z=Z.version;return Q===Z;case"!==":if(typeof Q==="object")Q=Q.version;if(typeof Z==="object")Z=Z.version;return Q!==Z;case"":case"=":case"==":return Qr(Q,Z,J);case"!=":return Zr(Q,Z,J);case">":return Xr(Q,Z,J);case">=":return Jr(Q,Z,J);case"<":return Gr(Q,Z,J);case"<=":return Yr(Q,Z,J);default:throw new TypeError(`Invalid operator: ${X}`)}};UR.exports=Wr});var PR=r((GC1,VR)=>{var qr=$8(),Hr=IZ(),{safeRe:z3,t:K3}=K7(),zr=(Q,X)=>{if(Q instanceof qr)return Q;if(typeof Q==="number")Q=String(Q);if(typeof Q!=="string")return null;X=X||{};let Z=null;if(!X.rtl)Z=Q.match(X.includePrerelease?z3[K3.COERCEFULL]:z3[K3.COERCE]);else{let z=X.includePrerelease?z3[K3.COERCERTLFULL]:z3[K3.COERCERTL],W;while((W=z.exec(Q))&&(!Z||Z.index+Z[0].length!==Q.length)){if(!Z||W.index+W[0].length!==Z.index+Z[0].length)Z=W;z.lastIndex=W.index+W[1].length+W[2].length}z.lastIndex=-1}if(Z===null)return null;let J=Z[2],G=Z[3]||"0",Y=Z[4]||"0",H=X.includePrerelease&&Z[5]?`-${Z[5]}`:"",K=X.includePrerelease&&Z[6]?`+${Z[6]}`:"";return Hr(`${J}.${G}.${Y}${H}${K}`,X)};VR.exports=zr});var LR=r((YC1,DR)=>{class FR{constructor(){this.max=1000,this.map=new Map}get(Q){let X=this.map.get(Q);if(X===void 0)return;else return this.map.delete(Q),this.map.set(Q,X),X}delete(Q){return this.map.delete(Q)}set(Q,X){if(!this.delete(Q)&&X!==void 0){if(this.map.size>=this.max){let J=this.map.keys().next().value;this.delete(J)}this.map.set(Q,X)}return this}}DR.exports=FR});var C9=r((WC1,MR)=>{var Kr=/\s+/g;class mX{constructor(Q,X){if(X=Br(X),Q instanceof mX)if(Q.loose===!!X.loose&&Q.includePrerelease===!!X.includePrerelease)return Q;else return new mX(Q.raw,X);if(Q instanceof c$)return this.raw=Q.value,this.set=[[Q]],this.formatted=void 0,this;if(this.options=X,this.loose=!!X.loose,this.includePrerelease=!!X.includePrerelease,this.raw=Q.trim().replace(Kr," "),this.set=this.raw.split("||").map((Z)=>this.parseRange(Z.trim())).filter((Z)=>Z.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let Z=this.set[0];if(this.set=this.set.filter((J)=>!NR(J[0])),this.set.length===0)this.set=[Z];else if(this.set.length>1){for(let J of this.set)if(J.length===1&&Cr(J[0])){this.set=[J];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let Q=0;Q0)this.formatted+="||";let X=this.set[Q];for(let Z=0;Z0)this.formatted+=" ";this.formatted+=X[Z].toString().trim()}}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(Q){let Z=((this.options.includePrerelease&&Dr)|(this.options.loose&&Lr))+":"+Q,J=CR.get(Z);if(J)return J;let G=this.options.loose,Y=G?m8[C8.HYPHENRANGELOOSE]:m8[C8.HYPHENRANGE];Q=Q.replace(Y,jr(this.options.includePrerelease)),C6("hyphen replace",Q),Q=Q.replace(m8[C8.COMPARATORTRIM],Vr),C6("comparator trim",Q),Q=Q.replace(m8[C8.TILDETRIM],Pr),C6("tilde trim",Q),Q=Q.replace(m8[C8.CARETTRIM],Fr),C6("caret trim",Q);let H=Q.split(" ").map(($)=>Nr($,this.options)).join(" ").split(/\s+/).map(($)=>Er($,this.options));if(G)H=H.filter(($)=>{return C6("loose invalid filter",$,this.options),!!$.match(m8[C8.COMPARATORLOOSE])});C6("range list",H);let K=new Map,z=H.map(($)=>new c$($,this.options));for(let $ of z){if(NR($))return[$];K.set($.value,$)}if(K.size>1&&K.has(""))K.delete("");let W=[...K.values()];return CR.set(Z,W),W}intersects(Q,X){if(!(Q instanceof mX))throw new TypeError("a Range is required");return this.set.some((Z)=>{return TR(Z,X)&&Q.set.some((J)=>{return TR(J,X)&&Z.every((G)=>{return J.every((Y)=>{return G.intersects(Y,X)})})})})}test(Q){if(!Q)return!1;if(typeof Q==="string")try{Q=new Ur(Q,this.options)}catch(X){return!1}for(let X=0;XQ.value==="<0.0.0-0",Cr=(Q)=>Q.value==="",TR=(Q,X)=>{let Z=!0,J=Q.slice(),G=J.pop();while(Z&&J.length)Z=J.every((Y)=>{return G.intersects(Y,X)}),G=J.pop();return Z},Nr=(Q,X)=>{return C6("comp",Q,X),Q=Ir(Q,X),C6("caret",Q),Q=Tr(Q,X),C6("tildes",Q),Q=Ar(Q,X),C6("xrange",Q),Q=wr(Q,X),C6("stars",Q),Q},N8=(Q)=>!Q||Q.toLowerCase()==="x"||Q==="*",Tr=(Q,X)=>{return Q.trim().split(/\s+/).map((Z)=>Mr(Z,X)).join(" ")},Mr=(Q,X)=>{let Z=X.loose?m8[C8.TILDELOOSE]:m8[C8.TILDE];return Q.replace(Z,(J,G,Y,H,K)=>{C6("tilde",Q,J,G,Y,H,K);let z;if(N8(G))z="";else if(N8(Y))z=`>=${G}.0.0 <${+G+1}.0.0-0`;else if(N8(H))z=`>=${G}.${Y}.0 <${G}.${+Y+1}.0-0`;else if(K)C6("replaceTilde pr",K),z=`>=${G}.${Y}.${H}-${K} <${G}.${+Y+1}.0-0`;else z=`>=${G}.${Y}.${H} <${G}.${+Y+1}.0-0`;return C6("tilde return",z),z})},Ir=(Q,X)=>{return Q.trim().split(/\s+/).map((Z)=>Rr(Z,X)).join(" ")},Rr=(Q,X)=>{C6("caret",Q,X);let Z=X.loose?m8[C8.CARETLOOSE]:m8[C8.CARET],J=X.includePrerelease?"-0":"";return Q.replace(Z,(G,Y,H,K,z)=>{C6("caret",Q,G,Y,H,K,z);let W;if(N8(Y))W="";else if(N8(H))W=`>=${Y}.0.0${J} <${+Y+1}.0.0-0`;else if(N8(K))if(Y==="0")W=`>=${Y}.${H}.0${J} <${Y}.${+H+1}.0-0`;else W=`>=${Y}.${H}.0${J} <${+Y+1}.0.0-0`;else if(z)if(C6("replaceCaret pr",z),Y==="0")if(H==="0")W=`>=${Y}.${H}.${K}-${z} <${Y}.${H}.${+K+1}-0`;else W=`>=${Y}.${H}.${K}-${z} <${Y}.${+H+1}.0-0`;else W=`>=${Y}.${H}.${K}-${z} <${+Y+1}.0.0-0`;else if(C6("no pr"),Y==="0")if(H==="0")W=`>=${Y}.${H}.${K}${J} <${Y}.${H}.${+K+1}-0`;else W=`>=${Y}.${H}.${K}${J} <${Y}.${+H+1}.0-0`;else W=`>=${Y}.${H}.${K} <${+Y+1}.0.0-0`;return C6("caret return",W),W})},Ar=(Q,X)=>{return C6("replaceXRanges",Q,X),Q.split(/\s+/).map((Z)=>Or(Z,X)).join(" ")},Or=(Q,X)=>{Q=Q.trim();let Z=X.loose?m8[C8.XRANGELOOSE]:m8[C8.XRANGE];return Q.replace(Z,(J,G,Y,H,K,z)=>{C6("xRange",Q,J,G,Y,H,K,z);let W=N8(Y),$=W||N8(H),q=$||N8(K),B=q;if(G==="="&&B)G="";if(z=X.includePrerelease?"-0":"",W)if(G===">"||G==="<")J="<0.0.0-0";else J="*";else if(G&&B){if($)H=0;if(K=0,G===">")if(G=">=",$)Y=+Y+1,H=0,K=0;else H=+H+1,K=0;else if(G==="<=")if(G="<",$)Y=+Y+1;else H=+H+1;if(G==="<")z="-0";J=`${G+Y}.${H}.${K}${z}`}else if($)J=`>=${Y}.0.0${z} <${+Y+1}.0.0-0`;else if(q)J=`>=${Y}.${H}.0${z} <${Y}.${+H+1}.0-0`;return C6("xRange return",J),J})},wr=(Q,X)=>{return C6("replaceStars",Q,X),Q.trim().replace(m8[C8.STAR],"")},Er=(Q,X)=>{return C6("replaceGTE0",Q,X),Q.trim().replace(m8[X.includePrerelease?C8.GTE0PRE:C8.GTE0],"")},jr=(Q)=>(X,Z,J,G,Y,H,K,z,W,$,q,B)=>{if(N8(J))Z="";else if(N8(G))Z=`>=${J}.0.0${Q?"-0":""}`;else if(N8(Y))Z=`>=${J}.${G}.0${Q?"-0":""}`;else if(H)Z=`>=${Z}`;else Z=`>=${Z}${Q?"-0":""}`;if(N8(W))z="";else if(N8($))z=`<${+W+1}.0.0-0`;else if(N8(q))z=`<${W}.${+$+1}.0-0`;else if(B)z=`<=${W}.${$}.${q}-${B}`;else if(Q)z=`<${W}.${$}.${+q+1}-0`;else z=`<=${z}`;return`${Z} ${z}`.trim()},Sr=(Q,X,Z)=>{for(let J=0;J0){let G=Q[J].semver;if(G.major===X.major&&G.minor===X.minor&&G.patch===X.patch)return!0}}return!1}return!0}});var _X=r((qC1,ER)=>{var dX=Symbol("SemVer ANY");class $3{static get ANY(){return dX}constructor(Q,X){if(X=IR(X),Q instanceof $3)if(Q.loose===!!X.loose)return Q;else Q=Q.value;if(Q=Q.trim().split(/\s+/).join(" "),n$("comparator",Q,X),this.options=X,this.loose=!!X.loose,this.parse(Q),this.semver===dX)this.value="";else this.value=this.operator+this.semver.version;n$("comp",this)}parse(Q){let X=this.options.loose?RR[AR.COMPARATORLOOSE]:RR[AR.COMPARATOR],Z=Q.match(X);if(!Z)throw new TypeError(`Invalid comparator: ${Q}`);if(this.operator=Z[1]!==void 0?Z[1]:"",this.operator==="=")this.operator="";if(!Z[2])this.semver=dX;else this.semver=new OR(Z[2],this.options.loose)}toString(){return this.value}test(Q){if(n$("Comparator.test",Q,this.options.loose),this.semver===dX||Q===dX)return!0;if(typeof Q==="string")try{Q=new OR(Q,this.options)}catch(X){return!1}return i$(Q,this.operator,this.semver,this.options)}intersects(Q,X){if(!(Q instanceof $3))throw new TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new wR(Q.value,X).test(this.value)}else if(Q.operator===""){if(Q.value==="")return!0;return new wR(this.value,X).test(Q.semver)}if(X=IR(X),X.includePrerelease&&(this.value==="<0.0.0-0"||Q.value==="<0.0.0-0"))return!1;if(!X.includePrerelease&&(this.value.startsWith("<0.0.0")||Q.value.startsWith("<0.0.0")))return!1;if(this.operator.startsWith(">")&&Q.operator.startsWith(">"))return!0;if(this.operator.startsWith("<")&&Q.operator.startsWith("<"))return!0;if(this.semver.version===Q.semver.version&&this.operator.includes("=")&&Q.operator.includes("="))return!0;if(i$(this.semver,"<",Q.semver,X)&&this.operator.startsWith(">")&&Q.operator.startsWith("<"))return!0;if(i$(this.semver,">",Q.semver,X)&&this.operator.startsWith("<")&&Q.operator.startsWith(">"))return!0;return!1}}ER.exports=$3;var IR=X3(),{safeRe:RR,t:AR}=K7(),i$=l$(),n$=fX(),OR=$8(),wR=C9()});var uX=r((HC1,jR)=>{var kr=C9(),yr=(Q,X,Z)=>{try{X=new kr(X,Z)}catch(J){return!1}return X.test(Q)};jR.exports=yr});var kR=r((zC1,SR)=>{var xr=C9(),vr=(Q,X)=>new xr(Q,X).set.map((Z)=>Z.map((J)=>J.value).join(" ").trim().split(" "));SR.exports=vr});var xR=r((KC1,yR)=>{var gr=$8(),hr=C9(),fr=(Q,X,Z)=>{let J=null,G=null,Y=null;try{Y=new hr(X,Z)}catch(H){return null}return Q.forEach((H)=>{if(Y.test(H)){if(!J||G.compare(H)===-1)J=H,G=new gr(J,Z)}}),J};yR.exports=fr});var gR=r(($C1,vR)=>{var br=$8(),mr=C9(),_r=(Q,X,Z)=>{let J=null,G=null,Y=null;try{Y=new mr(X,Z)}catch(H){return null}return Q.forEach((H)=>{if(Y.test(H)){if(!J||G.compare(H)===1)J=H,G=new br(J,Z)}}),J};vR.exports=_r});var bR=r((BC1,fR)=>{var o$=$8(),dr=C9(),hR=bX(),ur=(Q,X)=>{Q=new dr(Q,X);let Z=new o$("0.0.0");if(Q.test(Z))return Z;if(Z=new o$("0.0.0-0"),Q.test(Z))return Z;Z=null;for(let J=0;J{let K=new o$(H.semver.version);switch(H.operator){case">":if(K.prerelease.length===0)K.patch++;else K.prerelease.push(0);K.raw=K.format();case"":case">=":if(!Y||hR(K,Y))Y=K;break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${H.operator}`)}}),Y&&(!Z||hR(Z,Y)))Z=Y}if(Z&&Q.test(Z))return Z;return null};fR.exports=ur});var _R=r((UC1,mR)=>{var pr=C9(),lr=(Q,X)=>{try{return new pr(Q,X).range||"*"}catch(Z){return null}};mR.exports=lr});var B3=r((VC1,lR)=>{var cr=$8(),pR=_X(),{ANY:ir}=pR,nr=C9(),or=uX(),dR=bX(),uR=W3(),ar=H3(),sr=q3(),tr=(Q,X,Z,J)=>{Q=new cr(Q,J),X=new nr(X,J);let G,Y,H,K,z;switch(Z){case">":G=dR,Y=ar,H=uR,K=">",z=">=";break;case"<":G=uR,Y=sr,H=dR,K="<",z="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(or(Q,X,J))return!1;for(let W=0;W{if(D.semver===ir)D=new pR(">=0.0.0");if(q=q||D,B=B||D,G(D.semver,q.semver,J))q=D;else if(H(D.semver,B.semver,J))B=D}),q.operator===K||q.operator===z)return!1;if((!B.operator||B.operator===K)&&Y(Q,B.semver))return!1;else if(B.operator===z&&H(Q,B.semver))return!1}return!0};lR.exports=tr});var iR=r((PC1,cR)=>{var rr=B3(),er=(Q,X,Z)=>rr(Q,X,">",Z);cR.exports=er});var oR=r((FC1,nR)=>{var Qe=B3(),Ze=(Q,X,Z)=>Qe(Q,X,"<",Z);nR.exports=Ze});var tR=r((DC1,sR)=>{var aR=C9(),Xe=(Q,X,Z)=>{return Q=new aR(Q,Z),X=new aR(X,Z),Q.intersects(X,Z)};sR.exports=Xe});var eR=r((LC1,rR)=>{var Je=uX(),Ge=L9();rR.exports=(Q,X,Z)=>{let J=[],G=null,Y=null,H=Q.sort(($,q)=>Ge($,q,Z));for(let $ of H)if(Je($,X,Z)){if(Y=$,!G)G=$}else{if(Y)J.push([G,Y]);Y=null,G=null}if(G)J.push([G,null]);let K=[];for(let[$,q]of J)if($===q)K.push($);else if(!q&&$===H[0])K.push("*");else if(!q)K.push(`>=${$}`);else if($===H[0])K.push(`<=${q}`);else K.push(`${$} - ${q}`);let z=K.join(" || "),W=typeof X.raw==="string"?X.raw:String(X);return z.length{var QA=C9(),s$=_X(),{ANY:a$}=s$,pX=uX(),t$=L9(),Ye=(Q,X,Z={})=>{if(Q===X)return!0;Q=new QA(Q,Z),X=new QA(X,Z);let J=!1;Q:for(let G of Q.set){for(let Y of X.set){let H=qe(G,Y,Z);if(J=J||H!==null,H)continue Q}if(J)return!1}return!0},We=[new s$(">=0.0.0-0")],ZA=[new s$(">=0.0.0")],qe=(Q,X,Z)=>{if(Q===X)return!0;if(Q.length===1&&Q[0].semver===a$)if(X.length===1&&X[0].semver===a$)return!0;else if(Z.includePrerelease)Q=We;else Q=ZA;if(X.length===1&&X[0].semver===a$)if(Z.includePrerelease)return!0;else X=ZA;let J=new Set,G,Y;for(let D of Q)if(D.operator===">"||D.operator===">=")G=XA(G,D,Z);else if(D.operator==="<"||D.operator==="<=")Y=JA(Y,D,Z);else J.add(D.semver);if(J.size>1)return null;let H;if(G&&Y){if(H=t$(G.semver,Y.semver,Z),H>0)return null;else if(H===0&&(G.operator!==">="||Y.operator!=="<="))return null}for(let D of J){if(G&&!pX(D,String(G),Z))return null;if(Y&&!pX(D,String(Y),Z))return null;for(let F of X)if(!pX(D,String(F),Z))return!1;return!0}let K,z,W,$,q=Y&&!Z.includePrerelease&&Y.semver.prerelease.length?Y.semver:!1,B=G&&!Z.includePrerelease&&G.semver.prerelease.length?G.semver:!1;if(q&&q.prerelease.length===1&&Y.operator==="<"&&q.prerelease[0]===0)q=!1;for(let D of X){if($=$||D.operator===">"||D.operator===">=",W=W||D.operator==="<"||D.operator==="<=",G){if(B){if(D.semver.prerelease&&D.semver.prerelease.length&&D.semver.major===B.major&&D.semver.minor===B.minor&&D.semver.patch===B.patch)B=!1}if(D.operator===">"||D.operator===">="){if(K=XA(G,D,Z),K===D&&K!==G)return!1}else if(G.operator===">="&&!pX(G.semver,String(D),Z))return!1}if(Y){if(q){if(D.semver.prerelease&&D.semver.prerelease.length&&D.semver.major===q.major&&D.semver.minor===q.minor&&D.semver.patch===q.patch)q=!1}if(D.operator==="<"||D.operator==="<="){if(z=JA(Y,D,Z),z===D&&z!==Y)return!1}else if(Y.operator==="<="&&!pX(Y.semver,String(D),Z))return!1}if(!D.operator&&(Y||G)&&H!==0)return!1}if(G&&W&&!Y&&H!==0)return!1;if(Y&&$&&!G&&H!==0)return!1;if(B||q)return!1;return!0},XA=(Q,X,Z)=>{if(!Q)return X;let J=t$(Q.semver,X.semver,Z);return J>0?Q:J<0?X:X.operator===">"&&Q.operator===">="?X:Q},JA=(Q,X,Z)=>{if(!Q)return X;let J=t$(Q.semver,X.semver,Z);return J<0?Q:J>0?X:X.operator==="<"&&Q.operator==="<="?X:Q};GA.exports=Ye});var zA=r((NC1,HA)=>{var r$=K7(),WA=hX(),He=$8(),qA=d$(),ze=IZ(),Ke=yI(),$e=vI(),Be=fI(),Ue=_I(),Ve=uI(),Pe=lI(),Fe=iI(),De=oI(),Le=L9(),Ce=rI(),Ne=QR(),Te=Y3(),Me=GR(),Ie=WR(),Re=bX(),Ae=W3(),Oe=u$(),we=p$(),Ee=q3(),je=H3(),Se=l$(),ke=PR(),ye=_X(),xe=C9(),ve=uX(),ge=kR(),he=xR(),fe=gR(),be=bR(),me=_R(),_e=B3(),de=iR(),ue=oR(),pe=tR(),le=eR(),ce=YA();HA.exports={parse:ze,valid:Ke,clean:$e,inc:Be,diff:Ue,major:Ve,minor:Pe,patch:Fe,prerelease:De,compare:Le,rcompare:Ce,compareLoose:Ne,compareBuild:Te,sort:Me,rsort:Ie,gt:Re,lt:Ae,eq:Oe,neq:we,gte:Ee,lte:je,cmp:Se,coerce:ke,Comparator:ye,Range:xe,satisfies:ve,toComparators:ge,maxSatisfying:he,minSatisfying:fe,minVersion:be,validRange:me,outside:_e,gtr:de,ltr:ue,intersects:pe,simplifyRange:le,subset:ce,SemVer:He,re:r$.re,src:r$.src,tokens:r$.t,SEMVER_SPEC_VERSION:WA.SEMVER_SPEC_VERSION,RELEASE_TYPES:WA.RELEASE_TYPES,compareIdentifiers:qA.compareIdentifiers,rcompareIdentifiers:qA.rcompareIdentifiers}});var $11={};LJ($11,{default:()=>WB});module.exports=Ww($11);var gZ=(Q)=>Array.isArray(Q)?Q:[Q],KU=(Q,X)=>{let Z=[[],[]];for(let J of Q)if(X(J))Z[0].push(J);else Z[1].push(J);return Z},CJ=Array,PQ=(Q,X)=>Q.includes(X);var h0=(Q,X,Z)=>{if(Q===void 0)return X===void 0?[]:Array.isArray(X)?X:[X];if(Z?.prepend)if(Array.isArray(X))Q.unshift(...X);else Q.unshift(X);else if(Array.isArray(X))Q.push(...X);else Q.push(X);return Q},bQ=(Q,X)=>{if(X===void 0||X===null)return Q??[];if(Q===void 0||Q===null)return gZ(X);return Q.concat(X)};var FQ=(Q,X,Z)=>{if(Q===void 0)return Array.isArray(X)?X:[X];let J=Z?.isEqual??((G,Y)=>G===Y);return gZ(X).forEach((G)=>{if(!Q.some((Y)=>J(Y,G)))Q.push(G)}),Q},NJ=(Q,X)=>Q.reduce((Z,J)=>{let G=J[X];return Z[G]=h0(Z[G],J),Z},{}),hZ=(Q,X,Z)=>Q.length===X.length&&Q.every(Z?.isEqual?(J,G)=>Z.isEqual(J,X[G]):(J,G)=>J===X[G]);var M8=(Q,X)=>P8(Q)===X,P8=(Q)=>{let X=typeof Q;return X==="object"?Q===null?"null":"object":X==="function"?"object":X},Y9={boolean:"boolean",null:"null",undefined:"undefined",bigint:"a bigint",number:"a number",object:"an object",string:"a string",symbol:"a symbol"},$U={...Y9,function:"a function"};var w0=(Q,X)=>{let Z=Array.isArray(Q),J=Object.entries(Q).flatMap((Y,H)=>{let K=Z?X(H,Y[1]):X(...Y,H);return Array.isArray(K[0])||K.length===0?K:[K]}),G=Object.fromEntries(J);return typeof J[0]?.[0]==="number"?Object.values(G):G};var d3=Object.entries;var a6=(Q,X)=>(Q in X);class u3{constructor(Q){Object.assign(this,Q)}}var BU=class{};class O7 extends BU{}var qw=(Q,X)=>{let Z={},J={},G;for(G in Q)if(G in X)Z[G]=Q[G];else J[G]=Q[G];return[Z,J]};var UU=(Q,X)=>qw(Q,X)[1],O9=(Q)=>Object.keys(Q).length===0,w7=(Q)=>[...Object.entries(Q),...Object.getOwnPropertySymbols(Q).map((X)=>[X,Q[X]])],VU=(Q,X)=>Object.defineProperties(Q,Object.getOwnPropertyDescriptors(X));var h4=Symbol("represents an uninitialized value");var p3={Array,Boolean,Date,Error,Function,Map,Number,Promise,RegExp,Set,String,WeakMap,WeakSet},l3=globalThis.File??Blob,c3={ArrayBuffer,Blob,File:l3,FormData,Headers,Request,Response,URL},Hw={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array},f4={...p3,...c3,...Hw,String,Number,Boolean},E7=(Q)=>{let X=Object.getPrototypeOf(Q);while(X?.constructor&&(!a6(X.constructor.name,f4)||!(Q instanceof f4[X.constructor.name])))X=Object.getPrototypeOf(X);let Z=X?.constructor?.name;if(Z===void 0||Z==="Object")return;return Z},j7=(Q)=>typeof Q==="object"&&Q!==null?E7(Q)??"object":P8(Q);var G6=Array.isArray,zw={Array:"an array",Function:"a function",Date:"a Date",RegExp:"a RegExp",Error:"an Error",Map:"a Map",Set:"a Set",String:"a String object",Number:"a Number object",Boolean:"a Boolean object",Promise:"a Promise",WeakMap:"a WeakMap",WeakSet:"a WeakSet"},Kw={ArrayBuffer:"an ArrayBuffer instance",Blob:"a Blob instance",File:"a File instance",FormData:"a FormData instance",Headers:"a Headers instance",Request:"a Request instance",Response:"a Response instance",URL:"a URL instance"},$w={Int8Array:"an Int8Array",Uint8Array:"a Uint8Array",Uint8ClampedArray:"a Uint8ClampedArray",Int16Array:"an Int16Array",Uint16Array:"a Uint16Array",Int32Array:"an Int32Array",Uint32Array:"a Uint32Array",Float32Array:"a Float32Array",Float64Array:"a Float64Array",BigInt64Array:"a BigInt64Array",BigUint64Array:"a BigUint64Array"},PU={...zw,...Kw,...$w},S7=(Q)=>{let X=Object(Q).name??null;return X&&a6(X,f4)&&f4[X]===Q?X:null};var i3=(Q,X)=>{let Z=Q.prototype;while(Z!==null){if(Z===X.prototype)return!0;Z=Object.getPrototypeOf(Z)}return!1};var FU=(Q)=>DU(Q,new Map),DU=(Q,X)=>{if(typeof Q!=="object"||Q===null)return Q;if(X?.has(Q))return X.get(Q);let Z=S7(Q.constructor);if(Z==="Date")return new Date(Q.getTime());if(Z&&Z!=="Array")return Q;let J=Array.isArray(Q)?Q.slice():Object.create(Object.getPrototypeOf(Q)),G=Object.getOwnPropertyDescriptors(Q);if(X){X.set(Q,J);for(let Y in G)G[Y].value=DU(G[Y].value,X)}return Object.defineProperties(J,G),J};class LU extends Error{}var a0=(Q)=>b4(Q,LU),b4=(Q,X=Error)=>{throw new X(Q)};class TJ extends Error{name="ParseError"}var I1=(Q)=>b4(Q,TJ),fZ=(Q)=>` ${Q}`;var Bw=(Q)=>{let X=h4;return()=>X===h4?X=Q():X},mQ=(Q)=>typeof Q==="function"&&Q.length===0;var CU=class extends Function{constructor(...Q){let X=Q.slice(0,-1),Z=Q.at(-1);try{super(...X,Z)}catch(J){return a0(`Encountered an unexpected error while compiling your definition: + Message: ${J} + Source: (${Q.slice(0,-1)}) => { + ${Q.at(-1)} + }`)}}};class _Q{constructor(Q,...[X]){return Object.assign(Object.setPrototypeOf(Q.bind(X?.bind??this),this.constructor.prototype),X?.attach)}}var NU=Bw(()=>{try{return new Function("return false")()}catch{return!0}});var TU=fZ("arkInferred");var y11=fZ("args");class X8{constructor(){}}var MU=(Q)=>Q[0].toUpperCase()+Q.slice(1);var n3=(Q)=>new RegExp(Uw(Q),typeof Q==="string"?"":Q.flags);var Uw=(Q)=>{return`^(?:${typeof Q==="string"?Q:Q.source})$`};var DQ={negativeLookahead:(Q)=>`(?!${Q})`,nonCapturingGroup:(Q)=>`(?:${Q})`},k7="\\",dQ={" ":1,"\n":1,"\t":1};var Vw=/^-0\.?0*$/.source,RU=/[1-9]\d*/.source,Pw=/\.\d+/.source,Fw=/\.\d*[1-9]/.source,AU=(Q)=>n3(DQ.negativeLookahead(Vw)+DQ.nonCapturingGroup("-?"+DQ.nonCapturingGroup(DQ.nonCapturingGroup("0|"+RU)+DQ.nonCapturingGroup(Q.decimalPattern)+"?")+(Q.allowDecimalOnly?"":"|"+Q.decimalPattern)+"?")),IU=AU({decimalPattern:Fw,allowDecimalOnly:!1}),Dw=IU.test.bind(IU),OU=AU({decimalPattern:Pw,allowDecimalOnly:!0}),Lw=/^-?\d*\.?\d*$/,Cw=(Q)=>Q.length!==0&&Lw.test(Q),y7=n3(DQ.negativeLookahead("^-0$")+"-?"+DQ.nonCapturingGroup(DQ.nonCapturingGroup("0|"+RU))),Nw=y7.test.bind(y7),o3=/^-?\d+$/,Tw=o3.test.bind(o3),wU={number:"a number",bigint:"a bigint",integer:"an integer"},EU=(Q,X)=>`'${Q}' was parsed as ${wU[X]} but could not be narrowed to a literal value. Avoid unnecessary leading or trailing zeros and other abnormal notation`,Mw=(Q,X)=>X==="number"?Dw(Q):Nw(Q),Iw=(Q,X)=>X==="number"?Number(Q):Number.parseInt(Q),Rw=(Q,X)=>X==="number"?Cw(Q):Tw(Q),jU=(Q,X)=>a3(Q,"number",X),SU=(Q,X)=>a3(Q,"number",{...X,strict:!0}),kU=(Q,X)=>a3(Q,"integer",X),a3=(Q,X,Z)=>{let J=Iw(Q,X);if(!Number.isNaN(J)){if(Rw(Q,X)){if(Z?.strict)return Mw(Q,X)?J:I1(EU(Q,X));return J}}return Z?.errorOnFail?I1(Z?.errorOnFail===!0?`Failed to parse ${wU[X]} from '${Q}'`:Z?.errorOnFail):void 0},yU=(Q)=>{if(Q[Q.length-1]!=="n")return;let X=Q.slice(0,-1),Z;try{Z=BigInt(X)}catch{return}if(y7.test(X))return Z;if(o3.test(X))return I1(EU(Q,"bigint"))};var Aw="0.30.0",Ow={version:Aw,filename:"mcp-tools-for-obsidian.ts",FileConstructor:l3},m4=Ow,xU=new WeakMap,s3=Object.create(null),x7=(Q)=>{let X=xU.get(Q);if(X)return X;let Z=ww(Q);if(s3[Z])Z=`${Z}${s3[Z]++}`;else s3[Z]=1;return m4[Z]=Q,xU.set(Q,Z),Z},bZ=(Q)=>/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(Q),ww=(Q)=>{switch(typeof Q){case"object":{if(Q===null)break;let X=E7(Q)??"object";return X[0].toLowerCase()+X.slice(1)}case"function":return bZ(Q.name)?Q.name:"fn";case"symbol":return Q.description&&bZ(Q.description)?Q.description:"symbol"}return a0(`Unexpected attempt to register serializable value of type ${P8(Q)}`)};var MJ=(Q)=>typeof Q==="string"?JSON.stringify(Q):typeof Q==="bigint"?`${Q}n`:`${Q}`;var vU=(Q,X={})=>v7(Q,{onUndefined:"$ark.undefined",onBigInt:(Z)=>`$ark.bigint-${Z}`,...X},[]);var O0=(Q,X)=>{switch(P8(Q)){case"object":let Z=Q,J=Z.constructor.name;return J==="Object"||J==="Array"?JSON.stringify(v7(Z,IJ,[]),null,X):Z instanceof Date?_4(Z):typeof Z.expression==="string"?Z.expression:J;case"symbol":return IJ.onSymbol(Q);default:return MJ(Q)}},IJ={onCycle:()=>"(cycle)",onSymbol:(Q)=>`Symbol(${x7(Q)})`,onFunction:(Q)=>`Function(${x7(Q)})`},v7=(Q,X,Z)=>{switch(P8(Q)){case"object":{let J=Q;if("toJSON"in J&&typeof J.toJSON==="function")return J.toJSON();if(typeof J==="function")return IJ.onFunction(J);if(Z.includes(J))return"(cycle)";let G=[...Z,J];if(Array.isArray(J))return J.map((H)=>v7(H,X,G));if(J instanceof Date)return J.toDateString();let Y={};for(let H in J)Y[H]=v7(J[H],X,G);for(let H of Object.getOwnPropertySymbols(J))Y[X.onSymbol?.(H)??H.toString()]=v7(J[H],X,G);return Y}case"symbol":return IJ.onSymbol(Q);case"bigint":return X.onBigInt?.(Q)??`${Q}n`;case"undefined":return X.onUndefined??"undefined";default:return Q}},_4=(Q)=>{let X=Q.getFullYear(),Z=Q.getMonth(),J=Q.getDate(),G=Q.getHours(),Y=Q.getMinutes(),H=Q.getSeconds(),K=Q.getMilliseconds();if(Z===0&&J===1&&G===0&&Y===0&&H===0&&K===0)return`${X}`;let z=`${Ew[Z]} ${J}, ${X}`;if(G===0&&Y===0&&H===0&&K===0)return z;let W=Q.toLocaleTimeString(),$=W.endsWith(" AM")||W.endsWith(" PM")?W.slice(-3):"";if($)W=W.slice(0,-$.length);if(K)W+=`.${Sw(K,3)}`;else if(jw.test(W))W=W.slice(0,-3);return`${W+$}, ${z}`},Ew=["January","February","March","April","May","June","July","August","September","October","November","December"],jw=/:\d\d:00$/,Sw=(Q,X)=>String(Q).padStart(X,"0");var gU=(Q,X,...[Z])=>{let J=Z?.stringifySymbol??O0,G=Q;switch(typeof X){case"string":G=bZ(X)?Q===""?X:`${Q}.${X}`:`${Q}[${JSON.stringify(X)}]`;break;case"number":G=`${Q}[${X}]`;break;case"symbol":G=`${Q}[${J(X)}]`;break;default:if(Z?.stringifyNonKey)G=`${Q}[${Z.stringifyNonKey(X)}]`;else I1(`${O0(X)} must be a PropertyKey or stringifyNonKey must be passed to options`)}return G},d4=(Q,...X)=>Q.reduce((Z,J)=>gU(Z,J,...X),"");class u4 extends CJ{cache={};constructor(...Q){super();this.push(...Q)}stringify(){if(this.cache.stringify)return this.cache.stringify;return this.cache.stringify=d4(this)}stringifyAncestors(){if(this.cache.stringifyAncestors)return this.cache.stringifyAncestors;let Q="",X=[Q];return this.forEach((Z)=>{Q=gU(Q,Z),X.push(Q)}),this.cache.stringifyAncestors=X}}class t3{chars;i;def;constructor(Q){this.def=Q,this.chars=[...Q],this.i=0}shift(){return this.chars[this.i++]??""}get lookahead(){return this.chars[this.i]??""}get nextLookahead(){return this.chars[this.i+1]??""}get length(){return this.chars.length}shiftUntil(Q){let X="";while(this.lookahead){if(Q(this,X))if(X[X.length-1]===k7)X=X.slice(0,-1);else break;X+=this.shift()}return X}shiftUntilLookahead(Q){return typeof Q==="string"?this.shiftUntil((X)=>X.lookahead===Q):this.shiftUntil((X)=>(X.lookahead in Q))}shiftUntilNonWhitespace(){return this.shiftUntil(()=>!(this.lookahead in dQ))}jumpToIndex(Q){this.i=Q<0?this.length+Q:Q}jumpForward(Q){this.i+=Q}get location(){return this.i}get unscanned(){return this.chars.slice(this.i,this.length).join("")}get scanned(){return this.chars.slice(0,this.i).join("")}sliceChars(Q,X){return this.chars.slice(Q,X).join("")}lookaheadIs(Q){return this.lookahead===Q}lookaheadIsIn(Q){return this.lookahead in Q}}var Y01=Symbol("implementedTraits");var r3="$ark",e3=2;while(r3 in globalThis)r3=`$ark${e3++}`;var hU=r3;globalThis[hU]=m4;var E1=m4;if(e3!==2){let Q=globalThis,X=[Q.$ark];for(let G=2;G1)console.warn(`File ${G} was initialized multiple times, likely due to being imported from both CJS and ESM contexts.`);if(J.length>1)console.warn("Registries were initialized at the following paths:"+J.map((G)=>` ${G} (@ark/util version ${Z[G][0].version})`).join(` +`))}var kw=(Q)=>`${hU}.${Q}`,g6=(Q)=>kw(x7(Q));class RJ extends O7{argNames;body="";constructor(...Q){super();this.argNames=Q;for(let X of Q){if(X in this)throw new Error(`Arg name '${X}' would overwrite an existing property on FunctionBody`);this[X]=X}}indentation=0;indent(){return this.indentation+=4,this}dedent(){return this.indentation-=4,this}prop(Q,X=!1){return QH(Q,X)}index(Q,X=!1){return fU(`${Q}`,X)}line(Q){return this.body+=`${" ".repeat(this.indentation)}${Q} +`,this}const(Q,X){return this.line(`const ${Q} = ${X}`),this}let(Q,X){return this.line(`let ${Q} = ${X}`)}set(Q,X){return this.line(`${Q} = ${X}`)}if(Q,X){return this.block(`if (${Q})`,X)}elseIf(Q,X){return this.block(`else if (${Q})`,X)}else(Q){return this.block("else",Q)}for(Q,X,Z=0){return this.block(`for (let i = ${Z}; ${Q}; i++)`,X)}forIn(Q,X){return this.block(`for (const k in ${Q})`,X)}block(Q,X,Z=""){return this.line(`${Q} {`),this.indent(),X(this),this.dedent(),this.line(`}${Z}`)}return(Q=""){return this.line(`return ${Q}`)}write(Q="anonymous"){return`${Q}(${this.argNames.join(", ")}) { +${this.body}}`}compile(){return new CU(...this.argNames,this.body)}}var LQ=(Q)=>M8(Q,"object")||typeof Q==="symbol"?g6(Q):MJ(Q),QH=(Q,X=!1)=>{if(typeof Q==="string"&&bZ(Q))return`${X?"?":""}.${Q}`;return fU(yw(Q),X)},yw=(Q)=>typeof Q==="symbol"?g6(Q):JSON.stringify(Q),fU=(Q,X=!1)=>`${X?"?.":""}[${Q}]`;class AJ extends RJ{path=[];discriminants=[];traversalKind;constructor(Q){super("data","ctx");this.traversalKind=Q}invoke(Q,X){let Z=X?.arg??this.data,J=typeof Q==="string"?!0:this.requiresContextFor(Q),G=typeof Q==="string"?Q:Q.id;if(J)return`${this.referenceToId(G,X)}(${Z}, ${this.ctx})`;return`${this.referenceToId(G,X)}(${Z})`}referenceToId(Q,X){let Z=X?.kind??this.traversalKind,J=`this.${Q}${Z}`;return X?.bind?`${J}.bind(${X?.bind})`:J}requiresContextFor(Q){return this.traversalKind==="Apply"||Q.allowsRequiresContext}initializeErrorCount(){return this.const("errorCount","ctx.currentErrorCount")}returnIfFail(){return this.if("ctx.currentErrorCount > errorCount",()=>this.return())}returnIfFailFast(){return this.if("ctx.failFast && ctx.currentErrorCount > errorCount",()=>this.return())}traverseKey(Q,X,Z){let J=this.requiresContextFor(Z);if(J)this.line(`${this.ctx}.path.push(${Q})`);if(this.check(Z,{arg:X}),J)this.line(`${this.ctx}.path.pop()`);return this}check(Q,X){return this.traversalKind==="Allows"?this.if(`!${this.invoke(Q,X)}`,()=>this.return(!1)):this.line(this.invoke(Q,X))}}var OJ=(Q)=>w0(Q,(X,Z)=>[X,G6(Z)?[...Z]:Z]),I8=fZ("arkKind"),r1=(Q,X)=>Q?.[I8]===X,F6=(Q)=>r1(Q,"root")||r1(Q,"constraint");var bU=["unit","proto","domain"],mZ=["required","optional","index","sequence"],ZH=["pattern","divisor","exactLength","max","min","maxLength","minLength","before","after"],wJ=[...ZH,...mZ,"structure","predicate"],_Z=["alias","union","morph","unit","intersection","proto","domain"],xw=[..._Z,...wJ],EJ=w0(wJ,(Q,X)=>[X,1]),mU=w0([...mZ,"undeclared"],(Q,X)=>[X,1]),_U=w0(xw,(Q,X)=>[X,Q]),dZ=(Q)=>typeof Q==="string"&&(Q in _U);var uZ=(Q)=>_U[Q],jJ=(Q)=>_Z.slice(uZ(Q)+1),d01=[...jJ("union"),"alias"],u01=[...jJ("morph"),"alias"],CQ=(Q)=>{if(typeof Q==="string"||typeof Q==="boolean"||Q===null)return Q;if(typeof Q==="number"){if(Number.isNaN(Q))return"NaN";if(Q===Number.POSITIVE_INFINITY)return"Infinity";if(Q===Number.NEGATIVE_INFINITY)return"-Infinity";return Q}return LQ(Q)},uQ=(Q)=>{let X="{ ";for(let[Z,J]of Object.entries(Q))X+=`${Z}: ${LQ(J)}, `;return X+" }"},N0=(Q)=>{let X=Q;if(X.hasAssociatedError)X.defaults.expected??=(Z)=>("description"in Z)?Z.description:X.defaults.description(Z),X.defaults.actual??=(Z)=>O0(Z),X.defaults.problem??=(Z)=>`must be ${Z.expected}${Z.actual?` (was ${Z.actual})`:""}`,X.defaults.message??=(Z)=>{if(Z.path.length===0)return Z.problem;let J=`${Z.propString} ${Z.problem}`;if(J[0]==="[")return`value at ${J}`;return J};return X};E1.config??={};var vw=(Q,X)=>{let Z={...Q},J;for(J in X)Z[J]=dZ(J)?{...Q[J],...X[J]}:X[J];return Z},dU=(Q,X)=>{if(!X)return Q;return vw(Q,X)},uU=(Q)=>dU(dU(E1.defaultConfig,E1.config),Q);class p4 extends O7{[I8]="error";path;data;nodeConfig;input;constructor(Q,X){super();this.input=Q,VU(this,Q);let Z=X.data;if(Q.code==="union")Q.errors=Q.errors.flatMap((J)=>J.hasCode("union")?J.errors:J);this.nodeConfig=X.config[this.code],this.path=Q.relativePath?new u4(...X.path,...Q.relativePath):Q.path?new u4(...Q.path):new u4(...X.path),this.data="data"in Q?Q.data:Z}hasCode(Q){return this.code===Q}get propString(){return d4(this.path)}get expected(){return this.input.expected??this.nodeConfig.expected?.(this.input)}get actual(){return this.input.actual??this.nodeConfig.actual?.(this.data)}get problem(){return this.input.problem??this.nodeConfig.problem(this)}get message(){return this.input.message??this.nodeConfig.message(this)}toString(){return this.message}throw(){throw this}}class R8 extends CJ{ctx;constructor(Q){super();this.ctx=Q}byPath=Object.create(null);byAncestorPath=Object.create(null);count=0;mutable=this;add(Q){if(this.includes(Q))return;this._add(Q)}affectsPath(Q){if(this.length===0)return!1;return Q.stringifyAncestors().some((X)=>(X in this.byPath))||Q.stringify()in this.byAncestorPath}_add(Q){let X=this.byPath[Q.propString];if(X){let Z=new p4({code:"intersection",errors:X.hasCode("intersection")?[...X.errors,Q]:[X,Q]},this.ctx),J=this.indexOf(X);this.mutable[J===-1?this.length:J]=Z,this.byPath[Q.propString]=Z,this.addAncestorPaths(Q)}else this.byPath[Q.propString]=Q,this.addAncestorPaths(Q),this.mutable.push(Q);this.count++}addAncestorPaths(Q){Q.path.stringifyAncestors().forEach((X)=>{this.byAncestorPath[X]=h0(this.byAncestorPath[X],Q)})}merge(Q){Q.forEach((X)=>{if(this.includes(X))return;this._add(new p4({...X,path:[...this.ctx.path,...X.path]},this.ctx))})}get summary(){return this.toString()}get message(){return this.toString()}get issues(){return this}toString(){return this.join(` +`)}throw(){throw new AggregateError(this,this.message)}}class SJ{path=[];queuedMorphs=[];errors=new R8(this);branches=[];seen={};root;config;constructor(Q,X){this.root=Q,this.config=X}get currentBranch(){return this.branches.at(-1)}queueMorphs(Q){let X={path:new u4(...this.path),morphs:Q};if(this.currentBranch)this.currentBranch.queuedMorphs.push(X);else this.queuedMorphs.push(X)}finalize(){if(!this.queuedMorphs.length)return this.hasError()?this.errors:this.root;if(typeof this.root==="object"&&this.root!==null&&this.config.clone)this.root=this.config.clone(this.root);return this.applyQueuedMorphs(),this.hasError()?this.errors:this.root}applyQueuedMorphs(){while(this.queuedMorphs.length){let Q=this.queuedMorphs;this.queuedMorphs=[];for(let{path:X,morphs:Z}of Q){if(this.errors.affectsPath(X))continue;this.applyMorphsAtPath(X,Z)}}}applyMorphsAtPath(Q,X){let Z=Q.at(-1),J;if(Z!==void 0){J=this.root;for(let G=0;G{if(!Z)return X();Z.path.push(Q);let J=X();return Z.path.pop(),J};class g7 extends _Q{attachments;$;constructor(Q,X){super((Z,J)=>{if(!this.includesMorph&&!this.allowsRequiresContext&&this.allows(Z))return Z;if(J)return this.traverseApply(Z,J),J.hasError()?J.errors:J.data;let G=new SJ(Z,this.$.resolvedConfig);return this.traverseApply(Z,G),G.finalize()},{attach:Q});this.attachments=Q,this.$=X}withMeta(Q){return this.$.node(this.kind,{...this.inner,meta:typeof Q==="function"?Q({...this.meta}):Q})}includesMorph=this.kind==="morph"||this.hasKind("optional")&&this.hasDefault()||this.hasKind("sequence")&&this.defaultablesLength!==0||this.hasKind("structure")&&this.undeclared==="delete"||this.children.some((Q)=>Q.includesMorph);hasContextualPredicate=this.hasKind("predicate")&&this.inner.predicate.length!==1||this.children.some((Q)=>Q.hasContextualPredicate);isCyclic=this.kind==="alias"||this.children.some((Q)=>Q.isCyclic);allowsRequiresContext=this.hasContextualPredicate||this.isCyclic;referencesById=this.children.reduce((Q,X)=>Object.assign(Q,X.referencesById),{[this.id]:this});cacheGetter(Q,X){return Object.defineProperty(this,Q,{value:X}),X}get description(){let Q=this.$?.resolvedConfig[this.kind].description??E1.config[this.kind]?.description??E1.defaultConfig[this.kind].description;return this.cacheGetter("description",this.meta?.description??Q(this))}get references(){return Object.values(this.referencesById)}get shallowReferences(){return this.cacheGetter("shallowReferences",this.hasKind("structure")?[this,...this.children]:this.children.reduce((Q,X)=>fw(Q,X.shallowReferences),[this]))}get shallowMorphs(){return this.cacheGetter("shallowMorphs",this.shallowReferences.filter((Q)=>Q.hasKind("morph")).sort((Q,X)=>Q.expressionpZ(Q,X.flatRefs),[]).sort((Q,X)=>Q.path.length>X.path.length?1:Q.path.lengthX.propString?1:Q.propString{if(this.allowsRequiresContext)return this.traverseAllows(Q,new SJ(Q,this.$.resolvedConfig));return this.traverseAllows(Q)};traverse(Q){return this(Q)}get in(){return this.cacheGetter("in",this.getIo("in"))}get out(){return this.cacheGetter("out",this.getIo("out"))}getIo(Q){if(!this.includesMorph)return this;let X={};for(let[Z,J]of this.innerEntries){let G=this.impl.keys[Z];if(G.reduceIo)G.reduceIo(Q,X,J);else if(G.child){let Y=J;X[Z]=G6(Y)?Y.map((H)=>H[Q]):Y[Q]}else X[Z]=J}return this.$.node(this.kind,X)}toJSON(){return this.json}toString(){return this.expression}equals(Q){let X=F6(Q)?Q:this.$.parseDefinition(Q);return this.innerHash===X.innerHash}ifEquals(Q){return this.equals(Q)?this:void 0}hasKind(Q){return this.kind===Q}assertHasKind(Q){if(this.kind!==Q)b4(`${this.kind} node was not of asserted kind ${Q}`);return this}hasKindIn(...Q){return Q.includes(this.kind)}assertHasKindIn(...Q){if(!PQ(Q,this.kind))b4(`${this.kind} node was not one of asserted kinds ${Q}`);return this}isBasis(){return PQ(bU,this.kind)}isConstraint(){return PQ(wJ,this.kind)}isStructural(){return PQ(mZ,this.kind)}isRefinement(){return PQ(ZH,this.kind)}isRoot(){return PQ(_Z,this.kind)}isUnknown(){return this.hasKind("intersection")&&this.children.length===0}isNever(){return this.hasKind("union")&&this.children.length===0}hasUnit(Q){return this.hasKind("unit")&&this.allows(Q)}hasOpenIntersection(){return this.impl.intersectionIsOpen}get nestableExpression(){return this.expression}firstReference(Q){return this.references.find((X)=>X!==this&&Q(X))}firstReferenceOrThrow(Q){return this.firstReference(Q)??b4(`${this.id} had no references matching predicate ${Q}`)}firstReferenceOfKind(Q){return this.firstReference((X)=>X.hasKind(Q))}firstReferenceOfKindOrThrow(Q){return this.firstReference((X)=>X.kind===Q)??b4(`${this.id} had no ${Q} references`)}transform(Q,X){return this._transform(Q,{...X,seen:{},path:[],parseOptions:{prereduced:X?.prereduced??!1},undeclaredKeyHandling:void 0})}_transform(Q,X){let Z=X.bindScope??this.$;if(X.seen[this.id])return this.$.lazilyResolve(X.seen[this.id]);if(X.shouldTransform?.(this,X)===!1)return this;let J;if(X.seen[this.id]=()=>J,this.hasKind("structure")&&this.undeclared!==X.undeclaredKeyHandling)X={...X,undeclaredKeyHandling:this.undeclared};let G=w0(this.inner,(H,K)=>{if(!this.impl.keys[H].child)return[H,K];let z=K;if(!G6(z)){let $=z._transform(Q,X);return $?[H,$]:[]}if(z.length===0)return[H,K];let W=z.flatMap(($)=>{return $._transform(Q,X)??[]});return W.length?[H,W]:[]});delete X.seen[this.id];let Y=Q(this.kind,G,X);if(Y===null)return null;if(F6(Y))return J=Y;if(O9(Y)&&!O9(this.inner))return null;if((this.kind==="required"||this.kind==="optional"||this.kind==="index")&&!("value"in Y))return X.undeclaredKeyHandling?{...Y,value:E1.intrinsic.unknown}:null;if(this.kind==="morph")Y.in??=E1.intrinsic.unknown;return J=Z.node(this.kind,Y,X.parseOptions)}configureShallowDescendants(Q){return this.$.finalize(this.transform((X,Z)=>({...Z,meta:Q}),{shouldTransform:(X)=>X.kind!=="structure"}))}}var gw=(Q)=>d4(Q,{stringifyNonKey:(X)=>X.expression}),w9=(Q,X)=>({path:Q,node:X,propString:gw(Q)}),hw=(Q,X)=>Q.propString===X.propString&&Q.node.equals(X.node),pZ=(Q,X)=>FQ(Q,X,{isEqual:hw}),fw=(Q,X)=>FQ(Q,X,{isEqual:(Z,J)=>Z.equals(J)});class p1 extends Array{static init(Q,X,Z,J){return new p1({kind:Q,l:X,r:Z,path:J?.path??[],optional:J?.optional??!1})}add(Q,X,Z,J){return this.push({kind:Q,l:X,r:Z,path:J?.path??[],optional:J?.optional??!1}),this}describeReasons(){if(this.length===1){let{path:Q,l:X,r:Z}=this[0],J=d4(Q);return JH(`Intersection${J&&` at ${J}`} of ${pU(X,Z)}`)}return`The following intersections result in unsatisfiable types: +• ${this.map(({path:Q,l:X,r:Z})=>`${Q}: ${pU(X,Z)}`).join(` +• `)}`}throw(){return I1(this.describeReasons())}invert(){return this.map((Q)=>({...Q,l:Q.r,r:Q.l}))}withPrefixKey(Q,X){return this.map((Z)=>({...Z,path:[Q,...Z.path],optional:Z.optional||X==="optional"}))}toNeverIfDisjoint(){return E1.intrinsic.never}}var pU=(Q,X)=>`${XH(Q)} and ${XH(X)}`,XH=(Q)=>F6(Q)?Q.expression:G6(Q)?Q.map(XH).join(" | ")||"never":String(Q),JH=(Q)=>`${Q} results in an unsatisfiable type`;var lZ={},i8=(Q,X,Z)=>$6(Q,X,{$:Z,invert:!1,pipe:!1}),YH=(Q,X,Z)=>$6(Q,X,{$:Z,invert:!1,pipe:!0}),$6=(Q,X,Z)=>{let J=Z.pipe?"|>":"&",G=`${Q.hash}${J}${X.hash}`;if(lZ[G]!==void 0)return lZ[G];if(!Z.pipe){let K=`${X.hash}${J}${Q.hash}`;if(lZ[K]!==void 0){let z=lZ[K],W=z instanceof p1?z.invert():z;return lZ[G]=W,W}}let Y=!Z.pipe||!Q.includesMorph&&!X.includesMorph;if(Y&&Q.equals(X))return Q;let H=Y?GH(Q,X,Z):Q.hasKindIn(..._Z)?bw(Q,X,Z):GH(Q,X,Z);if(F6(H)){if(Q.equals(H))H=Q;else if(X.equals(H))H=X}return lZ[G]=H,H},GH=(Q,X,Z)=>{let J=Q.precedenceQ.includesMorph||X.includesMorph?Z.invert?lU(X,Q,Z):lU(Q,X,Z):GH(Q,X,Z),lU=(Q,X,Z)=>Q.distribute((J)=>mw(J,X,Z),(J)=>{let G=J.filter(F6);if(G.length===0)return p1.init("union",Q.branches,X.branches);if(G.lengthK.in.equals(G[z].in)))return Z.$.parseSchema(G);let Y;if(G.length===1){let K=G[0];if(!Y)return K;return Z.$.node("morph",{...K.inner,in:K.in.withMeta(Y)})}let H={branches:G};if(Y)H.meta=Y;return Z.$.parseSchema(H)}),mw=(Q,X,Z)=>{if(Q.hasKind("morph")){let G=[...Q.morphs];if(Q.lastMorphIfNode){let Y=$6(Q.lastMorphIfNode,X,Z);if(Y instanceof p1)return Y;G[G.length-1]=Y}else G.push(X);return Z.$.node("morph",{morphs:G,in:Q.inner.in})}if(X.hasKind("morph")){let G=$6(Q,X.in,Z);if(G instanceof p1)return G;return Z.$.node("morph",{morphs:[X],in:G})}return Z.$.node("morph",{morphs:[X],in:Q})};class W9 extends g7{constructor(Q,X){super(Q,X);Object.defineProperty(this,I8,{value:"constraint",enumerable:!1})}impliedSiblings;intersect(Q){return i8(this,Q,this.$)}}class NQ extends W9{traverseApply=(Q,X)=>{if(!this.traverseAllows(Q,X))X.error(this.errorContext)};compile(Q){if(Q.traversalKind==="Allows")Q.return(this.compiledCondition);else Q.if(this.compiledNegation,()=>Q.line(`${Q.ctx}.error(${this.compiledErrorContext})`))}get errorContext(){return{code:this.kind,description:this.description,...this.inner}}get compiledErrorContext(){return uQ(this.errorContext)}}var J8=(Q)=>(X,Z)=>{if(G6(X)){if(X.length===0)return;let G=X.map((Y)=>Z.$.node(Q,Y));if(Q==="predicate")return G;return G.sort((Y,H)=>Y.hash{let X=Q.r.shift();if(!X){let J=Q.l.length===0&&Q.kind==="structure"?E1.intrinsic.unknown.internal:Q.ctx.$.node(Q.kind,Object.assign(Q.baseInner,_w(Q.l)),{prereduced:!0});for(let G of Q.roots){if(J instanceof p1)return J;J=$6(G,J,Q.ctx)}return J}let Z=!1;for(let J=0;JFQ(Q.r,J));return cZ(Q)},iZ=(Q)=>{return Object.entries(Q).flatMap(([Z,J])=>(Z in EJ)?J:[]).sort((Z,J)=>Z.precedenceJ.precedence?1:Z.kind==="predicate"&&J.kind==="predicate"?0:Z.hash{let X={};for(let Z of Q)if(Z.hasOpenIntersection())X[Z.kind]=h0(X[Z.kind],Z);else{if(X[Z.kind])return a0(`Unexpected intersection of closed refinements of kind ${Z.kind}`);X[Z.kind]=Z}return X},cU=(...Q)=>I1(iU(...Q)),iU=(Q,X,Z)=>`${MU(Q)} operand must be ${X.description} (was ${Z.exclude(X).description})`;var nU=(Q,X,Z)=>new pQ(Q,X,Z,Z,null);class kJ extends _Q{}class pQ extends _Q{[I8]="generic";paramDefs;bodyDef;$;arg$;baseInstantiation;hkt;description;constructor(Q,X,Z,J,G){super((...Y)=>{let H=w0(this.names,(K,z)=>{let W=this.arg$.parse(Y[K]);if(!W.extends(this.constraints[K]))I1(dw(z,this.constraints[K].expression,W.expression));return[z,W]});if(this.defIsLazy()){let K=this.bodyDef(H);return this.$.parse(K)}return this.$.parse(X,{args:H})});this.paramDefs=Q,this.bodyDef=X,this.$=Z,this.arg$=J,this.hkt=G,this.description=G?new G().description??`a generic type for ${G.constructor.name}`:"a generic type",this.baseInstantiation=this(...this.constraints)}defIsLazy(){return this.bodyDef instanceof kJ}cacheGetter(Q,X){return Object.defineProperty(this,Q,{value:X}),X}get json(){return this.cacheGetter("json",{params:this.params.map((Q)=>Q[1].isUnknown()?Q[0]:[Q[0],Q[1].json]),body:vU(this.bodyDef)})}get params(){return this.cacheGetter("params",this.paramDefs.map((Q)=>typeof Q==="string"?[Q,E1.intrinsic.unknown]:[Q[0],this.$.parse(Q[1])]))}get names(){return this.cacheGetter("names",this.params.map((Q)=>Q[0]))}get constraints(){return this.cacheGetter("constraints",this.params.map((Q)=>Q[1]))}get internal(){return this}get referencesById(){return this.baseInstantiation.internal.referencesById}get references(){return this.baseInstantiation.internal.references}}var dw=(Q,X,Z)=>`${Q} must be assignable to ${X} (was ${Z})`;var N6=(Q)=>{let X=typeof Q==="string"?{description:Q}:Q,Z=`${X.description} is not convertible to JSON Schema`;if(X.reason)Z+=` because ${X.reason}`;return Z},oU=(Q)=>N6({description:`Morph ${Q}`,reason:"it represents a transformation, while JSON Schema only allows validation. Consider creating a Schema from one of its endpoints using `.in` or `.out`."}),aU=(Q)=>N6({description:Q,reason:"cyclic types are not yet convertible to JSON Schema. If this feature is important to you, please add your feedback at https://github.com/arktypeio/arktype/issues/1087"}),lQ=(Q,X)=>a0(`Unexpected JSON Schema input for ${Q}: ${O0(X)}`);var uw=N0({kind:"predicate",hasAssociatedError:!0,collapsibleKey:"predicate",keys:{predicate:{}},normalize:(Q)=>typeof Q==="function"?{predicate:Q}:Q,defaults:{description:(Q)=>`valid according to ${Q.predicate.name||"an anonymous predicate"}`},intersectionIsOpen:!0,intersections:{predicate:()=>null}});class sU extends W9{serializedPredicate=g6(this.predicate);compiledCondition=`${this.serializedPredicate}(data, ctx)`;compiledNegation=`!${this.compiledCondition}`;impliedBasis=null;expression=this.serializedPredicate;traverseAllows=this.predicate;errorContext={code:"predicate",description:this.description};compiledErrorContext=uQ(this.errorContext);traverseApply=(Q,X)=>{if(!this.predicate(Q,X)&&!X.hasError())X.error(this.errorContext)};compile(Q){if(Q.traversalKind==="Allows"){Q.return(this.compiledCondition);return}Q.if(`${this.compiledNegation} && !ctx.hasError()`,()=>Q.line(`ctx.error(${this.compiledErrorContext})`))}reduceJsonSchema(){return I1(N6({description:`Predicate ${this.expression}`}))}}var WH={implementation:uw,Node:sU};var pw=N0({kind:"divisor",collapsibleKey:"rule",keys:{rule:{}},normalize:(Q)=>typeof Q==="number"?{rule:Q}:Q,hasAssociatedError:!0,defaults:{description:(Q)=>Q.rule===1?"an integer":`a multiple of ${Q.rule}`},intersections:{divisor:(Q,X,Z)=>Z.$.node("divisor",{rule:Math.abs(Q.rule*X.rule/lw(Q.rule,X.rule))})}});class tU extends NQ{traverseAllows=(Q)=>Q%this.rule===0;compiledCondition=`data % ${this.rule} === 0`;compiledNegation=`data % ${this.rule} !== 0`;impliedBasis=E1.intrinsic.number.internal;expression=`% ${this.rule}`;reduceJsonSchema(Q){if(Q.type="integer",this.rule===1)return Q;return Q.multipleOf=this.rule,Q}}var qH={implementation:pw,Node:tU};var lw=(Q,X)=>{let Z,J=Q,G=X;while(G!==0)Z=G,G=J%G,J=Z;return J};class n8 extends NQ{boundOperandKind=ow[this.kind];compiledActual=this.boundOperandKind==="value"?"data":this.boundOperandKind==="length"?"data.length":"data.valueOf()";comparator=aw(this.kind,this.exclusive);numericLimit=this.rule.valueOf();expression=`${this.comparator} ${this.rule}`;compiledCondition=`${this.compiledActual} ${this.comparator} ${this.numericLimit}`;compiledNegation=`${this.compiledActual} ${cw[this.comparator]} ${this.numericLimit}`;stringLimit=this.boundOperandKind==="date"?sw(this.numericLimit):`${this.numericLimit}`;limitKind=this.comparator["0"]==="<"?"upper":"lower";isStricterThan(Q){return(this.limitKind==="upper"?this.numericLimitQ.numericLimit)||this.numericLimit===Q.numericLimit&&this.exclusive===!0&&!Q.exclusive}overlapsRange(Q){if(this.isStricterThan(Q))return!1;if(this.numericLimit===Q.numericLimit&&(this.exclusive||Q.exclusive))return!1;return!0}overlapIsUnit(Q){return this.numericLimit===Q.numericLimit&&!this.exclusive&&!Q.exclusive}}var cw={"<":">=","<=":">",">":"<=",">=":"<"},iw={min:"max",minLength:"maxLength",after:"before"},yJ={parse:(Q)=>Q||void 0},xJ=(Q)=>(X)=>{if(typeof X==="number")return{rule:X};let{exclusive:Z,...J}=X;return Z?{...J,rule:Q==="minLength"?J.rule+1:J.rule-1}:J},vJ=(Q)=>(X)=>{if(typeof X==="number"||typeof X==="string"||X instanceof Date)return{rule:X};let{exclusive:Z,...J}=X;if(!Z)return J;let G=typeof J.rule==="number"?J.rule:typeof J.rule==="string"?new Date(J.rule).valueOf():J.rule.valueOf();return Z?{...J,rule:Q==="after"?G+1:G-1}:J},gJ=(Q)=>typeof Q==="string"||typeof Q==="number"?new Date(Q):Q,nw=(Q,X)=>`${Q} bound must be a positive integer (was ${X})`,nZ=(Q)=>(X)=>{if(!Number.isInteger(X)||X<0)I1(nw(Q,X));return X},ow={min:"value",max:"value",minLength:"length",maxLength:"length",after:"date",before:"date"},aw=(Q,X)=>`${a6(Q,iw)?">":"<"}${X?"":"="}`,sw=(Q)=>typeof Q==="string"?Q:new Date(Q).toLocaleString(),rU=(Q)=>`Bounded expression ${Q} must be exactly one of number, string, Array, or Date`;var tw=N0({kind:"after",collapsibleKey:"rule",hasAssociatedError:!0,keys:{rule:{parse:gJ,serialize:(Q)=>Q.toISOString()}},normalize:vJ("after"),defaults:{description:(Q)=>`${Q.collapsibleLimitString} or later`,actual:_4},intersections:{after:(Q,X)=>Q.isStricterThan(X)?Q:X}});class eU extends n8{impliedBasis=E1.intrinsic.Date.internal;collapsibleLimitString=_4(this.rule);traverseAllows=(Q)=>Q>=this.rule;reduceJsonSchema(){return I1(N6("Date instance"))}}var HH={implementation:tw,Node:eU};var rw=N0({kind:"before",collapsibleKey:"rule",hasAssociatedError:!0,keys:{rule:{parse:gJ,serialize:(Q)=>Q.toISOString()}},normalize:vJ("before"),defaults:{description:(Q)=>`${Q.collapsibleLimitString} or earlier`,actual:_4},intersections:{before:(Q,X)=>Q.isStricterThan(X)?Q:X,after:(Q,X,Z)=>Q.overlapsRange(X)?Q.overlapIsUnit(X)?Z.$.node("unit",{unit:Q.rule}):null:p1.init("range",Q,X)}});class QV extends n8{collapsibleLimitString=_4(this.rule);traverseAllows=(Q)=>Q<=this.rule;impliedBasis=E1.intrinsic.Date.internal;reduceJsonSchema(){return I1(N6("Date instance"))}}var zH={implementation:rw,Node:QV};var ew=N0({kind:"exactLength",collapsibleKey:"rule",keys:{rule:{parse:nZ("exactLength")}},normalize:(Q)=>typeof Q==="number"?{rule:Q}:Q,hasAssociatedError:!0,defaults:{description:(Q)=>`exactly length ${Q.rule}`,actual:(Q)=>`${Q.length}`},intersections:{exactLength:(Q,X,Z)=>p1.init("unit",Z.$.node("unit",{unit:Q.rule}),Z.$.node("unit",{unit:X.rule}),{path:["length"]}),minLength:(Q,X)=>Q.rule>=X.rule?Q:p1.init("range",Q,X),maxLength:(Q,X)=>Q.rule<=X.rule?Q:p1.init("range",Q,X)}});class ZV extends NQ{traverseAllows=(Q)=>Q.length===this.rule;compiledCondition=`data.length === ${this.rule}`;compiledNegation=`data.length !== ${this.rule}`;impliedBasis=E1.intrinsic.lengthBoundable.internal;expression=`== ${this.rule}`;reduceJsonSchema(Q){switch(Q.type){case"string":return Q.minLength=this.rule,Q.maxLength=this.rule,Q;case"array":return Q.minItems=this.rule,Q.maxItems=this.rule,Q;default:return lQ("exactLength",Q)}}}var KH={implementation:ew,Node:ZV};var QE=N0({kind:"max",collapsibleKey:"rule",hasAssociatedError:!0,keys:{rule:{},exclusive:yJ},normalize:(Q)=>typeof Q==="number"?{rule:Q}:Q,defaults:{description:(Q)=>`${Q.exclusive?"less than":"at most"} ${Q.rule}`},intersections:{max:(Q,X)=>Q.isStricterThan(X)?Q:X,min:(Q,X,Z)=>Q.overlapsRange(X)?Q.overlapIsUnit(X)?Z.$.node("unit",{unit:Q.rule}):null:p1.init("range",Q,X)}});class XV extends n8{impliedBasis=E1.intrinsic.number.internal;traverseAllows=this.exclusive?(Q)=>QQ<=this.rule;reduceJsonSchema(Q){if(this.exclusive)Q.exclusiveMaximum=this.rule;else Q.maximum=this.rule;return Q}}var $H={implementation:QE,Node:XV};var ZE=N0({kind:"maxLength",collapsibleKey:"rule",hasAssociatedError:!0,keys:{rule:{parse:nZ("maxLength")}},reduce:(Q,X)=>Q.rule===0?X.node("exactLength",Q):void 0,normalize:xJ("maxLength"),defaults:{description:(Q)=>`at most length ${Q.rule}`,actual:(Q)=>`${Q.length}`},intersections:{maxLength:(Q,X)=>Q.isStricterThan(X)?Q:X,minLength:(Q,X,Z)=>Q.overlapsRange(X)?Q.overlapIsUnit(X)?Z.$.node("exactLength",{rule:Q.rule}):null:p1.init("range",Q,X)}});class JV extends n8{impliedBasis=E1.intrinsic.lengthBoundable.internal;traverseAllows=(Q)=>Q.length<=this.rule;reduceJsonSchema(Q){switch(Q.type){case"string":return Q.maxLength=this.rule,Q;case"array":return Q.maxItems=this.rule,Q;default:return lQ("maxLength",Q)}}}var BH={implementation:ZE,Node:JV};var XE=N0({kind:"min",collapsibleKey:"rule",hasAssociatedError:!0,keys:{rule:{},exclusive:yJ},normalize:(Q)=>typeof Q==="number"?{rule:Q}:Q,defaults:{description:(Q)=>`${Q.exclusive?"more than":"at least"} ${Q.rule}`},intersections:{min:(Q,X)=>Q.isStricterThan(X)?Q:X}});class GV extends n8{impliedBasis=E1.intrinsic.number.internal;traverseAllows=this.exclusive?(Q)=>Q>this.rule:(Q)=>Q>=this.rule;reduceJsonSchema(Q){if(this.exclusive)Q.exclusiveMinimum=this.rule;else Q.minimum=this.rule;return Q}}var UH={implementation:XE,Node:GV};var JE=N0({kind:"minLength",collapsibleKey:"rule",hasAssociatedError:!0,keys:{rule:{parse:nZ("minLength")}},reduce:(Q)=>Q.rule===0?E1.intrinsic.unknown:void 0,normalize:xJ("minLength"),defaults:{description:(Q)=>Q.rule===1?"non-empty":`at least length ${Q.rule}`,actual:(Q)=>Q.length===0?"":`${Q.length}`},intersections:{minLength:(Q,X)=>Q.isStricterThan(X)?Q:X}});class YV extends n8{impliedBasis=E1.intrinsic.lengthBoundable.internal;traverseAllows=(Q)=>Q.length>=this.rule;reduceJsonSchema(Q){switch(Q.type){case"string":return Q.minLength=this.rule,Q;case"array":return Q.minItems=this.rule,Q;default:return lQ("minLength",Q)}}}var VH={implementation:JE,Node:YV};var WV={min:UH.implementation,max:$H.implementation,minLength:VH.implementation,maxLength:BH.implementation,exactLength:KH.implementation,after:HH.implementation,before:zH.implementation},qV={min:UH.Node,max:$H.Node,minLength:VH.Node,maxLength:BH.Node,exactLength:KH.Node,after:HH.Node,before:zH.Node};var GE=N0({kind:"pattern",collapsibleKey:"rule",keys:{rule:{},flags:{}},normalize:(Q)=>typeof Q==="string"?{rule:Q}:Q instanceof RegExp?Q.flags?{rule:Q.source,flags:Q.flags}:{rule:Q.source}:Q,hasAssociatedError:!0,intersectionIsOpen:!0,defaults:{description:(Q)=>`matched by ${Q.rule}`},intersections:{pattern:()=>null}});class HV extends NQ{instance=new RegExp(this.rule,this.flags);expression=`${this.instance}`;traverseAllows=this.instance.test.bind(this.instance);compiledCondition=`${this.expression}.test(data)`;compiledNegation=`!${this.compiledCondition}`;impliedBasis=E1.intrinsic.string.internal;reduceJsonSchema(Q){if(Q.pattern)return I1(N6(`Intersection of patterns ${Q.pattern} & ${this.rule}`));return Q.pattern=this.rule,Q}}var PH={implementation:GE,Node:HV};var h7=(Q,X)=>{let Z=YE(Q);if(X&&!X.includes(Z))return I1(`Root of kind ${Z} should be one of ${X}`);return Z},YE=(Q)=>{if(r1(Q,"root"))return Q.kind;if(typeof Q==="string")return Q[0]==="$"?"alias":"domain";if(typeof Q==="function")return"proto";if(typeof Q!=="object"||Q===null)return I1(zV(Q));if("morphs"in Q)return"morph";if("branches"in Q||G6(Q))return"union";if("unit"in Q)return"unit";if("reference"in Q)return"alias";let X=Object.keys(Q);if(X.length===0||X.some((Z)=>(Z in EJ)))return"intersection";if("proto"in Q)return"proto";if("domain"in Q)return"domain";return I1(zV(Q))},zV=(Q)=>`${O0(Q)} is not a valid type schema`,KV={},WE=(Q)=>G6(Q)?Q.map((X)=>X.collapsibleJson):Q.collapsibleJson,F8={};E1.nodesByRegisteredId=F8;var FH=(Q)=>{return KV[Q]??=0,`${Q}${++KV[Q]}`},DH=(Q)=>{let X=oZ[Q.kind],Z={},{meta:J,...G}=Q.def,Y=J===void 0?{}:typeof J==="string"?{description:J}:J,H=d3(G).sort(([z],[W])=>dZ(z)?dZ(W)?uZ(z)-uZ(W):1:dZ(W)?-1:z{if(z.startsWith("meta.")){let $=z.slice(5);return Y[$]=W,!1}return!0});for(let z of H){let W=z[0],$=X.keys[W];if(!$)return I1(`Key ${W} is not valid on ${Q.kind} schema`);let q=$.parse?$.parse(z[1],Q):z[1];if(q!==h4&&(q!==void 0||$.preserveUndefined))Z[W]=q}if(X.reduce&&!Q.prereduced){let z=X.reduce(Z,Q.$);if(z){if(z instanceof p1)return z.throw();return qE(z,Y)}}return LH(Q.id,Q.kind,Z,Y,Q.$)},LH=(Q,X,Z,J,G,Y)=>{let H=oZ[X],K=d3(Z),z=[],W={};if(K.forEach(([C,L])=>{let V=H.keys[C],M=V.serialize??(V.child?WE:CQ);if(W[C]=M(L),V.child===!0){let I=L;if(G6(I))z.push(...I);else z.push(I)}else if(typeof V.child==="function")z.push(...V.child(L))}),H.finalizeInnerJson)W=H.finalizeInnerJson(W);let $={...W},q={};if(!O9(J))q=w0(J,(C,L)=>[C,C==="examples"?L:CQ(L)]),$.meta=hJ(q,"description",!0);W=hJ(W,H.collapsibleKey,!1);let B=JSON.stringify({kind:X,...W});$=hJ($,H.collapsibleKey,!1);let D=hJ($,H.collapsibleKey,!0),F=JSON.stringify({kind:X,...$});if(G.nodesByHash[F]&&!Y)return G.nodesByHash[F];let P={id:Q,kind:X,impl:H,inner:Z,innerEntries:K,innerJson:W,innerHash:B,meta:J,metaJson:q,json:$,hash:F,collapsibleJson:D,children:z};for(let C in Z)if(C!=="in"&&C!=="out")P[C]=Z[C];let N=new BV[X](P,G);return G.nodesByHash[F]=N},$V=(Q,X)=>{if(Q.id===X)return Q;if(F6(F8[X]))a0(`Unexpected attempt to overwrite node id ${X}`);return LH(X,Q.kind,Q.inner,Q.meta,Q.$,!0)},qE=(Q,X,Z)=>{if(Z&&F6(F8[Z]))a0(`Unexpected attempt to overwrite node id ${Z}`);return LH(Z??FH(X.alias??Q.kind),Q.kind,Q.inner,X,Q.$)},hJ=(Q,X,Z)=>{let J=Object.keys(Q);if(J.length===1&&J[0]===X){let G=Q[X];if(Z)return G;if(M8(G,"object")&&(Object.keys(G).length===1||Array.isArray(G)))return G}return Q};var f7=(Q,X,Z)=>{if(Q.key!==X.key)return null;let J=Q.key,G=$6(Q.value,X.value,Z),Y=Q.required||X.required?"required":"optional";if(G instanceof p1)if(Y==="optional")G=E1.intrinsic.never.internal;else return G.withPrefixKey(Q.key,Q.required&&X.required?"required":"optional");if(Y==="required")return Z.$.node("required",{key:J,value:G});let H=Q.hasDefault()?X.hasDefault()?Q.default===X.default?Q.default:I1(CH(Q.default,X.default)):Q.default:X.hasDefault()?X.default:h4;return Z.$.node("optional",{key:J,value:G,default:H})};class b7 extends W9{required=this.kind==="required";optional=this.kind==="optional";impliedBasis=E1.intrinsic.object.internal;serializedKey=LQ(this.key);compiledKey=typeof this.key==="string"?this.key:this.serializedKey;get flatRefs(){return h0(this.value.flatRefs.map((Q)=>w9([this.key,...Q.path],Q.node)),w9([this.key],this.value))}_transform(Q,X){X.path.push(this.key);let Z=super._transform(Q,X);return X.path.pop(),Z}hasDefault(){return"default"in this.inner}traverseAllows=(Q,X)=>{if(this.key in Q)return A8(this.key,()=>this.value.traverseAllows(Q[this.key],X),X);return this.optional};traverseApply=(Q,X)=>{if(this.key in Q)A8(this.key,()=>this.value.traverseApply(Q[this.key],X),X);else if(this.hasKind("required"))X.error(this.errorContext);else if(this.hasDefault())X.queueMorphs(this.defaultValueMorphs)};compile(Q){if(Q.if(`${this.serializedKey} in data`,()=>Q.traverseKey(this.serializedKey,`data${Q.prop(this.key)}`,this.value)),this.hasKind("required"))Q.else(()=>{if(Q.traversalKind==="Apply")return Q.line(`ctx.error(${this.compiledErrorContext})`);else return Q.return(!1)});else if(Q.traversalKind==="Apply"&&this.hasDefault())Q.else(()=>Q.line(`ctx.queueMorphs(${this.defaultValueMorphsReference})`));if(Q.traversalKind==="Allows")Q.return(!0)}}var CH=(Q,X)=>`Invalid intersection of default values ${O0(Q)} & ${O0(X)}`;var HE=N0({kind:"optional",hasAssociatedError:!1,intersectionIsOpen:!0,keys:{key:{},value:{child:!0,parse:(Q,X)=>X.$.parseSchema(Q)},default:{preserveUndefined:!0}},normalize:(Q)=>Q,defaults:{description:(Q)=>`${Q.compiledKey}?: ${Q.value.description}`},intersections:{optional:f7}});class UV extends b7{constructor(...Q){super(...Q);if("default"in this.inner)_7(this.value,this.inner.default,this.key)}get outProp(){if(!this.hasDefault())return this;let{default:Q,...X}=this.inner;return this.cacheGetter("outProp",this.$.node("required",X,{prereduced:!0}))}expression=this.hasDefault()?`${this.compiledKey}: ${this.value.expression} = ${O0(this.inner.default)}`:`${this.compiledKey}?: ${this.value.expression}`;defaultValueMorphs=this.hasDefault()?NH(this.key,this.value,this.default):[];defaultValueMorphsReference=g6(this.defaultValueMorphs)}var m7={implementation:HE,Node:UV},NH=(Q,X,Z)=>{if(typeof Z==="function")return[X.includesMorph?(G,Y)=>{return A8(Q,()=>X(G[Q]=Z(),Y),Y),G}:(G)=>{return G[Q]=Z(),G}];let J=X.includesMorph?X.assert(Z):Z;return[M8(J,"object")?(G,Y)=>{return A8(Q,()=>X(G[Q]=Z,Y),Y),G}:(G)=>{return G[Q]=J,G}]},_7=(Q,X,Z)=>{let J=mQ(X);if(M8(X,"object")&&!J)I1(zE(Z));let G=Q.in(J?X():X);if(G instanceof R8){if(Z!==null)G.forEach((H)=>H.path.unshift(Z));let Y=Z===null?`Default ${G.message}`:`Default for ${G.message}`;I1(Y)}return X},zE=(Q)=>{return`Non-primitive default ${Q===null?"":typeof Q==="number"?`for value at [${Q}] `:`for ${LQ(Q)} `}must be specified as a function like () => ({my: 'object'})`};class q9 extends g7{constructor(Q,X){super(Q,X);Object.defineProperty(this,I8,{value:"root",enumerable:!1})}assert=(Q)=>{let X=this.traverse(Q);return X instanceof R8?X.throw():X};get internal(){return this}get "~standard"(){return{vendor:"arktype",version:1,validate:(Q)=>{let X=this(Q);if(X instanceof R8)return X;return{value:X}}}}as(){return this}brand(Q){if(Q==="")return I1(KE);return this}brandAttributes(){return this}unbrandAttributes(){return this}readonly(){return this}branches=this.hasKind("union")?this.inner.branches:[this];distribute(Q,X){let Z=this.branches.map(Q);return X?.(Z)??Z}toJsonSchema(){let Q=this.innerToJsonSchema();return Object.assign(Q,this.metaJson)}intersect(Q){let X=this.$.parseDefinition(Q),Z=this.rawIntersect(X);if(Z instanceof p1)return Z;return this.$.finalize(Z)}rawIntersect(Q){return i8(this,Q,this.$)}toNeverIfDisjoint(){return this}and(Q){let X=this.intersect(Q);return X instanceof p1?X.throw():X}rawAnd(Q){let X=this.rawIntersect(Q);return X instanceof p1?X.throw():X}or(Q){let X=this.$.parseDefinition(Q);return this.$.finalize(this.rawOr(X))}rawOr(Q){let X=[...this.branches,...Q.branches];return this.$.node("union",X)}map(Q){return this.$.schema(this.applyStructuralOperation("map",[Q]))}pick(...Q){return this.$.schema(this.applyStructuralOperation("pick",Q))}omit(...Q){return this.$.schema(this.applyStructuralOperation("omit",Q))}required(){return this.$.schema(this.applyStructuralOperation("required",[]))}partial(){return this.$.schema(this.applyStructuralOperation("partial",[]))}_keyof;keyof(){if(this._keyof)return this._keyof;let Q=this.applyStructuralOperation("keyof",[]).reduce((X,Z)=>X.intersect(Z).toNeverIfDisjoint(),E1.intrinsic.unknown.internal);if(Q.branches.length===0)I1(JH(`keyof ${this.expression}`));return this._keyof=this.$.finalize(Q)}get props(){if(this.branches.length!==1)return I1($E(this.expression));return[...this.applyStructuralOperation("props",[])[0]]}merge(Q){let X=this.$.parseDefinition(Q);return this.$.schema(X.distribute((Z)=>this.applyStructuralOperation("merge",[VV(Z)??I1(PV("merge",Z.expression))])))}applyStructuralOperation(Q,X){return this.distribute((Z)=>{if(Z.equals(E1.intrinsic.object)&&Q!=="merge")return Z;let J=VV(Z);if(!J)I1(PV(Q,Z.expression));if(Q==="keyof")return J.keyof();if(Q==="get")return J.get(...X);if(Q==="props")return J.props;let G=Q==="required"?"require":Q==="partial"?"optionalize":Q;return this.$.node("intersection",{...Z.inner,structure:J[G](...X)})})}get(...Q){if(Q[0]===void 0)return this;return this.$.schema(this.applyStructuralOperation("get",Q))}extract(Q){let X=this.$.parseDefinition(Q);return this.$.schema(this.branches.filter((Z)=>Z.extends(X)))}exclude(Q){let X=this.$.parseDefinition(Q);return this.$.schema(this.branches.filter((Z)=>!Z.extends(X)))}array(){return this.$.schema({proto:Array,sequence:this},{prereduced:!0})}overlaps(Q){return!(this.intersect(Q)instanceof p1)}extends(Q){let X=this.intersect(Q);return!(X instanceof p1)&&this.equals(X)}ifExtends(Q){return this.extends(Q)?this:void 0}subsumes(Q){return this.$.parseDefinition(Q).extends(this)}configure(Q){return this.configureShallowDescendants(Q)}describe(Q){return this.configure({description:Q})}optional(){return[this,"?"]}default(Q){return _7(this,Q,null),[this,"=",Q]}from(Q){return this.assert(Q)}_pipe(...Q){return Q.reduce((X,Z)=>X.pipeOnce(Z),this)}tryPipe(...Q){return Q.reduce((X,Z)=>X.pipeOnce(r1(Z,"root")?Z:(J,G)=>{try{return Z(J,G)}catch(Y){return G.error({code:"predicate",predicate:Z,actual:`aborted due to error: + ${Y} +`})}}),this)}pipe=Object.assign(this._pipe.bind(this),{try:this.tryPipe.bind(this)});to(Q){return this.$.finalize(this.toNode(this.$.parseDefinition(Q)))}toNode(Q){let X=YH(this,Q,this.$);if(X instanceof p1)return X.throw();return X}pipeOnce(Q){if(r1(Q,"root"))return this.toNode(Q);return this.distribute((X)=>X.hasKind("morph")?this.$.node("morph",{in:X.inner.in,morphs:[...X.morphs,Q]}):this.$.node("morph",{in:X,morphs:[Q]}),this.$.parseSchema)}get flatMorphs(){return this.cacheGetter("flatMorphs",this.flatRefs.reduce((Q,X)=>pZ(Q,X.node.hasKind("union")?X.node.branches.filter((Z)=>Z.hasKind("morph")).map((Z)=>({path:X.path,propString:X.propString,node:Z})):X.node.hasKind("morph")?X:[]),[]))}narrow(Q){return this.constrainOut("predicate",Q)}constrain(Q,X){return this._constrain("root",Q,X)}constrainIn(Q,X){return this._constrain("in",Q,X)}constrainOut(Q,X){return this._constrain("out",Q,X)}_constrain(Q,X,Z){let J=this.$.node(X,Z);if(J.isRoot())return J.isUnknown()?this:a0(`Unexpected constraint node ${J}`);let G=Q==="root"?this:this[Q];if(G.hasKind("morph")||J.impliedBasis&&!G.extends(J.impliedBasis))return cU(X,J.impliedBasis,this);let Y=this.$.node("intersection",{[J.kind]:J}),H=Q==="out"?YH(this,Y,this.$):i8(this,Y,this.$);if(H instanceof p1)H.throw();return this.$.finalize(H)}onUndeclaredKey(Q){let X=typeof Q==="string"?Q:Q.rule,Z=typeof Q==="string"?!1:Q.deep;return this.$.finalize(this.transform((J,G)=>J==="structure"?X==="ignore"?UU(G,{undeclared:1}):{...G,undeclared:X}:G,Z?void 0:{shouldTransform:(J)=>!PQ(mZ,J.kind)}))}onDeepUndeclaredKey(Q){return this.onUndeclaredKey({rule:Q,deep:!0})}satisfying(Q){return this.constrain("predicate",Q)}divisibleBy(Q){return this.constrain("divisor",Q)}matching(Q){return this.constrain("pattern",Q)}atLeast(Q){return this.constrain("min",Q)}atMost(Q){return this.constrain("max",Q)}moreThan(Q){return this.constrain("min",aZ(Q))}lessThan(Q){return this.constrain("max",aZ(Q))}atLeastLength(Q){return this.constrain("minLength",Q)}atMostLength(Q){return this.constrain("maxLength",Q)}moreThanLength(Q){return this.constrain("minLength",aZ(Q))}lessThanLength(Q){return this.constrain("maxLength",aZ(Q))}exactlyLength(Q){return this.constrain("exactLength",Q)}atOrAfter(Q){return this.constrain("after",Q)}atOrBefore(Q){return this.constrain("before",Q)}laterThan(Q){return this.constrain("after",aZ(Q))}earlierThan(Q){return this.constrain("before",aZ(Q))}}var KE="Expected a non-empty brand name after #",aZ=(Q)=>typeof Q==="object"&&!(Q instanceof Date)?{...Q,exclusive:!0}:{rule:Q,exclusive:!0},d7=(Q,X)=>r1(X,"root")?r1(Q,"root")?Q.extends(X):X.allows(Q):r1(Q,"root")?Q.hasUnit(X):X===Q,VV=(Q)=>{if(Q.hasKind("morph"))return null;if(Q.hasKind("intersection"))return Q.inner.structure??(Q.basis?.domain==="object"?Q.$.bindReference(E1.intrinsic.emptyStructure):null);if(Q.isBasis()&&Q.domain==="object")return Q.$.bindReference(E1.intrinsic.emptyStructure);return null},$E=(Q)=>`Props cannot be extracted from a union. Use .distribute to extract props from each branch instead. Received: +${Q}`,PV=(Q,X)=>`${Q} operand must be an object (was ${X})`;var o9=(Q,X)=>w0(jJ(Q),(Z,J)=>[J,X]);var BE=(Q)=>typeof Q==="string"?{reference:Q}:Q,FV=(Q)=>Q instanceof p1?E1.intrinsic.never.internal:Q,UE=N0({kind:"alias",hasAssociatedError:!1,collapsibleKey:"reference",keys:{reference:{serialize:(Q)=>Q.startsWith("$")?Q:`$ark.${Q}`},resolve:{}},normalize:BE,defaults:{description:(Q)=>Q.reference},intersections:{alias:(Q,X,Z)=>Z.$.lazilyResolve(()=>FV($6(Q.resolution,X.resolution,Z)),`${Q.reference}${Z.pipe?"=>":"&"}${X.reference}`),...o9("alias",(Q,X,Z)=>{if(X.isUnknown())return Q;if(X.isNever())return X;return Z.$.lazilyResolve(()=>FV($6(Q.resolution,X,Z)),`${Q.reference}${Z.pipe?"=>":"&"}${X.id}`)})}});class DV extends q9{expression=this.reference;structure=void 0;get resolution(){let Q=this._resolve();return F8[this.id]=Q}_resolve(){if(this.resolve)return this.resolve();if(this.reference[0]==="$")return this.$.resolveRoot(this.reference.slice(1));let Q=this.reference,X=F8[Q],Z=[];while(r1(X,"context")){if(Z.includes(X.id))return I1(VE(X.id,Z));Z.push(X.id),X=F8[X.id]}if(!r1(X,"root"))return a0(`Unexpected resolution for reference ${this.reference} +Seen: [${Z.join("->")}] +Resolution: ${O0(X)}`);return X}get resolutionId(){if(this.reference.includes("&")||this.reference.includes("=>"))return this.resolution.id;if(this.reference[0]!=="$")return this.reference;let Q=this.reference.slice(1),X=this.$.resolutions[Q];if(typeof X==="string")return X;if(r1(X,"root"))return X.id;return a0(`Unexpected resolution for reference ${this.reference}: ${O0(X)}`)}get shortDescription(){return Y9.object}innerToJsonSchema(){return I1(aU(this.expression))}traverseAllows=(Q,X)=>{let Z=X.seen[this.reference];if(Z?.includes(Q))return!0;return X.seen[this.reference]=h0(Z,Q),this.resolution.traverseAllows(Q,X)};traverseApply=(Q,X)=>{let Z=X.seen[this.reference];if(Z?.includes(Q))return;X.seen[this.reference]=h0(Z,Q),this.resolution.traverseApply(Q,X)};compile(Q){let X=this.resolutionId;Q.if(`ctx.seen.${X} && ctx.seen.${X}.includes(data)`,()=>Q.return(!0)),Q.if(`!ctx.seen.${X}`,()=>Q.line(`ctx.seen.${X} = []`)),Q.line(`ctx.seen.${X}.push(data)`),Q.return(Q.invoke(X))}}var VE=(Q,X)=>`Alias '${Q}' has a shallow resolution cycle: ${[...X,Q].join("->")}`,u7={implementation:UE,Node:DV};class l4 extends q9{traverseApply=(Q,X)=>{if(!this.traverseAllows(Q,X))X.error(this.errorContext)};get errorContext(){return{code:this.kind,description:this.description,...this.inner}}get compiledErrorContext(){return uQ(this.errorContext)}compile(Q){if(Q.traversalKind==="Allows")Q.return(this.compiledCondition);else Q.if(this.compiledNegation,()=>Q.line(`${Q.ctx}.error(${this.compiledErrorContext})`))}}var PE=N0({kind:"domain",hasAssociatedError:!0,collapsibleKey:"domain",keys:{domain:{}},normalize:(Q)=>typeof Q==="string"?{domain:Q}:Q,defaults:{description:(Q)=>Y9[Q.domain],actual:(Q)=>Y9[P8(Q)]},intersections:{domain:(Q,X)=>p1.init("domain",Q,X)}});class LV extends l4{traverseAllows=(Q)=>P8(Q)===this.domain;compiledCondition=this.domain==="object"?'((typeof data === "object" && data !== null) || typeof data === "function")':`typeof data === "${this.domain}"`;compiledNegation=this.domain==="object"?'((typeof data !== "object" || data === null) && typeof data !== "function")':`typeof data !== "${this.domain}"`;expression=this.domain;get shortDescription(){return Y9[this.domain]}innerToJsonSchema(){if(this.domain==="bigint"||this.domain==="symbol")return I1(N6(this.domain));return{type:this.domain}}}var TH={implementation:PE,Node:LV};var FE=N0({kind:"intersection",hasAssociatedError:!0,normalize:(Q)=>{if(F6(Q))return Q;let{structure:X,...Z}=Q,J=!!X,G=X??{},Y=w0(Z,(H,K)=>{if(a6(H,mU)){if(J)I1(`Flattened structure key ${H} cannot be specified alongside a root 'structure' key.`);return G[H]=K,[]}return[H,K]});if(r1(G,"constraint")||!O9(G))Y.structure=G;return Y},finalizeInnerJson:({structure:Q,...X})=>M8(Q,"object")?{...Q,...X}:X,keys:{domain:{child:!0,parse:(Q,X)=>X.$.node("domain",Q)},proto:{child:!0,parse:(Q,X)=>X.$.node("proto",Q)},structure:{child:!0,parse:(Q,X)=>X.$.node("structure",Q),serialize:(Q)=>{if(!Q.sequence?.minLength)return Q.collapsibleJson;let{sequence:X,...Z}=Q.collapsibleJson,{minVariadicLength:J,...G}=X,Y=G.variadic&&Object.keys(G).length===1?G.variadic:G;return{...Z,sequence:Y}}},divisor:{child:!0,parse:J8("divisor")},max:{child:!0,parse:J8("max")},min:{child:!0,parse:J8("min")},maxLength:{child:!0,parse:J8("maxLength")},minLength:{child:!0,parse:J8("minLength")},exactLength:{child:!0,parse:J8("exactLength")},before:{child:!0,parse:J8("before")},after:{child:!0,parse:J8("after")},pattern:{child:!0,parse:J8("pattern")},predicate:{child:!0,parse:J8("predicate")}},reduce:(Q,X)=>fJ({},Q,{$:X,invert:!1,pipe:!1}),defaults:{description:(Q)=>Q.children.length===0?"unknown":Q.structure?.description??Q.children.map((X)=>X.description).join(" and "),expected:(Q)=>` • ${Q.errors.map((X)=>X.expected).join(` + • `)}`,problem:(Q)=>`(${Q.actual}) must be... +${Q.expected}`},intersections:{intersection:(Q,X,Z)=>fJ(Q,X,Z),...o9("intersection",(Q,X,Z)=>{if(Q.children.length===0)return X;let{domain:J,proto:G,...Y}=Q.inner,H=G??J,K=H?$6(H,X,Z):X;return K instanceof p1?K:Q?.basis?.equals(K)?Q:Q.$.node("intersection",{...Y,[K.kind]:K},{prereduced:!0})})}});class CV extends q9{basis=this.domain??this.proto??null;refinements=this.children.filter((Q)=>Q.isRefinement());get expression(){let Q=this.structure?.expression||`${this.basis?this.basis.nestableExpression+" ":""}${this.refinements.join(" & ")}`||"unknown";if(Q==="Array == 0")Q="[]";return this.cacheGetter("expression",Q)}get shortDescription(){return this.basis?.shortDescription??"present"}innerToJsonSchema(){return this.children.reduce((Q,X)=>X.isBasis()?X.toJsonSchema():X.reduceJsonSchema(Q),{})}traverseAllows=(Q,X)=>this.children.every((Z)=>Z.traverseAllows(Q,X));traverseApply=(Q,X)=>{let Z=X.currentErrorCount;if(this.basis){if(this.basis.traverseApply(Q,X),X.currentErrorCount>Z)return}if(this.refinements.length){for(let J=0;JZ)return;if(this.refinements.at(-1).traverseApply(Q,X),X.currentErrorCount>Z)return}if(this.structure){if(this.structure.traverseApply(Q,X),X.currentErrorCount>Z)return}if(this.predicate){for(let J=0;JZ)return;this.predicate.at(-1).traverseApply(Q,X)}};compile(Q){if(Q.traversalKind==="Allows"){this.children.forEach((X)=>Q.check(X)),Q.return(!0);return}if(Q.initializeErrorCount(),this.basis){if(Q.check(this.basis),this.children.length>1)Q.returnIfFail()}if(this.refinements.length){for(let X=0;X{if(r1(Q,"root")&&Q.hasKind("intersection"))return fJ(Q.inner,X,Z);if(r1(X,"root")&&X.hasKind("intersection"))return fJ(Q,X.inner,Z);let J={},G=Q.proto??Q.domain,Y=X.proto??X.domain,H=G?Y?$6(G,Y,Z):G:Y;if(H instanceof p1)return H;if(H)J[H.kind]=H;return cZ({kind:"intersection",baseInner:J,l:iZ(Q),r:iZ(X),roots:[],ctx:Z})};var DE=N0({kind:"morph",hasAssociatedError:!1,keys:{in:{child:!0,parse:(Q,X)=>X.$.parseSchema(Q)},morphs:{parse:gZ,serialize:(Q)=>Q.map((X)=>r1(X,"root")?X.json:g6(X))},declaredIn:{child:!1,serialize:(Q)=>Q.json},declaredOut:{child:!1,serialize:(Q)=>Q.json}},normalize:(Q)=>Q,defaults:{description:(Q)=>`a morph from ${Q.in.description} to ${Q.out?.description??"unknown"}`},intersections:{morph:(Q,X,Z)=>{if(!Q.hasEqualMorphs(X))return I1(LE(Q.expression,X.expression));let J=$6(Q.in,X.in,Z);if(J instanceof p1)return J;let G={morphs:Q.morphs};if(Q.declaredIn||X.declaredIn){let Y=$6(Q.in,X.in,Z);if(Y instanceof p1)return Y.throw();else G.declaredIn=Y}if(Q.declaredOut||X.declaredOut){let Y=$6(Q.out,X.out,Z);if(Y instanceof p1)return Y.throw();else G.declaredOut=Y}return J.distribute((Y)=>Z.$.node("morph",{...G,in:Y}),Z.$.parseSchema)},...o9("morph",(Q,X,Z)=>{let J=Q.inner.in?$6(Q.inner.in,X,Z):X;return J instanceof p1?J:J.equals(Q.inner.in)?Q:Z.$.node("morph",{...Q.inner,in:J})})}});class NV extends q9{serializedMorphs=this.morphs.map(g6);compiledMorphs=`[${this.serializedMorphs}]`;lastMorph=this.inner.morphs.at(-1);lastMorphIfNode=r1(this.lastMorph,"root")?this.lastMorph:void 0;introspectableIn=this.inner.in;introspectableOut=this.lastMorphIfNode?Object.assign(this.referencesById,this.lastMorphIfNode.referencesById)&&this.lastMorphIfNode.out:void 0;get in(){return this.declaredIn??this.inner.in?.in??E1.intrinsic.unknown.internal}get out(){return this.declaredOut??this.introspectableOut??E1.intrinsic.unknown.internal}declareIn(Q){return this.$.node("morph",{...this.inner,declaredIn:Q})}declareOut(Q){return this.$.node("morph",{...this.inner,declaredOut:Q})}expression=`(In: ${this.in.expression}) => Out<${this.out.expression}>`;get shortDescription(){return this.in.shortDescription}innerToJsonSchema(){return I1(oU(this.expression))}compile(Q){if(Q.traversalKind==="Allows"){if(!this.introspectableIn)return;Q.return(Q.invoke(this.introspectableIn));return}if(this.introspectableIn)Q.line(Q.invoke(this.introspectableIn));Q.line(`ctx.queueMorphs(${this.compiledMorphs})`)}traverseAllows=(Q,X)=>!this.introspectableIn||this.introspectableIn.traverseAllows(Q,X);traverseApply=(Q,X)=>{if(this.introspectableIn)this.introspectableIn.traverseApply(Q,X);X.queueMorphs(this.morphs)};hasEqualMorphs(Q){return hZ(this.morphs,Q.morphs,{isEqual:(X,Z)=>X===Z||r1(X,"root")&&r1(Z,"root")&&X.equals(Z)})}}var IH={implementation:DE,Node:NV},LE=(Q,X)=>`The intersection of distinct morphs at a single path is indeterminate: +Left: ${Q} +Right: ${X}`;var CE=N0({kind:"proto",hasAssociatedError:!0,collapsibleKey:"proto",keys:{proto:{serialize:(Q)=>S7(Q)??CQ(Q)}},normalize:(Q)=>typeof Q==="string"?{proto:f4[Q]}:typeof Q==="function"?F6(Q)?Q:{proto:Q}:typeof Q.proto==="string"?{...Q,proto:f4[Q.proto]}:Q,defaults:{description:(Q)=>Q.builtinName?PU[Q.builtinName]:`an instance of ${Q.proto.name}`,actual:(Q)=>j7(Q)},intersections:{proto:(Q,X)=>i3(Q.proto,X.proto)?Q:i3(X.proto,Q.proto)?X:p1.init("proto",Q,X),domain:(Q,X)=>X.domain==="object"?Q:p1.init("domain",E1.intrinsic.object.internal,X)}});class TV extends l4{builtinName=S7(this.proto);serializedConstructor=this.json.proto;compiledCondition=`data instanceof ${this.serializedConstructor}`;compiledNegation=`!(${this.compiledCondition})`;innerToJsonSchema(){switch(this.builtinName){case"Array":return{type:"array"};default:return I1(N6(this.description))}}traverseAllows=(Q)=>Q instanceof this.proto;expression=this.proto.name;domain="object";get shortDescription(){return this.description}}var RH={implementation:CE,Node:TV};var NE=N0({kind:"union",hasAssociatedError:!0,collapsibleKey:"branches",keys:{ordered:{},branches:{child:!0,parse:(Q,X)=>{let Z=[];if(Q.forEach((J)=>{(r1(J,"root")?J.branches:X.$.parseSchema(J).branches).forEach((Y)=>{if(Y.hasKind("morph")){let H=Z.findIndex((K)=>K.hasKind("morph")&&K.hasEqualMorphs(Y));if(H===-1)Z.push(Y);else{let K=Z[H];Z[H]=X.$.node("morph",{...K.inner,in:K.in.rawOr(Y.in)})}}else Z.push(Y)})}),!X.def.ordered)Z.sort((J,G)=>J.hashG6(Q)?{branches:Q}:Q,reduce:(Q,X)=>{let Z=OE(Q);if(Z.length===1)return Z[0];if(Z.length===Q.branches.length)return;return X.node("union",{...Q,branches:Z},{prereduced:!0})},defaults:{description:(Q)=>Q.distribute((X)=>X.description,sZ),expected:(Q)=>{let X=NJ(Q.errors,"propString"),Z=Object.entries(X).map(([J,G])=>{let Y=[];G.forEach((z)=>FQ(Y,z.expected));let H=sZ(Y),K=G.every((z)=>z.actual===G[0].actual)?G[0].actual:O0(G[0].data);return`${J&&`${J} `}must be ${H}${K&&` (was ${K})`}`});return sZ(Z)},problem:(Q)=>Q.expected,message:(Q)=>Q.problem},intersections:{union:(Q,X,Z)=>{if(Q.isNever!==X.isNever)return p1.init("presence",Q,X);let J;if(Q.ordered){if(X.ordered)I1(SE(Q.expression,X.expression));if(J=AH(X.branches,Q.branches,Z),J instanceof p1)J.invert()}else J=AH(Q.branches,X.branches,Z);if(J instanceof p1)return J;return Z.$.parseSchema(Q.ordered||X.ordered?{branches:J,ordered:!0}:{branches:J})},...o9("union",(Q,X,Z)=>{let J=AH(Q.branches,[X],Z);if(J instanceof p1)return J;if(J.length===1)return J[0];return Z.$.parseSchema(Q.ordered?{branches:J,ordered:!0}:{branches:J})})}});class MV extends q9{isBoolean=this.branches.length===2&&this.branches[0].hasUnit(!1)&&this.branches[1].hasUnit(!0);get branchGroups(){let Q=[],X=-1;return this.branches.forEach((Z)=>{if(Z.hasKind("unit")&&Z.domain==="boolean"){if(X===-1)X=Q.length,Q.push(Z);else Q[X]=E1.intrinsic.boolean;return}Q.push(Z)}),Q}unitBranches=this.branches.filter((Q)=>Q.in.hasKind("unit"));discriminant=this.discriminate();discriminantJson=this.discriminant?IE(this.discriminant):null;expression=this.distribute((Q)=>Q.nestableExpression,AE);get shortDescription(){return this.distribute((Q)=>Q.shortDescription,sZ)}innerToJsonSchema(){return{anyOf:this.branchGroups.map((Q)=>Q.equals(E1.intrinsic.boolean)?{type:"boolean"}:Q.toJsonSchema())}}traverseAllows=(Q,X)=>this.branches.some((Z)=>Z.traverseAllows(Q,X));traverseApply=(Q,X)=>{let Z=[];for(let J=0;J{for(let z in Z){let W=Z[z],$=z==="default"?z:`case ${z}`;Q.line(`${$}: return ${W===!0?W:Q.invoke(W)}`)}return Q}),Q.traversalKind==="Allows"){Q.return(!1);return}let G=sZ(this.discriminant.kind==="domain"?J.map((z)=>{let W=z.slice(1,-1);return W==="function"?Y9.object:Y9[W]}):J),Y=this.discriminant.path.map((z)=>typeof z==="string"?JSON.stringify(z):g6(z)),H=JSON.stringify(G),K=this.discriminant.kind==="domain"?`${TE}[${X}]`:`${ME}(${X})`;Q.line(`ctx.error({ + expected: ${H}, + actual: ${K}, + relativePath: [${Y}] +})`)}compileIndiscriminable(Q){if(Q.traversalKind==="Apply")Q.const("errors","[]"),this.branches.forEach((X)=>Q.line("ctx.pushBranch()").line(Q.invoke(X)).if("!ctx.hasError()",()=>Q.return(X.includesMorph?"ctx.queuedMorphs.push(...ctx.popBranch().queuedMorphs)":"ctx.popBranch()")).line("errors.push(ctx.popBranch().error)")),Q.line('ctx.error({ code: "union", errors })');else this.branches.forEach((X)=>Q.if(`${Q.invoke(X)}`,()=>Q.return(!0))),Q.return(!1)}get nestableExpression(){return this.isBoolean?"boolean":`(${this.expression})`}discriminate(){if(this.branches.length<2)return null;if(this.unitBranches.length===this.branches.length){let Y=w0(this.unitBranches,(H,K)=>[`${K.in.serializedValue}`,K.hasKind("morph")?K:!0]);return{kind:"unit",path:[],optionallyChainedPropString:"data",cases:Y}}let Q=[];for(let Y=0;YhZ(F.path,$.path)&&F.kind===$.kind);if(!D)Q.push({kind:$.kind,cases:{[q]:[H],[B]:[z]},path:$.path});else D.cases[q]=FQ(D.cases[q],H),D.cases[B]=FQ(D.cases[B],z)}}}let X=Q.sort((Y,H)=>Object.keys(Y.cases).length-Object.keys(H.cases).length).at(-1);if(!X)return null;let Z=[...this.branches],J={kind:X.kind,path:X.path,optionallyChainedPropString:IV(X.path)},G=w0(X.cases,(Y,H)=>{let K=[];Z=Z.filter((W)=>!H.includes(W));for(let W of H){let $=EE(W,J);if($===null)return[Y,!0];K.push($)}let z=K.length===1?K[0]:this.$.node("union",K);return Object.assign(this.referencesById,z.referencesById),[Y,z]});if(Z.length)G.default=this.$.node("union",Z,{prereduced:!0}),Object.assign(this.referencesById,G.default.referencesById);return Object.assign(J,{cases:G})}}var IV=(Q)=>Q.reduce((X,Z)=>X+QH(Z,!0),"data"),TE=g6($U),ME=g6(O0),OH={implementation:NE,Node:MV},IE=(Q)=>({kind:Q.kind,path:Q.path.map((X)=>typeof X==="string"?X:LQ(X)),cases:w0(Q.cases,(X,Z)=>[X,Z===!0?Z:Z.hasKind("union")&&Z.discriminantJson?Z.discriminantJson:Z.json])}),RE={delimiter:" | ",finalDelimiter:" | "},AE=(Q)=>sZ(Q,RE),sZ=(Q,X)=>{let Z=X?.delimiter??", ",J=X?.finalDelimiter??" or ";if(Q.length===0)return"never";if(Q.length===1)return Q[0];if(Q.length===2&&Q[0]==="false"&&Q[1]==="true"||Q[0]==="true"&&Q[1]==="false")return"boolean";let G={},Y=Q.filter((K)=>G[K]?!1:G[K]=!0),H=Y.pop();return`${Y.join(Z)}${Y.length?J:""}${H}`},AH=(Q,X,Z)=>{let J=X.map(()=>[]);for(let Y=0;YY?.flatMap((K)=>K.branches)??X[H]);return G.length===0?p1.init("union",Q,X):G},OE=({branches:Q,ordered:X})=>{if(Q.length<2)return Q;let Z=Q.map(()=>!0);for(let J=0;JZ[G])},wE=(Q,X)=>{if((Q.includesMorph||X.includesMorph)&&(!hZ(Q.shallowMorphs,X.shallowMorphs,{isEqual:(Z,J)=>Z.hasEqualMorphs(J)})||!hZ(Q.flatMorphs,X.flatMorphs,{isEqual:(Z,J)=>Z.propString===J.propString&&Z.node.hasEqualMorphs(J.node)})))I1(jE(Q.expression,X.expression))},EE=(Q,X)=>Q.transform((Z,J)=>{if(Z==="domain"||Z==="unit")return null;return J},{shouldTransform:(Z,J)=>{let G=IV(J.path);if(!X.optionallyChainedPropString.startsWith(G))return!1;if(Z.hasKind("domain")&&Z.domain==="object")return!0;if((Z.hasKind("domain")||X.kind==="unit")&&G===X.optionallyChainedPropString)return!0;return Z.children.length!==0&&Z.kind!=="index"}}),jE=(Q,X)=>`An unordered union of a type including a morph and a type with overlapping input is indeterminate: +Left: ${Q} +Right: ${X}`,SE=(Q,X)=>`The intersection of two ordered unions is indeterminate: +Left: ${Q} +Right: ${X}`;var kE=N0({kind:"unit",hasAssociatedError:!0,keys:{unit:{preserveUndefined:!0,serialize:(Q)=>Q instanceof Date?Q.toISOString():CQ(Q)}},normalize:(Q)=>Q,defaults:{description:(Q)=>O0(Q.unit),problem:({expected:Q,actual:X})=>`${Q===X?`must be reference equal to ${Q} (serialized to the same value)`:`must be ${Q} (was ${X})`}`},intersections:{unit:(Q,X)=>p1.init("unit",Q,X),...o9("unit",(Q,X)=>{if(X.allows(Q.unit))return Q;let Z=X.hasKind("intersection")?X.basis:X;if(Z){let J=Z.hasKind("domain")?Z:E1.intrinsic.object;if(Q.domain!==J.domain){let G=Q.domain==="undefined"||Q.domain==="null"||Q.domain==="boolean"?Q.domain:E1.intrinsic[Q.domain];return p1.init("domain",G,J)}}return p1.init("assignability",Q,X.hasKind("intersection")?X.children.find((J)=>!J.allows(Q.unit)):X)})}});class AV extends l4{compiledValue=this.json.unit;serializedValue=typeof this.unit==="string"||this.unit instanceof Date?JSON.stringify(this.compiledValue):`${this.compiledValue}`;compiledCondition=RV(this.unit,this.serializedValue);compiledNegation=RV(this.unit,this.serializedValue,"negated");expression=O0(this.unit);domain=P8(this.unit);get shortDescription(){return this.domain==="object"?Y9.object:this.description}innerToJsonSchema(){return E1.intrinsic.jsonPrimitive.allows(this.unit)?{const:this.unit}:I1(N6(this.shortDescription))}traverseAllows=this.unit instanceof Date?(Q)=>Q instanceof Date&&Q.toISOString()===this.compiledValue:Number.isNaN(this.unit)?(Q)=>Number.isNaN(Q):(Q)=>Q===this.unit}var wH={implementation:kE,Node:AV},RV=(Q,X,Z)=>{if(Q instanceof Date){let J=`data instanceof Date && data.toISOString() === ${X}`;return Z?`!(${J})`:J}if(Number.isNaN(Q))return`${Z?"!":""}Number.isNaN(data)`;return`data ${Z?"!":"="}== ${X}`};var yE=N0({kind:"index",hasAssociatedError:!1,intersectionIsOpen:!0,keys:{signature:{child:!0,parse:(Q,X)=>{let Z=X.$.parseSchema(Q);if(!Z.extends(E1.intrinsic.key))return I1(vE(Z.expression));let J=Z.branches.filter((G)=>G.hasKind("unit"));if(J.length)return I1(xE(J.map((G)=>O0(G.unit))));return Z}},value:{child:!0,parse:(Q,X)=>X.$.parseSchema(Q)}},normalize:(Q)=>Q,defaults:{description:(Q)=>`[${Q.signature.expression}]: ${Q.value.description}`},intersections:{index:(Q,X,Z)=>{if(Q.signature.equals(X.signature)){let J=$6(Q.value,X.value,Z),G=J instanceof p1?E1.intrinsic.never.internal:J;return Z.$.node("index",{signature:Q.signature,value:G})}if(Q.signature.extends(X.signature)&&Q.value.subsumes(X.value))return X;if(X.signature.extends(Q.signature)&&X.value.subsumes(Q.value))return Q;return null}}});class OV extends W9{impliedBasis=E1.intrinsic.object.internal;expression=`[${this.signature.expression}]: ${this.value.expression}`;traverseAllows=(Q,X)=>w7(Q).every((Z)=>{if(this.signature.traverseAllows(Z[0],X))return A8(Z[0],()=>this.value.traverseAllows(Z[1],X),X);return!0});traverseApply=(Q,X)=>w7(Q).forEach((Z)=>{if(this.signature.traverseAllows(Z[0],X))A8(Z[0],()=>this.value.traverseApply(Z[1],X),X)});_transform(Q,X){X.path.push(this.signature);let Z=super._transform(Q,X);return X.path.pop(),Z}get flatRefs(){return h0(this.value.flatRefs.map((Q)=>w9([this.signature,...Q.path],Q.node)),w9([this.signature],this.value))}compile(){}}var EH={implementation:yE,Node:OV},xE=(Q)=>`Index keys ${Q.join(", ")} should be specified as named props.`,vE=(Q)=>`Indexed key definition '${Q}' must be a string or symbol`;var gE=N0({kind:"required",hasAssociatedError:!0,intersectionIsOpen:!0,keys:{key:{},value:{child:!0,parse:(Q,X)=>X.$.parseSchema(Q)}},normalize:(Q)=>Q,defaults:{description:(Q)=>`${Q.compiledKey}: ${Q.value.description}`,expected:(Q)=>Q.missingValueDescription,actual:()=>"missing"},intersections:{required:f7,optional:f7}});class wV extends b7{expression=`${this.compiledKey}: ${this.value.expression}`;errorContext=Object.freeze({code:"required",missingValueDescription:this.value.shortDescription,relativePath:[this.key]});compiledErrorContext=uQ(this.errorContext)}var jH={implementation:gE,Node:wV};var hE=N0({kind:"sequence",hasAssociatedError:!1,collapsibleKey:"variadic",keys:{prefix:{child:!0,parse:(Q,X)=>{if(Q.length===0)return;return Q.map((Z)=>X.$.parseSchema(Z))}},optionals:{child:!0,parse:(Q,X)=>{if(Q.length===0)return;return Q.map((Z)=>X.$.parseSchema(Z))}},defaultables:{child:(Q)=>Q.map((X)=>X[0]),parse:(Q,X)=>{if(Q.length===0)return;return Q.map((Z)=>{let J=X.$.parseSchema(Z[0]);return _7(J,Z[1],null),[J,Z[1]]})},serialize:(Q)=>Q.map((X)=>[X[0].collapsibleJson,CQ(X[1])])},variadic:{child:!0,parse:(Q,X)=>X.$.parseSchema(Q,X)},minVariadicLength:{parse:(Q)=>Q===0?void 0:Q},postfix:{child:!0,parse:(Q,X)=>{if(Q.length===0)return;return Q.map((Z)=>X.$.parseSchema(Z))}}},normalize:(Q)=>{if(typeof Q==="string")return{variadic:Q};if("variadic"in Q||"prefix"in Q||"defaultables"in Q||"optionals"in Q||"postfix"in Q||"minVariadicLength"in Q){if(Q.postfix?.length){if(!Q.variadic)return I1(bE);if(Q.optionals?.length||Q.defaultables?.length)return I1(kH)}if(Q.minVariadicLength&&!Q.variadic)return I1("minVariadicLength may not be specified without a variadic element");return Q}return{variadic:Q}},reduce:(Q,X)=>{let Z=Q.minVariadicLength??0,J=Q.prefix?.slice()??[],G=Q.defaultables?.slice()??[],Y=Q.optionals?.slice()??[],H=Q.postfix?.slice()??[];if(Q.variadic){while(Y.at(-1)?.equals(Q.variadic))Y.pop();if(Y.length===0&&G.length===0)while(J.at(-1)?.equals(Q.variadic))J.pop(),Z++;while(H[0]?.equals(Q.variadic))H.shift(),Z++}else if(Y.length===0&&G.length===0)J.push(...H.splice(0));if(Z!==Q.minVariadicLength||Q.prefix&&Q.prefix.length!==J.length)return X.node("sequence",{...Q,prefix:J,defaultables:G,optionals:Y,postfix:H,minVariadicLength:Z},{prereduced:!0})},defaults:{description:(Q)=>{if(Q.isVariadicOnly)return`${Q.variadic.nestableExpression}[]`;return`[${Q.tuple.map((Z)=>Z.kind==="defaultables"?`${Z.node.nestableExpression} = ${O0(Z.default)}`:Z.kind==="optionals"?`${Z.node.nestableExpression}?`:Z.kind==="variadic"?`...${Z.node.nestableExpression}[]`:Z.node.expression).join(", ")}]`}},intersections:{sequence:(Q,X,Z)=>{let J=p7({l:Q.tuple,r:X.tuple,disjoint:new p1,result:[],fixedVariants:[],ctx:Z}),G=J.disjoint.length===0?[J,...J.fixedVariants]:J.fixedVariants;return G.length===0?J.disjoint:G.length===1?Z.$.node("sequence",EV(G[0].result)):Z.$.node("union",G.map((Y)=>({proto:Array,sequence:EV(Y.result)})))}}});class jV extends W9{impliedBasis=E1.intrinsic.Array.internal;tuple=fE(this.inner);prefixLength=this.prefix?.length??0;defaultablesLength=this.defaultables?.length??0;optionalsLength=this.optionals?.length??0;postfixLength=this.postfix?.length??0;prevariadic=this.tuple.filter((Q)=>Q.kind==="prefix"||Q.kind==="defaultables"||Q.kind==="optionals");variadicOrPostfix=bQ(this.variadic&&[this.variadic],this.postfix);isVariadicOnly=this.prevariadic.length+this.postfixLength===0;minVariadicLength=this.inner.minVariadicLength??0;minLength=this.prefixLength+this.minVariadicLength+this.postfixLength;minLengthNode=this.minLength===0?null:this.$.node("minLength",this.minLength);maxLength=this.variadic?null:this.tuple.length;maxLengthNode=this.maxLength===null?null:this.$.node("maxLength",this.maxLength);impliedSiblings=this.minLengthNode?this.maxLengthNode?[this.minLengthNode,this.maxLengthNode]:[this.minLengthNode]:this.maxLengthNode?[this.maxLengthNode]:[];defaultValueMorphs=this.defaultables?.map(([Q,X],Z)=>NH(this.prefixLength+Z,Q,X))??[];defaultValueMorphsReference=g6(this.defaultValueMorphs);elementAtIndex(Q,X){if(X=Z)return{kind:"postfix",node:this.postfix[X-Z]};return{kind:"variadic",node:this.variadic??a0(`Unexpected attempt to access index ${X} on ${this}`)}}traverseAllows=(Q,X)=>{for(let Z=0;Z{let Z=0;for(;Zthis.elementAtIndex(Q,Z).node.traverseApply(Q[Z],X),X);for(;Zh0(X.node.flatRefs.map((J)=>w9([`${Z}`,...J.path],J.node)),w9([`${Z}`],X.node)))),pZ(Q,this.variadicOrPostfix.flatMap((X)=>h0(X.flatRefs.map((Z)=>w9([E1.intrinsic.nonNegativeIntegerString.internal,...Z.path],Z.node)),w9([E1.intrinsic.nonNegativeIntegerString.internal],X)))),Q}get element(){return this.cacheGetter("element",this.$.node("union",this.children))}compile(Q){if(this.prefix?.forEach((X,Z)=>Q.traverseKey(`${Z}`,`data[${Z}]`,X)),this.defaultables?.forEach((X,Z)=>{let J=`${Z+this.prefixLength}`;Q.if(`${J} >= ${Q.data}.length`,()=>Q.traversalKind==="Allows"?Q.return(!0):Q.return(`ctx.queueMorphs(${this.defaultValueMorphsReference}[${Z}])`)),Q.traverseKey(J,`data[${J}]`,X[0])}),this.optionals?.forEach((X,Z)=>{let J=`${Z+this.prefixLength+this.defaultablesLength}`;Q.if(`${J} >= ${Q.data}.length`,()=>Q.traversalKind==="Allows"?Q.return(!0):Q.return()),Q.traverseKey(J,`data[${J}]`,X)}),this.variadic){if(this.postfix)Q.const("firstPostfixIndex",`${Q.data}.length${this.postfix?`- ${this.postfix.length}`:""}`);Q.for(`i < ${this.postfix?"firstPostfixIndex":"data.length"}`,()=>Q.traverseKey("i","data[i]",this.variadic),this.prevariadic.length),this.postfix?.forEach((X,Z)=>{let J=`firstPostfixIndex + ${Z}`;Q.traverseKey(J,`data[${J}]`,X)})}if(Q.traversalKind==="Allows")Q.return(!0)}_transform(Q,X){X.path.push(E1.intrinsic.nonNegativeIntegerString.internal);let Z=super._transform(Q,X);return X.path.pop(),Z}expression=this.description;reduceJsonSchema(Q){if(this.prefix)Q.prefixItems=this.prefix.map((X)=>X.toJsonSchema());if(this.optionals)I1(N6(`Optional tuple element${this.optionalsLength>1?"s":""} ${this.optionals.join(", ")}`));if(this.variadic){if(Q.items=this.variadic?.toJsonSchema(),this.minLength)Q.minItems=this.minLength;if(this.maxLength)Q.maxItems=this.maxLength}else Q.items=!1,delete Q.minItems,delete Q.maxItems;if(this.postfix)I1(N6(`Postfix tuple element${this.postfixLength>1?"s":""} ${this.postfix.join(", ")}`));return Q}}var SH={implementation:hE,Node:jV},fE=(Q)=>{let X=[];if(Q.prefix?.forEach((Z)=>X.push({kind:"prefix",node:Z})),Q.defaultables?.forEach(([Z,J])=>X.push({kind:"defaultables",node:Z,default:J})),Q.optionals?.forEach((Z)=>X.push({kind:"optionals",node:Z})),Q.variadic)X.push({kind:"variadic",node:Q.variadic});return Q.postfix?.forEach((Z)=>X.push({kind:"postfix",node:Z})),X},EV=(Q)=>Q.reduce((X,Z)=>{if(Z.kind==="variadic")X.variadic=Z.node;else if(Z.kind==="defaultables")X.defaultables=h0(X.defaultables,[[Z.node,Z.default]]);else X[Z.kind]=h0(X[Z.kind],Z.node);return X},{}),kH="A postfix required element cannot follow an optional or defaultable element",bE="A postfix element requires a variadic element",p7=(Q)=>{let[X,...Z]=Q.l,[J,...G]=Q.r;if(!X||!J)return Q;let Y=Z.at(-1)?.kind==="postfix",H=G.at(-1)?.kind==="postfix",K=X.kind==="prefix"||J.kind==="prefix"?"prefix":X.kind==="postfix"||J.kind==="postfix"?"postfix":X.kind==="variadic"&&J.kind==="variadic"?"variadic":Y||H?"prefix":X.kind==="defaultables"||J.kind==="defaultables"?"defaultables":"optionals";if(X.kind==="prefix"&&J.kind==="variadic"&&H){let q=p7({...Q,fixedVariants:[],r:G.map((B)=>({...B,kind:"prefix"}))});if(q.disjoint.length===0)Q.fixedVariants.push(q)}else if(J.kind==="prefix"&&X.kind==="variadic"&&Y){let q=p7({...Q,fixedVariants:[],l:Z.map((B)=>({...B,kind:"prefix"}))});if(q.disjoint.length===0)Q.fixedVariants.push(q)}let z=$6(X.node,J.node,Q.ctx);if(z instanceof p1)if(K==="prefix"||K==="postfix")Q.disjoint.push(...z.withPrefixKey(K==="prefix"?`${Q.result.length}`:`-${Z.length+1}`,"required")),Q.result=[...Q.result,{kind:K,node:E1.intrinsic.never.internal}];else if(K==="optionals"||K==="defaultables")return Q;else return p7({...Q,fixedVariants:[],l:Z.map((q)=>({...q,kind:"prefix"})),r:Z.map((q)=>({...q,kind:"prefix"}))});else if(K==="defaultables"){if(X.kind==="defaultables"&&J.kind==="defaultables"&&X.default!==J.default)I1(CH(X.default,J.default));Q.result=[...Q.result,{kind:K,node:z,default:X.kind==="defaultables"?X.default:J.kind==="defaultables"?J.default:a0(`Unexpected defaultable intersection from ${X.kind} and ${J.kind} elements.`)}]}else Q.result=[...Q.result,{kind:K,node:z}];let W=Q.l.length,$=Q.r.length;if(X.kind!=="variadic"||W>=$&&(J.kind==="variadic"||$===1))Q.l=Z;if(J.kind!=="variadic"||$>=W&&(X.kind==="variadic"||W===1))Q.r=G;return p7(Q)};var yH="^(?:0|[1-9]\\d*)$",mE=new RegExp(yH),SV=g6(mE);var yV=(Q)=>(X)=>{if(X.props.length||X.index){let Z=X.index?.map(String)??[];if(X.props.forEach((G)=>Z.push(G[Q])),X.undeclared)Z.push(`+ (undeclared): ${X.undeclared}`);let J=`{ ${Z.join(", ")} }`;return X.sequence?`${J} & ${X.sequence.description}`:J}return X.sequence?.description??"{}"},_E=yV("description"),dE=yV("expression"),uE=N0({kind:"structure",hasAssociatedError:!1,normalize:(Q,X)=>{if(!Q.undeclared&&X.resolvedConfig.onUndeclaredKey!=="ignore")return{...Q,undeclared:X.resolvedConfig.onUndeclaredKey};return Q},keys:{required:{child:!0,parse:J8("required"),reduceIo:(Q,X,Z)=>{X.required=h0(X.required,Z.map((J)=>J[Q]));return}},optional:{child:!0,parse:J8("optional"),reduceIo:(Q,X,Z)=>{if(Q==="in"){X.optional=Z.map((J)=>J.in);return}Z.forEach((J)=>X[J.outProp.kind]=h0(X[J.outProp.kind],J.outProp.out))}},index:{child:!0,parse:J8("index")},sequence:{child:!0,parse:J8("sequence")},undeclared:{parse:(Q)=>Q==="ignore"?void 0:Q}},defaults:{description:_E},intersections:{structure:(Q,X,Z)=>{let J={...Q.inner},G={...X.inner},Y=new p1;if(Q.undeclared){let z=Q.keyof();if(X.requiredKeys.forEach((W)=>{if(!z.allows(W))Y.add("presence",E1.intrinsic.never.internal,X.propsByKey[W].value,{path:[W]})}),G.optional)G.optional=G.optional.filter((W)=>z.allows(W.key));if(G.index)G.index=G.index.flatMap((W)=>{if(W.signature.extends(z))return W;let $=i8(z,W.signature,Z.$);if($ instanceof p1)return[];let q=bJ($,W.value,Z.$);if(q.required)G.required=bQ(G.required,q.required);if(q.optional)G.optional=bQ(G.optional,q.optional);return q.index??[]})}if(X.undeclared){let z=X.keyof();if(Q.requiredKeys.forEach((W)=>{if(!z.allows(W))Y.add("presence",Q.propsByKey[W].value,E1.intrinsic.never.internal,{path:[W]})}),J.optional)J.optional=J.optional.filter((W)=>z.allows(W.key));if(J.index)J.index=J.index.flatMap((W)=>{if(W.signature.extends(z))return W;let $=i8(z,W.signature,Z.$);if($ instanceof p1)return[];let q=bJ($,W.value,Z.$);if(q.required)J.required=bQ(J.required,q.required);if(q.optional)J.optional=bQ(J.optional,q.optional);return q.index??[]})}let H={};if(Q.undeclared||X.undeclared)H.undeclared=Q.undeclared==="reject"||X.undeclared==="reject"?"reject":"delete";let K=cZ({kind:"structure",baseInner:H,l:iZ(J),r:iZ(G),roots:[],ctx:Z});if(K instanceof p1)Y.push(...K);if(Y.length)return Y;return K}}});class xV extends W9{impliedBasis=E1.intrinsic.object.internal;impliedSiblings=this.children.flatMap((Q)=>Q.impliedSiblings??[]);props=bQ(this.required,this.optional);propsByKey=w0(this.props,(Q,X)=>[X.key,X]);propsByKeyReference=g6(this.propsByKey);expression=dE(this);requiredKeys=this.required?.map((Q)=>Q.key)??[];optionalKeys=this.optional?.map((Q)=>Q.key)??[];literalKeys=[...this.requiredKeys,...this.optionalKeys];_keyof;keyof(){if(this._keyof)return this._keyof;let Q=this.$.units(this.literalKeys).branches;return this.index?.forEach(({signature:X})=>{Q=Q.concat(X.branches)}),this._keyof=this.$.node("union",Q)}map(Q){return this.$.node("structure",this.props.flatMap(Q).reduce((X,Z)=>{let J=this.propsByKey[Z.key];if(F6(Z)){if(Z.kind!=="required"&&Z.kind!=="optional")return I1(`Map result must have kind "required" or "optional" (was ${Z.kind})`);return X[Z.kind]=h0(X[Z.kind],Z),X}let G=Z.kind??J?.kind??"required",Y=w0(Z,(H,K)=>(H in m7.implementation.keys)?[H,K]:[]);return X[G]=h0(X[G],this.$.node(G,Y)),X},{}))}assertHasKeys(Q){let X=Q.filter((Z)=>!d7(Z,this.keyof()));if(X.length)return I1(kV(this.expression,X))}get(Q,...X){let Z,J=!1,G=pE(Q);if((typeof G==="string"||typeof G==="symbol")&&this.propsByKey[G])Z=this.propsByKey[G].value,J=this.propsByKey[G].required;if(this.index?.forEach((H)=>{if(d7(G,H.signature))Z=Z?.and(H.value)??H.value}),this.sequence&&d7(G,E1.intrinsic.nonNegativeIntegerString))if(r1(G,"root")){if(this.sequence.variadic)Z=Z?.and(this.sequence.element)??this.sequence.element}else{let H=Number.parseInt(G);if(HZ.hasKind("required")?this.$.node("optional",Z.inner):Z)})}require(){let{optional:Q,...X}=this.inner;return this.$.node("structure",{...X,required:this.props.map((Z)=>Z.hasKind("optional")?{key:Z.key,value:Z.value}:Z)})}merge(Q){let X=this.filterKeys("omit",[Q.keyof()]);if(Q.required)X.required=h0(X.required,Q.required);if(Q.optional)X.optional=h0(X.optional,Q.optional);if(Q.index)X.index=h0(X.index,Q.index);if(Q.sequence)X.sequence=Q.sequence;if(Q.undeclared)X.undeclared=Q.undeclared;else delete X.undeclared;return this.$.node("structure",X)}filterKeys(Q,X){let Z=OJ(this.inner),J=(G)=>{let Y=X.some((H)=>d7(G,H));return Q==="pick"?Y:!Y};if(Z.required)Z.required=Z.required.filter((G)=>J(G.key));if(Z.optional)Z.optional=Z.optional.filter((G)=>J(G.key));if(Z.index)Z.index=Z.index.filter((G)=>J(G.signature));return Z}traverseAllows=(Q,X)=>this._traverse("Allows",Q,X);traverseApply=(Q,X)=>this._traverse("Apply",Q,X);_traverse=(Q,X,Z)=>{let J=Z?.currentErrorCount??0;for(let Y=0;YJ)return!1;if(this.sequence){if(Q==="Allows"){if(!this.sequence.traverseAllows(X,Z))return!1}else if(this.sequence.traverseApply(X,Z),Z.failFast&&Z.currentErrorCount>J)return!1}if(!this.exhaustive)return!0;let G=Object.keys(X);G.push(...Object.getOwnPropertySymbols(X));for(let Y=0;Yz.value.traverseAllows(X[H],Z),Z))return!1}else if(A8(H,()=>z.value.traverseApply(X[H],Z),Z),Z.failFast&&Z.currentErrorCount>J)return!1;K=!0}}if(this.undeclared){if(K||=H in this.propsByKey,K||=this.sequence!==void 0&&typeof H==="string"&&E1.intrinsic.nonNegativeIntegerString.allows(H),!K){if(Q==="Allows")return!1;if(this.undeclared==="reject")Z.error({expected:"removed",actual:"",relativePath:[H]});else Z.queueMorphs([(z)=>{return delete z[H],z}]);if(Z.failFast)return!1}}}return!0};compile(Q){if(Q.traversalKind==="Apply")Q.initializeErrorCount();if(this.props.forEach((X)=>{if(Q.check(X),Q.traversalKind==="Apply")Q.returnIfFailFast()}),this.sequence){if(Q.check(this.sequence),Q.traversalKind==="Apply")Q.returnIfFailFast()}if(this.exhaustive)Q.const("keys","Object.keys(data)"),Q.line("keys.push(...Object.getOwnPropertySymbols(data))"),Q.for("i < keys.length",()=>this.compileExhaustiveEntry(Q));if(Q.traversalKind==="Allows")Q.return(!0)}compileExhaustiveEntry(Q){if(Q.const("k","keys[i]"),this.undeclared)Q.let("matched",!1);if(this.index?.forEach((X)=>{Q.if(`${Q.invoke(X.signature,{arg:"k",kind:"Allows"})}`,()=>{if(Q.traverseKey("k","data[k]",X.value),this.undeclared)Q.set("matched",!0);return Q})}),this.undeclared){if(this.props?.length!==0)Q.line(`matched ||= k in ${this.propsByKeyReference}`);if(this.sequence)Q.line(`matched ||= typeof k === "string" && ${SV}.test(k)`);Q.if("!matched",()=>{if(Q.traversalKind==="Allows")return Q.return(!1);return this.undeclared==="reject"?Q.line('ctx.error({ expected: "removed", actual: "", relativePath: [k] })').if("ctx.failFast",()=>Q.return()):Q.line("ctx.queueMorphs([data => { delete data[k]; return data }])")})}return Q}reduceJsonSchema(Q){switch(Q.type){case"object":return this.reduceObjectJsonSchema(Q);case"array":if(this.props.length||this.index)I1(N6(`Additional properties on array ${this.expression}`));return this.sequence?.reduceJsonSchema(Q)??Q;default:return lQ("structure",Q)}}reduceObjectJsonSchema(Q){if(this.props.length){if(Q.properties={},this.props.forEach((X)=>{if(typeof X.key==="symbol")return I1(N6(`Sybolic key ${X.serializedKey}`));Q.properties[X.key]=X.value.toJsonSchema()}),this.requiredKeys.length)Q.required=this.requiredKeys}if(this.index?.forEach((X)=>{if(X.signature.equals(E1.intrinsic.string))return Q.additionalProperties=X.value.toJsonSchema();if(!X.signature.extends(E1.intrinsic.string))return I1(N6(`Symbolic index signature ${X.signature.exclude(E1.intrinsic.string)}`));X.signature.branches.forEach((Z)=>{if(!Z.hasKind("intersection")||Z.pattern?.length!==1)return I1(N6(`Index signature ${Z}`));Q.patternProperties??={},Q.patternProperties[Z.pattern[0].rule]=X.value.toJsonSchema()})}),this.undeclared&&!Q.additionalProperties)Q.additionalProperties=!1;return Q}}var xH={implementation:uE,Node:xV},pE=(Q)=>{if(r1(Q,"root")&&Q.hasKind("unit"))Q=Q.unit;if(typeof Q==="number")Q=`${Q}`;return Q},lE=(Q,X)=>`${Q} is not allowed as an array index on ${X}. Use the 'nonNegativeIntegerString' keyword instead.`,bJ=(Q,X,Z)=>{let[J,G]=KU(Q.branches,(H)=>H.hasKind("unit"));if(!J.length)return{index:Z.node("index",{signature:Q,value:X})};let Y={};if(J.forEach((H)=>{let K=Z.node("required",{key:H.unit,value:X});Y[K.kind]=h0(Y[K.kind],K)}),G.length)Y.index=Z.node("index",{signature:G,value:X});return Y},cE=(Q)=>r1(Q,"root")?Q.expression:O0(Q),kV=(Q,X)=>`Key${X.length===1?"":"s"} ${X.map(cE).join(", ")} ${X.length===1?"does":"do"} not exist on ${Q}`;var oZ={...WV,alias:u7.implementation,domain:TH.implementation,unit:wH.implementation,proto:RH.implementation,union:OH.implementation,morph:IH.implementation,intersection:MH.implementation,divisor:qH.implementation,pattern:PH.implementation,predicate:WH.implementation,required:jH.implementation,optional:m7.implementation,index:EH.implementation,sequence:SH.implementation,structure:xH.implementation};E1.defaultConfig=Object.assign(w0(oZ,(Q,X)=>[Q,X.defaults]),{jitless:NU(),clone:FU,onUndeclaredKey:"ignore"});var BV={...qV,alias:u7.Node,domain:TH.Node,unit:wH.Node,proto:RH.Node,union:OH.Node,morph:IH.Node,intersection:MH.Node,divisor:qH.Node,pattern:PH.Node,predicate:WH.Node,required:jH.Node,optional:m7.Node,index:EH.Node,sequence:SH.Node,structure:xH.Node};class c4 extends u3{get[I8](){return"module"}}var vH=(Q,X)=>new c4(w0(Q,(Z,J)=>[Z,r1(J,"module")?vH(J,X):X.bindReference(J)]));var iE=(Q)=>G6(Q)?Q:("branches"in Q)&&G6(Q.branches)?Q.branches:void 0,nE=(Q,X)=>I1(`Node of kind ${X} is not valid as a ${Q} definition`),vV=(Q)=>`#${Q} duplicates public alias ${Q}`,gV={};E1.ambient??={};var hV;class mJ{config;resolvedConfig;id=`${Object.keys(gV).length}$`;get[I8](){return"scope"}referencesById={};references=[];resolutions={};json={};exportedNames=[];aliases={};resolved=!1;nodesByHash={};constructor(Q,X){this.config=X??{},this.resolvedConfig=uU(X),Object.entries(Q).map((J)=>this.preparseOwnAliasEntry(...J)).forEach(([J,G])=>{let Y=J;if(J[0]==="#"){if(Y=J.slice(1),Y in this.aliases)I1(vV(Y));this.aliases[Y]=G}else{if(Y in this.aliases)I1(vV(J));this.aliases[Y]=G,this.exportedNames.push(Y)}if(!r1(G,"module")&&!r1(G,"generic")&&!mQ(G)){let H=this.preparseOwnDefinitionFormat(G,{alias:Y});if(r1(H,"root"))this.resolutions[Y]=this.bindReference(H);else this.resolutions[Y]=this.createParseContext(H).id}}),hV??=this.node("union",{branches:["string","number","object","bigint","symbol",{unit:!0},{unit:!1},{unit:void 0},{unit:null}]},{prereduced:!0}),this.nodesByHash[hV.hash]=this.node("intersection",{},{prereduced:!0}),gV[this.id]=this}get internal(){return this}defineSchema(Q){return Q}generic=(...Q)=>{let X=this;return(Z,J)=>new pQ(Q,J?new kJ(Z):Z,X,X,J??null)};units=(Q,X)=>{let Z=[];for(let G of Q)if(!Z.includes(G))Z.push(G);let J=Z.map((G)=>this.node("unit",{unit:G},X));return this.node("union",J,{...X,prereduced:!0})};lazyResolutions=[];lazilyResolve(Q,X){let Z=this.node("alias",{reference:X??"synthetic",resolve:Q},{prereduced:!0});if(!this.resolved)this.lazyResolutions.push(Z);return Z}schema=(Q,X)=>this.finalize(this.parseSchema(Q,X));parseSchema=(Q,X)=>this.node(h7(Q),Q,X);preparseNode(Q,X,Z){let J=typeof Q==="string"?Q:h7(X,Q);if(F6(X)&&X.kind===J)return X;if(J==="alias"&&!Z?.prereduced){let{reference:H}=u7.implementation.normalize(X,this);if(H.startsWith("$")){let K=this.resolveRoot(H.slice(1));X=K,J=K.kind}}else if(J==="union"&&M8(X,"object")){let H=iE(X);if(H?.length===1)X=H[0],J=h7(X)}let Y=oZ[J].normalize?.(X,this)??X;if(F6(Y))return Y.kind===J?Y:nE(J,Y.kind);return{...Z,$:this,kind:J,def:Y,prefix:Z.alias??J}}bindReference(Q){let X=Q.$===this?Q:F6(Q)?new Q.constructor(Q.attachments,this):new pQ(Q.params,Q.bodyDef,Q.$,this,Q.hkt);if(!this.resolved)Object.assign(this.referencesById,X.referencesById);return X}resolveRoot(Q){return this.maybeResolveRoot(Q)??I1(fH(Q))}maybeResolveRoot(Q){let X=this.maybeResolve(Q);if(r1(X,"generic"))return;return X}maybeResolveSubalias(Q){return gH(this.aliases,Q)??gH(this.ambient,Q)}get ambient(){return E1.ambient}maybeResolve(Q){let X=this.resolutions[Q];if(X){if(typeof X!=="string")return X;let J=F8[X];if(r1(J,"root"))return this.resolutions[Q]=J;if(r1(J,"context")){if(J.phase==="resolving")return this.node("alias",{reference:`$${Q}`},{prereduced:!0});if(J.phase==="resolved")return a0(`Unexpected resolved context for was uncached by its scope: ${O0(J)}`);J.phase="resolving";let G=this.bindReference(this.parseOwnDefinitionFormat(J.def,J));return J.phase="resolved",F8[G.id]=G,F8[J.id]=G,this.resolutions[Q]=G}return a0(`Unexpected nodesById entry for ${X}: ${O0(J)}`)}let Z=this.aliases[Q]??this.ambient?.[Q];if(!Z)return this.maybeResolveSubalias(Q);if(Z=this.normalizeRootScopeValue(Z),r1(Z,"generic"))return this.resolutions[Q]=this.bindReference(Z);if(r1(Z,"module"))if(Z.root)return this.resolutions[Q]=this.bindReference(Z.root);else return I1(_V(Q));return this.resolutions[Q]=this.parse(Z,{alias:Q})}createParseContext(Q){let X=Q.id??FH(Q.prefix);return F8[X]=Object.assign(Q,{[I8]:"context",$:this,id:X,phase:"unresolved"})}import(...Q){return new c4(w0(this.export(...Q),(X,Z)=>[`#${X}`,Z]))}precompilation;_exportedResolutions;_exports;export(...Q){if(!this._exports){this._exports={};for(let Z of this.exportedNames){let J=this.aliases[Z];this._exports[Z]=r1(J,"module")?vH(J,this):fV(this.maybeResolve(Z))}if(this.lazyResolutions.forEach((Z)=>Z.resolution),this.resolvedConfig.ambient===!0)Object.assign(E1.ambient,this._exports);else if(typeof this.resolvedConfig.ambient==="string")Object.assign(E1.ambient,{[this.resolvedConfig.ambient]:new c4({...this._exports})});if(this._exportedResolutions=mV(this,this._exports),Object.assign(this.json,bV(this._exportedResolutions)),Object.assign(this.resolutions,this._exportedResolutions),this.references=Object.values(this.referencesById),!this.resolvedConfig.jitless)this.precompilation=uV(this.references),dV(this.references,this.precompilation);this.resolved=!0}let X=Q.length?Q:this.exportedNames;return new c4(w0(X,(Z,J)=>[J,this._exports[J]]))}resolve(Q){return this.export()[Q]}node=(Q,X,Z={})=>{let J=this.preparseNode(Q,X,Z);if(F6(J))return this.bindReference(J);let G=this.createParseContext(J);return F8[G.id]=this.bindReference(DH(G))};parse=(Q,X={})=>this.finalize(this.parseDefinition(Q,X));parseDefinition(Q,X={}){if(r1(Q,"root"))return this.bindReference(Q);let Z=this.preparseOwnDefinitionFormat(Q,X);if(r1(Z,"root"))return this.bindReference(Z);let J=this.createParseContext(Z);F8[J.id]=J;let G=this.bindReference(this.parseOwnDefinitionFormat(Q,J));if(G.isCyclic)G=$V(G,J.id);return F8[J.id]=G,G}finalize(Q){if(fV(Q),!Q.precompilation&&!this.resolvedConfig.jitless)aE(Q.references);return Q}}class hH extends mJ{parseOwnDefinitionFormat(Q,X){return DH(X)}preparseOwnDefinitionFormat(Q,X){return this.preparseNode(h7(Q),Q,X)}preparseOwnAliasEntry(Q,X){return[Q,X]}normalizeRootScopeValue(Q){return Q}}var fV=(Q)=>{return Q.references.filter((X)=>X.hasKind("alias")).forEach((X)=>{Object.assign(X.referencesById,X.resolution.referencesById),Q.references.forEach((Z)=>{if(X.id in Z.referencesById)Object.assign(Z.referencesById,X.referencesById)})}),Q},bV=(Q)=>w0(Q,(X,Z)=>[X,r1(Z,"root")||r1(Z,"generic")?Z.json:r1(Z,"module")?bV(Z):a0(`Unexpected resolution ${O0(Z)}`)]),gH=(Q,X)=>{let Z=X.indexOf(".");if(Z===-1)return;let J=X.slice(0,Z),G=Q[J];if(G===void 0)return;if(!r1(G,"module"))return I1(oE(J));let Y=X.slice(Z+1),H=G[Y];if(H===void 0)return gH(G,Y);if(r1(H,"root")||r1(H,"generic"))return H;if(r1(H,"module"))return H.root??I1(_V(X));a0(`Unexpected resolution for alias '${X}': ${O0(H)}`)},_J=(Q,X)=>new hH(Q,X),l7=new hH({});var mV=(Q,X)=>{let Z={};for(let J in X){let G=X[J];if(r1(G,"module")){let Y=mV(Q,G),H=w0(Y,(K,z)=>[`${J}.${K}`,z]);Object.assign(Z,H)}else if(r1(G,"root")||r1(G,"generic"))Z[J]=G;else a0(`Unexpected scope resolution ${O0(G)}`)}return Z},fH=(Q)=>`'${Q}' is unresolvable`,oE=(Q)=>`'${Q}' must reference a module to be accessed using dot syntax`,_V=(Q)=>`Reference to submodule '${Q}' must specify an alias`,aE=(Q)=>dV(Q,uV(Q)),dV=(Q,X)=>{let Z=sE(X);for(let J of Q){if(J.precompilation)continue;if(J.traverseAllows=Z[`${J.id}Allows`].bind(Z),J.isRoot()&&!J.allowsRequiresContext)J.allows=J.traverseAllows;J.traverseApply=Z[`${J.id}Apply`].bind(Z),J.precompilation=X}},sE=(Q)=>new RJ().return(Q).compile()(),uV=(Q)=>Q.reduce((X,Z)=>{let J=new AJ("Allows").indent();Z.compile(J);let G=J.write(`${Z.id}Allows`),Y=new AJ("Apply").indent();Z.compile(Y);let H=Y.write(`${Z.id}Apply`);return`${X}${G}, +${H}, +`},`{ +`)+"}";l7.export();var{schema:s0,node:tZ,defineSchema:e41,generic:H9}=l7;var pV=_J({bigint:"bigint",boolean:[{unit:!1},{unit:!0}],false:{unit:!1},never:[],null:{unit:null},number:"number",object:"object",string:"string",symbol:"symbol",true:{unit:!0},unknown:{},undefined:{unit:void 0},Array,Date},{prereducedAliases:!0}).export();E1.intrinsic={...pV};var lV=_J({integer:{domain:"number",divisor:1},lengthBoundable:["string",Array],key:["string","symbol"],nonNegativeIntegerString:{domain:"string",pattern:yH}},{prereducedAliases:!0}).export();Object.assign(E1.intrinsic,lV);var tE=_J({jsonPrimitive:["string","number",{unit:!0},{unit:!1},{unit:null}],jsonObject:{domain:"object",index:{signature:"string",value:"$jsonData"}},jsonArray:{proto:Array,sequence:"$jsonData"},jsonData:["$jsonPrimitive","$jsonObject","$jsonArray"],json:["$jsonObject","$jsonArray"]},{prereducedAliases:!0}).export(),P0={...pV,...lV,...tE,emptyStructure:tZ("structure",{},{prereduced:!0})};E1.intrinsic={...P0};var iV=(Q)=>typeof Q==="string"&&Q[0]==="d"&&(Q[1]==="'"||Q[1]==='"')&&Q.at(-1)===Q[1],cV=(Q)=>Q.toString()!=="Invalid Date",nV=(Q)=>Q.slice(2,-1),bH=(Q)=>`'${Q}' could not be parsed by the Date constructor`,oV=(Q,X)=>rE(Q,X),rE=(Q,X)=>{let Z=new Date(Q);if(cV(Z))return Z;let J=jU(Q);if(J!==void 0){let G=new Date(J);if(cV(G))return G}return X?I1(X===!0?bH(Q):X):void 0};var mH=(Q,X)=>{let Z=Q.scanner.shiftUntil(eE[sV[X]]);if(Q.scanner.lookahead==="")return Q.error(Z2(Z,X));if(Q.scanner.shift(),X==="/"){try{new RegExp(Z)}catch(J){I1(String(J))}Q.root=Q.ctx.$.node("intersection",{domain:"string",pattern:Z},{prereduced:!0})}else if(a6(X,_H))Q.root=Q.ctx.$.node("unit",{unit:Z});else{let J=oV(Z,bH(Z));Q.root=Q.ctx.$.node("unit",{meta:Z,unit:J})}},_H={"'":1,'"':1},aV={"/":1,"'":1,'"':1},sV={"d'":"'",'d"':'"',"'":"'",'"':'"',"/":"/"},eE={"'":(Q)=>Q.lookahead==="'",'"':(Q)=>Q.lookahead==='"',"/":(Q)=>Q.lookahead==="/"},Q2={'"':"double-quote","'":"single-quote","/":"forward slash"},Z2=(Q,X)=>`${X}${Q} requires a closing ${Q2[sV[X]]}`;var tV=(Q)=>`Private type references should not include '#'. Use '${Q}' instead.`,dJ="Optional definitions like 'string?' are only valid as properties in an object or tuple",uJ="Defaultable definitions like 'number = 0' are only valid as properties in an object or tuple";var rV={">":!0,">=":!0},eV={"<":!0,"<=":!0};var rZ={"<":">",">":"<","<=":">=",">=":"<=","==":"=="},QP=(Q)=>`Unmatched )${Q===""?"":` before ${Q}`}`,pJ=(Q)=>`Missing ${Q}`,ZP=(Q,X)=>`Left bounds are only valid when paired with right bounds (try ...${X}${Q})`,lJ=(Q)=>`Left-bounded expressions must specify their limits using < or <= (was ${Q})`,XP=(Q,X,Z,J)=>`An expression may have at most one left bound (parsed ${Q}${rZ[X]}, ${Z}${rZ[J]})`;var JP=(Q,X,Z)=>GP(Q,X,Z,[]),GP=(Q,X,Z,J)=>{let G=Z.parseUntilFinalizer();if(J.push(G.root),G.finalizer===">"){if(J.length!==X.params.length)return Z.error(dH(Q,X.names,J.map((Y)=>Y.expression)));return J}if(G.finalizer===",")return GP(Q,X,Z,J);return G.error(pJ(">"))},dH=(Q,X,Z)=>`${Q}<${X.join(", ")}> requires exactly ${X.length} args (got ${Z.length}${Z.length===0?"":`: ${Z.join(", ")}`})`;var uH=(Q)=>{let X=Q.scanner.shiftUntilNextTerminator();if(X==="keyof")Q.addPrefix("keyof");else Q.root=J2(Q,X)},X2=(Q,X,Z)=>{if(Z.scanner.shiftUntilNonWhitespace(),Z.scanner.shift()!=="<")return Z.error(dH(Q,X.names,[]));let G=JP(Q,X,Z);return X(...G)},J2=(Q,X)=>G2(Q,X)??Y2(Q,X)??Q.error(X===""?Q.scanner.lookahead==="#"?tV(Q.shiftedByOne().scanner.shiftUntilNextTerminator()):pH(Q):fH(X)),G2=(Q,X)=>{if(Q.ctx.args?.[X]){let J=Q.ctx.args[X];if(typeof J!=="string")return J;return Q.ctx.$.node("alias",{reference:J},{prereduced:!0})}let Z=Q.ctx.$.maybeResolve(X);if(r1(Z,"root"))return Z;if(Z===void 0)return;if(r1(Z,"generic"))return X2(X,Z,Q);return I1(`Unexpected resolution ${O0(Z)}`)},Y2=(Q,X)=>{let Z=SU(X);if(Z!==void 0)return Q.ctx.$.node("unit",{unit:Z});let J=yU(X);if(J!==void 0)return Q.ctx.$.node("unit",{unit:J})},pH=(Q)=>{let X=Q.previousOperator();return X?lH(X,Q.scanner.unscanned):W2(Q.scanner.unscanned)},lH=(Q,X="")=>`Token '${Q}' requires a right operand${X?` before '${X}'`:""}`,W2=(Q)=>`Expected an expression${Q?` before '${Q}'`:""}`;var cH=(Q)=>Q.scanner.lookahead===""?Q.error(pH(Q)):Q.scanner.lookahead==="("?Q.shiftedByOne().reduceGroupOpen():Q.scanner.lookaheadIsIn(aV)?mH(Q,Q.scanner.shift()):Q.scanner.lookaheadIsIn(dQ)?cH(Q.shiftedByOne()):Q.scanner.lookahead==="d"?Q.scanner.nextLookahead in _H?mH(Q,`${Q.scanner.shift()}${Q.scanner.shift()}`):uH(Q):uH(Q);class TQ extends t3{shiftUntilNextTerminator(){return this.shiftUntilNonWhitespace(),this.shiftUntil(()=>(this.lookahead in TQ.terminatingChars))}static terminatingChars={"<":1,">":1,"=":1,"|":1,"&":1,")":1,"[":1,"%":1,",":1,":":1,"?":1,"#":1,...dQ};static finalizingLookaheads={">":1,",":1,"":1,"=":1,"?":1};static lookaheadIsFinalizing=(Q,X)=>Q===">"?X[0]==="="?X[1]==="=":X.trimStart()===""||a6(X.trimStart()[0],TQ.terminatingChars):Q==="="?X[0]!=="=":Q===","||Q==="?"}var WP=(Q,X)=>{let Z=q2(Q,X);if(Q.root.hasKind("unit")){if(typeof Q.root.unit==="number"){Q.reduceLeftBound(Q.root.unit,Z),Q.unsetRoot();return}if(Q.root.unit instanceof Date){let J=`d'${Q.root.description??Q.root.unit.toISOString()}'`;Q.unsetRoot(),Q.reduceLeftBound(J,Z);return}}return z2(Q,Z)},qP={"<":1,">":1,"=":1},q2=(Q,X)=>Q.scanner.lookaheadIs("=")?`${X}${Q.scanner.shift()}`:X;var YP=(Q,X,Z,J)=>{if(Z.extends(E1.intrinsic.number)){if(typeof X!=="number")return I1(iH(Q,X,J));return Q==="=="?["min","max"]:Q[0]===">"?["min"]:["max"]}if(Z.extends(E1.intrinsic.lengthBoundable)){if(typeof X!=="number")return I1(iH(Q,X,J));return Q==="=="?["exactLength"]:Q[0]===">"?["minLength"]:["maxLength"]}if(Z.extends(E1.intrinsic.Date))return Q==="=="?["after","before"]:Q[0]===">"?["after"]:["before"];return I1(rU(Z.expression))},H2=(Q)=>({rule:iV(Q.limit)?nV(Q.limit):Q.limit,exclusive:Q.comparator.length===1}),z2=(Q,X)=>{let Z=Q.unsetRoot(),J=Q.scanner.location;Q.parseOperand();let G=Q.unsetRoot(),Y=Q.scanner.sliceChars(J,Q.scanner.location);if(Q.root=Z,!G.hasKind("unit")||typeof G.unit!=="number"&&!(G.unit instanceof Date))return Q.error(iH(X,Y,"right"));let H=G.unit,K=X.length===1,z=YP(X,typeof H==="number"?H:Y,Z,"right");for(let $ of z)Q.constrainRoot($,X==="=="?{rule:H}:{rule:H,exclusive:K});if(!Q.branches.leftBound)return;if(!a6(X,eV))return Q.error(lJ(X));let W=YP(Q.branches.leftBound.comparator,Q.branches.leftBound.limit,Z,"left");Q.constrainRoot(W[0],H2(Q.branches.leftBound)),Q.branches.leftBound=null},iH=(Q,X,Z)=>`Comparator ${Z==="left"?rZ[Q]:Q} must be ${Z==="left"?"preceded":"followed"} by a corresponding literal (was ${X})`;var HP=(Q)=>{Q.scanner.shiftUntilNonWhitespace();let X=Q.scanner.shiftUntilNextTerminator();Q.root=Q.root.brand(X)};var KP=(Q)=>{let X=Q.scanner.shiftUntilNextTerminator(),Z=kU(X,{errorOnFail:zP(X)});if(Z===0)Q.error(zP(0));Q.root=Q.root.constrain("divisor",Z)},zP=(Q)=>`% operator must be followed by a non-zero integer literal (was ${Q})`;var nH=(Q)=>{let X=Q.scanner.shift();return X===""?Q.finalize(""):X==="["?Q.scanner.shift()==="]"?Q.setRoot(Q.root.array()):Q.error(K2):X==="|"||X==="&"?Q.pushRootToBranch(X):X===")"?Q.finalizeGroup():TQ.lookaheadIsFinalizing(X,Q.scanner.unscanned)?Q.finalize(X):a6(X,qP)?WP(Q,X):X==="%"?KP(Q):X==="#"?HP(Q):(X in dQ)?nH(Q):Q.error(cJ(X))},cJ=(Q,X="")=>`'${Q}' is not allowed here${X&&` (should be ${X})`}`,K2="Missing expected ']'";var $P=(Q)=>{let X=Q.unsetRoot();Q.parseOperand();let Z=Q.unsetRoot();if(!Z.hasKind("unit"))return Q.error($2(Z.expression));let J=Z.unit instanceof Date?()=>new Date(Z.unit):Z.unit;return[X,"=",J]},$2=(Q)=>`Default value '${Q}' must a literal value`;var oH=(Q,X)=>{let Z=X.$.maybeResolveRoot(Q);if(Z)return Z;let J=Q.endsWith("[]")?X.$.maybeResolveRoot(Q.slice(0,-2))?.array():void 0;if(J)return J;let G=new eZ(new TQ(Q),X),Y=B2(G);if(G.finalizer===">")I1(cJ(">"));return Y},B2=(Q)=>{Q.parseOperand();let X=c7(Q).root;if(!X)return a0(`Root was unexpectedly unset after parsing string '${Q.scanner.scanned}'`);if(Q.finalizer==="=")X=$P(Q);else if(Q.finalizer==="?")X=[X,"?"];if(Q.scanner.shiftUntilNonWhitespace(),Q.scanner.lookahead)I1(cJ(Q.scanner.lookahead));return X},c7=(Q)=>{while(Q.finalizer===void 0)U2(Q);return Q},U2=(Q)=>Q.hasRoot()?Q.parseOperator():Q.parseOperand();class eZ{root;branches={prefixes:[],leftBound:null,intersection:null,union:null};finalizer;groups=[];scanner;ctx;constructor(Q,X){this.scanner=Q,this.ctx=X}error(Q){return I1(Q)}hasRoot(){return this.root!==void 0}setRoot(Q){this.root=Q}unsetRoot(){let Q=this.root;return this.root=void 0,Q}constrainRoot(...Q){this.root=this.root.constrain(Q[0],Q[1])}finalize(Q){if(this.groups.length)return this.error(pJ(")"));this.finalizeBranches(),this.finalizer=Q}reduceLeftBound(Q,X){let Z=rZ[X];if(!a6(Z,rV))return this.error(lJ(X));if(this.branches.leftBound)return this.error(XP(this.branches.leftBound.limit,this.branches.leftBound.comparator,Q,Z));this.branches.leftBound={comparator:Z,limit:Q}}finalizeBranches(){if(this.assertRangeUnset(),this.branches.union)this.pushRootToBranch("|"),this.root=this.branches.union;else if(this.branches.intersection)this.pushRootToBranch("&"),this.root=this.branches.intersection;else this.applyPrefixes()}finalizeGroup(){this.finalizeBranches();let Q=this.groups.pop();if(!Q)return this.error(QP(this.scanner.unscanned));this.branches=Q}addPrefix(Q){this.branches.prefixes.push(Q)}applyPrefixes(){while(this.branches.prefixes.length){let Q=this.branches.prefixes.pop();this.root=Q==="keyof"?this.root.keyof():a0(`Unexpected prefix '${Q}'`)}}pushRootToBranch(Q){this.assertRangeUnset(),this.applyPrefixes();let X=this.root;if(this.branches.intersection=this.branches.intersection?.rawAnd(X)??X,Q==="|")this.branches.union=this.branches.union?.rawOr(this.branches.intersection)??this.branches.intersection,this.branches.intersection=null;this.root=void 0}parseUntilFinalizer(){return c7(new eZ(this.scanner,this.ctx))}parseOperator(){return nH(this)}parseOperand(){return cH(this)}assertRangeUnset(){if(this.branches.leftBound)return this.error(ZP(this.branches.leftBound.limit,this.branches.leftBound.comparator))}reduceGroupOpen(){this.groups.push(this.branches),this.branches={prefixes:[],leftBound:null,union:null,intersection:null}}previousOperator(){return this.branches.leftBound?.comparator??this.branches.prefixes.at(-1)??(this.branches.intersection?"&":this.branches.union?"|":void 0)}shiftedByOne(){return this.scanner.shift(),this}}var V2="An empty string is not a valid generic parameter name",iJ=(Q,X,Z)=>{Q.shiftUntilNonWhitespace();let J=Q.shiftUntilNextTerminator();if(J===""){if(Q.lookahead===""&&X.length)return X;return I1(V2)}return Q.shiftUntilNonWhitespace(),P2(Q,J,X,Z)},BP="extends ",P2=(Q,X,Z,J)=>{if(Q.shiftUntilNonWhitespace(),Q.unscanned.startsWith(BP))Q.jumpForward(BP.length);else{if(Q.lookahead===",")Q.shift();return Z.push(X),iJ(Q,Z,J)}let G=c7(new eZ(Q,J));return Z.push([X,G.root]),iJ(Q,Z,J)};var nJ=(Q,X)=>{if(G6(Q)){if(Q[1]==="=")return[X.$.parseOwnDefinitionFormat(Q[0],X),"=",Q[2]];if(Q[1]==="?")return[X.$.parseOwnDefinitionFormat(Q[0],X),"?"]}return oJ(Q,X)},UP="Only required keys may make their values optional, e.g. { [mySymbol]: ['number', '?'] }",VP="Only required keys may specify default values, e.g. { value: 'number = 0' }";var PP=(Q,X)=>{let Z,J={},G=w7(Q);for(let[H,K]of G){let z=L2(H);if(z.kind==="spread"){if(!O9(J))return I1(D2);let D=X.$.parseOwnDefinitionFormat(K,X);if(!D.hasKind("intersection")||!D.structure)return I1(C2(D.expression));Z=D.structure;continue}if(z.kind==="undeclared"){if(K!=="reject"&&K!=="delete"&&K!=="ignore")I1(F2(K));J.undeclared=K;continue}let W=nJ(K,X),$=z;if(z.kind==="required"){if(!G6(W))aH(J,"required",{key:z.normalized,value:W},X);else aH(J,"optional",W[1]==="="?{key:z.normalized,value:W[0],default:W[2]}:{key:z.normalized,value:W[0]},X);continue}if(G6(W)){if(W[1]==="?")I1(UP);if(W[1]==="=")I1(VP)}if(z.kind==="optional"){aH(J,"optional",{key:z.normalized,value:W},X);continue}let q=X.$.parseOwnDefinitionFormat($.normalized,X),B=bJ(q,W,X.$);if(B.index)J.index=h0(J.index,B.index);if(B.required)J.required=h0(J.required,B.required)}let Y=X.$.node("structure",J);return X.$.parseSchema({domain:"object",structure:Z?.merge(Y)??Y})},aH=(Q,X,Z,J)=>{Q[X]=h0(Q[X],J.$.node(X,Z))},F2=(Q)=>`Value of '+' key must be 'reject', 'delete', or 'ignore' (was ${O0(Q)})`,D2="Spread operator may only be used as the first key in an object",L2=(Q)=>typeof Q==="symbol"?{kind:"required",normalized:Q}:Q.at(-1)==="?"?Q.at(-2)===k7?{kind:"required",normalized:`${Q.slice(0,-2)}?`}:{kind:"optional",normalized:Q.slice(0,-1)}:Q[0]==="["&&Q.at(-1)==="]"?{kind:"index",normalized:Q.slice(1,-1)}:Q[0]===k7&&Q[1]==="["&&Q.at(-1)==="]"?{kind:"required",normalized:Q.slice(1)}:Q==="..."?{kind:"spread"}:Q==="+"?{kind:"undeclared"}:{kind:"required",normalized:Q==="\\..."?"...":Q==="\\+"?"+":Q},C2=(Q)=>`Spread operand must resolve to an object literal type (was ${Q})`;var LP=(Q,X)=>O2(Q)?TP[Q[0]](Q,X):M2(Q)?NP[Q[1]](Q,X):null,N2=(Q,X)=>X.$.parseOwnDefinitionFormat(Q[1],X).keyof(),FP=(Q,X)=>{if(Q[2]===void 0)return I1(lH(Q[1],""));let Z=X.$.parseOwnDefinitionFormat(Q[0],X),J=X.$.parseOwnDefinitionFormat(Q[2],X);if(Q[1]==="|")return X.$.node("union",{branches:[Z,J]});let G=i8(Z,J,X.$);if(G instanceof p1)return G.throw();return G},T2=(Q,X)=>X.$.parseOwnDefinitionFormat(Q[0],X).array(),M2=(Q)=>NP[Q[1]]!==void 0,I2=(Q,X)=>{if(typeof Q[2]!=="function")return I1(CP("=>",Q[2]));return X.$.parseOwnDefinitionFormat(Q[0],X).pipe(Q[2])},CP=(Q,X)=>`${Q===":"?"Narrow":"Morph"} expression requires a function following '${Q}' (was ${typeof X})`,R2=(Q,X)=>{if(typeof Q[2]!=="function")return I1(CP(":",Q[2]));return X.$.parseOwnDefinitionFormat(Q[0],X).constrain("predicate",Q[2])},A2=(Q,X)=>X.$.parseOwnDefinitionFormat(Q[0],X).configureShallowDescendants(Q[2]),NP={"[]":T2,"|":FP,"&":FP,":":R2,"=>":I2,"@":A2,"=":()=>I1(uJ),"?":()=>I1(dJ)},TP={keyof:N2,instanceof:(Q,X)=>{if(typeof Q[1]!=="function")return I1(DP(j7(Q[1])));let Z=Q.slice(1).map((J)=>typeof J==="function"?X.$.node("proto",{proto:J}):I1(DP(j7(J))));return Z.length===1?Z[0]:X.$.node("union",{branches:Z})},"===":(Q,X)=>X.$.units(Q.slice(1))},O2=(Q)=>TP[Q[0]]!==void 0,DP=(Q)=>`Expected a constructor following 'instanceof' operator (was ${Q})`;var RP=(Q,X)=>{let Z=[{}],J=0;while(JH.distribute(($)=>E2(OJ(W),$)))}else Z=Z.map((W)=>{if(K==="?")return AP(W,H);if(K==="=")return w2(W,H,z);return sH(W,H)})}return X.$.parseSchema(Z.map((G)=>O9(G)?{proto:Array,exactLength:0}:{proto:Array,sequence:G}))},sH=(Q,X)=>{if(Q.defaultables||Q.optionals)return I1(Q.variadic?kH:S2);if(Q.variadic)Q.postfix=h0(Q.postfix,X);else Q.prefix=h0(Q.prefix,X);return Q},AP=(Q,X)=>{if(Q.variadic)return I1(OP);return Q.optionals=h0(Q.optionals,X),Q},w2=(Q,X,Z)=>{if(Q.variadic)return I1(OP);if(Q.optionals)return I1(k2);return Q.defaultables=h0(Q.defaultables,[[X,Z]]),Q},MP=(Q,X)=>{if(Q.postfix)I1(IP);if(Q.variadic){if(!Q.variadic.equals(X))I1(IP)}else Q.variadic=X.internal;return Q},E2=(Q,X)=>{let Z=X.firstReferenceOfKind("sequence");if(!Z)return MP(Q,E1.intrinsic.unknown);if(Z.prefix?.forEach((J)=>sH(Q,J)),Z.optionals?.forEach((J)=>AP(Q,J)),Z.variadic)MP(Q,Z.variadic);return Z.postfix?.forEach((J)=>sH(Q,J)),Q},j2=(Q)=>`Spread element must be an array (was ${Q})`,IP="A tuple may have at most one variadic element",S2="A required element may not follow an optional element",OP="An optional element may not follow a variadic element";var k2="A defaultable element may not follow an optional element without a default";var y2={},oJ=(Q,X)=>{if(typeof Q==="string"){if(X.args&&Object.keys(X.args).some((J)=>Q.includes(J)))return oH(Q,X);let Z=y2[X.$.id]??={};return Z[Q]??=oH(Q,X)}return M8(Q,"object")?x2(Q,X):I1(tH(P8(Q)))},x2=(Q,X)=>{let Z=E7(Q);switch(Z){case void 0:if(r1(Q,"root"))return Q;return PP(Q,X);case"Array":return v2(Q,X);case"RegExp":return X.$.node("intersection",{domain:"string",pattern:Q},{prereduced:!0});case"Function":{let J=mQ(Q)?Q():Q;if(r1(J,"root"))return J;return I1(tH("Function"))}default:return I1(tH(Z??O0(Q)))}},v2=(Q,X)=>LP(Q,X)??RP(Q,X),tH=(Q)=>`Type definitions must be strings or objects (was ${Q})`;class rH extends _Q{constructor(Q){let X=Object.assign({errors:R8,hkt:X8,$:Q,raw:Q.parse,module:Q.constructor.module,scope:Q.constructor.scope,define:Q.define,generic:Q.generic,schema:Q.schema,keywords:Q.ambient,unit:Q.unit,enumerated:Q.enumerated,instanceOf:Q.instanceOf},Q.ambientAttachments);super((...Z)=>{if(Z.length===1)return Q.parse(Z[0]);if(Z.length===2&&typeof Z[0]==="string"&&Z[0][0]==="<"&&Z[0].at(-1)===">"){let J=Z[0].slice(1,-1),G=Q.parseGenericParams(J,{});return new pQ(G,Z[1],Q,Q,null)}return Q.parse(Z)},{bind:Q,attach:X})}}var aJ=E1;class sJ extends mJ{cacheGetter(Q,X){return Object.defineProperty(this,Q,{value:X}),X}get ambientAttachments(){if(!aJ.typeAttachments)return;return this.cacheGetter("ambientAttachments",w0(aJ.typeAttachments,(Q,X)=>[Q,this.bindReference(X)]))}preparseOwnAliasEntry(Q,X){let Z=Q.indexOf("<");if(Z===-1)return[Q,X];if(Q.at(-1)!==">")I1("'>' must be the last character of a generic declaration in a scope");let J=Q.slice(0,Z),G=Q.slice(Z+1,-1);return[J,()=>{let Y=this.parseGenericParams(G,{alias:J});return nU(Y,X,this)}]}parseGenericParams(Q,X){return iJ(new TQ(Q),[],this.createParseContext({...X,def:Q,prefix:"generic"}))}normalizeRootScopeValue(Q){if(mQ(Q)&&!r1(Q,"generic"))return Q();return Q}preparseOwnDefinitionFormat(Q,X){return{...X,def:Q,prefix:X.alias??"type"}}parseOwnDefinitionFormat(Q,X){if(!(X.alias&&(X.alias in this.aliases))&&!X.args)X.args={this:X.id};let J=oJ(Q,X);if(G6(J)){if(J[1]==="=")return I1(uJ);if(J[1]==="?")return I1(dJ)}return J}unit=(Q)=>this.units([Q]);enumerated=(...Q)=>this.units(Q);instanceOf=(Q)=>this.node("proto",{proto:Q},{prereduced:!0});type=new rH(this);declare=()=>({type:this.type});define(Q){return Q}static scope=(Q,X={})=>new sJ(Q,X);static module=(Q,X={})=>this.scope(Q,X).export()}var eH=Object.assign(sJ.scope,{define:(Q)=>Q}),k0=sJ;class wP extends X8{}var g2=H9(["base",P0.object],["props",P0.object])((Q)=>Q.base.merge(Q.props),wP),Qz=k0.module({Key:P0.key,Merge:g2});class EP extends X8{}var h2=H9("element")((Q)=>{let X=Q.element.exclude(P0.Array),Z=X.array();return X.rawOr(Z).pipe(gZ).distribute((J)=>J.assertHasKind("morph").declareOut(Z),s0)},EP),jP=k0.module({root:P0.Array,readonly:"root",index:P0.nonNegativeIntegerString,liftFrom:h2});var Zz=s0(["string",m4.FileConstructor]),f2=Zz.rawOr(Zz.array()),SP=s0({meta:"an object representing parsed form data",domain:"object",index:{signature:"string",value:f2}}),kP=k0.module({root:["instanceof",FormData],value:Zz,parsed:SP,parse:s0({in:FormData,morphs:(Q)=>{let X={};for(let[Z,J]of Q)if(Z in X){let G=X[Z];if(typeof G==="string"||G instanceof m4.FileConstructor)X[Z]=[G,J];else G.push(J)}else X[Z]=J;return X},declaredOut:SP})});var yP=k0.module({Int8:["instanceof",Int8Array],Uint8:["instanceof",Uint8Array],Uint8Clamped:["instanceof",Uint8ClampedArray],Int16:["instanceof",Int16Array],Uint16:["instanceof",Uint16Array],Int32:["instanceof",Int32Array],Uint32:["instanceof",Uint32Array],Float32:["instanceof",Float32Array],Float64:["instanceof",Float64Array],BigInt64:["instanceof",BigInt64Array],BigUint64:["instanceof",BigUint64Array]});var b2={Boolean:1,Number:1,String:1},tJ=k0.module({...w0({...p3,...c3},(Q,X)=>(Q in b2)?[]:[Q,["instanceof",X]]),Array:jP,TypedArray:yP,FormData:kP});var m2=s0({domain:{domain:"number",meta:"a number representing a Unix timestamp"},divisor:{rule:1,meta:"an integer representing a Unix timestamp"},min:{rule:-8640000000000000,meta:"a Unix timestamp after -8640000000000000"},max:{rule:8640000000000000,meta:"a Unix timestamp before 8640000000000000"},meta:"an integer representing a safe Unix timestamp"}),_2=s0({domain:"number",divisor:1}),rJ=k0.module({root:P0.number,integer:_2,epoch:m2,safe:s0({domain:"number",min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,predicate:{predicate:(Q)=>!Number.isNaN(Q),meta:"a safe number"}}),NaN:["===",Number.NaN],Infinity:["===",Number.POSITIVE_INFINITY],NegativeInfinity:["===",Number.NEGATIVE_INFINITY]});var T6=(Q,X)=>tZ("intersection",{domain:"string",pattern:{rule:Q.source,flags:Q.flags,meta:X}}),xP=T6(y7,"a well-formed integer string"),lP=k0.module({root:xP,parse:s0({in:xP,morphs:(Q,X)=>{let Z=Number.parseInt(Q);return Number.isSafeInteger(Z)?Z:X.error("an integer in the range Number.MIN_SAFE_INTEGER to Number.MAX_SAFE_INTEGER")},declaredOut:P0.integer})}),d2=k0.module({root:T6(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,"base64-encoded"),url:T6(/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2}(?:==|%3D%3D)?|[A-Za-z0-9_-]{3}(?:=|%3D)?)?$/,"base64url-encoded")}),vP=T6(/^[A-Z].*$/,"capitalized"),u2=k0.module({root:s0({in:"string",morphs:(Q)=>Q.charAt(0).toUpperCase()+Q.slice(1),declaredOut:vP}),preformatted:vP}),p2=(Q)=>{let X=Q.replace(/[- ]+/g,""),Z=0,J,G,Y=!1;for(let H=X.length-1;H>=0;H--){if(J=X.substring(H,H+1),G=Number.parseInt(J,10),Y)if(G*=2,G>=10)Z+=G%10+1;else Z+=G;else Z+=G;Y=!Y}return!!(Z%10===0?X:!1)},l2=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/,c2=s0({domain:"string",pattern:{meta:"a credit card number",rule:l2.source},predicate:{meta:"a credit card number",predicate:p2}});var i2=/^([+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([.,]\d+(?!:))?)?(\17[0-5]\d([.,]\d+)?)?([zZ]|([+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;var n2=(Q)=>!Number.isNaN(new Date(Q).valueOf()),gP=s0({domain:"string",predicate:{meta:"a parsable date",predicate:n2}}).assertHasKind("intersection"),hP=lP.root.internal.narrow((Q,X)=>{let Z=Number.parseInt(Q),J=rJ.epoch(Z);if(J instanceof R8)return X.errors.merge(J),!1;return!0}).withMeta({description:"an integer string representing a safe Unix timestamp"}).assertHasKind("intersection"),o2=k0.module({root:hP,parse:s0({in:hP,morphs:(Q)=>new Date(Q),declaredOut:P0.Date})}),fP=T6(i2,"an ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) date").internal.assertHasKind("intersection"),a2=k0.module({root:fP,parse:s0({in:fP,morphs:(Q)=>new Date(Q),declaredOut:P0.Date})}),s2=k0.module({root:gP,parse:s0({declaredIn:gP,in:"string",morphs:(Q,X)=>{let Z=new Date(Q);if(Number.isNaN(Z.valueOf()))return X.error("a parsable date");return Z},declaredOut:P0.Date}),iso:a2,epoch:o2}),t2=T6(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/,"an email address"),bP="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",cQ=`(${bP}[.]){3}${bP}`,r2=new RegExp(`^${cQ}$`),h6="(?:[0-9a-fA-F]{1,4})",e2=new RegExp(`^((?:${h6}:){7}(?:${h6}|:)|(?:${h6}:){6}(?:${cQ}|:${h6}|:)|(?:${h6}:){5}(?::${cQ}|(:${h6}){1,2}|:)|(?:${h6}:){4}(?:(:${h6}){0,1}:${cQ}|(:${h6}){1,3}|:)|(?:${h6}:){3}(?:(:${h6}){0,2}:${cQ}|(:${h6}){1,4}|:)|(?:${h6}:){2}(?:(:${h6}){0,3}:${cQ}|(:${h6}){1,5}|:)|(?:${h6}:){1}(?:(:${h6}){0,4}:${cQ}|(:${h6}){1,6}|:)|(?::((?::${h6}){0,5}:${cQ}|(?::${h6}){1,7}|:)))(%[0-9a-zA-Z.]{1,})?$`),Qj=k0.module({root:["v4 | v6","@","an IP address"],v4:T6(r2,"an IPv4 address"),v6:T6(e2,"an IPv6 address")}),i7="a JSON string",cP=(Q)=>{if(!(Q instanceof SyntaxError))throw Q;return`must be ${i7} (${Q})`},Zj=s0({domain:"string",predicate:{meta:i7,predicate:(Q,X)=>{try{return JSON.parse(Q),!0}catch(Z){return X.reject({code:"predicate",expected:i7,problem:cP(Z)})}}}}),Xj=(Q,X)=>{if(Q.length===0)return X.error({code:"predicate",expected:i7,actual:"empty"});try{return JSON.parse(Q)}catch(Z){return X.error({code:"predicate",expected:i7,problem:cP(Z)})}},Jj=k0.module({root:Zj,parse:s0({in:"string",morphs:Xj,declaredOut:P0.json})}),mP=T6(/^[a-z]*$/,"only lowercase letters"),Gj=k0.module({root:s0({in:"string",morphs:(Q)=>Q.toLowerCase(),declaredOut:mP}),preformatted:mP}),iP=["NFC","NFD","NFKC","NFKD"],n7=w0(iP,(Q,X)=>[X,s0({domain:"string",predicate:(Z)=>Z.normalize(X)===Z,meta:`${X}-normalized unicode`})]),eJ=w0(iP,(Q,X)=>[X,s0({in:"string",morphs:(Z)=>Z.normalize(X),declaredOut:n7[X]})]),Yj=k0.module({root:eJ.NFC,preformatted:n7.NFC}),Wj=k0.module({root:eJ.NFD,preformatted:n7.NFD}),qj=k0.module({root:eJ.NFKC,preformatted:n7.NFKC}),Hj=k0.module({root:eJ.NFKD,preformatted:n7.NFKD}),zj=k0.module({root:"NFC",NFC:Yj,NFD:Wj,NFKC:qj,NFKD:Hj}),_P=T6(OU,"a well-formed numeric string"),Kj=k0.module({root:_P,parse:s0({in:_P,morphs:(Q)=>Number.parseFloat(Q),declaredOut:P0.number})}),$j=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,Bj=T6($j,"a semantic version (see https://semver.org/)"),dP=T6(/^\S.*\S$|^\S?$/,"trimmed"),Uj=k0.module({root:s0({in:"string",morphs:(Q)=>Q.trim(),declaredOut:dP}),preformatted:dP}),uP=T6(/^[A-Z]*$/,"only uppercase letters"),Vj=k0.module({root:s0({in:"string",morphs:(Q)=>Q.toUpperCase(),declaredOut:uP}),preformatted:uP}),Pj=(Q)=>{if(URL.canParse)return URL.canParse(Q);try{return new URL(Q),!0}catch{return!1}},pP=s0({domain:"string",predicate:{meta:"a URL string",predicate:Pj}}),Fj=k0.module({root:pP,parse:s0({declaredIn:pP,in:"string",morphs:(Q,X)=>{try{return new URL(Q)}catch{return X.error("a URL string")}},declaredOut:s0(URL)})}),Dj=k0.module({root:["versioned | nil | max","@","a UUID"],"#nil":"'00000000-0000-0000-0000-000000000000'","#max":"'ffffffff-ffff-ffff-ffff-ffffffffffff'","#versioned":/[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i,v1:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv1"),v2:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-2[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv2"),v3:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv3"),v4:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv4"),v5:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv5"),v6:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv6"),v7:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv7"),v8:T6(/^[0-9a-f]{8}-[0-9a-f]{4}-8[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"a UUIDv8")}),nP=k0.module({root:P0.string,alpha:T6(/^[A-Za-z]*$/,"only letters"),alphanumeric:T6(/^[A-Za-z\d]*$/,"only letters and digits 0-9"),base64:d2,capitalize:u2,creditCard:c2,date:s2,digits:T6(/^\d*$/,"only digits 0-9"),email:t2,integer:lP,ip:Qj,json:Jj,lower:Gj,normalize:zj,numeric:Kj,semver:Bj,trim:Uj,upper:Vj,url:Fj,uuid:Dj});var Xz=k0.module({bigint:P0.bigint,boolean:P0.boolean,false:P0.false,never:P0.never,null:P0.null,number:P0.number,object:P0.object,string:P0.string,symbol:P0.symbol,true:P0.true,unknown:P0.unknown,undefined:P0.undefined}),oP=k0.module({root:P0.unknown,any:P0.unknown}),Lj=k0.module({root:P0.json,stringify:tZ("morph",{in:P0.json,morphs:(Q)=>JSON.stringify(Q),declaredOut:P0.string})}),aP=k0.module({root:P0.object,json:Lj});class sP extends X8{description="a generic type that instantiates an object from a single index signature and corresponding value type"}var Cj=H9(["K",P0.key],"V")((Q)=>({domain:"object",index:{signature:Q.K,value:Q.V}}),sP);class tP extends X8{}var Nj=H9(["T",P0.object],["K",P0.key])((Q)=>Q.T.pick(Q.K),tP);class rP extends X8{}var Tj=H9(["T",P0.object],["K",P0.key])((Q)=>Q.T.omit(Q.K),rP);class eP extends X8{}var Mj=H9(["T",P0.object])((Q)=>Q.T.partial(),eP);class QF extends X8{}var Ij=H9(["T",P0.object])((Q)=>Q.T.required(),QF);class ZF extends X8{}var Rj=H9("T","U")((Q)=>Q.T.exclude(Q.U),ZF);class XF extends X8{}var Aj=H9("T","U")((Q)=>Q.T.extract(Q.U),XF),Jz=k0.module({Exclude:Rj,Extract:Aj,Omit:Tj,Partial:Mj,Pick:Nj,Record:Cj,Required:Ij});aJ.typeAttachments={...Xz,Key:Qz.Key,Record:Jz.Record,Array:tJ.Array.root,Date:tJ.Date};var i4=eH({...Xz,...Jz,...tJ,...Qz,string:nP,number:rJ,object:aP,unknown:oP},{prereducedAliases:!0,ambient:!0}),Oj=i4.export(),c1=i4.type,wj=i4.generic,PX1=i4.schema,Ej=i4.define,jj=i4.declare;var w4=require("obsidian");var Gz=(Q,X=(Z)=>Z===void 0)=>{if(!Q)return{};return Object.keys(Q).reduce((J,G)=>{if(X(Q[G]))return J;else return J[G]=Q[G],J},{})};var F3=Z8(zq());var $q=require("fs"),jN=require("fs/promises"),f5=require("os"),b5=require("path");function SN(Q,X){switch(f5.platform()){case"darwin":return b5.resolve(f5.homedir(),"Library","Logs",Q,X);case"win32":return b5.resolve(f5.homedir(),"AppData","Local","Logs",Q,X);case"linux":return b5.resolve(f5.homedir(),".local","share","logs",Q,X);default:throw new Error("Unsupported operating system")}}var ui=(Q)=>{if(!$q.existsSync(Q))$q.mkdirSync(Q,{recursive:!0})},CK=["DEBUG","INFO","WARN","ERROR","FATAL"],pi=c1.enumerated(...CK),li=(Q,X,Z)=>{let J=new Date().toISOString(),G=Object.keys(Z).length?` +${JSON.stringify(Z,null,2)}`:"";return`${J} [${Q.padEnd(5)}] ${JSON.stringify(X)}${G} +`},ci=c1({appName:"string",filename:"string",level:pi}),Kq=ci.pipe((Q)=>{let X=SN(Q.appName,Q.filename),Z=CK.slice(CK.indexOf(Q.level));return{...Q,levels:Z,filename:X}});function kN(Q){let X=Kq.assert(Q),Z={},J=[],G=(q,B,D)=>{if(!X.levels.includes(q))return;ui(b5.dirname(SN(X.appName,X.filename))),J.push(jN.appendFile(X.filename,li(q,B,{...Z,...D??{}})))},$={debug:(q,B)=>G("DEBUG",q,B),info:(q,B)=>G("INFO",q,B),warn:(q,B)=>G("WARN",q,B),error:(q,B)=>G("ERROR",q,B),fatal:(q,B)=>G("FATAL",q,B),flush(){return Promise.all(J)},get config(){return{...X}},set config(q){X=Kq.assert({...X,...q}),$.debug("Updated logger configuration",{config:X})},set meta(q){Z=q}};return $}var Bq={};LJ(Bq,{MIME_TYPE_OLRAPI_NOTE_JSON:()=>qn,ApiVaultFileResponse:()=>Zn,ApiVaultDirectoryResponse:()=>Qn,ApiTemplateExecutionResponse:()=>Wn,ApiTemplateExecutionParams:()=>Yn,ApiStatusResponse:()=>oi,ApiSmartSearchResult:()=>vN,ApiSmartSearchResponse:()=>ti,ApiSimpleSearchResponse:()=>si,ApiSimpleSearchMatch:()=>xN,ApiSearchResponse:()=>ai,ApiSearchParameters:()=>ri,ApiPatchParameters:()=>Xn,ApiNoteJson:()=>ni,ApiNoContentResponse:()=>Gn,ApiError:()=>ii,ApiContentResponse:()=>Jn,ApiCommandsResponse:()=>ei,ApiCommand:()=>gN});var ii=c1({errorCode:"number",message:"string"}),ni=c1({content:"string",frontmatter:"Record",path:"string",stat:{ctime:"number",mtime:"number",size:"number"},tags:"string[]"}),yN=c1({id:"string",name:"string",version:"string",minAppVersion:"string",description:"string",author:"string",authorUrl:"string",isDesktopOnly:"boolean",dir:"string"}),oi=c1({status:"string",manifest:yN,versions:{obsidian:"string",self:"string"},service:"string",authenticated:"boolean",certificateInfo:{validityDays:"number",regenerateRecommended:"boolean"},apiExtensions:yN.array()}),ai=c1({filename:"string",result:"string|number|string[]|object|boolean"}).array(),xN=c1({match:{start:"number",end:"number"},context:"string"}),si=c1({filename:"string",matches:xN.array(),score:"number"}).array(),vN=c1({path:"string",text:"string",score:"number",breadcrumbs:"string"}),ti=c1({results:vN.array()}),ri=c1({query:"string",filter:{folders:"string[]?",excludeFolders:"string[]?",limit:"number?"}}),gN=c1({id:"string",name:"string"}),ei=c1({commands:gN.array()}),Qn=c1({files:"string[]"}),Zn=c1({frontmatter:{tags:"string[]",description:"string?"},content:"string",path:"string",stat:{ctime:"number",mtime:"number",size:"number"},tags:"string[]"}),Xn=c1({operation:c1("'append' | 'prepend' | 'replace'").describe("Specifies how to modify the content: append (add after), prepend (add before), or replace existing content"),targetType:c1("'heading' | 'block' | 'frontmatter'").describe("Identifies what to modify: a section under a heading, a referenced block, or a frontmatter field"),target:c1("string").describe("The identifier - either heading path (e.g. 'Heading 1::Subheading 1:1'), block reference ID, or frontmatter field name"),"targetDelimiter?":c1("string").describe("The separator used in heading paths to indicate nesting (default '::')"),"trimTargetWhitespace?":c1("boolean").describe("Whether to remove whitespace from target identifier before matching (default: false)"),content:c1("string").describe("The actual content to insert, append, or use as replacement"),"contentType?":c1("'text/markdown' | 'application/json'").describe("Format of the content - use application/json for structured data like table rows or frontmatter values")}),Jn=c1("string").describe("Content"),Gn=c1("unknown").describe("No Content"),Yn=c1({name:c1("string").describe("The full vault path to the template file"),arguments:"Record","createFile?":c1("boolean").describe("Whether to create a new file from the template"),"targetPath?":c1("string").describe("Path to save the file; required if createFile is true")}),Wn=c1({message:"string",content:"string"}),qn="application/vnd.olrapi.note+json";var Uq={};LJ(Uq,{SmartSearchFilter:()=>Hn});var Hn=c1({"exclude_key?":c1("string").describe("A single key to exclude."),"exclude_keys?":c1("string[]").describe("An array of keys to exclude. If exclude_key is provided, it's added to this array."),"exclude_key_starts_with?":c1("string").describe("Exclude keys starting with this string."),"exclude_key_starts_with_any?":c1("string[]").describe("Exclude keys starting with any of these strings."),"exclude_key_includes?":c1("string").describe("Exclude keys that include this string."),"key_ends_with?":c1("string").describe("Include only keys ending with this string."),"key_starts_with?":c1("string").describe("Include only keys starting with this string."),"key_starts_with_any?":c1("string[]").describe("Include only keys starting with any of these strings."),"key_includes?":c1("string").describe("Include only keys that include this string."),"limit?":c1("number").describe("Limit the number of search results.")});var Vq={};LJ(Vq,{RunMode:()=>hN,FunctionsMode:()=>fN});var hN;((H)=>{H[H.CreateNewFromTemplate=0]="CreateNewFromTemplate";H[H.AppendActiveFile=1]="AppendActiveFile";H[H.OverwriteFile=2]="OverwriteFile";H[H.OverwriteActiveFile=3]="OverwriteActiveFile";H[H.DynamicProcessor=4]="DynamicProcessor";H[H.StartupTemplate=5]="StartupTemplate"})(hN||={});var fN;((Z)=>{Z[Z.INTERNAL=0]="INTERNAL";Z[Z.USER_INTERNAL=1]="USER_INTERNAL"})(fN||={});var zn=c1({name:"string","description?":"string","required?":"boolean"}),zq1=c1({name:"string","description?":c1("string").describe("Description of the prompt"),"arguments?":zn.array()}),Kn=c1("'mcp-tools-prompt'"),Kq1=c1({tags:c1("string[]").narrow((Q)=>Q.some(Kn.allows)),"description?":c1("string")}),$n=c1({type:"'MISSING_REQUIRED_ARG'|'INVALID_ARG_VALUE'",message:"string","argumentName?":"string"}),$q1=c1({content:"string","errors?":$n.array()});var Bn=c1({query:c1("string>0").describe("A search phrase for semantic search"),"filter?":{"folders?":c1("string[]").describe('An array of folder names to include. For example, ["Public", "Work"]'),"excludeFolders?":c1("string[]").describe('An array of folder names to exclude. For example, ["Private", "Archive"]'),"limit?":c1("number>0").describe("The maximum number of results to return")}}),bN=c1("string.json.parse").to(Bn),Pq1=c1({results:c1({path:"string",text:"string",score:"number",breadcrumbs:"string"}).array()}),mN=c1({query:"string",filter:Uq.SmartSearchFilter});var b1=!1;var K9=Array.isArray,dN=Array.prototype.indexOf,KX=Array.from,NK=Object.keys,_6=Object.defineProperty,k9=Object.getOwnPropertyDescriptor,Pq=Object.getOwnPropertyDescriptors,TK=Object.prototype,uN=Array.prototype,P4=Object.getPrototypeOf;var y9=()=>{};function pN(Q){return Q()}function GZ(Q){for(var X=0;X0){let G=Array.from(KZ);var J=jQ;_5(!0);try{for(let Y of G){if((Y.f&x6)!==0)G8(Y,a8);if(N4(Y))u5(Y)}}finally{_5(J)}KZ.clear()}}return X}function LT(Q,X){var Z=Q.reactions;if(Z===null)return;var J=C4(),G=Z.length;for(var Y=0;YZ.line)return G.component}}return null}var Dn=Symbol("ADD_OWNER");function LX(){let Q=kK()?.[2];if(Q)(SK[Q.file]??=[]).push({start:Q,end:null,component:null})}function CX(Q){let X=kK()?.[2];if(X){let Z=SK[X.file],J=Z[Z.length-1];J.end=X,J.component=Q}}function xK(Q,X){if(X.owners===null)return;while(Q){if(Q.owners===null){X.owners=null;break}for(let Z of Q.owners)X.owners.add(Z);Q=Q.parent}}function IT(Q,X){if(Q.owners===null)return!0;return Q.owners.has(X)||Q.parent!==null&&IT(Q.parent,X)}function RT(Q){return Q?.owners?.values().next().value??RT(Q.parent)}var Ln=!1;function AT(Q){if(Ln)return;let X=yK();if(X&&!IT(Q,X)){let Z=RT(Q);if(Z[f0]!==X[f0])jK(X[f0],Z[f0]);else jK()}}function T4(Q,X=null,Z){var J=null;if(b1&&XQ)J=EQ("CreatedAt");if(typeof Q!=="object"||Q===null||S8 in Q)return Q;let G=P4(Q);if(G!==TK&&G!==uN)return Q;var Y=new Map,H=K9(Q),K=d6(0);if(H)Y.set("length",d6(Q.length,J));var z;if(b1)if(z={parent:X,owners:null},Z){let W=Z.v?.[HZ]?.owners;z.owners=W?new Set(W):null}else z.owners=X===null?j0!==null?new Set([j0.function]):null:new Set;return new Proxy(Q,{defineProperty(W,$,q){if(!("value"in q)||q.configurable===!1||q.enumerable===!1||q.writable===!1)XT();var B=Y.get($);if(B===void 0)B=d6(q.value,J),Y.set($,B);else Y6(B,T4(q.value,z));return!0},deleteProperty(W,$){var q=Y.get($);if(q===void 0){if($ in W)Y.set($,d6(f6,J))}else{if(H&&typeof $==="string"){var B=Y.get("length"),D=Number($);if(Number.isInteger(D)&&D=V.v)Y6(V,M+1)}OT(K)}return!0},ownKeys(W){G0(K);var $=Reflect.ownKeys(W).filter((D)=>{var F=Y.get(D);return F===void 0||F.v!==f6});for(var[q,B]of Y)if(B.v!==f6&&!(q in W))$.push(q);return $},setPrototypeOf(){JT()}})}function OT(Q,X=1){Y6(Q,Q.v+X)}function n5(Q){if(Q!==null&&typeof Q==="object"&&S8 in Q)return Q[S8];return Q}function wT(){let{prototype:Q,__svelte_cleanup:X}=Array;if(X)X();let{indexOf:Z,lastIndexOf:J,includes:G}=Q;Q.indexOf=function(Y,H){let K=Z.call(this,Y,H);if(K===-1){for(let z=H??0;z{Q.indexOf=Z,Q.lastIndexOf=J,Q.includes=G}}function SQ(Q,X,Z=!0){try{if(Q===X!==(n5(Q)===n5(X)))DX(Z?"===":"!==")}catch{}return Q===X===Z}var vK,ET,jT,ST;function Aq(){if(vK!==void 0)return;vK=window,ET=document;var Q=Element.prototype,X=Node.prototype;if(jT=k9(X,"firstChild").get,ST=k9(X,"nextSibling").get,Q.__click=void 0,Q.__className="",Q.__attributes=null,Q.__styles=null,Q.__e=void 0,Text.prototype.__t=void 0,b1)Q.__svelte_meta=null,wT()}function v8(Q=""){return document.createTextNode(Q)}function q8(Q){return jT.call(Q)}function W8(Q){return ST.call(Q)}function g8(Q,X){if(!H0)return q8(Q);var Z=q8(F0);if(Z===null)Z=F0.appendChild(v8());else if(X&&Z.nodeType!==3){var J=v8();return Z?.before(J),O6(J),J}return O6(Z),Z}function YQ(Q,X){if(!H0){var Z=q8(Q);if(Z instanceof Comment&&Z.data==="")return W8(Z);return Z}if(X&&F0?.nodeType!==3){var J=v8();return F0?.before(J),O6(J),J}return F0}function V9(Q,X=1,Z=!1){let J=H0?F0:Q;var G;while(X--)G=J,J=W8(J);if(!H0)return J;var Y=J?.nodeType;if(Z&&Y!==3){var H=v8();if(J===null)G?.after(H);else J.before(H);return O6(H),H}return O6(J),J}function NX(Q){Q.textContent=""}function $Z(Q){var X=l6|D8;if($0===null)X|=v9;else $0.f|=Lq;var Z=E0!==null&&(E0.f&l6)!==0?E0:null;let J={children:null,ctx:j0,deps:null,equals:Nq,f:X,fn:Q,reactions:null,rv:0,v:null,wv:0,parent:Z??$0};if(b1&&XQ)J.created=EQ("CreatedAt");if(Z!==null)(Z.children??=[]).push(J);return J}function TX(Q){let X=$Z(Q);return X.equals=m5,X}function hK(Q){var X=Q.children;if(X!==null){Q.children=null;for(var Z=0;Z{e6(X)}}function kT(Q){let X=UZ(x9,Q,!0);return(Z={})=>{return new Promise((J)=>{if(Z.outro)b9(X,()=>{e6(X),J(void 0)});else e6(X),J(void 0)})}}function f9(Q){return UZ(Fq,Q,!1)}function x8(Q){return UZ(YZ,Q,!0)}function M4(Q){if(b1)_6(Q,"name",{value:"{expression}"});return h8(Q)}function h8(Q,X=0){return UZ(YZ|WZ|X,Q,!0)}function H8(Q,X=!0){return UZ(YZ|j8,Q,!0,X)}function uK(Q){var X=Q.teardown;if(X!==null){let Z=Eq,J=E0;mK(!0),L8(null);try{X.call(null)}finally{mK(Z),L8(J)}}}function pK(Q){var X=Q.deriveds;if(X!==null){Q.deriveds=null;for(var Z=0;Z{if(e6(Q),X)X()})}function iK(Q,X){var Z=Q.length;if(Z>0){var J=()=>--Z||X();for(var G of Q)G.out(J)}else X()}function wq(Q,X,Z){if((Q.f&s8)!==0)return;if(Q.f^=s8,Q.transitions!==null){for(let H of Q.transitions)if(H.is_global||Z)X.push(H)}var J=Q.first;while(J!==null){var G=J.next,Y=(J.f&g9)!==0||(J.f&j8)!==0;wq(J,X,Y?Z:!1),J=G}}function I4(Q){xT(Q,!0)}function xT(Q,X){if((Q.f&s8)===0)return;if(Q.f^=s8,(Q.f&x6)===0)Q.f^=x6;if(N4(Q))G8(Q,D8),p5(Q);var Z=Q.first;while(Z!==null){var J=Z.next,G=(Z.f&g9)!==0||(Z.f&j8)!==0;xT(Z,G?X:!1),Z=J}if(Q.transitions!==null){for(let Y of Q.transitions)if(Y.is_global||X)Y.in()}}var jq=!1,gT=!1,nK=[],vT=[];function hT(){jq=!1;let Q=nK.slice();nK=[],GZ(Q)}function Tn(){gT=!1;let Q=vT.slice();vT=[],GZ(Q)}function P9(Q){if(!jq)jq=!0,queueMicrotask(hT);nK.push(Q)}function fT(){if(jq)hT();if(gT)Tn()}function Sq(Q){if(b1){let X=new Error(`lifecycle_outside_component +\`${Q}(...)\` can only be used during component initialisation +https://svelte.dev/e/lifecycle_outside_component`);throw X.name="Svelte error",X}else throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function bT(Q){if(b1){let X=new Error(`store_invalid_shape +\`${Q}\` is not a store with a \`subscribe\` method +https://svelte.dev/e/store_invalid_shape`);throw X.name="Svelte error",X}else throw new Error("https://svelte.dev/e/store_invalid_shape")}var pT=0,Rn=1,mT=new WeakSet,kq=!1,yq=pT,IX=!1,a5=null,jQ=!1,Eq=!1;function _5(Q){jQ=Q}function mK(Q){Eq=Q}var VZ=[],s5=0,RX=[],E0=null;function L8(Q){E0=Q}var $0=null;function u6(Q){$0=Q}var h9=null;function CT(Q){h9=Q}var f8=null,r8=0,JQ=null;function NT(Q){JQ=Q}var lT=1,xq=0,kQ=!1,UX=null;var j0=null;var U9=null;function VX(){return++lT}function C4(){return!ZQ||j0!==null&&j0.l===null}function N4(Q){var X=Q.f;if((X&D8)!==0)return!0;if((X&a8)!==0){var Z=Q.deps,J=(X&v9)!==0;if(Z!==null){var G,Y,H=(X&$X)!==0,K=J&&$0!==null&&!kQ,z=Z.length;if(H||K){for(G=0;GQ.wv)return!0}}if(!J||$0!==null&&!kQ)G8(Q,x6)}return!1}function _T(Q,X){var Z=X;while(Z!==null){if((Z.f&qZ)!==0)try{Z.fn(Q);return}catch{Z.f^=qZ}Z=Z.parent}throw kq=!1,Q}function dT(Q){return(Q.f&wQ)===0&&(Q.parent===null||(Q.parent.f&qZ)===0)}function t5(Q,X,Z,J){if(kq){if(Z===null)kq=!1;if(dT(X))throw Q;return}if(Z!==null)kq=!0;if(!b1||J===null||!(Q instanceof Error)||mT.has(Q)){_T(Q,X);return}mT.add(Q);let G=[],Y=X.fn?.name;if(Y)G.push(Y);let H=J;while(H!==null){if(b1){var K=H.function?.[f0];if(K){let $=K.split("/").pop();G.push($)}}H=H.p}let z=/Firefox/.test(navigator.userAgent)?" ":"\t";_6(Q,"message",{value:Q.message+` +${G.map(($)=>` +${z}in ${$}`).join("")} +`}),_6(Q,"component_stack",{value:G});let W=Q.stack;if(W){let $=W.split(` +`),q=[];for(let B=0;B<$.length;B++){let D=$[B];if(D.includes("svelte/src/internal"))continue;q.push(D)}_6(Q,"stack",{value:q.join(` +`)})}if(_T(Q,X),dT(X))throw Q}function cT(Q,X,Z=0){var J=Q.reactions;if(J===null)return;for(var G=0;G0){$.length=r8+f8.length;for(q=0;qQ.fn)),RX=[]}function iT(){if(s5>1000){s5=0;try{rN()}catch(Q){if(b1)_6(Q,"stack",{value:""});if(a5!==null)if(b1)try{t5(Q,a5,null,null)}catch(X){throw uT(),X}else t5(Q,a5,null,null);else{if(b1)uT();throw Q}}}s5++}function nT(Q){var X=Q.length;if(X===0)return;iT();var Z=jQ;jQ=!0;try{for(var J=0;J1001)return;let Q=VZ;if(VZ=[],nT(Q),!IX){if(s5=0,a5=null,b1)RX=[]}}function p5(Q){if(yq===pT){if(!IX)IX=!0,queueMicrotask(wn)}a5=Q;var X=Q;while(X.parent!==null){X=X.parent;var Z=X.f;if((Z&(x9|j8))!==0){if((Z&x6)===0)return;X.f^=x6}}VZ.push(X)}function oT(Q,X){var Z=Q.first,J=[];Q:while(Z!==null){var G=Z.f,Y=(G&j8)!==0,H=Y&&(G&x6)!==0,K=Z.next;if(!H&&(G&s8)===0){if((G&YZ)!==0){if(Y)Z.f^=x6;else try{if(N4(Z))u5(Z)}catch(q){t5(q,Z,null,Z.ctx)}var z=Z.first;if(z!==null){Z=z;continue}}else if((G&Fq)!==0)J.push(Z)}if(K===null){let q=Z.parent;while(q!==null){if(Q===q)break Q;var W=q.next;if(W!==null){Z=W;continue Q}q=q.parent}}Z=K}for(var $=0;$0||G.length>0)r5();if(s5=0,a5=null,b1)RX=[];return J}finally{yq=X,VZ=Z}}function G0(Q){var X=Q.f,Z=(X&l6)!==0;if(Z&&(X&wQ)!==0){var J=fK(Q);return MX(Q),J}if(UX!==null)UX.add(Q);if(E0!==null){if(h9!==null&&h9.includes(Q))GT();var G=E0.deps;if(Q.rv{if(Z!==void 0)return Z;ZT(X)},set:(J)=>{Z=J}})}};Q("$state"),Q("$effect"),Q("$derived"),Q("$inspect"),Q("$props"),Q("$bindable")}var jn=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","webkitdirectory"];var HH1=[...jn,"formNoValidate","isMap","noModule","playsInline","readOnly","value","volume","defaultValue","defaultChecked","srcObject"];var Sn=["touchstart","touchmove"];function aT(Q){return Sn.includes(Q)}var sT=new Map;function tT(Q,X){var Z=sT.get(Q);if(!Z)Z=new Set,sT.set(Q,Z);Z.add(X)}function z8(Q,X,Z){return(...J)=>{let G=Q(...J);var Y=H0?G:G.nodeType===11?G.firstChild:G;return rT(Y,X,Z),G}}function yn(Q,X,Z){if(Q.__svelte_meta={loc:{file:X,line:Z[0],column:Z[1]}},Z[2])rT(Q.firstChild,X,Z[2])}function rT(Q,X,Z){var J=0,G=0;while(Q&&J{return Z.call(this,Y)})}if(Q.startsWith("pointer")||Q.startsWith("touch")||Q==="wheel")P9(()=>{X.addEventListener(Q,G,J)});else X.addEventListener(Q,G,J);return G}function DZ(Q,X,Z,J,G){var Y={capture:J,passive:G},H=QM(Q,X,Z,Y);if(X===document.body||X===window||X===document)t8(()=>{X.removeEventListener(Q,H,Y)})}function e5(Q){var X=this,Z=X.ownerDocument,J=Q.type,G=Q.composedPath?.()||[],Y=G[0]||Q.target,H=0,K=Q.__root;if(K){var z=G.indexOf(K);if(z!==-1&&(X===document||X===window)){Q.__root=X;return}var W=G.indexOf(X);if(W===-1)return;if(z<=W)H=z}if(Y=G[H]||Q.target,Y===X)return;_6(Q,"currentTarget",{configurable:!0,get(){return Y||Z}});var $=E0,q=$0;L8(null),u6(null);try{var B,D=[];while(Y!==null){var F=Y.assignedSlot||Y.parentNode||Y.host||null;try{var P=Y["__"+J];if(P!==void 0&&!Y.disabled)if(K9(P)){var[N,...C]=P;N.apply(Y,[Q,...C])}else P.call(Y,Q)}catch(L){if(B)D.push(L);else B=L}if(Q.cancelBubble||F===X||F===null)break;Y=F}if(B){for(let L of D)queueMicrotask(()=>{throw L});throw B}}finally{Q.__root=X,delete Q.currentTarget,L8($),u6(q)}}var vn;function ZM(){vn=void 0}function hq(Q){var X=document.createElement("template");return X.innerHTML=Q,X.content}function F9(Q,X){var Z=$0;if(Z.nodes_start===null)Z.nodes_start=Q,Z.nodes_end=X}function K8(Q,X){var Z=(X&VT)!==0,J=(X&PT)!==0,G,Y=!Q.startsWith("");return()=>{if(H0)return F9(F0,null),F0;if(G===void 0){if(G=hq(Y?Q:""+Q),!Z)G=q8(G)}var H=J?document.importNode(G,!0):G.cloneNode(!0);if(Z){var K=q8(H),z=H.lastChild;F9(K,z)}else F9(H,H);return H}}function sK(Q=""){if(!H0){var X=v8(Q+"");return F9(X,X),X}var Z=F0;if(Z.nodeType!==3)Z.before(Z=v8()),O6(Z);return F9(Z,Z),Z}function R4(){if(H0)return F9(F0,null),F0;var Q=document.createDocumentFragment(),X=document.createComment(""),Z=v8();return Q.append(X,Z),F9(X,Z),Q}function D6(Q,X){if(H0){$0.nodes_end=F0,Y8();return}if(Q===null)return;Q.before(X)}var tK=!0;function LZ(Q,X){var Z=X==null?"":typeof X==="object"?X+"":X;if(Z!==(Q.__t??=Q.nodeValue))Q.__t=Z,Q.nodeValue=Z==null?"":Z+""}function Z7(Q,X){return XM(Q,X)}function eK(Q,X){Aq(),X.intro=X.intro??!1;let Z=X.target,J=H0,G=F0;try{var Y=q8(Z);while(Y&&(Y.nodeType!==8||Y.data!==zZ))Y=W8(Y);if(!Y)throw L4;k8(!0),O6(Y),Y8();let H=XM(Q,{...X,anchor:Y});if(F0===null||F0.nodeType!==8||F0.data!==D4)throw l5(),L4;return k8(!1),H}catch(H){if(H===L4){if(X.recover===!1)eN();return Aq(),NX(Z),k8(!1),Z7(Q,X)}throw H}finally{k8(J),O6(G),ZM()}}var Q7=new Map;function XM(Q,{target:X,anchor:Z,props:J={},events:G,context:Y,intro:H=!0}){Aq();var K=new Set,z=(q)=>{for(var B=0;B{var q=Z??X.appendChild(v8());return H8(()=>{if(Y){PZ({});var B=j0;B.c=Y}if(G)J.$$events=G;if(H0)F9(q,null);if(tK=H,W=Q(q,J)||{},tK=!0,H0)$0.nodes_end=F0;if(Y)FZ()}),()=>{for(var B of K){X.removeEventListener(B,e5);var D=Q7.get(B);if(--D===0)document.removeEventListener(B,e5),Q7.delete(B);else Q7.set(B,D)}if(aK.delete(z),q!==Z)q.parentNode?.removeChild(q)}});return rK.set(W,$),W}var rK=new WeakMap;function AX(Q,X){let Z=rK.get(Q);if(Z)return rK.delete(Q),Z(X);if(b1)MT();return Promise.resolve()}function OX(Q){if(Q)iN(Q[f0]??"a component",Q.name)}function wX(){let Q=j0?.function;function X(Z){let J=yK()?.[f0]??"Something";cN(J,Z,Q[f0])}return{$destroy:()=>X("$destroy()"),$on:()=>X("$on(...)"),$set:()=>X("$set(...)")}}function D9(Q,X,Z=!1){if(H0)Y8();var J=Q,G=null,Y=null,H=f6,K=Z?g9:0,z=!1;let W=(q,B=!0)=>{z=!0,$(B,q)},$=(q,B)=>{if(H===(H=q))return;let D=!1;if(H0){let F=J.data===F4;if(!!H===F)J=c5(),O6(J),k8(!1),D=!0}if(H){if(G)I4(G);else if(B)G=H8(()=>B(J));if(Y)b9(Y,()=>{Y=null})}else{if(Y)I4(Y);else if(B)Y=H8(()=>B(J));if(G)b9(G,()=>{G=null})}if(D)k8(!0)};if(h8(()=>{if(z=!1,X(W),!z)$(null,null)},K),H0)J=F0}var EX=null;function mn(Q,X,Z,J){var G=[],Y=X.length;for(var H=0;H0&&G.length===0&&Z!==null;if(K){var z=Z.parentNode;NX(z),z.append(Z),J.clear(),A4(Q,X[0].prev,X[Y-1].next)}iK(G,()=>{for(var W=0;W{var D=Z();return K9(D)?D:D==null?[]:KX(D)});if(h8(()=>{var D=G0(B),F=D.length;if(q&&F===0)return;q=F===0;let P=!1;if(H0){var N=H.data===F4;if(N!==(F===0))H=c5(),O6(H),k8(!1),P=!0}if(H0){var C=null,L;for(var V=0;V0)O6(c5())}if(!H0){var E=E0;_n(D,K,H,G,X,(E.f&s8)!==0,J,Z)}if(Y!==null){if(F===0)if($)I4($);else $=H8(()=>Y(H));else if($!==null)b9($,()=>{$=null})}if(P)k8(!0);G0(B)}),H0)H=F0}function _n(Q,X,Z,J,G,Y,H,K){var z=(G&qT)!==0,W=(G&(Mq|Iq))!==0,$=Q.length,q=X.items,B=X.first,D=B,F,P=null,N,C=[],L=[],V,M,I,E;if(z){for(E=0;E<$;E+=1)if(V=Q[E],M=H(V,E),I=q.get(M),I!==void 0)I.a?.measure(),(N??=new Set).add(I)}for(E=0;E<$;E+=1){if(V=Q[E],M=H(V,E),I=q.get(M),I===void 0){var w=D?D.e.nodes_start:Z;P=GM(w,X,P,P===null?X.first:P.next,V,M,E,J,G,K),q.set(M,P),C=[],L=[],D=P.next;continue}if(W)dn(I,V,E,G);if((I.e.f&s8)!==0){if(I4(I.e),z)I.a?.unfix(),(N??=new Set).delete(I)}if(I!==D){if(F!==void 0&&F.has(I)){if(C.length0){var x=(G&AK)!==0&&$===0?Z:null;if(z){for(E=0;E{if(N===void 0)return;for(I of N)I.a?.apply()});$0.first=X.first&&X.first.e,$0.last=P&&P.e}function dn(Q,X,Z,J){if((J&Mq)!==0)d5(Q.v,X);if((J&Iq)!==0)d5(Q.i,Z);else Q.i=Z}function GM(Q,X,Z,J,G,Y,H,K,z,W){var $=EX,q=(z&Mq)!==0,B=(z&HT)===0,D=q?B?GQ(G):d6(G):G,F=(z&Iq)===0?H:d6(H);if(b1&&q)D.debug=()=>{var N=typeof F==="number"?H:F.v;W()[N]};var P={i:F,v:D,k:Y,a:null,e:null,prev:Z,next:J};EX=P;try{if(P.e=H8(()=>K(Q,D,F),H0),P.e.prev=Z&&Z.e,P.e.next=J&&J.e,Z===null)X.first=P;else Z.next=P,Z.e.next=P.e;if(J!==null)J.prev=P,J.e.prev=P.e;return P}finally{EX=$}}function JM(Q,X,Z){var J=Q.next?Q.next.e.nodes_start:Z,G=X?X.e.nodes_start:Z,Y=Q.e.nodes_start;while(Y!==J){var H=W8(Y);G.before(Y),Y=H}}function A4(Q,X,Z){if(X===null)Q.first=Z;else X.next=Z,X.e.next=Z&&Z.e;if(Z!==null)Z.prev=X,Z.e.prev=X&&X.e}function Z$(Q,X){P9(()=>{var Z=Q.getRootNode(),J=Z.host?Z:Z.head??Z.ownerDocument.head;if(!J.querySelector("#"+X.hash)){let G=document.createElement("style");if(G.id=X.hash,G.textContent=X.code,J.appendChild(G),b1)tT(X.hash,G)}})}function J$(Q,X,Z,J){var G=Q.__attributes??={};if(H0){if(G[X]=Q.getAttribute(X),X==="src"||X==="srcset"||X==="href"&&Q.nodeName==="LINK"){if(!J)on(Q,X,Z??"");return}}if(G[X]===(G[X]=Z))return;if(X==="style"&&"__styles"in Q)Q.__styles={};if(X==="loading")Q[lN]=Z;if(Z==null)Q.removeAttribute(X);else if(typeof Z!=="string"&&nn(Q).includes(X))Q[X]=Z;else Q.setAttribute(X,Z)}var YM=new Map;function nn(Q){var X=YM.get(Q.nodeName);if(X)return X;YM.set(Q.nodeName,X=[]);var Z,J=Q,G=Element.prototype;while(G!==J){Z=Pq(J);for(var Y in Z)if(Z[Y].set)X.push(Y);J=P4(J)}return X}function on(Q,X,Z){if(!b1)return;if(X==="srcset"&&an(Q,Z))return;if(X$(Q.getAttribute(X)??"",Z))return;TT(X,Q.outerHTML.replace(Q.innerHTML,Q.innerHTML&&"..."),String(Z))}function X$(Q,X){if(Q===X)return!0;return new URL(Q,document.baseURI).href===new URL(X,document.baseURI).href}function WM(Q){return Q.split(",").map((X)=>X.trim().split(" ").filter(Boolean))}function an(Q,X){var Z=WM(Q.srcset),J=WM(X);return J.length===Z.length&&J.every(([G,Y],H)=>Y===Z[H][1]&&(X$(Z[H][0],G)||X$(G,Z[H][0])))}class qM{#Z=new WeakMap;#Q;#X;static entries=new WeakMap;constructor(Q){this.#X=Q}observe(Q,X){var Z=this.#Z.get(Q)||new Set;return Z.add(X),this.#Z.set(Q,Z),this.#J().observe(Q,this.#X),()=>{var J=this.#Z.get(Q);if(J.delete(X),J.size===0)this.#Z.delete(Q),this.#Q.unobserve(Q)}}#J(){return this.#Q??(this.#Q=new ResizeObserver((Q)=>{for(var X of Q){qM.entries.set(X.target,X);for(var Z of this.#Z.get(X.target)||[])Z(X)}}))}}function G$(Q=!1){let X=j0,Z=X.l.u;if(!Z)return;let J=()=>gq(X.s);if(Q){let G=0,Y={},H=$Z(()=>{let K=!1,z=X.s;for(let W in z)if(z[W]!==Y[W])Y[W]=z[W],K=!0;if(K)G++;return G});J=()=>G0(H)}if(Z.b.length)i5(()=>{HM(X,J),GZ(Z.b)});if(o5(()=>{let G=E6(()=>Z.m.map(pN));return()=>{for(let Y of G)if(typeof Y==="function")Y()}}),Z.a.length)o5(()=>{HM(X,J),GZ(Z.a)})}function HM(Q,X){if(Q.l.s)for(let Z of Q.l.s)G0(Z);X()}function bq(Q,X,Z){if(Q==null){if(X(void 0),Z)Z(void 0);return y9}let J=E6(()=>Q.subscribe(X,Z));return J.unsubscribe?()=>J.unsubscribe():J}function zM(Q){let X;return bq(Q,(Z)=>X=Z)(),X}var mq=!1,Y$=Symbol();function W$(Q,X,Z){let J=Z[X]??={store:null,source:GQ(void 0),unsubscribe:y9};if(J.store!==Q&&!(Y$ in Z))if(J.unsubscribe(),J.store=Q??null,Q==null)J.source.v=void 0,J.unsubscribe=y9;else{var G=!0;J.unsubscribe=bq(Q,(Y)=>{if(G)J.source.v=Y;else Y6(J.source,Y)}),G=!1}if(Q&&Y$ in Z)return zM(Q);return G0(J.source)}function q$(){let Q={};function X(){t8(()=>{for(var Z in Q)Q[Z].unsubscribe();_6(Q,Y$,{enumerable:!1,value:!0})})}return[Q,X]}function H$(Q){var X=mq;try{return mq=!1,[Q(),mq]}finally{mq=X}}function KM(Q){var X=$0,Z=$0;while(X!==null&&(X.f&(j8|x9))===0)X=X.parent;try{return u6(X),Q()}finally{u6(Z)}}function jX(Q,X,Z,J){var G=(Z&zT)!==0,Y=!ZQ||(Z&KT)!==0,H=(Z&BT)!==0,K=(Z&UT)!==0,z=!1,W;if(H)[W,z]=H$(()=>Q[X]);else W=Q[X];var $=S8 in Q||Cq in Q,q=H&&(k9(Q,X)?.set??($&&(X in Q)&&((w)=>Q[X]=w)))||void 0,B=J,D=!0,F=!1,P=()=>{if(F=!0,D)if(D=!1,K)B=E6(J);else B=J;return B};if(W===void 0&&J!==void 0){if(q&&Y)QT(X);if(W=P(),q)q(W)}var N;if(Y)N=()=>{var w=Q[X];if(w===void 0)return P();return D=!0,F=!1,w};else{var C=KM(()=>(G?$Z:TX)(()=>Q[X]));C.f|=IK,N=()=>{var w=G0(C);if(w!==void 0)B=void 0;return w===void 0?B:w}}if((Z&$T)===0)return N;if(q){var L=Q.$$legacy;return function(w,A){if(arguments.length>0){if(!Y||!A||L||z)q(A?N():w);return w}else return N()}}var V=!1,M=!1,I=GQ(W),E=KM(()=>$Z(()=>{var w=N(),A=G0(I);if(V)return V=!1,M=!0,A;return M=!1,I.v=w}));if(!G)E.equals=m5;return function(w,A){if(UX!==null)V=M,N(),G0(I);if(arguments.length>0){let R=A?G0(E):Y&&H?T4(w):w;if(!E.equals(R)){if(V=!0,Y6(I,R),F&&B!==void 0)B=R;E6(()=>G0(E))}return w}return G0(E)}}function z$(Q,X){x8(()=>{let Z=new Map,J=Q(),G=K9(J)?J:J==null?[]:Array.from(J),Y=G.length;for(let H=0;H{var H=GQ(Y);return X.set(G,H),H};let J=new Proxy({...Q.props||{},$$events:{}},{get(G,Y){return G0(X.get(Y)??Z(Y,Reflect.get(G,Y)))},has(G,Y){if(Y===Cq)return!0;return G0(X.get(Y)??Z(Y,Reflect.get(G,Y))),Reflect.has(G,Y)},set(G,Y,H){return Y6(X.get(Y)??Z(Y,H),H),Reflect.set(G,Y,H)}});if(this.#Q=(Q.hydrate?eK:Z7)(Q.component,{target:Q.target,anchor:Q.anchor,props:J,context:Q.context,intro:Q.intro??!1,recover:Q.recover}),!Q?.props?.$$host||Q.sync===!1)r5();this.#Z=J.$$events;for(let G of Object.keys(this.#Q)){if(G==="$set"||G==="$destroy"||G==="$on")continue;_6(this,G,{get(){return this.#Q[G]},set(Y){this.#Q[G]=Y},enumerable:!0})}this.#Q.$set=(G)=>{Object.assign(J,G)},this.#Q.$destroy=()=>{AX(this.#Q)}}$set(Q){this.#Q.$set(Q)}$on(Q,X){this.#Z[Q]=this.#Z[Q]||[];let Z=(...J)=>X.call(this,...J);return this.#Z[Q].push(Z),()=>{this.#Z[Q]=this.#Z[Q].filter((J)=>J!==Z)}}$destroy(){this.#Q.$destroy()}}var qo;if(typeof HTMLElement==="function")qo=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;constructor(Q,X,Z){super();if(this.$$ctor=Q,this.$$s=X,Z)this.attachShadow({mode:"open"})}addEventListener(Q,X,Z){if(this.$$l[Q]=this.$$l[Q]||[],this.$$l[Q].push(X),this.$$c){let J=this.$$c.$on(Q,X);this.$$l_u.set(X,J)}super.addEventListener(Q,X,Z)}removeEventListener(Q,X,Z){if(super.removeEventListener(Q,X,Z),this.$$c){let J=this.$$l_u.get(X);if(J)J(),this.$$l_u.delete(X)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let Q=function(J){return(G)=>{let Y=document.createElement("slot");if(J!=="default")Y.name=J;D6(G,Y)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let X={},Z=Ho(this);for(let J of this.$$s)if(J in Z)if(J==="default"&&!this.$$d.children)this.$$d.children=Q(J),X.default=!0;else X[J]=Q(J);for(let J of this.attributes){let G=this.$$g_p(J.name);if(!(G in this.$$d))this.$$d[G]=K$(G,J.value,this.$$p_d,"toProp")}for(let J in this.$$p_d)if(!(J in this.$$d)&&this[J]!==void 0)this.$$d[J]=this[J],delete this[J];this.$$c=$M({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:X,$$host:this}}),this.$$me=dK(()=>{x8(()=>{this.$$r=!0;for(let J of NK(this.$$c)){if(!this.$$p_d[J]?.reflect)continue;this.$$d[J]=this.$$c[J];let G=K$(J,this.$$d[J],this.$$p_d,"toAttribute");if(G==null)this.removeAttribute(this.$$p_d[J].attribute||J);else this.setAttribute(this.$$p_d[J].attribute||J,G)}this.$$r=!1})});for(let J in this.$$l)for(let G of this.$$l[J]){let Y=this.$$c.$on(J,G);this.$$l_u.set(G,Y)}this.$$l={}}}attributeChangedCallback(Q,X,Z){if(this.$$r)return;Q=this.$$g_p(Q),this.$$d[Q]=K$(Q,Z,this.$$p_d,"toProp"),this.$$c?.$set({[Q]:this.$$d[Q]})}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{if(!this.$$cn&&this.$$c)this.$$c.$destroy(),this.$$me(),this.$$c=void 0})}$$g_p(Q){return NK(this.$$p_d).find((X)=>this.$$p_d[X].attribute===Q||!this.$$p_d[X].attribute&&X.toLowerCase()===Q)||Q}};function K$(Q,X,Z,J){let G=Z[Q]?.type;if(X=G==="Boolean"&&typeof X!=="boolean"?X!=null:X,!J||!Z[Q])return X;else if(J==="toAttribute")switch(G){case"Object":case"Array":return X==null?null:JSON.stringify(X);case"Boolean":return X?"":null;case"Number":return X==null?null:X;default:return X}else switch(G){case"Object":case"Array":return X&&JSON.parse(X);case"Boolean":return X;case"Number":return X!=null?+X:X;default:return X}}function Ho(Q){let X={};return Q.childNodes.forEach((Z)=>{X[Z.slot||"default"]=!0}),X}function $$(Q,X){if(Q!=null&&typeof Q.subscribe!=="function")bT(X)}function VM(Q){if(j0===null)Sq("onMount");if(ZQ&&j0.l!==null)Po(j0).m.push(Q);else o5(()=>{let X=E6(Q);if(typeof X==="function")return X})}function Po(Q){var X=Q.l;return X.u??={a:[],b:[],m:[]}}var PM="5";if(typeof window!=="undefined")(window.__svelte||={v:new Set}).v.add(PM);WT();var VI=Z8($I()),c0=Z8(zq());var es=!0,BI={appName:"Claude",filename:"obsidian-plugin-mcp-tools.log",level:"DEBUG"},{filename:UI}=Kq.assert(BI),m0=es?console:kN(BI);var x$=(Q)=>c0.interval(200).pipe(c0.takeUntil(c0.timer(5000)),c0.map(()=>{let X=Q.app.plugins.plugins["smart-connections"];if(X?.env?.smart_sources){let J=X.env;return{id:"smart-connections",name:"Smart Connections",required:!1,installed:!0,api:{search:async(Y,H)=>{try{return(await J.smart_sources.lookup({hypotheticals:[Y],filter:{limit:H?.limit,key_starts_with_any:H?.key_starts_with_any,exclude_key_starts_with_any:H?.exclude_key_starts_with_any,exclude_key:H?.exclude_key,exclude_keys:H?.exclude_keys,exclude_key_starts_with:H?.exclude_key_starts_with,exclude_key_includes:H?.exclude_key_includes,key_ends_with:H?.key_ends_with,key_starts_with:H?.key_starts_with,key_includes:H?.key_includes}})).map((z)=>({item:{path:z.item.path,name:z.item.name||z.item.key?.split("/").pop()||z.item.key,breadcrumbs:z.item.breadcrumbs||z.item.path,read:()=>z.item.read(),key:z.item.key,file_path:z.item.path,link:z.item.link,size:z.item.size},score:z.score}))}catch(K){return console.error("Smart Connections v3.0 search error:",K),[]}}},plugin:X}}let Z=window.SmartSearch;if(!Z&&X?.env)Z=X.env,window.SmartSearch=Z;return{id:"smart-connections",name:"Smart Connections",required:!1,installed:!!Z,api:Z,plugin:X}}),c0.takeWhile((X)=>!X.installed,!0),c0.distinct(({installed:X})=>X)),v$=(Q)=>c0.interval(200).pipe(c0.takeUntil(c0.timer(5000)),c0.map(()=>{let X=VI.getAPI(Q.app,Q.manifest);return{id:"obsidian-local-rest-api",name:"Local REST API",required:!0,installed:!!X,api:X,plugin:Q.app.plugins.plugins["obsidian-local-rest-api"]}}),c0.takeWhile((X)=>!X.installed,!0),c0.distinct(({installed:X})=>X)),g$=(Q)=>c0.interval(200).pipe(c0.takeUntil(c0.timer(5000)),c0.map(()=>{let X=Q.app.plugins.plugins["templater-obsidian"]?.templater;return{id:"templater-obsidian",name:"Templater",required:!1,installed:!!X,api:X,plugin:Q.app.plugins.plugins["templater-obsidian"]}}),c0.takeWhile((X)=>!X.installed,!0),c0.distinct(({installed:X})=>X)),Qt=(Q)=>{let X={"obsidian-local-rest-api":{id:"obsidian-local-rest-api",name:"Local REST API",required:!0,installed:!1,url:"https://github.com/coddingtonbear/obsidian-local-rest-api"},"smart-connections":{id:"smart-connections",name:"Smart Connections",required:!1,installed:!1,url:"https://smartconnections.app/"},"templater-obsidian":{id:"templater-obsidian",name:"Templater",required:!1,installed:!1,url:"https://silentvoid13.github.io/Templater/"}};return c0.merge(v$(Q),g$(Q),x$(Q)).pipe(c0.scan((Z,J)=>{return Z[J.id]={...X[J.id],...J},Z},X),c0.startWith(X))},PI=(Q)=>Qt(Q).pipe(c0.map((X)=>Object.values(X)));var YB=require("obsidian"),DA=require("path");var z7=Z8(require("fs/promises")),h$=Z8(require("os")),f$=Z8(require("path"));var{GITHUB_DOWNLOAD_URL:eq,GITHUB_REF_NAME:OL1}={GITHUB_DOWNLOAD_URL:"https://github.com/jacksteamdev/obsidian-mcp-tools/releases/download/0.2.27",GITHUB_REF_NAME:"0.2.27"},Q3={windows:"mcp-server.exe",macos:"mcp-server",linux:"mcp-server"},Z3={macos:"~/Library/Application Support/Claude/claude_desktop_config.json",windows:"%APPDATA%\\Claude\\claude_desktop_config.json",linux:"~/.config/claude/config.json"};function FI(){let Q=h$.default.platform(),X;switch(Q){case"darwin":X=Z3.macos;break;case"win32":X=Z3.windows;break;default:X=Z3.linux}if(X.startsWith("~"))X=f$.default.join(h$.default.homedir(),X.slice(1));if(Q==="win32")X=X.replace(/%([^%]+)%/g,(Z,J)=>process.env[J]||"");return X}async function b$(Q,X,Z){try{let J=FI(),G=f$.default.dirname(J);await z7.default.mkdir(G,{recursive:!0});let Y={mcpServers:{}};try{let H=await z7.default.readFile(J,"utf8");Y=JSON.parse(H),Y.mcpServers=Y.mcpServers||{}}catch(H){if(H.code!=="ENOENT")throw H}Y.mcpServers["obsidian-mcp-tools"]={command:X,env:{OBSIDIAN_API_KEY:Z}},await z7.default.writeFile(J,JSON.stringify(Y,null,2)),m0.info("Updated Claude config",{configPath:J})}catch(J){throw m0.error("Failed to update Claude config:",{error:J}),new Error(`Failed to update Claude config: ${J instanceof Error?J.message:String(J)}`)}}async function DI(){try{let Q=FI(),X;try{let Z=await z7.default.readFile(Q,"utf8");X=JSON.parse(Z)}catch(Z){if(Z.code==="ENOENT")return;throw Z}if(X.mcpServers&&"obsidian-mcp-tools"in X.mcpServers)delete X.mcpServers["obsidian-mcp-tools"],await z7.default.writeFile(Q,JSON.stringify(X,null,2)),m0.info("Removed server from Claude config",{configPath:Q})}catch(Q){throw m0.error("Failed to remove from Claude config:",{error:Q}),new Error(`Failed to remove from Claude config: ${Q instanceof Error?Q.message:String(Q)}`)}}var V3=Z8(require("fs")),iX=Z8(require("fs/promises")),UA=Z8(require("https")),cX=require("obsidian"),ZB=Z8(require("os")),VA=Z8(zq());var $A=require("child_process"),B7=Z8(require("fs/promises")),p9=Z8(require("path")),RZ=Z8(zA()),BA=require("util");var KA=require("obsidian");function U3(Q){let X=Q.app.vault.adapter;if(X instanceof KA.FileSystemAdapter)return X;return{error:"Unsupported platform"}}var ie=BA.promisify($A.exec);async function ne(Q){try{return await B7.default.realpath(Q)}catch(X){if(X.code==="ENOENT"){let Z=p9.default.normalize(Q).split(p9.default.sep),J=[],G=1;if(p9.default.win32.isAbsolute(Q)){if(J.push(Z[0]),Z[1]==="")J.push(""),G=2}else if(p9.default.posix.isAbsolute(Q))J.push("/");else J.push(Z[0]);for(let Y of Z.slice(G)){let H=p9.default.join(...J,Y);try{J=(await B7.default.realpath(H)).split(p9.default.sep)}catch(K){J.push(Y)}}return p9.default.join(...J)}throw m0.error("Failed to resolve symlink:",{filepath:Q,error:X instanceof Error?X.message:X}),new Error(`Failed to resolve symlink: ${Q}`)}}async function e$(Q){let X=U3(Q);if("error"in X)return X;let Z=lX(),J=p9.default.join(X.getBasePath(),Q.app.vault.configDir,"plugins",Q.manifest.id,"bin"),G=await ne(J),Y=Q3[Z],H=p9.default.join(G,Y);return{dir:G,path:H,name:Y,symlinked:J===G?void 0:J}}async function QB(Q){let X=RZ.valid(RZ.clean(Q.manifest.version));if(!X)return m0.error("Invalid plugin version:",{plugin:Q}),{state:"error",versions:{}};if(!Q.getLocalRestApiKey())return{state:"no api key",versions:{plugin:X}};let J=await e$(Q);if("error"in J)return{state:"error",versions:{plugin:X},error:J.error};try{await B7.default.access(J.path,B7.default.constants.X_OK)}catch(Y){return m0.error("Failed to get server version:",{installPath:J}),{state:"not installed",...J,versions:{plugin:X}}}let G;try{let Y=`"${J.path}" --version`,{stdout:H}=await ie(Y);if(G=RZ.clean(H.trim()),!G)throw new Error("Invalid server version string")}catch{return m0.error("Failed to get server version:",{installPath:J}),{state:"error",...J,versions:{plugin:X}}}return{...J,state:RZ.lt(G,X)?"outdated":"installed",versions:{plugin:X,server:G}}}function lX(){switch(ZB.default.platform()){case"darwin":return"macos";case"win32":return"windows";default:return"linux"}}function oe(){return ZB.default.arch()}function ae(Q,X){if(Q==="windows")return`${eq}/mcp-server-windows.exe`;else if(Q==="macos")return`${eq}/mcp-server-macos-${X}`;else return`${eq}/mcp-server-linux`}async function se(Q){try{if(!V3.default.existsSync(Q))await iX.default.mkdir(Q,{recursive:!0});try{await iX.default.access(Q,V3.default.constants.W_OK)}catch(X){throw new Error(`Directory exists but is not writable: ${Q}`)}}catch(X){throw m0.error("Failed to ensure directory:",{error:X}),X}}function PA(Q,X,Z=0){return new VA.Observable((J)=>{if(Z>5){J.error(new Error("Too many redirects"));return}let G,Y=(H)=>{if(H)m0.debug("Cleaning up incomplete download:",{outputPath:X,writableFinished:JSON.stringify(G?.writableFinished),error:H instanceof Error?H.message:String(H)}),G?.destroy(),iX.default.unlink(X).catch((K)=>{m0.error("Failed to clean up incomplete download:",{outputPath:X,error:K instanceof Error?K.message:String(K)})});else G?.close(),iX.default.chmod(X,493).catch((K)=>{m0.error("Failed to set executable permissions:",{outputPath:X,error:K instanceof Error?K.message:String(K)})})};UA.default.get(Q,(H)=>{try{if(!H)throw new Error("No response received");let K=H.statusCode??0;if(K>=400)throw new Error(`HTTP Error ${K}: ${H.statusMessage}`);if(K===302||K===301){let q=H.headers.location;if(!q)throw new Error(`Redirect (${K}) received but no location header found`);PA(q,X,Z+1).subscribe(J);return}if(K!==200)throw new Error(`Unexpected status code: ${K}`);let z=H.headers["content-length"],W=z?parseInt(z,10):0;if(z&&isNaN(W))throw new Error("Invalid content-length header");try{G=V3.default.createWriteStream(X,{flags:"w"})}catch(q){throw new Error(`Failed to create write stream: ${q instanceof Error?q.message:String(q)}`)}let $=0;G.on("error",(q)=>{let B=new Error(`File stream error: ${q.message}`);Y(B),J.error(B)}),H.on("data",(q)=>{try{if(!Buffer.isBuffer(q))throw new Error("Received invalid data chunk");$+=q.length;let B=W?$/W*100:0;J.next({bytesReceived:$,totalBytes:W,percentage:Math.round(B*100)/100})}catch(B){Y(B),J.error(B)}}),H.pipe(G),G.on("finish",()=>{Y(),J.complete()}),H.on("error",(q)=>{Y(q),J.error(new Error(`Response error: ${q.message}`))})}catch(K){Y(K),J.error(K instanceof Error?K:new Error(String(K)))}}).on("error",(H)=>{Y(H),J.error(new Error(`Network error: ${H.message}`))})})}async function XB(Q){try{let X=lX(),Z=oe(),J=ae(X,Z),G=await e$(Q);if("error"in G)throw new Error(G.error);await se(G.dir);let Y=new cX.Notice("Downloading MCP server...",0);m0.debug("Downloading MCP server:",{downloadUrl:J,installPath:G});let H=PA(J,G.path);return new Promise((K,z)=>{H.subscribe({next:(W)=>{Y.setMessage(`Downloading MCP server: ${W.percentage}%`)},error:(W)=>{Y.hide(),new cX.Notice(`Failed to download MCP server: ${W.message}`),m0.error("Download failed:",{error:W,installPath:G}),z(W)},complete:()=>{Y.hide(),new cX.Notice("MCP server downloaded successfully!"),m0.info("MCP server downloaded",{installPath:G}),K(G)}})})}catch(X){throw new cX.Notice(`Failed to install MCP server: ${X instanceof Error?X.message:String(X)}`),X}}var nX=Z8(require("fs/promises")),P3=Z8(require("path"));async function JB(Q){try{let X=U3(Q);if("error"in X)throw new Error(X.error);let Z=lX(),J=P3.default.join(X.getBasePath(),Q.app.vault.configDir,"plugins",Q.manifest.id,"bin"),G=P3.default.join(J,Q3[Z]);try{await nX.default.unlink(G),m0.info("Removed server binary",{binaryPath:G})}catch(H){if(H.code!=="ENOENT")throw H}try{await nX.default.rmdir(J),m0.info("Removed empty bin directory",{binDir:J})}catch(H){if(H.code!=="ENOTEMPTY")throw H}let Y=P3.default.join(process.env.HOME||process.env.USERPROFILE||"","Library/Application Support/Claude/claude_desktop_config.json");try{let H=await nX.default.readFile(Y,"utf8"),K=JSON.parse(H);if(K.mcpServers&&K.mcpServers["obsidian-mcp-tools"])delete K.mcpServers["obsidian-mcp-tools"],await nX.default.writeFile(Y,JSON.stringify(K,null,2)),m0.info("Removed server from Claude config",{configPath:Y})}catch(H){if(H.code!=="ENOENT")throw H}m0.info("Server uninstall complete")}catch(X){throw m0.error("Failed to uninstall server:",{error:X}),new Error(`Failed to uninstall server: ${X instanceof Error?X.message:String(X)}`)}}var FA=require("child_process"),oX=require("obsidian");function GB(Q){let X=oX.Platform.isWin?`start "" "${Q}"`:oX.Platform.isMacOS?`open "${Q}"`:`xdg-open "${Q}"`;FA.exec(X,(Z)=>{if(Z){let J=`Failed to open folder: ${Z.message}`;m0.error(J,{folderPath:Q,error:Z}),new oX.Notice(J)}})}LX();p6[f0]="McpServerInstallSettings.svelte";var te=z8(K8('
Please configure the Local REST API plugin
'),p6[f0],[[64,4]]),re=z8(K8('
MCP Server is not installed
'),p6[f0],[[66,4,[[68,6]]]]),ee=z8(K8('
Installing MCP server...
'),p6[f0],[[71,4]]),Q11=z8(K8('
'),p6[f0],[[73,4,[[75,6]]]]),Z11=z8(K8('
'),p6[f0],[[78,4,[[80,6]]]]),X11=z8(K8('
Uninstalling MCP server...
'),p6[f0],[[83,4]]),J11=z8(K8('
'),p6[f0],[[85,4]]),G11=z8(K8('How to install?'),p6[f0],[[100,21]]),Y11=z8(K8(" ",1),p6[f0],[]),W11=z8(K8('
'),p6[f0],[[93,4]]),q11=z8(K8(''),p6[f0],[[110,4,[[112,6]]]]),H11=z8(K8('

Installation status

Dependencies

',1),p6[f0],[[60,0,[[61,2]]],[89,0,[[90,2]]],[106,0,[[107,2],[118,2,[[120,4]]],[125,2,[[126,4]]]]]]),z11={hash:"svelte-1qdiqba",code:` + .error-message.svelte-1qdiqba { + color: var(--text-error); + margin-bottom: 1em; + } + + .status-message.svelte-1qdiqba { + margin-bottom: 1em; + } + + .dependency-item.svelte-1qdiqba { + margin-bottom: 0.5em; + } + + /* (unused) .installed { + color: var(--text-success); + }*/ + + /* (unused) .not-installed { + color: var(--text-muted); + }*/ + + .link-item.svelte-1qdiqba { + margin-bottom: 0.5em; + } + + button.svelte-1qdiqba { + margin-left: 0.5em; + } + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWNwU2VydmVySW5zdGFsbFNldHRpbmdzLnN2ZWx0ZSIsInNvdXJjZXMiOlsiTWNwU2VydmVySW5zdGFsbFNldHRpbmdzLnN2ZWx0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0IGxhbmc9XCJ0c1wiPmltcG9ydCB7IEZVTExfTE9HR0VSX0ZJTEVOQU1FLCBsb2FkRGVwZW5kZW5jaWVzQXJyYXkgfSBmcm9tIFwiJC9zaGFyZWRcIjtcbmltcG9ydCB7IE5vdGljZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBvbk1vdW50IH0gZnJvbSBcInN2ZWx0ZVwiO1xuaW1wb3J0IHsgcmVtb3ZlRnJvbUNsYXVkZUNvbmZpZywgdXBkYXRlQ2xhdWRlQ29uZmlnLCB9IGZyb20gXCIuLi9zZXJ2aWNlcy9jb25maWdcIjtcbmltcG9ydCB7IGluc3RhbGxNY3BTZXJ2ZXIgfSBmcm9tIFwiLi4vc2VydmljZXMvaW5zdGFsbFwiO1xuaW1wb3J0IHsgZ2V0SW5zdGFsbGF0aW9uU3RhdHVzIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3N0YXR1c1wiO1xuaW1wb3J0IHsgdW5pbnN0YWxsU2VydmVyIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3VuaW5zdGFsbFwiO1xuaW1wb3J0IHsgb3BlbkZvbGRlciB9IGZyb20gXCIuLi91dGlscy9vcGVuRm9sZGVyXCI7XG5leHBvcnQgbGV0IHBsdWdpbjtcbi8vIERlcGVuZGVuY2llcyBhbmQgQVBJIGtleSBzdGF0dXNcbmNvbnN0IGRlcHMgPSBsb2FkRGVwZW5kZW5jaWVzQXJyYXkocGx1Z2luKTtcbi8vIEluc3RhbGxhdGlvbiBzdGF0dXNcbmxldCBzdGF0dXMgPSB7XG4gICAgc3RhdGU6IFwibm90IGluc3RhbGxlZFwiLFxuICAgIHZlcnNpb25zOiB7fSxcbn07XG5vbk1vdW50KGFzeW5jICgpID0+IHtcbiAgICBzdGF0dXMgPSBhd2FpdCBnZXRJbnN0YWxsYXRpb25TdGF0dXMocGx1Z2luKTtcbn0pO1xuLy8gSGFuZGxlIGluc3RhbGxhdGlvblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSW5zdGFsbCgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhcGlLZXkgPSBhd2FpdCBwbHVnaW4uZ2V0TG9jYWxSZXN0QXBpS2V5KCk7XG4gICAgICAgIGlmICghYXBpS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2NhbCBSRVNUIEFQSSBrZXkgaXMgbm90IGNvbmZpZ3VyZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdHVzID0geyAuLi5zdGF0dXMsIHN0YXRlOiBcImluc3RhbGxpbmdcIiB9O1xuICAgICAgICBjb25zdCBpbnN0YWxsUGF0aCA9IGF3YWl0IGluc3RhbGxNY3BTZXJ2ZXIocGx1Z2luKTtcbiAgICAgICAgLy8gVXBkYXRlIENsYXVkZSBjb25maWdcbiAgICAgICAgYXdhaXQgdXBkYXRlQ2xhdWRlQ29uZmlnKHBsdWdpbiwgaW5zdGFsbFBhdGgucGF0aCwgYXBpS2V5KTtcbiAgICAgICAgc3RhdHVzID0gYXdhaXQgZ2V0SW5zdGFsbGF0aW9uU3RhdHVzKHBsdWdpbik7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIkluc3RhbGxhdGlvbiBmYWlsZWRcIjtcbiAgICAgICAgc3RhdHVzID0geyAuLi5zdGF0dXMsIHN0YXRlOiBcImVycm9yXCIsIGVycm9yOiBtZXNzYWdlIH07XG4gICAgICAgIG5ldyBOb3RpY2UobWVzc2FnZSk7XG4gICAgfVxufVxuLy8gSGFuZGxlIHVuaW5zdGFsbFxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlVW5pbnN0YWxsKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHN0YXR1cyA9IHsgLi4uc3RhdHVzLCBzdGF0ZTogXCJpbnN0YWxsaW5nXCIgfTtcbiAgICAgICAgYXdhaXQgdW5pbnN0YWxsU2VydmVyKHBsdWdpbik7XG4gICAgICAgIGF3YWl0IHJlbW92ZUZyb21DbGF1ZGVDb25maWcoKTtcbiAgICAgICAgc3RhdHVzID0geyAuLi5zdGF0dXMsIHN0YXRlOiBcIm5vdCBpbnN0YWxsZWRcIiB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmluc3RhbGxhdGlvbiBmYWlsZWRcIjtcbiAgICAgICAgc3RhdHVzID0ge1xuICAgICAgICAgICAgLi4uc3RhdHVzLFxuICAgICAgICAgICAgc3RhdGU6IFwiZXJyb3JcIixcbiAgICAgICAgICAgIGVycm9yOiBtZXNzYWdlLFxuICAgICAgICB9O1xuICAgICAgICBuZXcgTm90aWNlKG1lc3NhZ2UpO1xuICAgIH1cbn1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiaW5zdGFsbGF0aW9uLXN0YXR1c1wiPlxuICA8aDM+SW5zdGFsbGF0aW9uIHN0YXR1czwvaDM+XG5cbiAgeyNpZiBzdGF0dXMuc3RhdGUgPT09IFwibm8gYXBpIGtleVwifVxuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UGxlYXNlIGNvbmZpZ3VyZSB0aGUgTG9jYWwgUkVTVCBBUEkgcGx1Z2luPC9kaXY+XG4gIHs6ZWxzZSBpZiBzdGF0dXMuc3RhdGUgPT09IFwibm90IGluc3RhbGxlZFwifVxuICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZVwiPlxuICAgICAgTUNQIFNlcnZlciBpcyBub3QgaW5zdGFsbGVkXG4gICAgICA8YnV0dG9uIG9uOmNsaWNrPXtoYW5kbGVJbnN0YWxsfT5JbnN0YWxsIHNlcnZlcjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICB7OmVsc2UgaWYgc3RhdHVzLnN0YXRlID09PSBcImluc3RhbGxpbmdcIn1cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLW1lc3NhZ2VcIj5JbnN0YWxsaW5nIE1DUCBzZXJ2ZXIuLi48L2Rpdj5cbiAgezplbHNlIGlmIHN0YXR1cy5zdGF0ZSA9PT0gXCJpbnN0YWxsZWRcIn1cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLW1lc3NhZ2VcIj5cbiAgICAgIE1DUCBTZXJ2ZXIgdntzdGF0dXMudmVyc2lvbnMuc2VydmVyfSBpcyBpbnN0YWxsZWRcbiAgICAgIDxidXR0b24gb246Y2xpY2s9e2hhbmRsZVVuaW5zdGFsbH0+VW5pbnN0YWxsPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIHs6ZWxzZSBpZiBzdGF0dXMuc3RhdGUgPT09IFwib3V0ZGF0ZWRcIn1cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLW1lc3NhZ2VcIj5cbiAgICAgIFVwZGF0ZSBhdmFpbGFibGUgKHZ7c3RhdHVzLnZlcnNpb25zLnNlcnZlcn0gLT4gdntzdGF0dXMudmVyc2lvbnMucGx1Z2lufSlcbiAgICAgIDxidXR0b24gb246Y2xpY2s9e2hhbmRsZUluc3RhbGx9PlVwZGF0ZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICB7OmVsc2UgaWYgc3RhdHVzLnN0YXRlID09PSBcInVuaW5zdGFsbGluZ1wifVxuICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtbWVzc2FnZVwiPlVuaW5zdGFsbGluZyBNQ1Agc2VydmVyLi4uPC9kaXY+XG4gIHs6ZWxzZSBpZiBzdGF0dXMuc3RhdGUgPT09IFwiZXJyb3JcIn1cbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPntzdGF0dXMuZXJyb3J9PC9kaXY+XG4gIHsvaWZ9XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImRlcGVuZGVuY2llc1wiPlxuICA8aDM+RGVwZW5kZW5jaWVzPC9oMz5cblxuICB7I2VhY2ggJGRlcHMgYXMgZGVwIChkZXAuaWQpfVxuICAgIDxkaXYgY2xhc3M9XCJkZXBlbmRlbmN5LWl0ZW1cIj5cbiAgICAgIHsjaWYgZGVwLmluc3RhbGxlZH1cbiAgICAgICAg4pyFIHtkZXAubmFtZX0gaXMgaW5zdGFsbGVkXG4gICAgICB7OmVsc2V9XG4gICAgICAgIOKdjFxuICAgICAgICB7ZGVwLm5hbWV9XG4gICAgICAgIHtkZXAucmVxdWlyZWQgPyBcIihSZXF1aXJlZClcIiA6IFwiKE9wdGlvbmFsKVwifVxuICAgICAgICB7I2lmIGRlcC51cmx9PGEgaHJlZj17ZGVwLnVybH0gdGFyZ2V0PVwiX2JsYW5rXCI+SG93IHRvIGluc3RhbGw/PC9hPnsvaWZ9XG4gICAgICB7L2lmfVxuICAgIDwvZGl2PlxuICB7L2VhY2h9XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImxpbmtzXCI+XG4gIDxoMz5SZXNvdXJjZXM8L2gzPlxuXG4gIHsjaWYgc3RhdHVzLnBhdGh9XG4gICAgPGRpdiBjbGFzcz1cImxpbmstaXRlbVwiPlxuICAgICAgPCEtLSBzdmVsdGUtaWdub3JlIGExMXlfbm9fc3RhdGljX2VsZW1lbnRfaW50ZXJhY3Rpb25zIC0tPlxuICAgICAgPGEgb246Y2xpY2s9eygpID0+IHN0YXR1cy5kaXIgJiYgb3BlbkZvbGRlcihzdGF0dXMuZGlyKX0+XG4gICAgICAgIFNlcnZlciBpbnN0YWxsIGZvbGRlclxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICB7L2lmfVxuXG4gIDxkaXYgY2xhc3M9XCJsaW5rLWl0ZW1cIj5cbiAgICA8IS0tIHN2ZWx0ZS1pZ25vcmUgYTExeV9ub19zdGF0aWNfZWxlbWVudF9pbnRlcmFjdGlvbnMgLS0+XG4gICAgPGEgb246Y2xpY2s9eygpID0+IG9wZW5Gb2xkZXIoZGlybmFtZShGVUxMX0xPR0dFUl9GSUxFTkFNRSkpfT5cbiAgICAgIFNlcnZlciBsb2cgZm9sZGVyXG4gICAgPC9hPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGluay1pdGVtXCI+XG4gICAgPGFcbiAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vamFja3N0ZWFtZGV2L29ic2lkaWFuLW1jcC10b29sc1wiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgID5cbiAgICAgIEdpdEh1YiByZXBvc2l0b3J5XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIC5lcnJvci1tZXNzYWdlIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1lcnJvcik7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICB9XG5cbiAgLnN0YXR1cy1tZXNzYWdlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIH1cblxuICAuZGVwZW5kZW5jeS1pdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgfVxuXG4gIC5pbnN0YWxsZWQge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXN1Y2Nlc3MpO1xuICB9XG5cbiAgLm5vdC1pbnN0YWxsZWQge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgfVxuXG4gIC5saW5rLWl0ZW0ge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICB9XG5cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMC41ZW07XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQXVJQSxFQUFFLDZCQUFjLENBQUM7QUFDakIsSUFBSSx3QkFBd0I7QUFDNUIsSUFBSSxrQkFBa0I7QUFDdEI7O0FBRUEsRUFBRSw4QkFBZSxDQUFDO0FBQ2xCLElBQUksa0JBQWtCO0FBQ3RCOztBQUVBLEVBQUUsK0JBQWdCLENBQUM7QUFDbkIsSUFBSSxvQkFBb0I7QUFDeEI7O0FBRUEsY0FBRTtBQUNGO0FBQ0E7O0FBRUEsY0FBRTtBQUNGO0FBQ0E7O0FBRUEsRUFBRSx5QkFBVSxDQUFDO0FBQ2IsSUFBSSxvQkFBb0I7QUFDeEI7O0FBRUEsRUFBRSxxQkFBTSxDQUFDO0FBQ1QsSUFBSSxrQkFBa0I7QUFDdEI7In0= */`};function p6(Q,X){OX(new.target),PZ(X,!1,p6),Z$(Q,z11);let[Z,J]=q$(),G=()=>($$(H,"deps"),W$(H,"$deps",Z)),Y=jX(X,"plugin",8),H=PI(Y()),K=EK({state:"not installed",versions:{}});VM(async()=>{Y6(K,await QB(Y()))});async function z(){try{let w=await Y().getLocalRestApiKey();if(!w)throw new Error("Local REST API key is not configured");Y6(K,{...G0(K),state:"installing"});let A=await XB(Y());await b$(Y(),A.path,w),Y6(K,await QB(Y()))}catch(w){let A=w instanceof Error?w.message:"Installation failed";Y6(K,{...G0(K),state:"error",error:A}),new YB.Notice(A)}}async function W(){try{Y6(K,{...G0(K),state:"installing"}),await JB(Y()),await DI(),Y6(K,{...G0(K),state:"not installed"})}catch(w){let A=w instanceof Error?w.message:"Uninstallation failed";Y6(K,{...G0(K),state:"error",error:A}),new YB.Notice(A)}}G$();var $=H11(),q=YQ($),B=V9(g8(q),2);{var D=(w)=>{var A=te();D6(w,A)},F=(w)=>{var A=R4(),R=YQ(A);{var T=(v)=>{var h=re(),x=V9(g8(h));y8(h),DZ("click",x,z),D6(v,h)},S=(v)=>{var h=R4(),x=YQ(h);{var p=(t)=>{var Y1=ee();D6(t,Y1)},n=(t)=>{var Y1=R4(),G1=YQ(Y1);{var V1=(N1)=>{var j1=Q11(),d1=g8(j1),D1=V9(d1);y8(j1),M4(()=>LZ(d1,`MCP Server v${G0(K).versions.server??""} is installed `)),DZ("click",D1,W),D6(N1,j1)},C1=(N1)=>{var j1=R4(),d1=YQ(j1);{var D1=(P1)=>{var Q1=Z11(),O1=g8(Q1),S1=V9(O1);y8(Q1),M4(()=>LZ(O1,`Update available (v${G0(K).versions.server??""} -> v${G0(K).versions.plugin??""}) `)),DZ("click",S1,z),D6(P1,Q1)},e=(P1)=>{var Q1=R4(),O1=YQ(Q1);{var S1=(d)=>{var f=X11();D6(d,f)},k=(d)=>{var f=R4(),j=YQ(f);{var m=(Z1)=>{var _=J11(),J1=g8(_,!0);y8(_),M4(()=>LZ(J1,G0(K).error)),D6(Z1,_)};D9(j,(Z1)=>{if(SQ(G0(K).state,"error"))Z1(m)},!0)}D6(d,f)};D9(O1,(d)=>{if(SQ(G0(K).state,"uninstalling"))d(S1);else d(k,!1)},!0)}D6(P1,Q1)};D9(d1,(P1)=>{if(SQ(G0(K).state,"outdated"))P1(D1);else P1(e,!1)},!0)}D6(N1,j1)};D9(G1,(N1)=>{if(SQ(G0(K).state,"installed"))N1(V1);else N1(C1,!1)},!0)}D6(t,Y1)};D9(x,(t)=>{if(SQ(G0(K).state,"installing"))t(p);else t(n,!1)},!0)}D6(v,h)};D9(R,(v)=>{if(SQ(G0(K).state,"not installed"))v(T);else v(S,!1)},!0)}D6(w,A)};D9(B,(w)=>{if(SQ(G0(K).state,"no api key"))w(D);else w(F,!1)})}y8(q);var P=V9(q,2),N=V9(g8(P),2);z$(G,(w)=>w.id),Q$(N,1,G,(w)=>w.id,(w,A)=>{var R=W11(),T=g8(R);{var S=(h)=>{var x=sK();M4(()=>LZ(x,`✅ ${G0(A).name??""} is installed`)),D6(h,x)},v=(h)=>{var x=Y11(),p=YQ(x),n=V9(p);{var t=(Y1)=>{var G1=G11();M4(()=>J$(G1,"href",G0(A).url)),D6(Y1,G1)};D9(n,(Y1)=>{if(G0(A).url)Y1(t)})}M4(()=>LZ(p,`❌ + ${G0(A).name??""} + ${(G0(A).required?"(Required)":"(Optional)")??""} `)),D6(h,x)};D9(T,(h)=>{if(G0(A).installed)h(S);else h(v,!1)})}y8(R),D6(w,R)}),y8(P);var C=V9(P,2),L=V9(g8(C),2);{var V=(w)=>{var A=q11(),R=g8(A);y8(A),DZ("click",R,()=>G0(K).dir&&GB(G0(K).dir)),D6(w,A)};D9(L,(w)=>{if(G0(K).path)w(V)})}var M=V9(L,2),I=g8(M);y8(M),Rq(2),y8(C),DZ("click",I,()=>GB(DA.dirname(UI))),D6(Q,$);var E=FZ({...wX()});return J(),E}CX(p6);async function LA(Q){try{return{success:!0}}catch(X){return{success:!1,error:X instanceof Error?X.message:String(X)}}}LX();AZ[f0]="SettingsTab.svelte";var K11=z8(K8('
'),AZ[f0],[[5,0]]);function AZ(Q,X){OX(new.target),PZ(X,!1,AZ);let Z=jX(X,"plugin",8);var J=K11(),G=g8(J);return p6(G,{get plugin(){return Z()}}),y8(J),D6(Q,J),FZ({...wX()})}CX(AZ);var CA=require("obsidian");class NA extends CA.PluginSettingTab{plugin;component;constructor(Q,X){super(Q,X);this.plugin=X}display(){let{containerEl:Q}=this;Q.empty(),this.component=Z7(AZ,{target:Q,props:{plugin:this.plugin}})}hide(){this.component&&AX(this.component)}}async function TA(Q){try{return Q.addSettingTab(new NA(Q.app,Q)),{success:!0}}catch(X){return{success:!1,error:X instanceof Error?X.message:String(X)}}}class WB extends w4.Plugin{localRestApi={id:"obsidian-local-rest-api",name:"Local REST API",required:!0,installed:!1};async getLocalRestApiKey(){return this.localRestApi.plugin?.settings?.apiKey}async onload(){await TA(this),await LA(this),F3.lastValueFrom(v$(this)).then((Q)=>{if(this.localRestApi=Q,!this.localRestApi.api){new w4.Notice(`${this.manifest.name}: Local REST API plugin is required but not found. Please install it from the community plugins and restart Obsidian.`,0);return}this.localRestApi.api.addRoute("/search/smart").post(this.handleSearchRequest.bind(this)),this.localRestApi.api.addRoute("/templates/execute").post(this.handleTemplateExecution.bind(this)),m0.info("MCP Tools Plugin loaded")})}async handleTemplateExecution(Q,X){try{let{api:Z}=await F3.lastValueFrom(g$(this));if(!Z){new w4.Notice(`${this.manifest.name}: Templater plugin is not available. Please install it from the community plugins.`,0),m0.error("Templater plugin is not available"),X.status(503).json({error:"Templater plugin is not available"});return}let J=Bq.ApiTemplateExecutionParams(Q.body);if(J instanceof c1.errors){let W={error:"Invalid request body",body:Q.body,summary:J.summary};m0.debug("Invalid request body",W),X.status(400).json(W);return}let G=this.app.vault.getAbstractFileByPath(J.name);if(!(G instanceof w4.TFile)){m0.debug("Template file not found",{params:J,templateFile:G}),X.status(404).json({error:`File not found: ${J.name}`});return}let Y=Z.create_running_config(G,G,Vq.RunMode.CreateNewFromTemplate),H=(W)=>{return J.arguments[W]??""},K=Z.functions_generator.generate_object.bind(Z.functions_generator);Z.functions_generator.generate_object=async function(W,$){let q=await K(W,$);return Object.assign(q,{mcpTools:{prompt:H}}),q};let z=await Z.read_and_parse_template(Y);if(Z.functions_generator.generate_object=K,J.createFile&&J.targetPath){await this.app.vault.create(J.targetPath,z),X.json({message:"Prompt executed and file created successfully",content:z});return}X.json({message:"Prompt executed without creating a file",content:z})}catch(Z){m0.error("Prompt execution error:",{error:Z instanceof Error?Z.message:Z,body:Q.body}),X.status(503).json({error:"An error occurred while processing the prompt"});return}}async handleSearchRequest(Q,X){try{let J=(await F3.lastValueFrom(x$(this))).api;if(!J){new w4.Notice("Smart Search REST API Plugin: smart-connections plugin is required but not found. Please install it from the community plugins.",0),X.status(503).json({error:"Smart Connections plugin is not available"});return}let G=bN.pipe(({query:K,filter:z={}})=>({query:K,filter:Gz({key_starts_with_any:z.folders,exclude_key_starts_with_any:z.excludeFolders,limit:z.limit})})).to(mN)(Q.body);if(G instanceof c1.errors){X.status(400).json({error:"Invalid request body",summary:G.summary});return}let Y=await J.search(G.query,G.filter),H={results:await Promise.all(Y.map(async(K)=>({path:K.item.path,text:await K.item.read(),score:K.score,breadcrumbs:K.item.breadcrumbs})))};X.json(H);return}catch(Z){m0.error("Smart Search API error:",{error:Z,body:Q.body}),X.status(503).json({error:"An error occurred while processing the search request"});return}}onunload(){this.localRestApi.api?.unregister()}} + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/mcp-tools/manifest.json b/.obsidian/plugins/mcp-tools/manifest.json new file mode 100644 index 0000000..e7dd496 --- /dev/null +++ b/.obsidian/plugins/mcp-tools/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "mcp-tools", + "name": "MCP Tools", + "version": "0.2.27", + "minAppVersion": "0.15.0", + "description": "Securely connect Claude Desktop to your vault with semantic search, templates, and file management capabilities.", + "author": "Jack Steam", + "authorUrl": "https://github.com/jacksteamdev", + "fundingUrl": "https://github.com/sponsors/jacksteamdev", + "isDesktopOnly": true +} diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js new file mode 100644 index 0000000..9c7042d --- /dev/null +++ b/.obsidian/plugins/obsidian-git/main.js @@ -0,0 +1,426 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source visit the plugins github repository (https://github.com/denolehov/obsidian-git) +*/ + +var X5=Object.create;var wl=Object.defineProperty;var K5=Object.getOwnPropertyDescriptor;var Z5=Object.getOwnPropertyNames;var J5=Object.getPrototypeOf,Q5=Object.prototype.hasOwnProperty;var by=t=>{throw TypeError(t)};var eI=(t,e,r)=>e in t?wl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var tI=(t,e)=>()=>(t&&(e=t(t=0)),e);var M=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),rI=(t,e)=>{for(var r in e)wl(t,r,{get:e[r],enumerable:!0})},_y=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Z5(e))!Q5.call(t,i)&&i!==r&&wl(t,i,{get:()=>e[i],enumerable:!(n=K5(e,i))||n.enumerable});return t};var Ot=(t,e,r)=>(r=t!=null?X5(J5(t)):{},_y(e||!t||!t.__esModule?wl(r,"default",{value:t,enumerable:!0}):r,t)),nI=t=>_y(wl({},"__esModule",{value:!0}),t);var vt=(t,e,r)=>eI(t,typeof e!="symbol"?e+"":e,r),wp=(t,e,r)=>e.has(t)||by("Cannot "+r);var ue=(t,e,r)=>(wp(t,e,"read from private field"),r?r.call(t):e.get(t)),yt=(t,e,r)=>e.has(t)?by("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),It=(t,e,r,n)=>(wp(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),di=(t,e,r)=>(wp(t,e,"access private method"),r);var Ey=M(Iu=>{"use strict";m();Iu.byteLength=aI;Iu.toByteArray=oI;Iu.fromByteArray=uI;var Mn=[],Wr=[],iI=typeof Uint8Array!="undefined"?Uint8Array:Array,bp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(Ra=0,xy=bp.length;Ra0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function aI(t){var e=Sy(t),r=e[0],n=e[1];return(r+n)*3/4-n}function sI(t,e,r){return(e+r)*3/4-r}function oI(t){var e,r=Sy(t),n=r[0],i=r[1],a=new iI(sI(t,n,i)),s=0,o=i>0?n-4:n,l;for(l=0;l>16&255,a[s++]=e>>8&255,a[s++]=e&255;return i===2&&(e=Wr[t.charCodeAt(l)]<<2|Wr[t.charCodeAt(l+1)]>>4,a[s++]=e&255),i===1&&(e=Wr[t.charCodeAt(l)]<<10|Wr[t.charCodeAt(l+1)]<<4|Wr[t.charCodeAt(l+2)]>>2,a[s++]=e>>8&255,a[s++]=e&255),a}function lI(t){return Mn[t>>18&63]+Mn[t>>12&63]+Mn[t>>6&63]+Mn[t&63]}function cI(t,e,r){for(var n,i=[],a=e;ao?o:s+a));return n===1?(e=t[r-1],i.push(Mn[e>>2]+Mn[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(Mn[e>>10]+Mn[e>>4&63]+Mn[e<<2&63]+"=")),i.join("")}});var Ay=M(_p=>{m();_p.read=function(t,e,r,n,i){var a,s,o=i*8-n-1,l=(1<>1,u=-7,f=r?i-1:0,d=r?-1:1,h=t[e+f];for(f+=d,a=h&(1<<-u)-1,h>>=-u,u+=o;u>0;a=a*256+t[e+f],f+=d,u-=8);for(s=a&(1<<-u)-1,a>>=-u,u+=n;u>0;s=s*256+t[e+f],f+=d,u-=8);if(a===0)a=1-c;else{if(a===l)return s?NaN:(h?-1:1)*(1/0);s=s+Math.pow(2,n),a=a-c}return(h?-1:1)*s*Math.pow(2,a-n)};_p.write=function(t,e,r,n,i,a){var s,o,l,c=a*8-i-1,u=(1<>1,d=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:a-1,p=n?1:-1,g=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(s++,l/=2),s+f>=u?(o=0,s=u):s+f>=1?(o=(e*l-1)*Math.pow(2,i),s=s+f):(o=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+h]=o&255,h+=p,o/=256,i-=8);for(s=s<0;t[r+h]=s&255,h+=p,s/=256,c-=8);t[r+h-p]|=g*128}});var Rp=M(Ls=>{"use strict";m();var xp=Ey(),Fs=Ay(),ky=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Ls.Buffer=O;Ls.SlowBuffer=gI;Ls.INSPECT_MAX_BYTES=50;var $u=2147483647;Ls.kMaxLength=$u;O.TYPED_ARRAY_SUPPORT=fI();!O.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function fI(){try{let t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch(t){return!1}}Object.defineProperty(O.prototype,"parent",{enumerable:!0,get:function(){if(O.isBuffer(this))return this.buffer}});Object.defineProperty(O.prototype,"offset",{enumerable:!0,get:function(){if(O.isBuffer(this))return this.byteOffset}});function hi(t){if(t>$u)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,O.prototype),e}function O(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return kp(t)}return Ry(t,e,r)}O.poolSize=8192;function Ry(t,e,r){if(typeof t=="string")return hI(t,e);if(ArrayBuffer.isView(t))return pI(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(On(t,ArrayBuffer)||t&&On(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(On(t,SharedArrayBuffer)||t&&On(t.buffer,SharedArrayBuffer)))return Ep(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=t.valueOf&&t.valueOf();if(n!=null&&n!==t)return O.from(n,e,r);let i=mI(t);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return O.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}O.from=function(t,e,r){return Ry(t,e,r)};Object.setPrototypeOf(O.prototype,Uint8Array.prototype);Object.setPrototypeOf(O,Uint8Array);function My(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function dI(t,e,r){return My(t),t<=0?hi(t):e!==void 0?typeof r=="string"?hi(t).fill(e,r):hi(t).fill(e):hi(t)}O.alloc=function(t,e,r){return dI(t,e,r)};function kp(t){return My(t),hi(t<0?0:Tp(t)|0)}O.allocUnsafe=function(t){return kp(t)};O.allocUnsafeSlow=function(t){return kp(t)};function hI(t,e){if((typeof e!="string"||e==="")&&(e="utf8"),!O.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=Oy(t,e)|0,n=hi(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}function Sp(t){let e=t.length<0?0:Tp(t.length)|0,r=hi(e);for(let n=0;n=$u)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+$u.toString(16)+" bytes");return t|0}function gI(t){return+t!=t&&(t=0),O.alloc(+t)}O.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==O.prototype};O.compare=function(e,r){if(On(e,Uint8Array)&&(e=O.from(e,e.offset,e.byteLength)),On(r,Uint8Array)&&(r=O.from(r,r.offset,r.byteLength)),!O.isBuffer(e)||!O.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;let n=e.length,i=r.length;for(let a=0,s=Math.min(n,i);ai.length?(O.isBuffer(s)||(s=O.from(s)),s.copy(i,a)):Uint8Array.prototype.set.call(i,s,a);else if(O.isBuffer(s))s.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=s.length}return i};function Oy(t,e){if(O.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||On(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Ap(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Hy(t).length;default:if(i)return n?-1:Ap(t).length;e=(""+e).toLowerCase(),i=!0}}O.byteLength=Oy;function vI(t,e,r){let n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return"";for(t||(t="utf8");;)switch(t){case"hex":return TI(this,e,r);case"utf8":case"utf-8":return $y(this,e,r);case"ascii":return AI(this,e,r);case"latin1":case"binary":return kI(this,e,r);case"base64":return SI(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return CI(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}O.prototype._isBuffer=!0;function Ma(t,e,r){let n=t[e];t[e]=t[r],t[r]=n}O.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(e+=" ... "),""};ky&&(O.prototype[ky]=O.prototype.inspect);O.prototype.compare=function(e,r,n,i,a){if(On(e,Uint8Array)&&(e=O.from(e,e.offset,e.byteLength)),!O.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>e.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===e)return 0;let s=a-i,o=n-r,l=Math.min(s,o),c=this.slice(i,a),u=e.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,Pp(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof e=="string"&&(e=O.from(e,n)),O.isBuffer(e))return e.length===0?-1:Ty(t,e,r,n,i);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):Ty(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Ty(t,e,r,n,i){let a=1,s=t.length,o=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(t.length<2||e.length<2)return-1;a=2,s/=2,o/=2,r/=2}function l(u,f){return a===1?u[f]:u.readUInt16BE(f*a)}let c;if(i){let u=-1;for(c=r;cs&&(r=s-o),c=r;c>=0;c--){let u=!0;for(let f=0;fi&&(n=i)):n=i;let a=e.length;n>a/2&&(n=a/2);let s;for(s=0;s>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),e.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let s=!1;for(;;)switch(i){case"hex":return yI(this,e,r,n);case"utf8":case"utf-8":return wI(this,e,r,n);case"ascii":case"latin1":case"binary":return bI(this,e,r,n);case"base64":return _I(this,e,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return xI(this,e,r,n);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}};O.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function SI(t,e,r){return e===0&&r===t.length?xp.fromByteArray(t):xp.fromByteArray(t.slice(e,r))}function $y(t,e,r){r=Math.min(t.length,r);let n=[],i=e;for(;i239?4:a>223?3:a>191?2:1;if(i+o<=r){let l,c,u,f;switch(o){case 1:a<128&&(s=a);break;case 2:l=t[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(s=f));break;case 3:l=t[i+1],c=t[i+2],(l&192)===128&&(c&192)===128&&(f=(a&15)<<12|(l&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:l=t[i+1],c=t[i+2],u=t[i+3],(l&192)===128&&(c&192)===128&&(u&192)===128&&(f=(a&15)<<18|(l&63)<<12|(c&63)<<6|u&63,f>65535&&f<1114112&&(s=f))}}s===null?(s=65533,o=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=o}return EI(n)}var Cy=4096;function EI(t){let e=t.length;if(e<=Cy)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=e;an&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}O.prototype.readUintLE=O.prototype.readUIntLE=function(e,r,n){e=e>>>0,r=r>>>0,n||bt(e,r,this.length);let i=this[e],a=1,s=0;for(;++s>>0,r=r>>>0,n||bt(e,r,this.length);let i=this[e+--r],a=1;for(;r>0&&(a*=256);)i+=this[e+--r]*a;return i};O.prototype.readUint8=O.prototype.readUInt8=function(e,r){return e=e>>>0,r||bt(e,1,this.length),this[e]};O.prototype.readUint16LE=O.prototype.readUInt16LE=function(e,r){return e=e>>>0,r||bt(e,2,this.length),this[e]|this[e+1]<<8};O.prototype.readUint16BE=O.prototype.readUInt16BE=function(e,r){return e=e>>>0,r||bt(e,2,this.length),this[e]<<8|this[e+1]};O.prototype.readUint32LE=O.prototype.readUInt32LE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};O.prototype.readUint32BE=O.prototype.readUInt32BE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};O.prototype.readBigUInt64LE=Ui(function(e){e=e>>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,a=this[++e]+this[++e]*2**8+this[++e]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=r*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],a=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||bt(e,r,this.length);let i=this[e],a=1,s=0;for(;++s=a&&(i-=Math.pow(2,8*r)),i};O.prototype.readIntBE=function(e,r,n){e=e>>>0,r=r>>>0,n||bt(e,r,this.length);let i=r,a=1,s=this[e+--i];for(;i>0&&(a*=256);)s+=this[e+--i]*a;return a*=128,s>=a&&(s-=Math.pow(2,8*r)),s};O.prototype.readInt8=function(e,r){return e=e>>>0,r||bt(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};O.prototype.readInt16LE=function(e,r){e=e>>>0,r||bt(e,2,this.length);let n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n};O.prototype.readInt16BE=function(e,r){e=e>>>0,r||bt(e,2,this.length);let n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:n};O.prototype.readInt32LE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};O.prototype.readInt32BE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};O.prototype.readBigInt64LE=Ui(function(e){e=e>>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(n<<24);return(BigInt(i)<>>0,Ds(e,"offset");let r=this[e],n=this[e+7];(r===void 0||n===void 0)&&bl(e,this.length-8);let i=(r<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(i)<>>0,r||bt(e,4,this.length),Fs.read(this,e,!0,23,4)};O.prototype.readFloatBE=function(e,r){return e=e>>>0,r||bt(e,4,this.length),Fs.read(this,e,!1,23,4)};O.prototype.readDoubleLE=function(e,r){return e=e>>>0,r||bt(e,8,this.length),Fs.read(this,e,!0,52,8)};O.prototype.readDoubleBE=function(e,r){return e=e>>>0,r||bt(e,8,this.length),Fs.read(this,e,!1,52,8)};function cr(t,e,r,n,i,a){if(!O.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}O.prototype.writeUintLE=O.prototype.writeUIntLE=function(e,r,n,i){if(e=+e,r=r>>>0,n=n>>>0,!i){let o=Math.pow(2,8*n)-1;cr(this,e,r,n,o,0)}let a=1,s=0;for(this[r]=e&255;++s>>0,n=n>>>0,!i){let o=Math.pow(2,8*n)-1;cr(this,e,r,n,o,0)}let a=n-1,s=1;for(this[r+a]=e&255;--a>=0&&(s*=256);)this[r+a]=e/s&255;return r+n};O.prototype.writeUint8=O.prototype.writeUInt8=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,1,255,0),this[r]=e&255,r+1};O.prototype.writeUint16LE=O.prototype.writeUInt16LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,65535,0),this[r]=e&255,this[r+1]=e>>>8,r+2};O.prototype.writeUint16BE=O.prototype.writeUInt16BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=e&255,r+2};O.prototype.writeUint32LE=O.prototype.writeUInt32LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255,r+4};O.prototype.writeUint32BE=O.prototype.writeUInt32BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};function Fy(t,e,r,n,i){By(e,n,i,t,r,7);let a=Number(e&BigInt(4294967295));t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s=s>>8,t[r++]=s,s=s>>8,t[r++]=s,s=s>>8,t[r++]=s,r}function Dy(t,e,r,n,i){By(e,n,i,t,r,7);let a=Number(e&BigInt(4294967295));t[r+7]=a,a=a>>8,t[r+6]=a,a=a>>8,t[r+5]=a,a=a>>8,t[r+4]=a;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s=s>>8,t[r+2]=s,s=s>>8,t[r+1]=s,s=s>>8,t[r]=s,r+8}O.prototype.writeBigUInt64LE=Ui(function(e,r=0){return Fy(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});O.prototype.writeBigUInt64BE=Ui(function(e,r=0){return Dy(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});O.prototype.writeIntLE=function(e,r,n,i){if(e=+e,r=r>>>0,!i){let l=Math.pow(2,8*n-1);cr(this,e,r,n,l-1,-l)}let a=0,s=1,o=0;for(this[r]=e&255;++a>0)-o&255;return r+n};O.prototype.writeIntBE=function(e,r,n,i){if(e=+e,r=r>>>0,!i){let l=Math.pow(2,8*n-1);cr(this,e,r,n,l-1,-l)}let a=n-1,s=1,o=0;for(this[r+a]=e&255;--a>=0&&(s*=256);)e<0&&o===0&&this[r+a+1]!==0&&(o=1),this[r+a]=(e/s>>0)-o&255;return r+n};O.prototype.writeInt8=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,1,127,-128),e<0&&(e=255+e+1),this[r]=e&255,r+1};O.prototype.writeInt16LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,32767,-32768),this[r]=e&255,this[r+1]=e>>>8,r+2};O.prototype.writeInt16BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=e&255,r+2};O.prototype.writeInt32LE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,2147483647,-2147483648),this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4};O.prototype.writeInt32BE=function(e,r,n){return e=+e,r=r>>>0,n||cr(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};O.prototype.writeBigInt64LE=Ui(function(e,r=0){return Fy(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});O.prototype.writeBigInt64BE=Ui(function(e,r=0){return Dy(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Ly(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function jy(t,e,r,n,i){return e=+e,r=r>>>0,i||Ly(t,e,r,4,34028234663852886e22,-34028234663852886e22),Fs.write(t,e,r,n,23,4),r+4}O.prototype.writeFloatLE=function(e,r,n){return jy(this,e,r,!0,n)};O.prototype.writeFloatBE=function(e,r,n){return jy(this,e,r,!1,n)};function Ny(t,e,r,n,i){return e=+e,r=r>>>0,i||Ly(t,e,r,8,17976931348623157e292,-17976931348623157e292),Fs.write(t,e,r,n,52,8),r+8}O.prototype.writeDoubleLE=function(e,r,n){return Ny(this,e,r,!0,n)};O.prototype.writeDoubleBE=function(e,r,n){return Ny(this,e,r,!1,n)};O.prototype.copy=function(e,r,n,i){if(!O.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r>>0,n=n===void 0?this.length:n>>>0,e||(e=0);let a;if(typeof e=="number")for(a=r;a2**32?i=Py(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=Py(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n},RangeError);function Py(t){let e="",r=t.length,n=t[0]==="-"?1:0;for(;r>=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function PI(t,e,r){Ds(e,"offset"),(t[e]===void 0||t[e+r]===void 0)&&bl(e,t.length-(r+1))}function By(t,e,r,n,i,a){if(t>r||t3?e===0||e===BigInt(0)?o=`>= 0${s} and < 2${s} ** ${(a+1)*8}${s}`:o=`>= -(2${s} ** ${(a+1)*8-1}${s}) and < 2 ** ${(a+1)*8-1}${s}`:o=`>= ${e}${s} and <= ${r}${s}`,new $s.ERR_OUT_OF_RANGE("value",o,t)}PI(n,i,a)}function Ds(t,e){if(typeof t!="number")throw new $s.ERR_INVALID_ARG_TYPE(e,"number",t)}function bl(t,e,r){throw Math.floor(t)!==t?(Ds(t,r),new $s.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new $s.ERR_BUFFER_OUT_OF_BOUNDS:new $s.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}var RI=/[^+/0-9A-Za-z-_]/g;function MI(t){if(t=t.split("=")[0],t=t.trim().replace(RI,""),t.length<2)return"";for(;t.length%4!==0;)t=t+"=";return t}function Ap(t,e){e=e||1/0;let r,n=t.length,i=null,a=[];for(let s=0;s55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}else if(s+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function OI(t){let e=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function Hy(t){return xp.toByteArray(MI(t))}function Fu(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function On(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function Pp(t){return t!==t}var $I=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function Ui(t){return typeof BigInt=="undefined"?FI:t}function FI(){throw new Error("BigInt not supported")}});var Uy,Mp,Buffer,m=tI(()=>{Uy=require("obsidian");Uy.Platform.isMobileApp?Mp=Rp().Buffer:Mp=global.Buffer;Buffer=Mp});var zy=M((GV,Gy)=>{"use strict";m();var Tr=function(t){if(t=t||{},this.Promise=t.Promise||Promise,this.queues=Object.create(null),this.domainReentrant=t.domainReentrant||!1,this.domainReentrant){if(typeof process=="undefined"||typeof process.domain=="undefined")throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill.");this.domains=Object.create(null)}this.timeout=t.timeout||Tr.DEFAULT_TIMEOUT,this.maxOccupationTime=t.maxOccupationTime||Tr.DEFAULT_MAX_OCCUPATION_TIME,this.maxExecutionTime=t.maxExecutionTime||Tr.DEFAULT_MAX_EXECUTION_TIME,t.maxPending===1/0||Number.isInteger(t.maxPending)&&t.maxPending>=0?this.maxPending=t.maxPending:this.maxPending=Tr.DEFAULT_MAX_PENDING};Tr.DEFAULT_TIMEOUT=0;Tr.DEFAULT_MAX_OCCUPATION_TIME=0;Tr.DEFAULT_MAX_EXECUTION_TIME=0;Tr.DEFAULT_MAX_PENDING=1e3;Tr.prototype.acquire=function(t,e,r,n){if(Array.isArray(t))return this._acquireBatch(t,e,r,n);if(typeof e!="function")throw new Error("You must pass a function to execute");var i=null,a=null,s=null;typeof r!="function"&&(n=r,r=null,s=new this.Promise(function(b,E){i=b,a=E})),n=n||{};var o=!1,l=null,c=null,u=null,f=this,d=function(b,E,S){c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null),b&&(f.queues[t]&&f.queues[t].length===0&&delete f.queues[t],f.domainReentrant&&delete f.domains[t]),o||(s?E?a(E):i(S):typeof r=="function"&&r(E,S),o=!0),b&&f.queues[t]&&f.queues[t].length>0&&f.queues[t].shift()()},h=function(b){if(o)return d(b);l&&(clearTimeout(l),l=null),f.domainReentrant&&b&&(f.domains[t]=process.domain);var E=n.maxExecutionTime||f.maxExecutionTime;if(E&&(u=setTimeout(function(){f.queues[t]&&d(b,new Error("Maximum execution time is exceeded "+t))},E)),e.length===1){var S=!1;try{e(function(A,k){S||(S=!0,d(b,A,k))})}catch(A){S||(S=!0,d(b,A))}}else f._promiseTry(function(){return e()}).then(function(A){d(b,void 0,A)},function(A){d(b,A)})};f.domainReentrant&&process.domain&&(h=process.domain.bind(h));var p=n.maxPending||f.maxPending;if(!f.queues[t])f.queues[t]=[],h(!0);else if(f.domainReentrant&&process.domain&&process.domain===f.domains[t])h(!1);else if(f.queues[t].length>=p)d(!1,new Error("Too many pending tasks in queue "+t));else{var g=function(){h(!0)};n.skipQueue?f.queues[t].unshift(g):f.queues[t].push(g);var v=n.timeout||f.timeout;v&&(l=setTimeout(function(){l=null,d(!1,new Error("async-lock timed out in queue "+t))},v))}var y=n.maxOccupationTime||f.maxOccupationTime;if(y&&(c=setTimeout(function(){f.queues[t]&&d(!1,new Error("Maximum occupation time is exceeded in queue "+t))},y)),s)return s};Tr.prototype._acquireBatch=function(t,e,r,n){typeof r!="function"&&(n=r,r=null);var i=this,a=function(o,l){return function(c){i.acquire(o,l,c,n)}},s=t.reduceRight(function(o,l){return a(l,o)},e);if(typeof r=="function")s(r);else return new this.Promise(function(o,l){s.length===1?s(function(c,u){c?l(c):o(u)}):o(s())})};Tr.prototype.isBusy=function(t){return t?!!this.queues[t]:Object.keys(this.queues).length>0};Tr.prototype._promiseTry=function(t){try{return this.Promise.resolve(t())}catch(e){return this.Promise.reject(e)}};Gy.exports=Tr});var Wy=M((VV,Vy)=>{"use strict";m();Vy.exports=zy()});var qy=M((qV,Op)=>{m();typeof Object.create=="function"?Op.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Op.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Lu=M((Ip,Xy)=>{m();var Du=Rp(),In=Du.Buffer;function Yy(t,e){for(var r in t)e[r]=t[r]}In.from&&In.alloc&&In.allocUnsafe&&In.allocUnsafeSlow?Xy.exports=Du:(Yy(Du,Ip),Ip.Buffer=Oa);function Oa(t,e,r){return In(t,e,r)}Oa.prototype=Object.create(In.prototype);Yy(In,Oa);Oa.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return In(t,e,r)};Oa.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=In(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};Oa.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return In(t)};Oa.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Du.SlowBuffer(t)}});var ju=M((KV,Ky)=>{m();var DI={}.toString;Ky.exports=Array.isArray||function(t){return DI.call(t)=="[object Array]"}});var ur=M((JV,Zy)=>{"use strict";m();Zy.exports=TypeError});var Nu=M((eW,Jy)=>{"use strict";m();Jy.exports=Object});var $p=M((rW,Qy)=>{"use strict";m();Qy.exports=Error});var tw=M((iW,ew)=>{"use strict";m();ew.exports=EvalError});var nw=M((sW,rw)=>{"use strict";m();rw.exports=RangeError});var aw=M((lW,iw)=>{"use strict";m();iw.exports=ReferenceError});var Bu=M((uW,sw)=>{"use strict";m();sw.exports=SyntaxError});var lw=M((dW,ow)=>{"use strict";m();ow.exports=URIError});var uw=M((pW,cw)=>{"use strict";m();cw.exports=Math.abs});var dw=M((gW,fw)=>{"use strict";m();fw.exports=Math.floor});var pw=M((yW,hw)=>{"use strict";m();hw.exports=Math.max});var gw=M((bW,mw)=>{"use strict";m();mw.exports=Math.min});var yw=M((xW,vw)=>{"use strict";m();vw.exports=Math.pow});var bw=M((EW,ww)=>{"use strict";m();ww.exports=Math.round});var xw=M((kW,_w)=>{"use strict";m();_w.exports=Number.isNaN||function(e){return e!==e}});var Ew=M((CW,Sw)=>{"use strict";m();var LI=xw();Sw.exports=function(e){return LI(e)||e===0?e:e<0?-1:1}});var kw=M((RW,Aw)=>{"use strict";m();Aw.exports=Object.getOwnPropertyDescriptor});var Gi=M((OW,Tw)=>{"use strict";m();var Hu=kw();if(Hu)try{Hu([],"length")}catch(t){Hu=null}Tw.exports=Hu});var _l=M(($W,Cw)=>{"use strict";m();var Uu=Object.defineProperty||!1;if(Uu)try{Uu({},"a",{value:1})}catch(t){Uu=!1}Cw.exports=Uu});var xl=M((DW,Pw)=>{"use strict";m();Pw.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;e[r]=i;for(var a in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var s=Object.getOwnPropertySymbols(e);if(s.length!==1||s[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var Gu=M((jW,Mw)=>{"use strict";m();var Rw=typeof Symbol!="undefined"&&Symbol,jI=xl();Mw.exports=function(){return typeof Rw!="function"||typeof Symbol!="function"||typeof Rw("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:jI()}});var Fp=M((BW,Ow)=>{"use strict";m();Ow.exports=typeof Reflect!="undefined"&&Reflect.getPrototypeOf||null});var Dp=M((UW,Iw)=>{"use strict";m();var NI=Nu();Iw.exports=NI.getPrototypeOf||null});var Dw=M((zW,Fw)=>{"use strict";m();var BI="Function.prototype.bind called on incompatible ",HI=Object.prototype.toString,UI=Math.max,GI="[object Function]",$w=function(e,r){for(var n=[],i=0;i{"use strict";m();var WI=Dw();Lw.exports=Function.prototype.bind||WI});var zu=M((YW,jw)=>{"use strict";m();jw.exports=Function.prototype.call});var Vu=M((KW,Nw)=>{"use strict";m();Nw.exports=Function.prototype.apply});var Hw=M((JW,Bw)=>{"use strict";m();Bw.exports=typeof Reflect!="undefined"&&Reflect&&Reflect.apply});var Lp=M((eq,Uw)=>{"use strict";m();var qI=js(),YI=Vu(),XI=zu(),KI=Hw();Uw.exports=KI||qI.call(XI,YI)});var Wu=M((rq,Gw)=>{"use strict";m();var ZI=js(),JI=ur(),QI=zu(),e6=Lp();Gw.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new JI("a function is required");return e6(ZI,QI,e)}});var Xw=M((iq,Yw)=>{"use strict";m();var t6=Wu(),zw=Gi(),Ww;try{Ww=[].__proto__===Array.prototype}catch(t){if(!t||typeof t!="object"||!("code"in t)||t.code!=="ERR_PROTO_ACCESS")throw t}var jp=!!Ww&&zw&&zw(Object.prototype,"__proto__"),qw=Object,Vw=qw.getPrototypeOf;Yw.exports=jp&&typeof jp.get=="function"?t6([jp.get]):typeof Vw=="function"?function(e){return Vw(e==null?e:qw(e))}:!1});var qu=M((sq,Qw)=>{"use strict";m();var Kw=Fp(),Zw=Dp(),Jw=Xw();Qw.exports=Kw?function(e){return Kw(e)}:Zw?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return Zw(e)}:Jw?function(e){return Jw(e)}:null});var Yu=M((lq,eb)=>{"use strict";m();var r6=Function.prototype.call,n6=Object.prototype.hasOwnProperty,i6=js();eb.exports=i6.call(r6,n6)});var $n=M((uq,sb)=>{"use strict";m();var we,a6=Nu(),s6=$p(),o6=tw(),l6=nw(),c6=aw(),Us=Bu(),Hs=ur(),u6=lw(),f6=uw(),d6=dw(),h6=pw(),p6=gw(),m6=yw(),g6=bw(),v6=Ew(),ib=Function,Np=function(t){try{return ib('"use strict"; return ('+t+").constructor;")()}catch(e){}},Sl=Gi(),y6=_l(),Bp=function(){throw new Hs},w6=Sl?function(){try{return arguments.callee,Bp}catch(t){try{return Sl(arguments,"callee").get}catch(e){return Bp}}}():Bp,Ns=Gu()(),_t=qu(),b6=Dp(),_6=Fp(),ab=Vu(),El=zu(),Bs={},x6=typeof Uint8Array=="undefined"||!_t?we:_t(Uint8Array),Ia={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?we:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?we:ArrayBuffer,"%ArrayIteratorPrototype%":Ns&&_t?_t([][Symbol.iterator]()):we,"%AsyncFromSyncIteratorPrototype%":we,"%AsyncFunction%":Bs,"%AsyncGenerator%":Bs,"%AsyncGeneratorFunction%":Bs,"%AsyncIteratorPrototype%":Bs,"%Atomics%":typeof Atomics=="undefined"?we:Atomics,"%BigInt%":typeof BigInt=="undefined"?we:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?we:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?we:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?we:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":s6,"%eval%":eval,"%EvalError%":o6,"%Float16Array%":typeof Float16Array=="undefined"?we:Float16Array,"%Float32Array%":typeof Float32Array=="undefined"?we:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?we:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?we:FinalizationRegistry,"%Function%":ib,"%GeneratorFunction%":Bs,"%Int8Array%":typeof Int8Array=="undefined"?we:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?we:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?we:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Ns&&_t?_t(_t([][Symbol.iterator]())):we,"%JSON%":typeof JSON=="object"?JSON:we,"%Map%":typeof Map=="undefined"?we:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!Ns||!_t?we:_t(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":a6,"%Object.getOwnPropertyDescriptor%":Sl,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?we:Promise,"%Proxy%":typeof Proxy=="undefined"?we:Proxy,"%RangeError%":l6,"%ReferenceError%":c6,"%Reflect%":typeof Reflect=="undefined"?we:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?we:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!Ns||!_t?we:_t(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?we:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Ns&&_t?_t(""[Symbol.iterator]()):we,"%Symbol%":Ns?Symbol:we,"%SyntaxError%":Us,"%ThrowTypeError%":w6,"%TypedArray%":x6,"%TypeError%":Hs,"%Uint8Array%":typeof Uint8Array=="undefined"?we:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?we:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?we:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?we:Uint32Array,"%URIError%":u6,"%WeakMap%":typeof WeakMap=="undefined"?we:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?we:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?we:WeakSet,"%Function.prototype.call%":El,"%Function.prototype.apply%":ab,"%Object.defineProperty%":y6,"%Object.getPrototypeOf%":b6,"%Math.abs%":f6,"%Math.floor%":d6,"%Math.max%":h6,"%Math.min%":p6,"%Math.pow%":m6,"%Math.round%":g6,"%Math.sign%":v6,"%Reflect.getPrototypeOf%":_6};if(_t)try{null.error}catch(t){tb=_t(_t(t)),Ia["%Error.prototype%"]=tb}var tb,S6=function t(e){var r;if(e==="%AsyncFunction%")r=Np("async function () {}");else if(e==="%GeneratorFunction%")r=Np("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=Np("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&_t&&(r=_t(i.prototype))}return Ia[e]=r,r},rb={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Al=js(),Xu=Yu(),E6=Al.call(El,Array.prototype.concat),A6=Al.call(ab,Array.prototype.splice),nb=Al.call(El,String.prototype.replace),Ku=Al.call(El,String.prototype.slice),k6=Al.call(El,RegExp.prototype.exec),T6=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,C6=/\\(\\)?/g,P6=function(e){var r=Ku(e,0,1),n=Ku(e,-1);if(r==="%"&&n!=="%")throw new Us("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new Us("invalid intrinsic syntax, expected opening `%`");var i=[];return nb(e,T6,function(a,s,o,l){i[i.length]=o?nb(l,C6,"$1"):s||a}),i},R6=function(e,r){var n=e,i;if(Xu(rb,n)&&(i=rb[n],n="%"+i[0]+"%"),Xu(Ia,n)){var a=Ia[n];if(a===Bs&&(a=S6(n)),typeof a=="undefined"&&!r)throw new Hs("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new Us("intrinsic "+e+" does not exist!")};sb.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new Hs("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Hs('"allowMissing" argument must be a boolean');if(k6(/^%?[^%]*%?$/,e)===null)throw new Us("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=P6(e),i=n.length>0?n[0]:"",a=R6("%"+i+"%",r),s=a.name,o=a.value,l=!1,c=a.alias;c&&(i=c[0],A6(n,E6([0,1],c)));for(var u=1,f=!0;u=n.length){var g=Sl(o,d);f=!!g,f&&"get"in g&&!("originalValue"in g.get)?o=g.get:o=o[d]}else f=Xu(o,d),o=o[d];f&&!l&&(Ia[s]=o)}}return o}});var xt=M((dq,cb)=>{"use strict";m();var ob=$n(),lb=Wu(),M6=lb([ob("%String.prototype.indexOf%")]);cb.exports=function(e,r){var n=ob(e,!!r);return typeof n=="function"&&M6(e,".prototype.")>-1?lb([n]):n}});var hb=M((pq,db)=>{"use strict";m();var fb=Function.prototype.toString,Gs=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,Up,Zu;if(typeof Gs=="function"&&typeof Object.defineProperty=="function")try{Up=Object.defineProperty({},"length",{get:function(){throw Zu}}),Zu={},Gs(function(){throw 42},null,Up)}catch(t){t!==Zu&&(Gs=null)}else Gs=null;var O6=/^\s*class\b/,Gp=function(e){try{var r=fb.call(e);return O6.test(r)}catch(n){return!1}},Hp=function(e){try{return Gp(e)?!1:(fb.call(e),!0)}catch(r){return!1}},Ju=Object.prototype.toString,I6="[object Object]",$6="[object Function]",F6="[object GeneratorFunction]",D6="[object HTMLAllCollection]",L6="[object HTML document.all class]",j6="[object HTMLCollection]",N6=typeof Symbol=="function"&&!!Symbol.toStringTag,B6=!(0 in[,]),zp=function(){return!1};typeof document=="object"&&(ub=document.all,Ju.call(ub)===Ju.call(document.all)&&(zp=function(e){if((B6||!e)&&(typeof e=="undefined"||typeof e=="object"))try{var r=Ju.call(e);return(r===D6||r===L6||r===j6||r===I6)&&e("")==null}catch(n){}return!1}));var ub;db.exports=Gs?function(e){if(zp(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{Gs(e,null,Up)}catch(r){if(r!==Zu)return!1}return!Gp(e)&&Hp(e)}:function(e){if(zp(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;if(N6)return Hp(e);if(Gp(e))return!1;var r=Ju.call(e);return r!==$6&&r!==F6&&!/^\[object HTML/.test(r)?!1:Hp(e)}});var gb=M((gq,mb)=>{"use strict";m();var H6=hb(),U6=Object.prototype.toString,pb=Object.prototype.hasOwnProperty,G6=function(e,r,n){for(var i=0,a=e.length;i=3&&(i=n),W6(e)?G6(e,r,i):typeof e=="string"?z6(e,r,i):V6(e,r,i)}});var yb=M((yq,vb)=>{"use strict";m();vb.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]});var bb=M((bq,wb)=>{"use strict";m();var Vp=yb(),q6=typeof globalThis=="undefined"?global:globalThis;wb.exports=function(){for(var e=[],r=0;r{"use strict";m();var _b=_l(),Y6=Bu(),zs=ur(),xb=Gi();Sb.exports=function(e,r,n){if(!e||typeof e!="object"&&typeof e!="function")throw new zs("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new zs("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new zs("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new zs("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new zs("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new zs("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,s=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,l=!!xb&&xb(e,r);if(_b)_b(e,r,{configurable:s===null&&l?l.configurable:!s,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(o||!i&&!a&&!s)e[r]=n;else throw new Y6("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var ef=M((Eq,Ab)=>{"use strict";m();var Wp=_l(),Eb=function(){return!!Wp};Eb.hasArrayLengthDefineBug=function(){if(!Wp)return null;try{return Wp([],"length",{value:1}).length!==1}catch(e){return!0}};Ab.exports=Eb});var Rb=M((kq,Pb)=>{"use strict";m();var X6=$n(),kb=Qu(),K6=ef()(),Tb=Gi(),Cb=ur(),Z6=X6("%Math.floor%");Pb.exports=function(e,r){if(typeof e!="function")throw new Cb("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||Z6(r)!==r)throw new Cb("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in e&&Tb){var s=Tb(e,"length");s&&!s.configurable&&(i=!1),s&&!s.writable&&(a=!1)}return(i||a||!n)&&(K6?kb(e,"length",r,!0,!0):kb(e,"length",r)),e}});var Ob=M((Cq,Mb)=>{"use strict";m();var J6=js(),Q6=Vu(),e$=Lp();Mb.exports=function(){return e$(J6,Q6,arguments)}});var $a=M((Rq,tf)=>{"use strict";m();var t$=Rb(),Ib=_l(),r$=Wu(),$b=Ob();tf.exports=function(e){var r=r$(arguments),n=e.length-(arguments.length-1);return t$(r,1+(n>0?n:0),!0)};Ib?Ib(tf.exports,"apply",{value:$b}):tf.exports.apply=$b});var zi=M((Oq,Fb)=>{"use strict";m();var n$=xl();Fb.exports=function(){return n$()&&!!Symbol.toStringTag}});var Kp=M(($q,Nb)=>{"use strict";m();var af=gb(),i$=bb(),Db=$a(),Yp=xt(),nf=Gi(),rf=qu(),a$=Yp("Object.prototype.toString"),jb=zi()(),Lb=typeof globalThis=="undefined"?global:globalThis,qp=i$(),Xp=Yp("String.prototype.slice"),s$=Yp("Array.prototype.indexOf",!0)||function(e,r){for(var n=0;n-1?r:r!=="Object"?!1:l$(e)}return nf?o$(e):null}});var Hb=M((Dq,Bb)=>{"use strict";m();var c$=Kp();Bb.exports=function(e){return!!c$(e)}});var Gb=M((jq,Ub)=>{"use strict";m();var u$=ur(),f$=xt(),d$=f$("TypedArray.prototype.buffer",!0),h$=Hb();Ub.exports=d$||function(e){if(!h$(e))throw new u$("Not a Typed Array");return e.buffer}});var Wb=M((Bq,Vb)=>{"use strict";m();var Fn=Lu().Buffer,p$=ju(),m$=Gb(),g$=ArrayBuffer.isView||function(e){try{return m$(e),!0}catch(r){return!1}},v$=typeof Uint8Array!="undefined",zb=typeof ArrayBuffer!="undefined"&&typeof Uint8Array!="undefined",y$=zb&&(Fn.prototype instanceof Uint8Array||Fn.TYPED_ARRAY_SUPPORT);Vb.exports=function(e,r){if(e instanceof Fn)return e;if(typeof e=="string")return Fn.from(e,r);if(zb&&g$(e)){if(e.byteLength===0)return Fn.alloc(0);if(y$){var n=Fn.from(e.buffer,e.byteOffset,e.byteLength);if(n.byteLength===e.byteLength)return n}var i=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),a=Fn.from(i);if(a.length===e.byteLength)return a}if(v$&&e instanceof Uint8Array)return Fn.from(e);var s=p$(e);if(s)for(var o=0;o255||~~l!==l)throw new RangeError("Array items must be numbers in the range 0-255.")}if(s||Fn.isBuffer(e)&&e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e))return Fn.from(e);throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.')}});var Yb=M((Uq,qb)=>{"use strict";m();var w$=Lu().Buffer,b$=Wb();function of(t,e){this._block=w$.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}of.prototype.update=function(t,e){t=b$(t,e||"utf8");for(var r=this._block,n=this._blockSize,i=t.length,a=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(r&4294967295)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a};of.prototype._update=function(){throw new Error("_update must be implemented by subclass")};qb.exports=of});var Zb=M((zq,Kb)=>{"use strict";m();var _$=qy(),Xb=Yb(),x$=Lu().Buffer,S$=[1518500249,1859775393,-1894007588,-899497514],E$=new Array(80);function kl(){this.init(),this._w=E$,Xb.call(this,64,56)}_$(kl,Xb);kl.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function A$(t){return t<<1|t>>>31}function k$(t){return t<<5|t>>>27}function T$(t){return t<<30|t>>>2}function C$(t,e,r,n){return t===0?e&r|~e&n:t===2?e&r|e&n|r&n:e^r^n}kl.prototype._update=function(t){for(var e=this._w,r=this._a|0,n=this._b|0,i=this._c|0,a=this._d|0,s=this._e|0,o=0;o<16;++o)e[o]=t.readInt32BE(o*4);for(;o<80;++o)e[o]=A$(e[o-3]^e[o-8]^e[o-14]^e[o-16]);for(var l=0;l<80;++l){var c=~~(l/20),u=k$(r)+C$(c,n,i,a)+s+e[l]+S$[c]|0;s=a,a=i,i=T$(n),n=r,r=u}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=a+this._d|0,this._e=s+this._e|0};kl.prototype._hash=function(){var t=x$.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};Kb.exports=kl});var e2=M((Wq,Qb)=>{"use strict";m();function Dn(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function Jb(t,e){for(var r="",n=0,i=-1,a=0,s,o=0;o<=t.length;++o){if(o2){var l=r.lastIndexOf("/");if(l!==r.length-1){l===-1?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),i=o,a=0;continue}}else if(r.length===2||r.length===1){r="",n=0,i=o,a=0;continue}}e&&(r.length>0?r+="/..":r="..",n=2)}else r.length>0?r+="/"+t.slice(i+1,o):r=t.slice(i+1,o),n=o-i-1;i=o,a=0}else s===46&&a!==-1?++a:a=-1}return r}function P$(t,e){var r=e.dir||e.root,n=e.base||(e.name||"")+(e.ext||"");return r?r===e.root?r+n:r+t+n:n}var Vs={resolve:function(){for(var e="",r=!1,n,i=arguments.length-1;i>=-1&&!r;i--){var a;i>=0?a=arguments[i]:(n===void 0&&(n=process.cwd()),a=n),Dn(a),a.length!==0&&(e=a+"/"+e,r=a.charCodeAt(0)===47)}return e=Jb(e,!r),r?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(e){if(Dn(e),e.length===0)return".";var r=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47;return e=Jb(e,!r),e.length===0&&!r&&(e="."),e.length>0&&n&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return Dn(e),e.length>0&&e.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var e,r=0;r0&&(e===void 0?e=n:e+="/"+n)}return e===void 0?".":Vs.normalize(e)},relative:function(e,r){if(Dn(e),Dn(r),e===r||(e=Vs.resolve(e),r=Vs.resolve(r),e===r))return"";for(var n=1;nc){if(r.charCodeAt(s+f)===47)return r.slice(s+f+1);if(f===0)return r.slice(s+f)}else a>c&&(e.charCodeAt(n+f)===47?u=f:f===0&&(u=0));break}var d=e.charCodeAt(n+f),h=r.charCodeAt(s+f);if(d!==h)break;d===47&&(u=f)}var p="";for(f=n+u+1;f<=i;++f)(f===i||e.charCodeAt(f)===47)&&(p.length===0?p+="..":p+="/..");return p.length>0?p+r.slice(s+u):(s+=u,r.charCodeAt(s)===47&&++s,r.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(Dn(e),e.length===0)return".";for(var r=e.charCodeAt(0),n=r===47,i=-1,a=!0,s=e.length-1;s>=1;--s)if(r=e.charCodeAt(s),r===47){if(!a){i=s;break}}else a=!1;return i===-1?n?"/":".":n&&i===1?"//":e.slice(0,i)},basename:function(e,r){if(r!==void 0&&typeof r!="string")throw new TypeError('"ext" argument must be a string');Dn(e);var n=0,i=-1,a=!0,s;if(r!==void 0&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var o=r.length-1,l=-1;for(s=e.length-1;s>=0;--s){var c=e.charCodeAt(s);if(c===47){if(!a){n=s+1;break}}else l===-1&&(a=!1,l=s+1),o>=0&&(c===r.charCodeAt(o)?--o===-1&&(i=s):(o=-1,i=l))}return n===i?i=l:i===-1&&(i=e.length),e.slice(n,i)}else{for(s=e.length-1;s>=0;--s)if(e.charCodeAt(s)===47){if(!a){n=s+1;break}}else i===-1&&(a=!1,i=s+1);return i===-1?"":e.slice(n,i)}},extname:function(e){Dn(e);for(var r=-1,n=0,i=-1,a=!0,s=0,o=e.length-1;o>=0;--o){var l=e.charCodeAt(o);if(l===47){if(!a){n=o+1;break}continue}i===-1&&(a=!1,i=o+1),l===46?r===-1?r=o:s!==1&&(s=1):r!==-1&&(s=-1)}return r===-1||i===-1||s===0||s===1&&r===i-1&&r===n+1?"":e.slice(r,i)},format:function(e){if(e===null||typeof e!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return P$("/",e)},parse:function(e){Dn(e);var r={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return r;var n=e.charCodeAt(0),i=n===47,a;i?(r.root="/",a=1):a=0;for(var s=-1,o=0,l=-1,c=!0,u=e.length-1,f=0;u>=a;--u){if(n=e.charCodeAt(u),n===47){if(!c){o=u+1;break}continue}l===-1&&(c=!1,l=u+1),n===46?s===-1?s=u:f!==1&&(f=1):s!==-1&&(f=-1)}return s===-1||l===-1||f===0||f===1&&s===l-1&&s===o+1?l!==-1&&(o===0&&i?r.base=r.name=e.slice(1,l):r.base=r.name=e.slice(o,l)):(o===0&&i?(r.name=e.slice(1,s),r.base=e.slice(1,l)):(r.name=e.slice(o,s),r.base=e.slice(o,l)),r.ext=e.slice(s,l)),o>0?r.dir=e.slice(0,o-1):i&&(r.dir="/"),r},sep:"/",delimiter:":",win32:null,posix:null};Vs.posix=Vs;Qb.exports=Vs});var r2=M(Zp=>{m();var t2;(function(t){typeof DO_NOT_EXPORT_CRC=="undefined"?typeof Zp=="object"?t(Zp):typeof define=="function"&&define.amd?define(function(){var e={};return t(e),e}):t(t2={}):t(t2={})})(function(t){t.version="1.2.2";function e(){for(var w=0,x=new Array(256),_=0;_!=256;++_)w=_,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,x[_]=w;return typeof Int32Array!="undefined"?new Int32Array(x):x}var r=e();function n(w){var x=0,_=0,T=0,C=typeof Int32Array!="undefined"?new Int32Array(4096):new Array(4096);for(T=0;T!=256;++T)C[T]=w[T];for(T=0;T!=256;++T)for(_=w[T],x=256+T;x<4096;x+=256)_=C[x]=_>>>8^w[_&255];var I=[];for(T=1;T!=16;++T)I[T-1]=typeof Int32Array!="undefined"?C.subarray(T*256,T*256+256):C.slice(T*256,T*256+256);return I}var i=n(r),a=i[0],s=i[1],o=i[2],l=i[3],c=i[4],u=i[5],f=i[6],d=i[7],h=i[8],p=i[9],g=i[10],v=i[11],y=i[12],b=i[13],E=i[14];function S(w,x){for(var _=x^-1,T=0,C=w.length;T>>8^r[(_^w.charCodeAt(T++))&255];return~_}function A(w,x){for(var _=x^-1,T=w.length-15,C=0;C>8&255]^y[w[C++]^_>>16&255]^v[w[C++]^_>>>24]^g[w[C++]]^p[w[C++]]^h[w[C++]]^d[w[C++]]^f[w[C++]]^u[w[C++]]^c[w[C++]]^l[w[C++]]^o[w[C++]]^s[w[C++]]^a[w[C++]]^r[w[C++]];for(T+=15;C>>8^r[(_^w[C++])&255];return~_}function k(w,x){for(var _=x^-1,T=0,C=w.length,I=0,L=0;T>>8^r[(_^I)&255]:I<2048?(_=_>>>8^r[(_^(192|I>>6&31))&255],_=_>>>8^r[(_^(128|I&63))&255]):I>=55296&&I<57344?(I=(I&1023)+64,L=w.charCodeAt(T++)&1023,_=_>>>8^r[(_^(240|I>>8&7))&255],_=_>>>8^r[(_^(128|I>>2&63))&255],_=_>>>8^r[(_^(128|L>>6&15|(I&3)<<4))&255],_=_>>>8^r[(_^(128|L&63))&255]):(_=_>>>8^r[(_^(224|I>>12&15))&255],_=_>>>8^r[(_^(128|I>>6&63))&255],_=_>>>8^r[(_^(128|I&63))&255]);return~_}t.table=r,t.bstr=S,t.buf=A,t.str=k})});var pi=M(Qt=>{"use strict";m();var R$=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Int32Array!="undefined";function M$(t,e){return Object.prototype.hasOwnProperty.call(t,e)}Qt.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(typeof r!="object")throw new TypeError(r+"must be non-object");for(var n in r)M$(r,n)&&(t[n]=r[n])}}return t};Qt.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var O$={arraySet:function(t,e,r,n,i){if(e.subarray&&t.subarray){t.set(e.subarray(r,r+n),i);return}for(var a=0;a{"use strict";m();var $$=pi(),F$=4,n2=0,i2=1,D$=2;function qs(t){for(var e=t.length;--e>=0;)t[e]=0}var L$=0,u2=1,j$=2,N$=3,B$=258,im=29,Ol=256,Cl=Ol+1+im,Ws=30,am=19,f2=2*Cl+1,Fa=15,Jp=16,H$=7,sm=256,d2=16,h2=17,p2=18,rm=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],lf=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],U$=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],m2=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],G$=512,mi=new Array((Cl+2)*2);qs(mi);var Tl=new Array(Ws*2);qs(Tl);var Pl=new Array(G$);qs(Pl);var Rl=new Array(B$-N$+1);qs(Rl);var om=new Array(im);qs(om);var cf=new Array(Ws);qs(cf);function Qp(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}var g2,v2,y2;function em(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function w2(t){return t<256?Pl[t]:Pl[256+(t>>>7)]}function Ml(t,e){t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255}function fr(t,e,r){t.bi_valid>Jp-r?(t.bi_buf|=e<>Jp-t.bi_valid,t.bi_valid+=r-Jp):(t.bi_buf|=e<>>=1,r<<=1;while(--e>0);return r>>>1}function z$(t){t.bi_valid===16?(Ml(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)}function V$(t,e){var r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,s=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length,c,u,f,d,h,p,g=0;for(d=0;d<=Fa;d++)t.bl_count[d]=0;for(r[t.heap[t.heap_max]*2+1]=0,c=t.heap_max+1;cl&&(d=l,g++),r[u*2+1]=d,!(u>n)&&(t.bl_count[d]++,h=0,u>=o&&(h=s[u-o]),p=r[u*2],t.opt_len+=p*(d+h),a&&(t.static_len+=p*(i[u*2+1]+h)));if(g!==0){do{for(d=l-1;t.bl_count[d]===0;)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(d=l;d!==0;d--)for(u=t.bl_count[d];u!==0;)f=t.heap[--c],!(f>n)&&(r[f*2+1]!==d&&(t.opt_len+=(d-r[f*2+1])*r[f*2],r[f*2+1]=d),u--)}}function _2(t,e,r){var n=new Array(Fa+1),i=0,a,s;for(a=1;a<=Fa;a++)n[a]=i=i+r[a-1]<<1;for(s=0;s<=e;s++){var o=t[s*2+1];o!==0&&(t[s*2]=b2(n[o]++,o))}}function W$(){var t,e,r,n,i,a=new Array(Fa+1);for(r=0,n=0;n>=7;n8?Ml(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function q$(t,e,r,n){S2(t),n&&(Ml(t,r),Ml(t,~r)),$$.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}function a2(t,e,r,n){var i=e*2,a=r*2;return t[i]>1;s>=1;s--)tm(t,r,s);c=a;do s=t.heap[1],t.heap[1]=t.heap[t.heap_len--],tm(t,r,1),o=t.heap[1],t.heap[--t.heap_max]=s,t.heap[--t.heap_max]=o,r[c*2]=r[s*2]+r[o*2],t.depth[c]=(t.depth[s]>=t.depth[o]?t.depth[s]:t.depth[o])+1,r[s*2+1]=r[o*2+1]=c,t.heap[1]=c++,tm(t,r,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],V$(t,e),_2(r,l,t.bl_count)}function o2(t,e,r){var n,i=-1,a,s=e[0*2+1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),e[(r+1)*2+1]=65535,n=0;n<=r;n++)a=s,s=e[(n+1)*2+1],!(++o=3&&t.bl_tree[m2[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e}function X$(t,e,r,n){var i;for(fr(t,e-257,5),fr(t,r-1,5),fr(t,n-4,4),i=0;i>>=1)if(e&1&&t.dyn_ltree[r*2]!==0)return n2;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return i2;for(r=32;r0?(t.strm.data_type===D$&&(t.strm.data_type=K$(t)),nm(t,t.l_desc),nm(t,t.d_desc),s=Y$(t),i=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=i&&(i=a)):i=a=r+5,r+4<=i&&e!==-1?E2(t,e,r,n):t.strategy===F$||a===i?(fr(t,(u2<<1)+(n?1:0),3),s2(t,mi,Tl)):(fr(t,(j$<<1)+(n?1:0),3),X$(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),s2(t,t.dyn_ltree,t.dyn_dtree)),x2(t),n&&S2(t)}function eF(t,e,r){return t.pending_buf[t.d_buf+t.last_lit*2]=e>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=e&255,t.pending_buf[t.l_buf+t.last_lit]=r&255,t.last_lit++,e===0?t.dyn_ltree[r*2]++:(t.matches++,e--,t.dyn_ltree[(Rl[r]+Ol+1)*2]++,t.dyn_dtree[w2(e)*2]++),t.last_lit===t.lit_bufsize-1}Ys._tr_init=Z$;Ys._tr_stored_block=E2;Ys._tr_flush_block=Q$;Ys._tr_tally=eF;Ys._tr_align=J$});var lm=M((eY,k2)=>{"use strict";m();function tF(t,e,r,n){for(var i=t&65535|0,a=t>>>16&65535|0,s=0;r!==0;){s=r>2e3?2e3:r,r-=s;do i=i+e[n++]|0,a=a+i|0;while(--s);i%=65521,a%=65521}return i|a<<16|0}k2.exports=tF});var cm=M((rY,T2)=>{"use strict";m();function rF(){for(var t,e=[],r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[r]=t}return e}var nF=rF();function iF(t,e,r,n){var i=nF,a=n+r;t^=-1;for(var s=n;s>>8^i[(t^e[s])&255];return t^-1}T2.exports=iF});var uf=M((iY,C2)=>{"use strict";m();C2.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var L2=M(Bn=>{"use strict";m();var er=pi(),qr=A2(),O2=lm(),Vi=cm(),aF=uf(),Na=0,sF=1,oF=3,Ki=4,P2=5,Nn=0,R2=1,Yr=-2,lF=-3,um=-5,cF=-1,uF=1,ff=2,fF=3,dF=4,hF=0,pF=2,mf=8,mF=9,gF=15,vF=8,yF=29,wF=256,dm=wF+1+yF,bF=30,_F=19,xF=2*dm+1,SF=15,Ee=3,Yi=258,dn=Yi+Ee+1,EF=32,gf=42,hm=69,df=73,hf=91,pf=103,Da=113,$l=666,wt=1,Fl=2,La=3,Zs=4,AF=3;function Xi(t,e){return t.msg=aF[e],e}function M2(t){return(t<<1)-(t>4?9:0)}function qi(t){for(var e=t.length;--e>=0;)t[e]=0}function Wi(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),r!==0&&(er.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,e.pending===0&&(e.pending_out=0))}function $t(t,e){qr._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Wi(t.strm)}function Re(t,e){t.pending_buf[t.pending++]=e}function Il(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255}function kF(t,e,r,n){var i=t.avail_in;return i>n&&(i=n),i===0?0:(t.avail_in-=i,er.arraySet(e,t.input,t.next_in,i,r),t.state.wrap===1?t.adler=O2(t.adler,e,i,r):t.state.wrap===2&&(t.adler=Vi(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)}function I2(t,e){var r=t.max_chain_length,n=t.strstart,i,a,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-dn?t.strstart-(t.w_size-dn):0,c=t.window,u=t.w_mask,f=t.prev,d=t.strstart+Yi,h=c[n+s-1],p=c[n+s];t.prev_length>=t.good_match&&(r>>=2),o>t.lookahead&&(o=t.lookahead);do if(i=e,!(c[i+s]!==p||c[i+s-1]!==h||c[i]!==c[n]||c[++i]!==c[n+1])){n+=2,i++;do;while(c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&c[++n]===c[++i]&&ns){if(t.match_start=e,s=a,a>=o)break;h=c[n+s-1],p=c[n+s]}}while((e=f[e&u])>l&&--r!==0);return s<=t.lookahead?s:t.lookahead}function ja(t){var e=t.w_size,r,n,i,a,s;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-dn)){er.arraySet(t.window,t.window,e,e,0),t.match_start-=e,t.strstart-=e,t.block_start-=e,n=t.hash_size,r=n;do i=t.head[--r],t.head[r]=i>=e?i-e:0;while(--n);n=e,r=n;do i=t.prev[--r],t.prev[r]=i>=e?i-e:0;while(--n);a+=e}if(t.strm.avail_in===0)break;if(n=kF(t.strm,t.window,t.strstart+t.lookahead,a),t.lookahead+=n,t.lookahead+t.insert>=Ee)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(ja(t),t.lookahead===0&&e===Na)return wt;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+r;if((t.strstart===0||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,$t(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-dn&&($t(t,!1),t.strm.avail_out===0))return wt}return t.insert=0,e===Ki?($t(t,!0),t.strm.avail_out===0?La:Zs):(t.strstart>t.block_start&&($t(t,!1),t.strm.avail_out===0),wt)}function fm(t,e){for(var r,n;;){if(t.lookahead=Ee&&(t.ins_h=(t.ins_h<=Ee)if(n=qr._tr_tally(t,t.strstart-t.match_start,t.match_length-Ee),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=Ee){t.match_length--;do t.strstart++,t.ins_h=(t.ins_h<=Ee&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=Ee-1)),t.prev_length>=Ee&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-Ee,n=qr._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-Ee),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=(t.ins_h<=Ee&&t.strstart>0&&(i=t.strstart-1,n=s[i],n===s[++i]&&n===s[++i]&&n===s[++i])){a=t.strstart+Yi;do;while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=Ee?(r=qr._tr_tally(t,1,t.match_length-Ee),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=qr._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&($t(t,!1),t.strm.avail_out===0))return wt}return t.insert=0,e===Ki?($t(t,!0),t.strm.avail_out===0?La:Zs):t.last_lit&&($t(t,!1),t.strm.avail_out===0)?wt:Fl}function PF(t,e){for(var r;;){if(t.lookahead===0&&(ja(t),t.lookahead===0)){if(e===Na)return wt;break}if(t.match_length=0,r=qr._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&($t(t,!1),t.strm.avail_out===0))return wt}return t.insert=0,e===Ki?($t(t,!0),t.strm.avail_out===0?La:Zs):t.last_lit&&($t(t,!1),t.strm.avail_out===0)?wt:Fl}function jn(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}var Ks;Ks=[new jn(0,0,0,0,TF),new jn(4,4,8,4,fm),new jn(4,5,16,8,fm),new jn(4,6,32,32,fm),new jn(4,4,16,16,Xs),new jn(8,16,32,32,Xs),new jn(8,16,128,128,Xs),new jn(8,32,128,256,Xs),new jn(32,128,258,1024,Xs),new jn(32,258,258,4096,Xs)];function RF(t){t.window_size=2*t.w_size,qi(t.head),t.max_lazy_match=Ks[t.level].max_lazy,t.good_match=Ks[t.level].good_length,t.nice_match=Ks[t.level].nice_length,t.max_chain_length=Ks[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=Ee-1,t.match_available=0,t.ins_h=0}function MF(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=mf,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new er.Buf16(xF*2),this.dyn_dtree=new er.Buf16((2*bF+1)*2),this.bl_tree=new er.Buf16((2*_F+1)*2),qi(this.dyn_ltree),qi(this.dyn_dtree),qi(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new er.Buf16(SF+1),this.heap=new er.Buf16(2*dm+1),qi(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new er.Buf16(2*dm+1),qi(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function $2(t){var e;return!t||!t.state?Xi(t,Yr):(t.total_in=t.total_out=0,t.data_type=pF,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?gf:Da,t.adler=e.wrap===2?0:1,e.last_flush=Na,qr._tr_init(e),Nn)}function F2(t){var e=$2(t);return e===Nn&&RF(t.state),e}function OF(t,e){return!t||!t.state||t.state.wrap!==2?Yr:(t.state.gzhead=e,Nn)}function D2(t,e,r,n,i,a){if(!t)return Yr;var s=1;if(e===cF&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),i<1||i>mF||r!==mf||n<8||n>15||e<0||e>9||a<0||a>dF)return Xi(t,Yr);n===8&&(n=9);var o=new MF;return t.state=o,o.strm=t,o.wrap=s,o.gzhead=null,o.w_bits=n,o.w_size=1<P2||e<0)return t?Xi(t,Yr):Yr;if(n=t.state,!t.output||!t.input&&t.avail_in!==0||n.status===$l&&e!==Ki)return Xi(t,t.avail_out===0?um:Yr);if(n.strm=t,r=n.last_flush,n.last_flush=e,n.status===gf)if(n.wrap===2)t.adler=0,Re(n,31),Re(n,139),Re(n,8),n.gzhead?(Re(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Re(n,n.gzhead.time&255),Re(n,n.gzhead.time>>8&255),Re(n,n.gzhead.time>>16&255),Re(n,n.gzhead.time>>24&255),Re(n,n.level===9?2:n.strategy>=ff||n.level<2?4:0),Re(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Re(n,n.gzhead.extra.length&255),Re(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=Vi(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=hm):(Re(n,0),Re(n,0),Re(n,0),Re(n,0),Re(n,0),Re(n,n.level===9?2:n.strategy>=ff||n.level<2?4:0),Re(n,AF),n.status=Da);else{var s=mf+(n.w_bits-8<<4)<<8,o=-1;n.strategy>=ff||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,s|=o<<6,n.strstart!==0&&(s|=EF),s+=31-s%31,n.status=Da,Il(n,s),n.strstart!==0&&(Il(n,t.adler>>>16),Il(n,t.adler&65535)),t.adler=1}if(n.status===hm)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),Wi(t),i=n.pending,n.pending===n.pending_buf_size));)Re(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=df)}else n.status=df;if(n.status===df)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),Wi(t),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindexi&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.gzindex=0,n.status=hf)}else n.status=hf;if(n.status===hf)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),Wi(t),i=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindexi&&(t.adler=Vi(t.adler,n.pending_buf,n.pending-i,i)),a===0&&(n.status=pf)}else n.status=pf;if(n.status===pf&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&Wi(t),n.pending+2<=n.pending_buf_size&&(Re(n,t.adler&255),Re(n,t.adler>>8&255),t.adler=0,n.status=Da)):n.status=Da),n.pending!==0){if(Wi(t),t.avail_out===0)return n.last_flush=-1,Nn}else if(t.avail_in===0&&M2(e)<=M2(r)&&e!==Ki)return Xi(t,um);if(n.status===$l&&t.avail_in!==0)return Xi(t,um);if(t.avail_in!==0||n.lookahead!==0||e!==Na&&n.status!==$l){var l=n.strategy===ff?PF(n,e):n.strategy===fF?CF(n,e):Ks[n.level].func(n,e);if((l===La||l===Zs)&&(n.status=$l),l===wt||l===La)return t.avail_out===0&&(n.last_flush=-1),Nn;if(l===Fl&&(e===sF?qr._tr_align(n):e!==P2&&(qr._tr_stored_block(n,0,0,!1),e===oF&&(qi(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Wi(t),t.avail_out===0))return n.last_flush=-1,Nn}return e!==Ki?Nn:n.wrap<=0?R2:(n.wrap===2?(Re(n,t.adler&255),Re(n,t.adler>>8&255),Re(n,t.adler>>16&255),Re(n,t.adler>>24&255),Re(n,t.total_in&255),Re(n,t.total_in>>8&255),Re(n,t.total_in>>16&255),Re(n,t.total_in>>24&255)):(Il(n,t.adler>>>16),Il(n,t.adler&65535)),Wi(t),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Nn:R2)}function FF(t){var e;return!t||!t.state?Yr:(e=t.state.status,e!==gf&&e!==hm&&e!==df&&e!==hf&&e!==pf&&e!==Da&&e!==$l?Xi(t,Yr):(t.state=null,e===Da?Xi(t,lF):Nn))}function DF(t,e){var r=e.length,n,i,a,s,o,l,c,u;if(!t||!t.state||(n=t.state,s=n.wrap,s===2||s===1&&n.status!==gf||n.lookahead))return Yr;for(s===1&&(t.adler=O2(t.adler,e,r,0)),n.wrap=0,r>=n.w_size&&(s===0&&(qi(n.head),n.strstart=0,n.block_start=0,n.insert=0),u=new er.Buf8(n.w_size),er.arraySet(u,e,r-n.w_size,n.w_size,0),e=u,r=n.w_size),o=t.avail_in,l=t.next_in,c=t.input,t.avail_in=r,t.next_in=0,t.input=e,ja(n);n.lookahead>=Ee;){i=n.strstart,a=n.lookahead-(Ee-1);do n.ins_h=(n.ins_h<{"use strict";m();var vf=pi(),j2=!0,N2=!0;try{String.fromCharCode.apply(null,[0])}catch(t){j2=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){N2=!1}var Dl=new vf.Buf8(256);for(gi=0;gi<256;gi++)Dl[gi]=gi>=252?6:gi>=248?5:gi>=240?4:gi>=224?3:gi>=192?2:1;var gi;Dl[254]=Dl[254]=1;Js.string2buf=function(t){var e,r,n,i,a,s=t.length,o=0;for(i=0;i>>6,e[a++]=128|r&63):r<65536?(e[a++]=224|r>>>12,e[a++]=128|r>>>6&63,e[a++]=128|r&63):(e[a++]=240|r>>>18,e[a++]=128|r>>>12&63,e[a++]=128|r>>>6&63,e[a++]=128|r&63);return e};function B2(t,e){if(e<65534&&(t.subarray&&N2||!t.subarray&&j2))return String.fromCharCode.apply(null,vf.shrinkBuf(t,e));for(var r="",n=0;n4){o[n++]=65533,r+=a-1;continue}for(i&=a===2?31:a===3?15:7;a>1&&r1){o[n++]=65533;continue}i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|i&1023)}return B2(o,n)};Js.utf8border=function(t,e){var r;for(e=e||t.length,e>t.length&&(e=t.length),r=e-1;r>=0&&(t[r]&192)===128;)r--;return r<0||r===0?e:r+Dl[t[r]]>e?r:e}});var mm=M((uY,H2)=>{"use strict";m();function LF(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}H2.exports=LF});var V2=M(Nl=>{"use strict";m();var Ll=L2(),jl=pi(),vm=pm(),ym=uf(),jF=mm(),z2=Object.prototype.toString,NF=0,gm=4,Qs=0,U2=1,G2=2,BF=-1,HF=0,UF=8;function Ba(t){if(!(this instanceof Ba))return new Ba(t);this.options=jl.assign({level:BF,method:UF,chunkSize:16384,windowBits:15,memLevel:8,strategy:HF,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new jF,this.strm.avail_out=0;var r=Ll.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==Qs)throw new Error(ym[r]);if(e.header&&Ll.deflateSetHeader(this.strm,e.header),e.dictionary){var n;if(typeof e.dictionary=="string"?n=vm.string2buf(e.dictionary):z2.call(e.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(e.dictionary):n=e.dictionary,r=Ll.deflateSetDictionary(this.strm,n),r!==Qs)throw new Error(ym[r]);this._dict_set=!0}}Ba.prototype.push=function(t,e){var r=this.strm,n=this.options.chunkSize,i,a;if(this.ended)return!1;a=e===~~e?e:e===!0?gm:NF,typeof t=="string"?r.input=vm.string2buf(t):z2.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=new jl.Buf8(n),r.next_out=0,r.avail_out=n),i=Ll.deflate(r,a),i!==U2&&i!==Qs)return this.onEnd(i),this.ended=!0,!1;(r.avail_out===0||r.avail_in===0&&(a===gm||a===G2))&&(this.options.to==="string"?this.onData(vm.buf2binstring(jl.shrinkBuf(r.output,r.next_out))):this.onData(jl.shrinkBuf(r.output,r.next_out)))}while((r.avail_in>0||r.avail_out===0)&&i!==U2);return a===gm?(i=Ll.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Qs):(a===G2&&(this.onEnd(Qs),r.avail_out=0),!0)};Ba.prototype.onData=function(t){this.chunks.push(t)};Ba.prototype.onEnd=function(t){t===Qs&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=jl.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function wm(t,e){var r=new Ba(e);if(r.push(t,!0),r.err)throw r.msg||ym[r.err];return r.result}function GF(t,e){return e=e||{},e.raw=!0,wm(t,e)}function zF(t,e){return e=e||{},e.gzip=!0,wm(t,e)}Nl.Deflate=Ba;Nl.deflate=wm;Nl.deflateRaw=GF;Nl.gzip=zF});var q2=M((pY,W2)=>{"use strict";m();var yf=30,VF=12;W2.exports=function(e,r){var n,i,a,s,o,l,c,u,f,d,h,p,g,v,y,b,E,S,A,k,w,x,_,T,C;n=e.state,i=e.next_in,T=e.input,a=i+(e.avail_in-5),s=e.next_out,C=e.output,o=s-(r-e.avail_out),l=s+(e.avail_out-257),c=n.dmax,u=n.wsize,f=n.whave,d=n.wnext,h=n.window,p=n.hold,g=n.bits,v=n.lencode,y=n.distcode,b=(1<>>24,p>>>=A,g-=A,A=S>>>16&255,A===0)C[s++]=S&65535;else if(A&16){k=S&65535,A&=15,A&&(g>>=A,g-=A),g<15&&(p+=T[i++]<>>24,p>>>=A,g-=A,A=S>>>16&255,A&16){if(w=S&65535,A&=15,gc){e.msg="invalid distance too far back",n.mode=yf;break e}if(p>>>=A,g-=A,A=s-o,w>A){if(A=w-A,A>f&&n.sane){e.msg="invalid distance too far back",n.mode=yf;break e}if(x=0,_=h,d===0){if(x+=u-A,A2;)C[s++]=_[x++],C[s++]=_[x++],C[s++]=_[x++],k-=3;k&&(C[s++]=_[x++],k>1&&(C[s++]=_[x++]))}else{x=s-w;do C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],k-=3;while(k>2);k&&(C[s++]=C[x++],k>1&&(C[s++]=C[x++]))}}else if(A&64){e.msg="invalid distance code",n.mode=yf;break e}else{S=y[(S&65535)+(p&(1<>3,i-=k,g-=k<<3,p&=(1<{"use strict";m();var Y2=pi(),eo=15,X2=852,K2=592,Z2=0,bm=1,J2=2,WF=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],qF=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],YF=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],XF=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];Q2.exports=function(e,r,n,i,a,s,o,l){var c=l.bits,u=0,f=0,d=0,h=0,p=0,g=0,v=0,y=0,b=0,E=0,S,A,k,w,x,_=null,T=0,C,I=new Y2.Buf16(eo+1),L=new Y2.Buf16(eo+1),F=null,J=0,de,le,ce;for(u=0;u<=eo;u++)I[u]=0;for(f=0;f=1&&I[h]===0;h--);if(p>h&&(p=h),h===0)return a[s++]=1<<24|64<<16|0,a[s++]=1<<24|64<<16|0,l.bits=1,0;for(d=1;d0&&(e===Z2||h!==1))return-1;for(L[1]=0,u=1;uX2||e===J2&&b>K2)return 1;for(;;){de=u-v,o[f]C?(le=F[J+o[f]],ce=_[T+o[f]]):(le=96,ce=0),S=1<>v)+A]=de<<24|le<<16|ce|0;while(A!==0);for(S=1<>=1;if(S!==0?(E&=S-1,E+=S):E=0,f++,--I[u]===0){if(u===h)break;u=r[n+o[f]]}if(u>p&&(E&w)!==k){for(v===0&&(v=p),x+=d,g=u-v,y=1<X2||e===J2&&b>K2)return 1;k=E&w,a[k]=p<<24|g<<16|x-s|0}}return E!==0&&(a[x+E]=u-v<<24|64<<16|0),l.bits=p,0}});var F_=M(hn=>{"use strict";m();var Cr=pi(),km=lm(),Hn=cm(),KF=q2(),Bl=e_(),ZF=0,k_=1,T_=2,t_=4,JF=5,wf=6,Ha=0,QF=1,e8=2,Xr=-2,C_=-3,Tm=-4,t8=-5,r_=8,P_=1,n_=2,i_=3,a_=4,s_=5,o_=6,l_=7,c_=8,u_=9,f_=10,xf=11,vi=12,_m=13,d_=14,xm=15,h_=16,p_=17,m_=18,g_=19,bf=20,_f=21,v_=22,y_=23,w_=24,b_=25,__=26,Sm=27,x_=28,S_=29,Ye=30,Cm=31,r8=32,n8=852,i8=592,a8=15,s8=a8;function E_(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function o8(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Cr.Buf16(320),this.work=new Cr.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function R_(t){var e;return!t||!t.state?Xr:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=P_,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Cr.Buf32(n8),e.distcode=e.distdyn=new Cr.Buf32(i8),e.sane=1,e.back=-1,Ha)}function M_(t){var e;return!t||!t.state?Xr:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,R_(t))}function O_(t,e){var r,n;return!t||!t.state||(n=t.state,e<0?(r=0,e=-e):(r=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?Xr:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,M_(t))}function I_(t,e){var r,n;return t?(n=new o8,t.state=n,n.window=null,r=O_(t,e),r!==Ha&&(t.state=null),r):Xr}function l8(t){return I_(t,s8)}var A_=!0,Em,Am;function c8(t){if(A_){var e;for(Em=new Cr.Buf32(512),Am=new Cr.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Bl(k_,t.lens,0,288,Em,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Bl(T_,t.lens,0,32,Am,0,t.work,{bits:5}),A_=!1}t.lencode=Em,t.lenbits=9,t.distcode=Am,t.distbits=5}function $_(t,e,r,n){var i,a=t.state;return a.window===null&&(a.wsize=1<=a.wsize?(Cr.arraySet(a.window,e,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>n&&(i=n),Cr.arraySet(a.window,e,r-n,i,a.wnext),n-=i,n?(Cr.arraySet(a.window,e,r-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=Hn(r.check,_,2,0),c=0,u=0,r.mode=n_;break}if(r.flags=0,r.head&&(r.head.done=!1),!(r.wrap&1)||(((c&255)<<8)+(c>>8))%31){t.msg="incorrect header check",r.mode=Ye;break}if((c&15)!==r_){t.msg="unknown compression method",r.mode=Ye;break}if(c>>>=4,u-=4,w=(c&15)+8,r.wbits===0)r.wbits=w;else if(w>r.wbits){t.msg="invalid window size",r.mode=Ye;break}r.dmax=1<>8&1),r.flags&512&&(_[0]=c&255,_[1]=c>>>8&255,r.check=Hn(r.check,_,2,0)),c=0,u=0,r.mode=i_;case i_:for(;u<32;){if(o===0)break e;o--,c+=n[a++]<>>8&255,_[2]=c>>>16&255,_[3]=c>>>24&255,r.check=Hn(r.check,_,4,0)),c=0,u=0,r.mode=a_;case a_:for(;u<16;){if(o===0)break e;o--,c+=n[a++]<>8),r.flags&512&&(_[0]=c&255,_[1]=c>>>8&255,r.check=Hn(r.check,_,2,0)),c=0,u=0,r.mode=s_;case s_:if(r.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=n[a++]<>>8&255,r.check=Hn(r.check,_,2,0)),c=0,u=0}else r.head&&(r.head.extra=null);r.mode=o_;case o_:if(r.flags&1024&&(h=r.length,h>o&&(h=o),h&&(r.head&&(w=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),Cr.arraySet(r.head.extra,n,a,h,w)),r.flags&512&&(r.check=Hn(r.check,n,h,a)),o-=h,a+=h,r.length-=h),r.length))break e;r.length=0,r.mode=l_;case l_:if(r.flags&2048){if(o===0)break e;h=0;do w=n[a+h++],r.head&&w&&r.length<65536&&(r.head.name+=String.fromCharCode(w));while(w&&h>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=vi;break;case f_:for(;u<32;){if(o===0)break e;o--,c+=n[a++]<>>=u&7,u-=u&7,r.mode=Sm;break}for(;u<3;){if(o===0)break e;o--,c+=n[a++]<>>=1,u-=1,c&3){case 0:r.mode=d_;break;case 1:if(c8(r),r.mode=bf,e===wf){c>>>=2,u-=2;break e}break;case 2:r.mode=p_;break;case 3:t.msg="invalid block type",r.mode=Ye}c>>>=2,u-=2;break;case d_:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=n[a++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=Ye;break}if(r.length=c&65535,c=0,u=0,r.mode=xm,e===wf)break e;case xm:r.mode=h_;case h_:if(h=r.length,h){if(h>o&&(h=o),h>l&&(h=l),h===0)break e;Cr.arraySet(i,n,a,h,s),o-=h,a+=h,l-=h,s+=h,r.length-=h;break}r.mode=vi;break;case p_:for(;u<14;){if(o===0)break e;o--,c+=n[a++]<>>=5,u-=5,r.ndist=(c&31)+1,c>>>=5,u-=5,r.ncode=(c&15)+4,c>>>=4,u-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=Ye;break}r.have=0,r.mode=m_;case m_:for(;r.have>>=3,u-=3}for(;r.have<19;)r.lens[I[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},x=Bl(ZF,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,x){t.msg="invalid code lengths set",r.mode=Ye;break}r.have=0,r.mode=g_;case g_:for(;r.have>>24,b=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=n[a++]<>>=y,u-=y,r.lens[r.have++]=E;else{if(E===16){for(C=y+2;u>>=y,u-=y,r.have===0){t.msg="invalid bit length repeat",r.mode=Ye;break}w=r.lens[r.have-1],h=3+(c&3),c>>>=2,u-=2}else if(E===17){for(C=y+3;u>>=y,u-=y,w=0,h=3+(c&7),c>>>=3,u-=3}else{for(C=y+7;u>>=y,u-=y,w=0,h=11+(c&127),c>>>=7,u-=7}if(r.have+h>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=Ye;break}for(;h--;)r.lens[r.have++]=w}}if(r.mode===Ye)break;if(r.lens[256]===0){t.msg="invalid code -- missing end-of-block",r.mode=Ye;break}if(r.lenbits=9,T={bits:r.lenbits},x=Bl(k_,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,x){t.msg="invalid literal/lengths set",r.mode=Ye;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},x=Bl(T_,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,x){t.msg="invalid distances set",r.mode=Ye;break}if(r.mode=bf,e===wf)break e;case bf:r.mode=_f;case _f:if(o>=6&&l>=258){t.next_out=s,t.avail_out=l,t.next_in=a,t.avail_in=o,r.hold=c,r.bits=u,KF(t,d),s=t.next_out,i=t.output,l=t.avail_out,a=t.next_in,n=t.input,o=t.avail_in,c=r.hold,u=r.bits,r.mode===vi&&(r.back=-1);break}for(r.back=0;v=r.lencode[c&(1<>>24,b=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=n[a++]<>S)],y=v>>>24,b=v>>>16&255,E=v&65535,!(S+y<=u);){if(o===0)break e;o--,c+=n[a++]<>>=S,u-=S,r.back+=S}if(c>>>=y,u-=y,r.back+=y,r.length=E,b===0){r.mode=__;break}if(b&32){r.back=-1,r.mode=vi;break}if(b&64){t.msg="invalid literal/length code",r.mode=Ye;break}r.extra=b&15,r.mode=v_;case v_:if(r.extra){for(C=r.extra;u>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=y_;case y_:for(;v=r.distcode[c&(1<>>24,b=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=n[a++]<>S)],y=v>>>24,b=v>>>16&255,E=v&65535,!(S+y<=u);){if(o===0)break e;o--,c+=n[a++]<>>=S,u-=S,r.back+=S}if(c>>>=y,u-=y,r.back+=y,b&64){t.msg="invalid distance code",r.mode=Ye;break}r.offset=E,r.extra=b&15,r.mode=w_;case w_:if(r.extra){for(C=r.extra;u>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=Ye;break}r.mode=b_;case b_:if(l===0)break e;if(h=d-l,r.offset>h){if(h=r.offset-h,h>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=Ye;break}h>r.wnext?(h-=r.wnext,p=r.wsize-h):p=r.wnext-h,h>r.length&&(h=r.length),g=r.window}else g=i,p=s-r.offset,h=r.length;h>l&&(h=l),l-=h,r.length-=h;do i[s++]=g[p++];while(--h);r.length===0&&(r.mode=_f);break;case __:if(l===0)break e;i[s++]=r.length,l--,r.mode=_f;break;case Sm:if(r.wrap){for(;u<32;){if(o===0)break e;o--,c|=n[a++]<{"use strict";m();D_.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var j_=M((xY,L_)=>{"use strict";m();function p8(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}L_.exports=p8});var B_=M(Ul=>{"use strict";m();var to=F_(),Hl=pi(),Sf=pm(),lt=Pm(),Rm=uf(),m8=mm(),g8=j_(),N_=Object.prototype.toString;function Ua(t){if(!(this instanceof Ua))return new Ua(t);this.options=Hl.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new m8,this.strm.avail_out=0;var r=to.inflateInit2(this.strm,e.windowBits);if(r!==lt.Z_OK)throw new Error(Rm[r]);if(this.header=new g8,to.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Sf.string2buf(e.dictionary):N_.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=to.inflateSetDictionary(this.strm,e.dictionary),r!==lt.Z_OK)))throw new Error(Rm[r])}Ua.prototype.push=function(t,e){var r=this.strm,n=this.options.chunkSize,i=this.options.dictionary,a,s,o,l,c,u=!1;if(this.ended)return!1;s=e===~~e?e:e===!0?lt.Z_FINISH:lt.Z_NO_FLUSH,typeof t=="string"?r.input=Sf.binstring2buf(t):N_.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=new Hl.Buf8(n),r.next_out=0,r.avail_out=n),a=to.inflate(r,lt.Z_NO_FLUSH),a===lt.Z_NEED_DICT&&i&&(a=to.inflateSetDictionary(this.strm,i)),a===lt.Z_BUF_ERROR&&u===!0&&(a=lt.Z_OK,u=!1),a!==lt.Z_STREAM_END&&a!==lt.Z_OK)return this.onEnd(a),this.ended=!0,!1;r.next_out&&(r.avail_out===0||a===lt.Z_STREAM_END||r.avail_in===0&&(s===lt.Z_FINISH||s===lt.Z_SYNC_FLUSH))&&(this.options.to==="string"?(o=Sf.utf8border(r.output,r.next_out),l=r.next_out-o,c=Sf.buf2string(r.output,o),r.next_out=l,r.avail_out=n-l,l&&Hl.arraySet(r.output,r.output,o,l,0),this.onData(c)):this.onData(Hl.shrinkBuf(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(u=!0)}while((r.avail_in>0||r.avail_out===0)&&a!==lt.Z_STREAM_END);return a===lt.Z_STREAM_END&&(s=lt.Z_FINISH),s===lt.Z_FINISH?(a=to.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===lt.Z_OK):(s===lt.Z_SYNC_FLUSH&&(this.onEnd(lt.Z_OK),r.avail_out=0),!0)};Ua.prototype.onData=function(t){this.chunks.push(t)};Ua.prototype.onEnd=function(t){t===lt.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Hl.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Mm(t,e){var r=new Ua(e);if(r.push(t,!0),r.err)throw r.msg||Rm[r.err];return r.result}function v8(t,e){return e=e||{},e.raw=!0,Mm(t,e)}Ul.Inflate=Ua;Ul.inflate=Mm;Ul.inflateRaw=v8;Ul.ungzip=Mm});var G_=M((kY,U_)=>{"use strict";m();var y8=pi().assign,w8=V2(),b8=B_(),_8=Pm(),H_={};y8(H_,w8,b8,_8);U_.exports=H_});var W_=M((CY,V_)=>{"use strict";m();var z_=(t,e)=>function(...r){let n=e.promiseModule;return new n((i,a)=>{e.multiArgs?r.push((...s)=>{e.errorFirst?s[0]?a(s):(s.shift(),i(s)):i(s)}):e.errorFirst?r.push((s,o)=>{s?a(s):i(o)}):r.push(i),t.apply(this,r)})};V_.exports=(t,e)=>{e=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},e);let r=typeof t;if(!(t!==null&&(r==="object"||r==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${t===null?"null":r}\``);let n=a=>{let s=o=>typeof o=="string"?a===o:o.test(a);return e.include?e.include.some(s):!e.exclude.some(s)},i;r==="function"?i=function(...a){return e.excludeMain?t(...a):z_(t,e).apply(this,a)}:i=Object.create(Object.getPrototypeOf(t));for(let a in t){let s=t[a];i[a]=typeof s=="function"&&n(a)?z_(s,e):s}return i}});var tx=M((RY,ex)=>{m();function q_(t){return Array.isArray(t)?t:[t]}var $m="",Y_=" ",Om="\\",x8=/^\s+$/,S8=/(?:[^\\]|^)\\$/,E8=/^\\!/,A8=/^\\#/,k8=/\r?\n/g,T8=/^\.*\/|^\.+$/,Im="/",Z_="node-ignore";typeof Symbol!="undefined"&&(Z_=Symbol.for("node-ignore"));var X_=Z_,C8=(t,e,r)=>Object.defineProperty(t,e,{value:r}),P8=/([0-z])-([0-z])/g,J_=()=>!1,R8=t=>t.replace(P8,(e,r,n)=>r.charCodeAt(0)<=n.charCodeAt(0)?e:$m),M8=t=>{let{length:e}=t;return t.slice(0,e-e%2)},O8=[[/^\uFEFF/,()=>$m],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,r)=>e+(r.indexOf("\\")===0?Y_:$m)],[/(\\+?)\s/g,(t,e)=>{let{length:r}=e;return e.slice(0,r-r%2)+Y_}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6{let n=r.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>Om],[/\\\\/g,()=>Om],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,n,i)=>e===Om?`\\[${r}${M8(n)}${i}`:i==="]"&&n.length%2===0?`[${R8(r)}${n}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],K_=Object.create(null),I8=(t,e)=>{let r=K_[t];return r||(r=O8.reduce((n,[i,a])=>n.replace(i,a.bind(t)),t),K_[t]=r),e?new RegExp(r,"i"):new RegExp(r)},Lm=t=>typeof t=="string",$8=t=>t&&Lm(t)&&!x8.test(t)&&!S8.test(t)&&t.indexOf("#")!==0,F8=t=>t.split(k8),Fm=class{constructor(e,r,n,i){this.origin=e,this.pattern=r,this.negative=n,this.regex=i}},D8=(t,e)=>{let r=t,n=!1;t.indexOf("!")===0&&(n=!0,t=t.substr(1)),t=t.replace(E8,"!").replace(A8,"#");let i=I8(t,e);return new Fm(r,t,n,i)},L8=(t,e)=>{throw new e(t)},yi=(t,e,r)=>Lm(t)?t?yi.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Q_=t=>T8.test(t);yi.isNotRelative=Q_;yi.convert=t=>t;var Dm=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:n=!1}={}){C8(this,X_,!0),this._rules=[],this._ignoreCase=r,this._allowRelativePaths=n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[X_]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if($8(e)){let r=D8(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,q_(Lm(e)?F8(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let n=!1,i=!1;return this._rules.forEach(a=>{let{negative:s}=a;if(i===s&&n!==i||s&&!n&&!i&&!r)return;a.regex.test(e)&&(n=!s,i=s)}),{ignored:n,unignored:i}}_test(e,r,n,i){let a=e&&yi.convert(e);return yi(a,e,this._allowRelativePaths?J_:L8),this._t(a,r,n,i)}_t(e,r,n,i){if(e in r)return r[e];if(i||(i=e.split(Im)),i.pop(),!i.length)return r[e]=this._testOne(e,n);let a=this._t(i.join(Im)+Im,r,n,i);return r[e]=a.ignored?a:this._testOne(e,n)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return q_(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Ef=t=>new Dm(t),j8=t=>yi(t&&yi.convert(t),t,J_);Ef.isPathValid=j8;Ef.default=Ef;ex.exports=Ef;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");yi.convert=t;let e=/^[a-z]:\//i;yi.isNotRelative=r=>e.test(r)||Q_(r)}});var nx=M((OY,rx)=>{"use strict";m();function N8(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Un(t,e,r){return e=e instanceof RegExp?e:new RegExp(N8(e),"g"),t.replace(e,r)}var B8={clean:function(e){if(typeof e!="string")throw new Error("Expected a string, received: "+e);return e=Un(e,"./","/"),e=Un(e,"..","."),e=Un(e," ","-"),e=Un(e,/^[~^:?*\\\-]/g,""),e=Un(e,/[~^:?*\\]/g,"-"),e=Un(e,/[~^:?*\\\-]$/g,""),e=Un(e,"@{","-"),e=Un(e,/\.$/g,""),e=Un(e,/\/$/g,""),e=Un(e,/\.lock$/g,""),e}};rx.exports=B8});var ax=M(($Y,ix)=>{m();ix.exports=function(t,e){var r=t,n=e,i=r.length,a=n.length,s=!1,o=null,l=i+1,c=[],u=[],f=[],d="",h=-1,p=0,g=1,v,y,b=function(){i>=a&&(v=r,y=i,r=n,n=v,i=a,a=y,s=!0,l=i+1)},E=function(w,x,_){return{x:w,y:x,k:_}},S=function(w,x){return{elem:w,t:x}},A=function(w,x,_){var T,C,I;for(x>_?T=c[w-1+l]:T=c[w+1+l],I=Math.max(x,_),C=I-w;C=0;--I)for(;TC-T?(s?f[f.length]=new S(n[C],h):f[f.length]=new S(n[C],g),++_,++C):w[I].y-w[I].x=w+1;--F)_[F+l]=A(F,_[F-1+l]+1,_[F+1+l]);_[w+l]=A(w,_[w-1+l]+1,_[w+1+l])}while(_[w+l]!==a);for(o=w+2*T,C=c[w+l],I=[];C!==-1;)I[I.length]=new E(u[C].x,u[C].y,null),C=u[C].k;k(I)}}}});var lx=M((DY,ox)=>{m();var H8=ax();function U8(t,e){var r=new H8(t,e);r.compose();for(var n=r.getses(),i,a,s=t.length-1,o=e.length-1,l=n.length-1;l>=0;--l)n[l].t===r.SES_COMMON?(a?(a.chain={file1index:s,file2index:o,chain:null},a=a.chain):(i={file1index:s,file2index:o,chain:null},a=i),s--,o--):n[l].t===r.SES_DELETE?s--:n[l].t===r.SES_ADD&&o--;var c={file1index:-1,file2index:-1,chain:null};return a?(a.chain=c,i):c}function sx(t,e){for(var r=[],n=t.length,i=e.length,a=U8(t,e);a!==null;a=a.chain){var s=n-a.file1index-1,o=i-a.file2index-1;n=a.file1index,i=a.file2index,(s||o)&&r.push({file1:[n+1,s],file2:[i+1,o]})}return r.reverse(),r}function G8(t,e,r){var n,i=sx(e,t),a=sx(e,r),s=[];function o(L,F){s.push([L.file1[0],F,L.file1[1],L.file2[0],L.file2[1]])}for(n=0;nc&&(l.push([1,c,L-c]),c=L)}for(var f=0;fg)break;g=Math.max(g,y+v[2]),f++}if(u(p),d==f)h[4]>0&&l.push([h[1],h[3],h[4]]);else{var b={0:[t.length,-1,e.length,-1],2:[r.length,-1,e.length,-1]};for(n=d;n<=f;n++){h=s[n];var E=h[1],S=b[E],A=h[0],k=A+h[2],w=h[3],x=w+h[4];S[0]=Math.min(w,S[0]),S[1]=Math.max(x,S[1]),S[2]=Math.min(A,S[2]),S[3]=Math.max(k,S[3])}var _=b[0][0]+(p-b[0][2]),T=b[0][1]+(g-b[0][3]),C=b[2][0]+(p-b[2][2]),I=b[2][1]+(g-b[2][3]);l.push([-1,_,T-_,p,g-p,C,I-C])}c=g}return u(e.length),l}function z8(t,e,r){var n=[],i=[t,e,r],a=G8(t,e,r),s=[];function o(){s.length&&n.push({ok:s}),s=[]}function l(h){for(var p=0;p{"use strict";m();Object.defineProperty(Y,"__esModule",{value:!0});function aa(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var zl=aa(Wy()),Mx=aa(Zb()),$=e2(),V8=aa(r2()),cg=aa(G_()),jm=aa(W_()),W8=aa(tx()),zn=aa(nx()),q8=aa(lx()),Ae=class t extends Error{constructor(e){super(e),this.caller=""}toJSON(){return{code:this.code,data:this.data,caller:this.caller,message:this.message,stack:this.stack}}fromJSON(e){let r=new t(e.message);return r.code=e.code,r.data=e.data,r.caller=e.caller,r.stack=e.stack,r}get isIsomorphicGitError(){return!0}},Vl=class t extends Ae{constructor(e){super(`Modifying the index is not possible because you have unmerged files: ${e.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.`),this.code=this.name=t.code,this.data={filepaths:e}}};Vl.code="UnmergedPathsError";var pe=class t extends Ae{constructor(e){super(`An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${e}`),this.code=this.name=t.code,this.data={message:e}}};pe.code="InternalError";var no=class t extends Ae{constructor(e){super(`The filepath "${e}" contains unsafe character sequences`),this.code=this.name=t.code,this.data={filepath:e}}};no.code="UnsafeFilepathError";var Kr=class{constructor(e){this.buffer=e,this._start=0}eof(){return this._start>=this.buffer.length}tell(){return this._start}seek(e){this._start=e}slice(e){let r=this.buffer.slice(this._start,this._start+e);return this._start+=e,r}toString(e,r){let n=this.buffer.toString(e,this._start,this._start+r);return this._start+=r,n}write(e,r,n){let i=this.buffer.write(e,this._start,r,n);return this._start+=r,i}copy(e,r,n){let i=e.copy(this.buffer,this._start,r,n);return this._start+=i,i}readUInt8(){let e=this.buffer.readUInt8(this._start);return this._start+=1,e}writeUInt8(e){let r=this.buffer.writeUInt8(e,this._start);return this._start+=1,r}readUInt16BE(){let e=this.buffer.readUInt16BE(this._start);return this._start+=2,e}writeUInt16BE(e){let r=this.buffer.writeUInt16BE(e,this._start);return this._start+=2,r}readUInt32BE(){let e=this.buffer.readUInt32BE(this._start);return this._start+=4,e}writeUInt32BE(e){let r=this.buffer.writeUInt32BE(e,this._start);return this._start+=4,r}};function Lf(t,e){return-(te)}function Ox(t,e){return Lf(t.path,e.path)}function Ix(t){let e=t>0?t>>12:0;e!==4&&e!==8&&e!==10&&e!==14&&(e=8);let r=t&511;return r&73?r=493:r=420,e!==8&&(r=0),(e<<12)+r}var Gn=2**32;function cx(t,e,r,n){if(t!==void 0&&e!==void 0)return[t,e];r===void 0&&(r=n.valueOf());let i=Math.floor(r/1e3),a=(r-i*1e3)*1e6;return[i,a]}function io(t){let[e,r]=cx(t.ctimeSeconds,t.ctimeNanoseconds,t.ctimeMs,t.ctime),[n,i]=cx(t.mtimeSeconds,t.mtimeNanoseconds,t.mtimeMs,t.mtime);return{ctimeSeconds:e%Gn,ctimeNanoseconds:r%Gn,mtimeSeconds:n%Gn,mtimeNanoseconds:i%Gn,dev:t.dev%Gn,ino:t.ino%Gn,mode:Ix(t.mode%Gn),uid:t.uid%Gn,gid:t.gid%Gn,size:t.size>-1?t.size%Gn:0}}function Y8(t){let e="";for(let r of new Uint8Array(t))r<16&&(e+="0"),e+=r.toString(16);return e}var Nm=null;async function bi(t){return Nm===null&&(Nm=await K8()),Nm?$x(t):X8(t)}function X8(t){return new Mx().update(t).digest("hex")}async function $x(t){let e=await crypto.subtle.digest("SHA-1",t);return Y8(e)}async function K8(){try{if(await $x(new Uint8Array([]))==="da39a3ee5e6b4b0d3255bfef95601890afd80709")return!0}catch(t){}return!1}function Z8(t){return{assumeValid:!!(t&32768),extended:!!(t&16384),stage:(t&12288)>>12,nameLength:t&4095}}function J8(t){let e=t.flags;return e.extended=!1,e.nameLength=Math.min(Buffer.from(t.path).length,4095),(e.assumeValid?32768:0)+(e.extended?16384:0)+((e.stage&3)<<12)+(e.nameLength&4095)}var Zm=class t{constructor(e,r){this._dirty=!1,this._unmergedPaths=r||new Set,this._entries=e||new Map}_addEntry(e){if(e.flags.stage===0)e.stages=[e],this._entries.set(e.path,e),this._unmergedPaths.delete(e.path);else{let r=this._entries.get(e.path);r||(this._entries.set(e.path,e),r=e),r.stages[e.flags.stage]=e,this._unmergedPaths.add(e.path)}}static async from(e){if(Buffer.isBuffer(e))return t.fromBuffer(e);if(e===null)return new t(null);throw new pe("invalid type passed to GitIndex.from")}static async fromBuffer(e){if(e.length===0)throw new pe("Index file is empty (.git/index)");let r=new t,n=new Kr(e),i=n.toString("utf8",4);if(i!=="DIRC")throw new pe(`Invalid dircache magic file number: ${i}`);let a=await bi(e.slice(0,-20)),s=e.slice(-20).toString("hex");if(s!==a)throw new pe(`Invalid checksum in GitIndex buffer: expected ${s} but saw ${a}`);let o=n.readUInt32BE();if(o!==2)throw new pe(`Unsupported dircache version: ${o}`);let l=n.readUInt32BE(),c=0;for(;!n.eof()&&ce.stages.length>1?e.stages.filter(r=>r):e)}*[Symbol.iterator](){for(let e of this.entries)yield e}insert({filepath:e,stats:r,oid:n,stage:i=0}){r||(r={ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:0,uid:0,gid:0,size:0}),r=io(r);let a=Buffer.from(e),s={ctimeSeconds:r.ctimeSeconds,ctimeNanoseconds:r.ctimeNanoseconds,mtimeSeconds:r.mtimeSeconds,mtimeNanoseconds:r.mtimeNanoseconds,dev:r.dev,ino:r.ino,mode:r.mode||33188,uid:r.uid,gid:r.gid,size:r.size,path:e,oid:n,flags:{assumeValid:!1,extended:!1,stage:i,nameLength:a.length<4095?a.length:4095},stages:[]};this._addEntry(s),this._dirty=!0}delete({filepath:e}){if(this._entries.has(e))this._entries.delete(e);else for(let r of this._entries.keys())r.startsWith(e+"/")&&this._entries.delete(r);this._unmergedPaths.has(e)&&this._unmergedPaths.delete(e),this._dirty=!0}clear(){this._entries.clear(),this._dirty=!0}has({filepath:e}){return this._entries.has(e)}render(){return this.entries.map(e=>`${e.mode.toString(8)} ${e.oid} ${e.path}`).join(` +`)}static async _entryToBuffer(e){let r=Buffer.from(e.path),n=Math.ceil((62+r.length+1)/8)*8,i=Buffer.alloc(n),a=new Kr(i),s=io(e);return a.writeUInt32BE(s.ctimeSeconds),a.writeUInt32BE(s.ctimeNanoseconds),a.writeUInt32BE(s.mtimeSeconds),a.writeUInt32BE(s.mtimeNanoseconds),a.writeUInt32BE(s.dev),a.writeUInt32BE(s.ino),a.writeUInt32BE(s.mode),a.writeUInt32BE(s.uid),a.writeUInt32BE(s.gid),a.writeUInt32BE(s.size),a.write(e.oid,20,"hex"),a.writeUInt16BE(J8(e)),a.write(e.path,r.length,"utf8"),i}async toObject(){let e=Buffer.alloc(12),r=new Kr(e);r.write("DIRC",4,"utf8"),r.writeUInt32BE(2),r.writeUInt32BE(this.entriesFlat.length);let n=[];for(let o of this.entries)if(n.push(t._entryToBuffer(o)),o.stages.length>1)for(let l of o.stages)l&&l!==o&&n.push(t._entryToBuffer(l));n=await Promise.all(n);let i=Buffer.concat(n),a=Buffer.concat([e,i]),s=await bi(a);return Buffer.concat([a,Buffer.from(s,"hex")])}};function Tf(t,e,r=!0,n=!0){let i=io(t),a=io(e);return r&&i.mode!==a.mode||i.mtimeSeconds!==a.mtimeSeconds||i.ctimeSeconds!==a.ctimeSeconds||i.uid!==a.uid||i.gid!==a.gid||n&&i.ino!==a.ino||i.size!==a.size}var Bm=null,Hm=Symbol("IndexCache");function Q8(){return{map:new Map,stats:new Map}}async function e4(t,e,r){let[n,i]=await Promise.all([t.lstat(e),t.read(e)]),a=await Zm.from(i);r.map.set(e,a),r.stats.set(e,n)}async function t4(t,e,r){let n=r.stats.get(e);if(n===void 0)return!0;if(n===null)return!1;let i=await t.lstat(e);return i===null?!1:Tf(n,i)}var ct=class{static async acquire({fs:e,gitdir:r,cache:n,allowUnmerged:i=!0},a){n[Hm]||(n[Hm]=Q8());let s=`${r}/index`;Bm===null&&(Bm=new zl({maxPending:1/0}));let o,l=[];return await Bm.acquire(s,async()=>{let c=n[Hm];await t4(e,s,c)&&await e4(e,s,c);let u=c.map.get(s);if(l=u.unmergedPaths,l.length&&!i)throw new Vl(l);if(o=await a(u),u._dirty){let f=await u.toObject();await e.write(s,f),c.stats.set(s,await e.lstat(s)),u._dirty=!1}}),o}};function Cf(t){let e=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return e>-1&&(t=t.slice(e+1)),t}function ao(t){let e=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return e===-1?".":e===0?"/":t.slice(0,e)}function Fx(t){let e=new Map,r=function(i){if(!e.has(i)){let a={type:"tree",fullpath:i,basename:Cf(i),metadata:{},children:[]};e.set(i,a),a.parent=r(ao(i)),a.parent&&a.parent!==a&&a.parent.children.push(a)}return e.get(i)},n=function(i,a){if(!e.has(i)){let s={type:"blob",fullpath:i,basename:Cf(i),metadata:a,parent:r(ao(i)),children:[]};s.parent&&s.parent.children.push(s),e.set(i,s)}return e.get(i)};r(".");for(let i of t)n(i.path,i);return e}function r4(t){switch(t){case 16384:return"tree";case 33188:return"blob";case 33261:return"blob";case 40960:return"blob";case 57344:return"commit"}throw new pe(`Unexpected GitTree entry mode: ${t.toString(8)}`)}var Jm=class{constructor({fs:e,gitdir:r,cache:n}){this.treePromise=ct.acquire({fs:e,gitdir:r,cache:n},async function(a){return Fx(a.entries)});let i=this;this.ConstructEntry=class{constructor(s){this._fullpath=s,this._type=!1,this._mode=!1,this._stat=!1,this._oid=!1}async type(){return i.type(this)}async mode(){return i.mode(this)}async stat(){return i.stat(this)}async content(){return i.content(this)}async oid(){return i.oid(this)}}}async readdir(e){let r=e._fullpath,i=(await this.treePromise).get(r);if(!i||i.type==="blob")return null;if(i.type!=="tree")throw new Error(`ENOTDIR: not a directory, scandir '${r}'`);let a=i.children.map(s=>s.fullpath);return a.sort(Lf),a}async type(e){return e._type===!1&&await e.stat(),e._type}async mode(e){return e._mode===!1&&await e.stat(),e._mode}async stat(e){if(e._stat===!1){let n=(await this.treePromise).get(e._fullpath);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${e._fullpath}'`);let i=n.type==="tree"?{}:io(n.metadata);e._type=n.type==="tree"?"tree":r4(i.mode),e._mode=i.mode,n.type==="tree"?e._stat=void 0:e._stat=i}return e._stat}async content(e){}async oid(e){if(e._oid===!1){let n=(await this.treePromise).get(e._fullpath);e._oid=n.metadata.oid}return e._oid}},jf=Symbol("GitWalkSymbol");function Ya(){let t=Object.create(null);return Object.defineProperty(t,jf,{value:function({fs:e,gitdir:r,cache:n}){return new Jm({fs:e,gitdir:r,cache:n})}}),Object.freeze(t),t}var je=class t extends Ae{constructor(e){super(`Could not find ${e}.`),this.code=this.name=t.code,this.data={what:e}}};je.code="NotFoundError";var tr=class t extends Ae{constructor(e,r,n,i){super(`Object ${e} ${i?`at ${i}`:""}was anticipated to be a ${n} but it is a ${r}.`),this.code=this.name=t.code,this.data={oid:e,actual:r,expected:n,filepath:i}}};tr.code="ObjectTypeError";var Qi=class t extends Ae{constructor(e){super(`Expected a 40-char hex object id but saw "${e}".`),this.code=this.name=t.code,this.data={value:e}}};Qi.code="InvalidOidError";var Wl=class t extends Ae{constructor(e){super(`Could not find a fetch refspec for remote "${e}". Make sure the config file has an entry like the following: +[remote "${e}"] + fetch = +refs/heads/*:refs/remotes/origin/* +`),this.code=this.name=t.code,this.data={remote:e}}};Wl.code="NoRefspecError";var Pf=class t{constructor(e){if(this.refs=new Map,this.parsedConfig=[],e){let r=null;this.parsedConfig=e.trim().split(` +`).map(n=>{if(/^\s*#/.test(n))return{line:n,comment:!0};let i=n.indexOf(" ");if(n.startsWith("^")){let a=n.slice(1);return this.refs.set(r+"^{}",a),{line:n,ref:r,peeled:a}}else{let a=n.slice(0,i);return r=n.slice(i+1),this.refs.set(r,a),{line:n,ref:r,oid:a}}})}return this}static from(e){return new t(e)}delete(e){this.parsedConfig=this.parsedConfig.filter(r=>r.ref!==e),this.refs.delete(e)}toString(){return this.parsedConfig.map(({line:e})=>e).join(` +`)+` +`}},Rf=class t{constructor({remotePath:e,localPath:r,force:n,matchPrefix:i}){Object.assign(this,{remotePath:e,localPath:r,force:n,matchPrefix:i})}static from(e){let[r,n,i,a,s]=e.match(/^(\+?)(.*?)(\*?):(.*?)(\*?)$/).slice(1),o=r==="+",l=i==="*";if(l!==(s==="*"))throw new pe("Invalid refspec");return new t({remotePath:n,localPath:a,force:o,matchPrefix:l})}translate(e){if(this.matchPrefix){if(e.startsWith(this.remotePath))return this.localPath+e.replace(this.remotePath,"")}else if(e===this.remotePath)return this.localPath;return null}reverseTranslate(e){if(this.matchPrefix){if(e.startsWith(this.localPath))return this.remotePath+e.replace(this.localPath,"")}else if(e===this.localPath)return this.remotePath;return null}},Qm=class t{constructor(e=[]){this.rules=e}static from(e){let r=[];for(let n of e)r.push(Rf.from(n));return new t(r)}add(e){let r=Rf.from(e);this.rules.push(r)}translate(e){let r=[];for(let n of this.rules)for(let i of e){let a=n.translate(i);a&&r.push([i,a])}return r}translateOne(e){let r=null;for(let n of this.rules){let i=n.translate(e);i&&(r=i)}return r}localNamespaces(){return this.rules.filter(e=>e.matchPrefix).map(e=>e.localPath.replace(/\/$/,""))}};function n4(t,e){let r=t.replace(/\^\{\}$/,""),n=e.replace(/\^\{\}$/,""),i=-(rn);return i===0?t.endsWith("^{}")?1:-1:i}var i4=t=>{if(typeof t=="number")return t;t=t.toLowerCase();let e=parseInt(t);return t.endsWith("k")&&(e*=1024),t.endsWith("m")&&(e*=1024*1024),t.endsWith("g")&&(e*=1024*1024*1024),e},Gl=t=>{if(typeof t=="boolean")return t;if(t=t.trim().toLowerCase(),t==="true"||t==="yes"||t==="on")return!0;if(t==="false"||t==="no"||t==="off")return!1;throw Error(`Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${t}`)},ux={core:{filemode:Gl,bare:Gl,logallrefupdates:Gl,symlinks:Gl,ignorecase:Gl,bigFileThreshold:i4}},a4=/^\[([A-Za-z0-9-.]+)(?: "(.*)")?\]$/,s4=/^[A-Za-z0-9-.]+$/,o4=/^([A-Za-z][A-Za-z-]*)(?: *= *(.*))?$/,l4=/^[A-Za-z][A-Za-z-]*$/,c4=/^(.*?)( *[#;].*)$/,u4=t=>{let e=a4.exec(t);if(e!=null){let[r,n]=e.slice(1);return[r,n]}return null},f4=t=>{let e=o4.exec(t);if(e!=null){let[r,n="true"]=e.slice(1),i=d4(n),a=h4(i);return[r,a]}return null},d4=t=>{let e=c4.exec(t);if(e==null)return t;let[r,n]=e.slice(1);return fx(r)&&fx(n)?`${r}${n}`:r},fx=t=>(t.match(/(?:^|[^\\])"/g)||[]).length%2!==0,h4=t=>t.split("").reduce((e,r,n,i)=>{let a=r==='"'&&i[n-1]!=="\\",s=r==="\\"&&i[n+1]==='"';return a||s?e:e+r},""),dx=t=>t!=null?t.toLowerCase():null,eg=(t,e,r)=>[dx(t),e,dx(r)].filter(n=>n!=null).join("."),hx=t=>{let e=t.split("."),r=e.shift(),n=e.pop(),i=e.length?e.join("."):void 0;return{section:r,subsection:i,name:n,path:eg(r,i,n),sectionPath:eg(r,i,null),isSection:!!r}},p4=(t,e)=>t.reduce((r,n,i)=>e(n)?i:r,-1),tg=class t{constructor(e){let r=null,n=null;this.parsedConfig=e?e.split(` +`).map(i=>{let a=null,s=null,o=i.trim(),l=u4(o),c=l!=null;if(c)[r,n]=l;else{let f=f4(o);f!=null&&([a,s]=f)}let u=eg(r,n,a);return{line:i,isSection:c,section:r,subsection:n,name:a,value:s,path:u}}):[]}static from(e){return new t(e)}async get(e,r=!1){let n=hx(e).path,i=this.parsedConfig.filter(a=>a.path===n).map(({section:a,name:s,value:o})=>{let l=ux[a]&&ux[a][s];return l?l(o):o});return r?i:i.pop()}async getall(e){return this.get(e,!0)}async getSubsections(e){return this.parsedConfig.filter(r=>r.isSection&&r.section===e).map(r=>r.subsection)}async deleteSection(e,r){this.parsedConfig=this.parsedConfig.filter(n=>!(n.section===e&&n.subsection===r))}async append(e,r){return this.set(e,r,!0)}async set(e,r,n=!1){let{section:i,subsection:a,name:s,path:o,sectionPath:l,isSection:c}=hx(e),u=p4(this.parsedConfig,f=>f.path===o);if(r==null)u!==-1&&this.parsedConfig.splice(u,1);else if(u!==-1){let f=this.parsedConfig[u],d=Object.assign({},f,{name:s,value:r,modified:!0});n?this.parsedConfig.splice(u+1,0,d):this.parsedConfig[u]=d}else{let f=this.parsedConfig.findIndex(h=>h.path===l),d={section:i,subsection:a,name:s,value:r,modified:!0,path:o};if(s4.test(i)&&l4.test(s))if(f>=0)this.parsedConfig.splice(f+1,0,d);else{let h={isSection:c,section:i,subsection:a,modified:!0,path:l};this.parsedConfig.push(h,d)}}}toString(){return this.parsedConfig.map(({line:e,section:r,subsection:n,name:i,value:a,modified:s=!1})=>s?i!=null&&a!=null?typeof a=="string"&&/[#;]/.test(a)?` ${i} = "${a}"`:` ${i} = ${a}`:n!=null?`[${r} "${n}"]`:`[${r}]`:e).join(` +`)}},nt=class{static async get({fs:e,gitdir:r}){let n=await e.read(`${r}/config`,{encoding:"utf8"});return tg.from(n)}static async save({fs:e,gitdir:r,config:n}){await e.write(`${r}/config`,n.toString(),{encoding:"utf8"})}},Af=t=>[`${t}`,`refs/${t}`,`refs/tags/${t}`,`refs/heads/${t}`,`refs/remotes/${t}`,`refs/remotes/${t}/HEAD`],m4=["config","description","index","shallow","commondir"],Um;async function Zi(t,e){return Um===void 0&&(Um=new zl),Um.acquire(t,e)}var V=class t{static async updateRemoteRefs({fs:e,gitdir:r,remote:n,refs:i,symrefs:a,tags:s,refspecs:o=void 0,prune:l=!1,pruneTags:c=!1}){for(let v of i.values())if(!v.match(/[0-9a-f]{40}/))throw new Qi(v);let u=await nt.get({fs:e,gitdir:r});if(!o){if(o=await u.getall(`remote.${n}.fetch`),o.length===0)throw new Wl(n);o.unshift(`+HEAD:refs/remotes/${n}/HEAD`)}let f=Qm.from(o),d=new Map;if(c){let v=await t.listRefs({fs:e,gitdir:r,filepath:"refs/tags"});await t.deleteRefs({fs:e,gitdir:r,refs:v.map(y=>`refs/tags/${y}`)})}if(s){for(let v of i.keys())if(v.startsWith("refs/tags")&&!v.endsWith("^{}")&&!await t.exists({fs:e,gitdir:r,ref:v})){let y=i.get(v);d.set(v,y)}}let h=f.translate([...i.keys()]);for(let[v,y]of h){let b=i.get(v);d.set(y,b)}let p=f.translate([...a.keys()]);for(let[v,y]of p){let b=a.get(v),E=f.translateOne(b);E&&d.set(y,`ref: ${E}`)}let g=[];if(l){for(let v of f.localNamespaces()){let y=(await t.listRefs({fs:e,gitdir:r,filepath:v})).map(b=>`${v}/${b}`);for(let b of y)d.has(b)||g.push(b)}g.length>0&&await t.deleteRefs({fs:e,gitdir:r,refs:g})}for(let[v,y]of d)await Zi(v,async()=>e.write($.join(r,v),`${y.trim()} +`,"utf8"));return{pruned:g}}static async writeRef({fs:e,gitdir:r,ref:n,value:i}){if(!i.match(/[0-9a-f]{40}/))throw new Qi(i);await Zi(n,async()=>e.write($.join(r,n),`${i.trim()} +`,"utf8"))}static async writeSymbolicRef({fs:e,gitdir:r,ref:n,value:i}){await Zi(n,async()=>e.write($.join(r,n),`ref: ${i.trim()} +`,"utf8"))}static async deleteRef({fs:e,gitdir:r,ref:n}){return t.deleteRefs({fs:e,gitdir:r,refs:[n]})}static async deleteRefs({fs:e,gitdir:r,refs:n}){await Promise.all(n.map(o=>e.rm($.join(r,o))));let i=await Zi("packed-refs",async()=>e.read(`${r}/packed-refs`,{encoding:"utf8"})),a=Pf.from(i),s=a.refs.size;for(let o of n)a.refs.has(o)&&a.delete(o);a.refs.sizee.write(`${r}/packed-refs`,i,{encoding:"utf8"})))}static async resolve({fs:e,gitdir:r,ref:n,depth:i=void 0}){if(i!==void 0&&(i--,i===-1))return n;if(n.startsWith("ref: "))return n=n.slice(5),t.resolve({fs:e,gitdir:r,ref:n,depth:i});if(n.length===40&&/[0-9a-f]{40}/.test(n))return n;let a=await t.packedRefs({fs:e,gitdir:r}),s=Af(n).filter(o=>!m4.includes(o));for(let o of s){let l=await Zi(o,async()=>await e.read(`${r}/${o}`,{encoding:"utf8"})||a.get(o));if(l)return t.resolve({fs:e,gitdir:r,ref:l.trim(),depth:i})}throw new je(n)}static async exists({fs:e,gitdir:r,ref:n}){try{return await t.expand({fs:e,gitdir:r,ref:n}),!0}catch(i){return!1}}static async expand({fs:e,gitdir:r,ref:n}){if(n.length===40&&/[0-9a-f]{40}/.test(n))return n;let i=await t.packedRefs({fs:e,gitdir:r}),a=Af(n);for(let s of a)if(await Zi(s,async()=>e.exists(`${r}/${s}`))||i.has(s))return s;throw new je(n)}static async expandAgainstMap({ref:e,map:r}){let n=Af(e);for(let i of n)if(await r.has(i))return i;throw new je(e)}static resolveAgainstMap({ref:e,fullref:r=e,depth:n=void 0,map:i}){if(n!==void 0&&(n--,n===-1))return{fullref:r,oid:e};if(e.startsWith("ref: "))return e=e.slice(5),t.resolveAgainstMap({ref:e,fullref:r,depth:n,map:i});if(e.length===40&&/[0-9a-f]{40}/.test(e))return{fullref:r,oid:e};let a=Af(e);for(let s of a){let o=i.get(s);if(o)return t.resolveAgainstMap({ref:o.trim(),fullref:s,depth:n,map:i})}throw new je(e)}static async packedRefs({fs:e,gitdir:r}){let n=await Zi("packed-refs",async()=>e.read(`${r}/packed-refs`,{encoding:"utf8"}));return Pf.from(n).refs}static async listRefs({fs:e,gitdir:r,filepath:n}){let i=t.packedRefs({fs:e,gitdir:r}),a=null;try{a=await e.readdirDeep(`${r}/${n}`),a=a.map(s=>s.replace(`${r}/${n}/`,""))}catch(s){a=[]}for(let s of(await i).keys())s.startsWith(n)&&(s=s.replace(n+"/",""),a.includes(s)||a.push(s));return a.sort(n4),a}static async listBranches({fs:e,gitdir:r,remote:n}){return n?t.listRefs({fs:e,gitdir:r,filepath:`refs/remotes/${n}`}):t.listRefs({fs:e,gitdir:r,filepath:"refs/heads"})}static async listTags({fs:e,gitdir:r}){return(await t.listRefs({fs:e,gitdir:r,filepath:"refs/tags"})).filter(i=>!i.endsWith("^{}"))}};function g4(t,e){return Lf(px(t),px(e))}function px(t){return t.mode==="040000"?t.path+"/":t.path}function Dx(t){switch(t){case"040000":return"tree";case"100644":return"blob";case"100755":return"blob";case"120000":return"blob";case"160000":return"commit"}throw new pe(`Unexpected GitTree entry mode: ${t}`)}function v4(t){let e=[],r=0;for(;r`${e.mode} ${e.type} ${e.oid} ${e.path}`).join(` +`)}toObject(){let e=[...this._entries];return e.sort(g4),Buffer.concat(e.map(r=>{let n=Buffer.from(r.mode.replace(/^0/,"")),i=Buffer.from(" "),a=Buffer.from(r.path,"utf8"),s=Buffer.from([0]),o=Buffer.from(r.oid,"hex");return Buffer.concat([n,i,a,s,o])}))}entries(){return this._entries}*[Symbol.iterator](){for(let e of this._entries)yield e}},ea=class{static wrap({type:e,object:r}){return Buffer.concat([Buffer.from(`${e} ${r.byteLength.toString()}\0`),Buffer.from(r)])}static unwrap(e){let r=e.indexOf(32),n=e.indexOf(0),i=e.slice(0,r).toString("utf8"),a=e.slice(r+1,n).toString("utf8"),s=e.length-(n+1);if(parseInt(a)!==s)throw new pe(`Length mismatch: expected ${a} bytes but got ${s} instead.`);return{type:i,object:Buffer.from(e.slice(n+1))}}};async function Lx({fs:t,gitdir:e,oid:r}){let n=`objects/${r.slice(0,2)}/${r.slice(2)}`,i=await t.read(`${e}/${n}`);return i?{object:i,format:"deflated",source:n}:null}function b4(t,e){let r=new Kr(t),n=mx(r);if(n!==e.byteLength)throw new pe(`applyDelta expected source buffer to be ${n} bytes but the provided buffer was ${e.length} bytes`);let i=mx(r),a,s=vx(r,e);if(s.byteLength===i)a=s;else{a=Buffer.alloc(i);let o=new Kr(a);for(o.copy(s);!r.eof();)o.copy(vx(r,e));let l=o.tell();if(i!==l)throw new pe(`applyDelta expected target buffer to be ${i} bytes but the resulting buffer was ${l} bytes`)}return a}function mx(t){let e=0,r=0,n=null;do n=t.readUInt8(),e|=(n&127)<>=1,i+=8;return n}function vx(t,e){let r=t.readUInt8(),n=128,i=15,a=112;if(r&n){let s=gx(t,r&i,4),o=gx(t,(r&a)>>4,3);return o===0&&(o=65536),e.slice(s,s+o)}else return t.slice(r)}function _4(t){let e=[t];return{next(){return Promise.resolve({done:e.length===0,value:e.pop()})},return(){return e=[],{}},[Symbol.asyncIterator](){return this}}}function jx(t){return t[Symbol.asyncIterator]?t[Symbol.asyncIterator]():t[Symbol.iterator]?t[Symbol.iterator]():t.next?t:_4(t)}var Mf=class{constructor(e){if(typeof Buffer=="undefined")throw new Error("Missing Buffer dependency");this.stream=jx(e),this.buffer=null,this.cursor=0,this.undoCursor=0,this.started=!1,this._ended=!1,this._discardedBytes=0}eof(){return this._ended&&this.cursor===this.buffer.length}tell(){return this._discardedBytes+this.cursor}async byte(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(1),this.buffer[this.undoCursor]}async chunk(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(this.buffer.length),this.buffer.slice(this.undoCursor,this.cursor)}async read(e){if(!this.eof())return this.started||await this._init(),this.cursor+e>this.buffer.length&&(this._trim(),await this._accumulate(e)),this._moveCursor(e),this.buffer.slice(this.undoCursor,this.cursor)}async skip(e){this.eof()||(this.started||await this._init(),this.cursor+e>this.buffer.length&&(this._trim(),await this._accumulate(e)),this._moveCursor(e))}async undo(){this.cursor=this.undoCursor}async _next(){this.started=!0;let{done:e,value:r}=await this.stream.next();return e&&(this._ended=!0,!r)?Buffer.alloc(0):(r&&(r=Buffer.from(r)),r)}_trim(){this.buffer=this.buffer.slice(this.undoCursor),this.cursor-=this.undoCursor,this._discardedBytes+=this.undoCursor,this.undoCursor=0}_moveCursor(e){this.undoCursor=this.cursor,this.cursor+=e,this.cursor>this.buffer.length&&(this.cursor=this.buffer.length)}async _accumulate(e){if(this._ended)return;let r=[this.buffer];for(;this.cursor+e>x4(r);){let n=await this._next();if(this._ended)break;r.push(n)}this.buffer=Buffer.concat(r)}async _loadnext(){this._discardedBytes+=this.buffer.length,this.undoCursor=0,this.cursor=0,this.buffer=await this._next()}async _init(){this.buffer=await this._next()}};function x4(t){return t.reduce((e,r)=>e+r.length,0)}async function S4(t,e){let r=new Mf(t),n=await r.read(4);if(n=n.toString("utf8"),n!=="PACK")throw new pe(`Invalid PACK header '${n}'`);let i=await r.read(4);if(i=i.readUInt32BE(0),i!==2)throw new pe(`Invalid packfile version: ${i}`);let a=await r.read(4);if(a=a.readUInt32BE(0),!(a<1))for(;!r.eof()&&a--;){let s=r.tell(),{type:o,length:l,ofs:c,reference:u}=await E4(r),f=new cg.Inflate;for(;!f.result;){let d=await r.chunk();if(!d)break;if(f.push(d,!1),f.err)throw new pe(`Pako error: ${f.msg}`);if(f.result){if(f.result.length!==l)throw new pe("Inflated object size is different from that stated in packfile.");await r.undo(),await r.read(d.length-f.strm.avail_in);let h=r.tell();await e({data:f.result,type:o,num:a,offset:s,end:h,reference:u,ofs:c})}}}}async function E4(t){let e=await t.byte(),r=e>>4&7,n=e&15;if(e&128){let s=4;do e=await t.byte(),n|=(e&127)<i+1<<7|a,-1)}function C4(t,e){let r=e,n=4,i=null;do i=t.readUInt8(),r|=(i&127)<2048*1024*1024)throw new pe("To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.");n.seek(n.tell()+4*255);let s=n.readUInt32BE(),o=[];for(let u=0;u{u===null&&(u=S);let A=Math.floor((u-S)*100/u);A!==f&&n&&await n({phase:"Receiving objects",loaded:u-S,total:u}),f=A,y=i[y],["commit","tree","blob","tag"].includes(y)?a[E]={type:y,offset:E}:y==="ofs-delta"?a[E]={type:y,offset:E}:y==="ref-delta"&&(a[E]={type:y,offset:E})});let d=Object.keys(a).map(Number);for(let[v,y]of d.entries()){let b=v+1===d.length?e.byteLength-20:d[v+1],E=a[y],S=V8.buf(e.slice(y,b))>>>0;E.end=b,E.crc=S}let h=new t({pack:Promise.resolve(e),packfileSha:s,crcs:l,hashes:o,offsets:c,getExternalRefDelta:r});f=null;let p=0,g=[0,0,0,0,0,0,0,0,0,0,0,0];for(let v in a){v=Number(v);let y=Math.floor(p*100/u);y!==f&&n&&await n({phase:"Resolving deltas",loaded:p,total:u}),p++,f=y;let b=a[v];if(!b.oid)try{h.readDepth=0,h.externalReadDepth=0;let{type:E,object:S}=await h.readSlice({start:v});g[h.readDepth]+=1;let A=await bi(ea.wrap({type:E,object:S}));b.oid=A,o.push(A),c.set(A,v),l[A]=b.crc}catch(E){continue}}return o.sort(),h}async toBuffer(){let e=[],r=(c,u)=>{e.push(Buffer.from(c,u))};r("ff744f63","hex"),r("00000002","hex");let n=new Kr(Buffer.alloc(256*4));for(let c=0;c<256;c++){let u=0;for(let f of this.hashes)parseInt(f.slice(0,2),16)<=c&&u++;n.writeUInt32BE(u)}e.push(n.buffer);for(let c of this.hashes)r(c,"hex");let i=new Kr(Buffer.alloc(this.hashes.length*4));for(let c of this.hashes)i.writeUInt32BE(this.crcs[c]);e.push(i.buffer);let a=new Kr(Buffer.alloc(this.hashes.length*4));for(let c of this.hashes)a.writeUInt32BE(this.offsets.get(c));e.push(a.buffer),r(this.packfileSha,"hex");let s=Buffer.concat(e),o=await bi(s),l=Buffer.alloc(20);return l.write(o,"hex"),Buffer.concat([s,l])}async load({pack:e}){this.pack=e}async unload(){this.pack=null}async read({oid:e}){if(!this.offsets.get(e)){if(this.getExternalRefDelta)return this.externalReadDepth++,this.getExternalRefDelta(e);throw new pe(`Could not read object ${e} from packfile`)}let r=this.offsets.get(e);return this.readSlice({start:r})}async readSlice({start:e}){if(this.offsetCache[e])return Object.assign({},this.offsetCache[e]);this.readDepth++;let r={16:"commit",32:"tree",48:"blob",64:"tag",96:"ofs_delta",112:"ref_delta"};if(!this.pack)throw new pe("Tried to read from a GitPackIndex with no packfile loaded into memory");let n=(await this.pack).slice(e),i=new Kr(n),a=i.readUInt8(),s=a&112,o=r[s];if(o===void 0)throw new pe("Unrecognized type: 0b"+s.toString(2));let l=a&15,c=l;a&128&&(c=C4(i,l));let f=null,d=null;if(o==="ofs_delta"){let p=T4(i),g=e-p;({object:f,type:o}=await this.readSlice({start:g}))}if(o==="ref_delta"){let p=i.slice(20).toString("hex");({object:f,type:o}=await this.read({oid:p}))}let h=n.slice(i.tell());if(d=Buffer.from(await Nx(h)),d.byteLength!==c)throw new pe(`Packfile told us object would have length ${c} but it had length ${d.byteLength}`);return f&&(d=Buffer.from(b4(d,f))),this.readDepth>3&&(this.offsetCache[e]={type:o,object:d}),{type:o,format:"content",object:d}}},kf=Symbol("PackfileCache");async function P4({fs:t,filename:e,getExternalRefDelta:r,emitter:n,emitterPrefix:i}){let a=await t.read(e);return ql.fromIdx({idx:a,getExternalRefDelta:r})}function ug({fs:t,cache:e,filename:r,getExternalRefDelta:n,emitter:i,emitterPrefix:a}){e[kf]||(e[kf]=new Map);let s=e[kf].get(r);return s||(s=P4({fs:t,filename:r,getExternalRefDelta:n,emitter:i,emitterPrefix:a}),e[kf].set(r,s)),s}async function R4({fs:t,cache:e,gitdir:r,oid:n,format:i="content",getExternalRefDelta:a}){let s=await t.readdir($.join(r,"objects/pack"));s=s.filter(o=>o.endsWith(".idx"));for(let o of s){let l=`${r}/objects/pack/${o}`,c=await ug({fs:t,cache:e,filename:l,getExternalRefDelta:a});if(c.error)throw new pe(c.error);if(c.offsets.has(n)){if(!c.pack){let f=l.replace(/idx$/,"pack");c.pack=t.read(f)}let u=await c.read({oid:n,getExternalRefDelta:a});return u.format="content",u.source=`objects/pack/${o.replace(/idx$/,"pack")}`,u}}return null}async function Ge({fs:t,cache:e,gitdir:r,oid:n,format:i="content"}){let a=u=>Ge({fs:t,cache:e,gitdir:r,oid:u}),s;if(n==="4b825dc642cb6eb9a060e54bf8d69288fbee4904"&&(s={format:"wrapped",object:Buffer.from("tree 0\0")}),s||(s=await Lx({fs:t,gitdir:r,oid:n})),!s){if(s=await R4({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:a}),!s)throw new je(n);return s}if(i==="deflated"||(s.format==="deflated"&&(s.object=Buffer.from(await Nx(s.object)),s.format="wrapped"),i==="wrapped"))return s;let o=await bi(s.object);if(o!==n)throw new pe(`SHA check failed! Expected ${n}, computed ${o}`);let{object:l,type:c}=ea.unwrap(s.object);if(s.type=c,s.object=l,s.format="content",i==="content")return s;throw new pe(`invalid requested format "${i}"`)}var pn=class t extends Ae{constructor(e,r,n=!0){super(`Failed to create ${e} at ${r} because it already exists.${n?` (Hint: use 'force: true' parameter to overwrite existing ${e}.)`:""}`),this.code=this.name=t.code,this.data={noun:e,where:r,canForce:n}}};pn.code="AlreadyExistsError";var Yl=class t extends Ae{constructor(e,r,n){super(`Found multiple ${e} matching "${r}" (${n.join(", ")}). Use a longer abbreviation length to disambiguate them.`),this.code=this.name=t.code,this.data={nouns:e,short:r,matches:n}}};Yl.code="AmbiguousError";var Xl=class t extends Ae{constructor(e){super(`Your local changes to the following files would be overwritten by checkout: ${e.join(", ")}`),this.code=this.name=t.code,this.data={filepaths:e}}};Xl.code="CheckoutConflictError";var Kl=class t extends Ae{constructor(e,r){super(`Failed to checkout "${e}" because commit ${r} is not available locally. Do a git fetch to make the branch available locally.`),this.code=this.name=t.code,this.data={ref:e,oid:r}}};Kl.code="CommitNotFetchedError";var Zl=class t extends Ae{constructor(){super("Empty response from git server."),this.code=this.name=t.code,this.data={}}};Zl.code="EmptyServerResponseError";var Jl=class t extends Ae{constructor(){super("A simple fast-forward merge was not possible."),this.code=this.name=t.code,this.data={}}};Jl.code="FastForwardError";var Ql=class t extends Ae{constructor(e,r){super(`One or more branches were not updated: ${e}`),this.code=this.name=t.code,this.data={prettyDetails:e,result:r}}};Ql.code="GitPushError";var so=class t extends Ae{constructor(e,r,n){super(`HTTP Error: ${e} ${r}`),this.code=this.name=t.code,this.data={statusCode:e,statusMessage:r,response:n}}};so.code="HttpError";var ta=class t extends Ae{constructor(e){let r="invalid filepath";e==="leading-slash"||e==="trailing-slash"?r='"filepath" parameter should not include leading or trailing directory separators because these can cause problems on some platforms.':e==="directory"&&(r='"filepath" should not be a directory.'),super(r),this.code=this.name=t.code,this.data={reason:e}}};ta.code="InvalidFilepathError";var mn=class t extends Ae{constructor(e,r){super(`"${e}" would be an invalid git reference. (Hint: a valid alternative would be "${r}".)`),this.code=this.name=t.code,this.data={ref:e,suggestion:r}}};mn.code="InvalidRefNameError";var ec=class t extends Ae{constructor(e){super(`Maximum search depth of ${e} exceeded.`),this.code=this.name=t.code,this.data={depth:e}}};ec.code="MaxDepthError";var oo=class t extends Ae{constructor(){super("Merges with conflicts are not supported yet."),this.code=this.name=t.code,this.data={}}};oo.code="MergeNotSupportedError";var lo=class t extends Ae{constructor(e,r,n,i){super(`Automatic merge failed with one or more merge conflicts in the following files: ${e.toString()}. Fix conflicts then commit the result.`),this.code=this.name=t.code,this.data={filepaths:e,bothModified:r,deleteByUs:n,deleteByTheirs:i}}};lo.code="MergeConflictError";var zt=class t extends Ae{constructor(e){super(`No name was provided for ${e} in the argument or in the .git/config file.`),this.code=this.name=t.code,this.data={role:e}}};zt.code="MissingNameError";var dr=class t extends Ae{constructor(e){super(`The function requires a "${e}" parameter but none was provided.`),this.code=this.name=t.code,this.data={parameter:e}}};dr.code="MissingParameterError";var tc=class t extends Ae{constructor(e){super('There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more'),this.code=this.name=t.code,this.data={errors:e},this.errors=e}};tc.code="MultipleGitError";var Va=class t extends Ae{constructor(e,r){super(`Expected "${e}" but received "${r}".`),this.code=this.name=t.code,this.data={expected:e,actual:r}}};Va.code="ParseError";var co=class t extends Ae{constructor(e){let r="";e==="not-fast-forward"?r=" because it was not a simple fast-forward":e==="tag-exists"&&(r=" because tag already exists"),super(`Push rejected${r}. Use "force: true" to override.`),this.code=this.name=t.code,this.data={reason:e}}};co.code="PushRejectedError";var Ji=class t extends Ae{constructor(e,r){super(`Remote does not support the "${e}" so the "${r}" parameter cannot be used.`),this.code=this.name=t.code,this.data={capability:e,parameter:r}}};Ji.code="RemoteCapabilityError";var rc=class t extends Ae{constructor(e,r){super(`Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${e}`),this.code=this.name=t.code,this.data={preview:e,response:r}}};rc.code="SmartHttpError";var nc=class t extends Ae{constructor(e,r,n){super(`Git remote "${e}" uses an unrecognized transport protocol: "${r}"`),this.code=this.name=t.code,this.data={url:e,transport:r,suggestion:n}}};nc.code="UnknownTransportError";var ic=class t extends Ae{constructor(e){super(`Cannot parse remote URL: "${e}"`),this.code=this.name=t.code,this.data={url:e}}};ic.code="UrlParseError";var uo=class t extends Ae{constructor(){super("The operation was canceled."),this.code=this.name=t.code,this.data={}}};uo.code="UserCanceledError";var ac=class t extends Ae{constructor(e){super(`Could not merge index: Entry for '${e}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged changes.`),this.code=this.name=t.code,this.data={filepath:e}}};ac.code="IndexResetError";var sc=class t extends Ae{constructor(e){super(`"${e}" does not point to any commit. You're maybe working on a repository with no commits yet. `),this.code=this.name=t.code,this.data={ref:e}}};sc.code="NoCommitError";var Bx=Object.freeze({__proto__:null,AlreadyExistsError:pn,AmbiguousError:Yl,CheckoutConflictError:Xl,CommitNotFetchedError:Kl,EmptyServerResponseError:Zl,FastForwardError:Jl,GitPushError:Ql,HttpError:so,InternalError:pe,InvalidFilepathError:ta,InvalidOidError:Qi,InvalidRefNameError:mn,MaxDepthError:ec,MergeNotSupportedError:oo,MergeConflictError:lo,MissingNameError:zt,MissingParameterError:dr,MultipleGitError:tc,NoRefspecError:Wl,NotFoundError:je,ObjectTypeError:tr,ParseError:Va,PushRejectedError:co,RemoteCapabilityError:Ji,SmartHttpError:rc,UnknownTransportError:nc,UnsafeFilepathError:no,UrlParseError:ic,UserCanceledError:uo,UnmergedPathsError:Vl,IndexResetError:ac,NoCommitError:sc});function rg({name:t,email:e,timestamp:r,timezoneOffset:n}){return n=M4(n),`${t} <${e}> ${r} ${n}`}function M4(t){let e=O4(I4(t));t=Math.abs(t);let r=Math.floor(t/60);t-=r*60;let n=String(r),i=String(t);return n.length<2&&(n="0"+n),i.length<2&&(i="0"+i),(e===-1?"-":"+")+n+i}function O4(t){return Math.sign(t)||(Object.is(t,-0)?-1:1)}function I4(t){return t===0?t:-t}function wi(t){return t=t.replace(/\r/g,""),t=t.replace(/^\n+/,""),t=t.replace(/\n+$/,"")+` +`,t}function Of(t){let[,e,r,n,i]=t.match(/^(.*) <(.*)> (.*) (.*)$/);return{name:e,email:r,timestamp:Number(n),timezoneOffset:$4(i)}}function $4(t){let[,e,r,n]=t.match(/(\+|-)(\d\d)(\d\d)/);return n=(e==="+"?1:-1)*(Number(r)*60+Number(n)),F4(n)}function F4(t){return t===0?t:-t}var Rr=class t{constructor(e){if(typeof e=="string")this._tag=e;else if(Buffer.isBuffer(e))this._tag=e.toString("utf8");else if(typeof e=="object")this._tag=t.render(e);else throw new pe("invalid type passed to GitAnnotatedTag constructor")}static from(e){return new t(e)}static render(e){return`object ${e.object} +type ${e.type} +tag ${e.tag} +tagger ${rg(e.tagger)} + +${e.message} +${e.gpgsig?e.gpgsig:""}`}justHeaders(){return this._tag.slice(0,this._tag.indexOf(` + +`))}message(){let e=this.withoutSignature();return e.slice(e.indexOf(` + +`)+2)}parse(){return Object.assign(this.headers(),{message:this.message(),gpgsig:this.gpgsig()})}render(){return this._tag}headers(){let e=this.justHeaders().split(` +`),r=[];for(let i of e)i[0]===" "?r[r.length-1]+=` +`+i.slice(1):r.push(i);let n={};for(let i of r){let a=i.slice(0,i.indexOf(" ")),s=i.slice(i.indexOf(" ")+1);Array.isArray(n[a])?n[a].push(s):n[a]=s}return n.tagger&&(n.tagger=Of(n.tagger)),n.committer&&(n.committer=Of(n.committer)),n}withoutSignature(){let e=wi(this._tag);return e.indexOf(` +-----BEGIN PGP SIGNATURE-----`)===-1?e:e.slice(0,e.lastIndexOf(` +-----BEGIN PGP SIGNATURE-----`))}gpgsig(){if(this._tag.indexOf(` +-----BEGIN PGP SIGNATURE-----`)===-1)return;let e=this._tag.slice(this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"),this._tag.indexOf("-----END PGP SIGNATURE-----")+27);return wi(e)}payload(){return this.withoutSignature()+` +`}toObject(){return Buffer.from(this._tag,"utf8")}static async sign(e,r,n){let i=e.payload(),{signature:a}=await r({payload:i,secretKey:n});a=wi(a);let s=i+a;return t.from(s)}};function zm(t){return t.trim().split(` +`).map(e=>" "+e).join(` +`)+` +`}function D4(t){return t.split(` +`).map(e=>e.replace(/^ /,"")).join(` +`)}var pr=class t{constructor(e){if(typeof e=="string")this._commit=e;else if(Buffer.isBuffer(e))this._commit=e.toString("utf8");else if(typeof e=="object")this._commit=t.render(e);else throw new pe("invalid type passed to GitCommit constructor")}static fromPayloadSignature({payload:e,signature:r}){let n=t.justHeaders(e),i=t.justMessage(e),a=wi(n+` +gpgsig`+zm(r)+` +`+i);return new t(a)}static from(e){return new t(e)}toObject(){return Buffer.from(this._commit,"utf8")}headers(){return this.parseHeaders()}message(){return t.justMessage(this._commit)}parse(){return Object.assign({message:this.message()},this.headers())}static justMessage(e){return wi(e.slice(e.indexOf(` + +`)+2))}static justHeaders(e){return e.slice(0,e.indexOf(` + +`))}parseHeaders(){let e=t.justHeaders(this._commit).split(` +`),r=[];for(let i of e)i[0]===" "?r[r.length-1]+=` +`+i.slice(1):r.push(i);let n={parent:[]};for(let i of r){let a=i.slice(0,i.indexOf(" ")),s=i.slice(i.indexOf(" ")+1);Array.isArray(n[a])?n[a].push(s):n[a]=s}return n.author&&(n.author=Of(n.author)),n.committer&&(n.committer=Of(n.committer)),n}static renderHeaders(e){let r="";if(e.tree?r+=`tree ${e.tree} +`:r+=`tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 +`,e.parent){if(e.parent.length===void 0)throw new pe("commit 'parent' property should be an array");for(let a of e.parent)r+=`parent ${a} +`}let n=e.author;r+=`author ${rg(n)} +`;let i=e.committer||e.author;return r+=`committer ${rg(i)} +`,e.gpgsig&&(r+="gpgsig"+zm(e.gpgsig)),r}static render(e){return t.renderHeaders(e)+` +`+wi(e.message)}render(){return this._commit}withoutSignature(){let e=wi(this._commit);if(e.indexOf(` +gpgsig`)===-1)return e;let r=e.slice(0,e.indexOf(` +gpgsig`)),n=e.slice(e.indexOf(`-----END PGP SIGNATURE----- +`)+28);return wi(r+` +`+n)}isolateSignature(){let e=this._commit.slice(this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"),this._commit.indexOf("-----END PGP SIGNATURE-----")+27);return D4(e)}static async sign(e,r,n){let i=e.withoutSignature(),a=t.justMessage(e._commit),{signature:s}=await r({payload:i,secretKey:n});s=wi(s);let l=t.justHeaders(e._commit)+` +gpgsig`+zm(s)+` +`+a;return t.from(l)}};async function fo({fs:t,cache:e,gitdir:r,oid:n}){if(n==="4b825dc642cb6eb9a060e54bf8d69288fbee4904")return{tree:hr.from([]),oid:n};let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n});if(i==="tag")return n=Rr.from(a).parse().object,fo({fs:t,cache:e,gitdir:r,oid:n});if(i==="commit")return n=pr.from(a).parse().tree,fo({fs:t,cache:e,gitdir:r,oid:n});if(i!=="tree")throw new tr(n,i,"tree");return{tree:hr.from(a),oid:n}}var ng=class{constructor({fs:e,gitdir:r,ref:n,cache:i}){this.fs=e,this.cache=i,this.gitdir=r,this.mapPromise=(async()=>{let s=new Map,o;try{o=await V.resolve({fs:e,gitdir:r,ref:n})}catch(c){c instanceof je&&(o="4b825dc642cb6eb9a060e54bf8d69288fbee4904")}let l=await fo({fs:e,cache:this.cache,gitdir:r,oid:o});return l.type="tree",l.mode="40000",s.set(".",l),s})();let a=this;this.ConstructEntry=class{constructor(o){this._fullpath=o,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return a.type(this)}async mode(){return a.mode(this)}async stat(){return a.stat(this)}async content(){return a.content(this)}async oid(){return a.oid(this)}}}async readdir(e){let r=e._fullpath,{fs:n,cache:i,gitdir:a}=this,s=await this.mapPromise,o=s.get(r);if(!o)throw new Error(`No obj for ${r}`);let l=o.oid;if(!l)throw new Error(`No oid for obj ${JSON.stringify(o)}`);if(o.type!=="tree")return null;let{type:c,object:u}=await Ge({fs:n,cache:i,gitdir:a,oid:l});if(c!==o.type)throw new tr(l,c,o.type);let f=hr.from(u);for(let d of f)s.set($.join(r,d.path),d);return f.entries().map(d=>$.join(r,d.path))}async type(e){if(e._type===!1){let r=await this.mapPromise,{type:n}=r.get(e._fullpath);e._type=n}return e._type}async mode(e){if(e._mode===!1){let r=await this.mapPromise,{mode:n}=r.get(e._fullpath);e._mode=Ix(parseInt(n,8))}return e._mode}async stat(e){}async content(e){if(e._content===!1){let r=await this.mapPromise,{fs:n,cache:i,gitdir:a}=this,o=r.get(e._fullpath).oid,{type:l,object:c}=await Ge({fs:n,cache:i,gitdir:a,oid:o});l!=="blob"?e._content=void 0:e._content=new Uint8Array(c)}return e._content}async oid(e){if(e._oid===!1){let n=(await this.mapPromise).get(e._fullpath);e._oid=n.oid}return e._oid}};function Pr({ref:t="HEAD"}={}){let e=Object.create(null);return Object.defineProperty(e,jf,{value:function({fs:r,gitdir:n,cache:i}){return new ng({fs:r,gitdir:n,ref:t,cache:i})}}),Object.freeze(e),e}var ig=class{constructor({fs:e,dir:r,gitdir:n,cache:i}){this.fs=e,this.cache=i,this.dir=r,this.gitdir=n,this.config=null;let a=this;this.ConstructEntry=class{constructor(o){this._fullpath=o,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return a.type(this)}async mode(){return a.mode(this)}async stat(){return a.stat(this)}async content(){return a.content(this)}async oid(){return a.oid(this)}}}async readdir(e){let r=e._fullpath,{fs:n,dir:i}=this,a=await n.readdir($.join(i,r));return a===null?null:a.map(s=>$.join(r,s))}async type(e){return e._type===!1&&await e.stat(),e._type}async mode(e){return e._mode===!1&&await e.stat(),e._mode}async stat(e){if(e._stat===!1){let{fs:r,dir:n}=this,i=await r.lstat(`${n}/${e._fullpath}`);if(!i)throw new Error(`ENOENT: no such file or directory, lstat '${e._fullpath}'`);let a=i.isDirectory()?"tree":"blob";a==="blob"&&!i.isFile()&&!i.isSymbolicLink()&&(a="special"),e._type=a,i=io(i),e._mode=i.mode,i.size===-1&&e._actualSize&&(i.size=e._actualSize),e._stat=i}return e._stat}async content(e){if(e._content===!1){let{fs:r,dir:n,gitdir:i}=this;if(await e.type()==="tree")e._content=void 0;else{let s=await(await this._getGitConfig(r,i)).get("core.autocrlf"),o=await r.read(`${n}/${e._fullpath}`,{autocrlf:s});e._actualSize=o.length,e._stat&&e._stat.size===-1&&(e._stat.size=e._actualSize),e._content=new Uint8Array(o)}}return e._content}async oid(e){if(e._oid===!1){let r=this,{fs:n,gitdir:i,cache:a}=this,s;await ct.acquire({fs:n,gitdir:i,cache:a},async function(o){let l=o.entriesMap.get(e._fullpath),c=await e.stat(),f=await(await r._getGitConfig(n,i)).get("core.filemode"),d=typeof process!="undefined"?process.platform!=="win32":!0;if(!l||Tf(c,l,f,d)){let h=await e.content();h===void 0?s=void 0:(s=await bi(ea.wrap({type:"blob",object:h})),l&&s===l.oid&&(!f||c.mode===l.mode)&&Tf(c,l,f,d)&&o.insert({filepath:e._fullpath,stats:c,oid:s}))}else s=l.oid}),e._oid=s}return e._oid}async _getGitConfig(e,r){return this.config?this.config:(this.config=await nt.get({fs:e,gitdir:r}),this.config)}};function yo(){let t=Object.create(null);return Object.defineProperty(t,jf,{value:function({fs:e,dir:r,gitdir:n,cache:i}){return new ig({fs:e,dir:r,gitdir:n,cache:i})}}),Object.freeze(t),t}function L4(t,e){let r=e-t;return Array.from({length:r},(n,i)=>t+i)}var Hx=typeof Array.prototype.flat=="undefined"?t=>t.reduce((e,r)=>e.concat(r),[]):t=>t.flat(),ag=class{constructor(){this.value=null}consider(e){e!=null&&(this.value===null?this.value=e:ec,reduce:s=async(l,c)=>{let u=Hx(c);return l!==void 0&&u.unshift(l),u},iterate:o=(l,c)=>Promise.all([...c].map(l))}){let l=i.map(h=>h[jf]({fs:t,dir:r,gitdir:n,cache:e})),c=new Array(l.length).fill("."),u=L4(0,l.length),f=async h=>{u.map(v=>{let y=h[v];h[v]=y&&new l[v].ConstructEntry(y)});let g=(await Promise.all(u.map(v=>{let y=h[v];return y?l[v].readdir(y):[]}))).map(v=>(v===null?[]:v)[Symbol.iterator]());return{entries:h,children:j4(g)}},d=async h=>{let{entries:p,children:g}=await f(h),v=p.find(b=>b&&b._fullpath)._fullpath,y=await a(v,p);if(y!==null){let b=await o(d,g);return b=b.filter(E=>E!==void 0),s(y,b)}};return d(c)}async function sg(t,e){let r=await t.readdir(e);r==null?await t.rm(e):r.length?await Promise.all(r.map(n=>{let i=$.join(e,n);return t.lstat(i).then(a=>{if(a)return a.isDirectory()?sg(t,i):t.rm(i)})})).then(()=>t.rmdir(e)):await t.rmdir(e)}function N4(t){return B4(t)&&yx(t.then)&&yx(t.catch)}function B4(t){return t&&typeof t=="object"}function yx(t){return typeof t=="function"}function wx(t){return N4((r=>{try{return r.readFile().catch(n=>n)}catch(n){return n}})(t))}var bx=["readFile","writeFile","mkdir","rmdir","unlink","stat","lstat","readdir","readlink","symlink"];function _x(t,e){if(wx(e))for(let r of bx)t[`_${r}`]=e[r].bind(e);else for(let r of bx)t[`_${r}`]=jm(e[r].bind(e));wx(e)?e.rm?t._rm=e.rm.bind(e):e.rmdir.length>1?t._rm=e.rmdir.bind(e):t._rm=sg.bind(null,t):e.rm?t._rm=jm(e.rm.bind(e)):e.rmdir.length>2?t._rm=jm(e.rmdir.bind(e)):t._rm=sg.bind(null,t)}var Q=class{constructor(e){if(typeof e._original_unwrapped_fs!="undefined")return e;let r=Object.getOwnPropertyDescriptor(e,"promises");r&&r.enumerable?_x(this,e.promises):_x(this,e),this._original_unwrapped_fs=e}async exists(e,r={}){try{return await this._stat(e),!0}catch(n){if(n.code==="ENOENT"||n.code==="ENOTDIR"||(n.code||"").includes("ENS"))return!1;throw console.log('Unhandled error in "FileSystem.exists()" function',n),n}}async read(e,r={}){try{let n=await this._readFile(e,r);if(r.autocrlf==="true")try{n=new TextDecoder("utf8",{fatal:!0}).decode(n),n=n.replace(/\r\n/g,` +`),n=new TextEncoder().encode(n)}catch(i){}return typeof n!="string"&&(n=Buffer.from(n)),n}catch(n){return null}}async write(e,r,n={}){try{await this._writeFile(e,r,n);return}catch(i){await this.mkdir(ao(e)),await this._writeFile(e,r,n)}}async mkdir(e,r=!1){try{await this._mkdir(e);return}catch(n){if(n===null||n.code==="EEXIST")return;if(r)throw n;if(n.code==="ENOENT"){let i=ao(e);if(i==="."||i==="/"||i===e)throw n;await this.mkdir(i),await this.mkdir(e,!0)}}}async rm(e){try{await this._unlink(e)}catch(r){if(r.code!=="ENOENT")throw r}}async rmdir(e,r){try{r&&r.recursive?await this._rm(e,r):await this._rmdir(e)}catch(n){if(n.code!=="ENOENT")throw n}}async readdir(e){try{let r=await this._readdir(e);return r.sort(Lf),r}catch(r){return r.code==="ENOTDIR"?null:[]}}async readdirDeep(e){let r=await this._readdir(e);return(await Promise.all(r.map(async i=>{let a=e+"/"+i;return(await this._stat(a)).isDirectory()?this.readdirDeep(a):a}))).reduce((i,a)=>i.concat(a),[])}async lstat(e){try{return await this._lstat(e)}catch(r){if(r.code==="ENOENT"||(r.code||"").includes("ENS"))return null;throw r}}async readlink(e,r={encoding:"buffer"}){try{let n=await this._readlink(e,r);return Buffer.isBuffer(n)?n:Buffer.from(n)}catch(n){if(n.code==="ENOENT"||(n.code||"").includes("ENS"))return null;throw n}}async writelink(e,r){return this._symlink(r.toString("utf8"),e)}};function P(t,e){if(e===void 0)throw new dr(t)}async function If(t,e){return!t&&!e?!1:t&&!e||!t&&e?!0:!(await t.type()==="tree"&&await e.type()==="tree"||await t.type()===await e.type()&&await t.mode()===await e.mode()&&await t.oid()===await e.oid())}async function Ux({fs:t,dir:e,gitdir:r=$.join(e,".git"),commit:n="HEAD",cache:i={}}){try{P("fs",t),P("dir",e),P("gitdir",r);let a=new Q(t),s=[Pr({ref:n}),yo(),Ya()],o=[];await ct.acquire({fs:a,gitdir:r,cache:i},async function(c){o=c.unmergedPaths});let l=await ra({fs:a,cache:i,dir:e,gitdir:r,trees:s,map:async function(c,[u,f,d]){let h=!await If(f,d),p=o.includes(c),g=!await If(d,u);if(h||p)return u?{path:c,mode:await u.mode(),oid:await u.oid(),type:await u.type(),content:await u.content()}:void 0;if(g)return!1;throw new ac(c)}});await ct.acquire({fs:a,gitdir:r,cache:i},async function(c){for(let u of l)if(u!==!1){if(!u){await a.rmdir(`${e}/${u.path}`,{recursive:!0}),c.delete({filepath:u.path});continue}if(u.type==="blob"){let f=new TextDecoder().decode(u.content);await a.write(`${e}/${u.path}`,f,{mode:u.mode}),c.insert({filepath:u.path,oid:u.oid,stage:0})}}})}catch(a){throw a.caller="git.abortMerge",a}}var na=class{static async isIgnored({fs:e,dir:r,gitdir:n=$.join(r,".git"),filepath:i}){if(Cf(i)===".git")return!0;if(i===".")return!1;let a="",s=$.join(n,"info","exclude");await e.exists(s)&&(a=await e.read(s,"utf8"));let o=[{gitignore:$.join(r,".gitignore"),filepath:i}],l=i.split("/").filter(Boolean);for(let u=1;u{let u=await(await nt.get({fs:o,gitdir:r})).get("core.autocrlf");return og({dir:e,gitdir:r,fs:o,filepath:n,index:l,force:a,parallel:s,autocrlf:u})})}catch(o){throw o.caller="git.add",o}}async function og({dir:t,gitdir:e,fs:r,filepath:n,index:i,force:a,parallel:s,autocrlf:o}){n=Array.isArray(n)?n:[n];let l=n.map(async d=>{if(!a&&await na.isIgnored({fs:r,dir:t,gitdir:e,filepath:d}))return;let h=await r.lstat($.join(t,d));if(!h)throw new je(d);if(h.isDirectory()){let p=await r.readdir($.join(t,d));if(s){let g=p.map(v=>og({dir:t,gitdir:e,fs:r,filepath:[$.join(d,v)],index:i,force:a,parallel:s,autocrlf:o}));await Promise.all(g)}else for(let g of p)await og({dir:t,gitdir:e,fs:r,filepath:[$.join(d,g)],index:i,force:a,parallel:s,autocrlf:o})}else{let p=h.isSymbolicLink()?await r.readlink($.join(t,d)).then(zx):await r.read($.join(t,d),{autocrlf:o});if(p===null)throw new je(d);let g=await mr({fs:r,gitdir:e,type:"blob",object:p});i.insert({filepath:d,stats:h,oid:g})}}),c=await Promise.allSettled(l),u=c.filter(d=>d.status==="rejected").map(d=>d.reason);if(u.length>1)throw new tc(u);if(u.length===1)throw u[0];return c.filter(d=>d.status==="fulfilled"&&d.value).map(d=>d.value)}async function oc({fs:t,gitdir:e,path:r}){return(await nt.get({fs:t,gitdir:e})).get(r)}function Wx(t,...e){for(let r of e)if(r)for(let n of Object.keys(r)){let i=r[n];i!==void 0&&(t[n]=i)}return t}async function ia({fs:t,gitdir:e,author:r,commit:n}){let i=Math.floor(Date.now()/1e3),a={name:await oc({fs:t,gitdir:e,path:"user.name"}),email:await oc({fs:t,gitdir:e,path:"user.email"})||"",timestamp:i,timezoneOffset:new Date(i*1e3).getTimezoneOffset()},s=Wx({},a,n?n.author:void 0,r);if(s.name!==void 0)return s}async function ho({fs:t,gitdir:e,author:r,committer:n,commit:i}){let a=Math.floor(Date.now()/1e3),s={name:await oc({fs:t,gitdir:e,path:"user.name"}),email:await oc({fs:t,gitdir:e,path:"user.email"})||"",timestamp:a,timezoneOffset:new Date(a*1e3).getTimezoneOffset()},o=Wx({},s,i?i.committer:void 0,r,n);if(o.name!==void 0)return o}async function qx({fs:t,cache:e,gitdir:r,oid:n}){let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n});if(i==="tag")return n=Rr.from(a).parse().object,qx({fs:t,cache:e,gitdir:r,oid:n});if(i!=="commit")throw new tr(n,i,"commit");return{commit:pr.from(a),oid:n}}async function po({fs:t,cache:e,gitdir:r,oid:n}){let{commit:i,oid:a}=await qx({fs:t,cache:e,gitdir:r,oid:n});return{oid:a,commit:i.parse(),payload:i.withoutSignature()}}async function Nf({fs:t,cache:e,onSign:r,gitdir:n,message:i,author:a,committer:s,signingKey:o,amend:l=!1,dryRun:c=!1,noUpdateBranch:u=!1,ref:f,parent:d,tree:h}){let p=!1;f||(f=await V.resolve({fs:t,gitdir:n,ref:"HEAD",depth:2}));let g,v;try{g=await V.resolve({fs:t,gitdir:n,ref:f}),v=await po({fs:t,gitdir:n,oid:g,cache:{}})}catch(E){p=!0}if(l&&p)throw new sc(f);let y=l?await ia({fs:t,gitdir:n,author:a,commit:v.commit}):await ia({fs:t,gitdir:n,author:a});if(!y)throw new zt("author");let b=l?await ho({fs:t,gitdir:n,author:y,committer:s,commit:v.commit}):await ho({fs:t,gitdir:n,author:y,committer:s});if(!b)throw new zt("committer");return ct.acquire({fs:t,gitdir:n,cache:e,allowUnmerged:!1},async function(E){let A=Fx(E.entries).get(".");if(h||(h=await Yx({fs:t,gitdir:n,inode:A,dryRun:c})),d?d=await Promise.all(d.map(x=>V.resolve({fs:t,gitdir:n,ref:x}))):l?d=v.commit.parent:d=g?[g]:[],!i)if(l)i=v.commit.message;else throw new dr("message");let k=pr.from({tree:h,parent:d,author:y,committer:b,message:i});o&&(k=await pr.sign(k,r,o));let w=await mr({fs:t,gitdir:n,type:"commit",object:k.toObject(),dryRun:c});return!u&&!c&&await V.writeRef({fs:t,gitdir:n,ref:f,value:w}),w})}async function Yx({fs:t,gitdir:e,inode:r,dryRun:n}){let i=r.children;for(let l of i)l.type==="tree"&&(l.metadata.mode="040000",l.metadata.oid=await Yx({fs:t,gitdir:e,inode:l,dryRun:n}));let a=i.map(l=>({mode:l.metadata.mode,path:l.basename,oid:l.metadata.oid,type:l.type})),s=hr.from(a);return await mr({fs:t,gitdir:e,type:"tree",object:s.toObject(),dryRun:n})}async function lc({fs:t,cache:e,gitdir:r,oid:n,filepath:i}){if(i.startsWith("/"))throw new ta("leading-slash");if(i.endsWith("/"))throw new ta("trailing-slash");let a=n,s=await fo({fs:t,cache:e,gitdir:r,oid:n}),o=s.tree;if(i==="")n=s.oid;else{let l=i.split("/");n=await Xx({fs:t,cache:e,gitdir:r,tree:o,pathArray:l,oid:a,filepath:i})}return n}async function Xx({fs:t,cache:e,gitdir:r,tree:n,pathArray:i,oid:a,filepath:s}){let o=i.shift();for(let l of n)if(l.path===o){if(i.length===0)return l.oid;{let{type:c,object:u}=await Ge({fs:t,cache:e,gitdir:r,oid:l.oid});if(c!=="tree")throw new tr(a,c,"tree",s);return n=hr.from(u),Xx({fs:t,cache:e,gitdir:r,tree:n,pathArray:i,oid:a,filepath:s})}}throw new je(`file or directory found at "${a}:${s}"`)}async function wo({fs:t,cache:e,gitdir:r,oid:n,filepath:i=void 0}){i!==void 0&&(n=await lc({fs:t,cache:e,gitdir:r,oid:n,filepath:i}));let{tree:a,oid:s}=await fo({fs:t,cache:e,gitdir:r,oid:n});return{oid:s,tree:a.entries()}}async function cc({fs:t,gitdir:e,tree:r}){let n=hr.from(r).toObject();return await mr({fs:t,gitdir:e,type:"tree",object:n,format:"content"})}async function z4({fs:t,cache:e,onSign:r,gitdir:n,ref:i,oid:a,note:s,force:o,author:l,committer:c,signingKey:u}){let f;try{f=await V.resolve({gitdir:n,fs:t,ref:i})}catch(y){if(!(y instanceof je))throw y}let h=(await wo({fs:t,cache:e,gitdir:n,oid:f||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;if(o)h=h.filter(y=>y.path!==a);else for(let y of h)if(y.path===a)throw new pn("note",a);typeof s=="string"&&(s=Buffer.from(s,"utf8"));let p=await mr({fs:t,gitdir:n,type:"blob",object:s,format:"content"});h.push({mode:"100644",path:a,oid:p,type:"blob"});let g=await cc({fs:t,gitdir:n,tree:h});return await Nf({fs:t,cache:e,onSign:r,gitdir:n,ref:i,tree:g,parent:f&&[f],message:`Note added by 'isomorphic-git addNote' +`,author:l,committer:c,signingKey:u})}async function Kx({fs:t,onSign:e,dir:r,gitdir:n=$.join(r,".git"),ref:i="refs/notes/commits",oid:a,note:s,force:o,author:l,committer:c,signingKey:u,cache:f={}}){try{P("fs",t),P("gitdir",n),P("oid",a),P("note",s),u&&P("onSign",e);let d=new Q(t),h=await ia({fs:d,gitdir:n,author:l});if(!h)throw new zt("author");let p=await ho({fs:d,gitdir:n,author:h,committer:c});if(!p)throw new zt("committer");return await z4({fs:new Q(d),cache:f,onSign:e,gitdir:n,ref:i,oid:a,note:s,force:o,author:h,committer:p,signingKey:u})}catch(d){throw d.caller="git.addNote",d}}async function Zx({fs:t,gitdir:e,remote:r,url:n,force:i}){if(r!==zn.clean(r))throw new mn(r,zn.clean(r));let a=await nt.get({fs:t,gitdir:e});if(!i&&(await a.getSubsections("remote")).includes(r)&&n!==await a.get(`remote.${r}.url`))throw new pn("remote",r);await a.set(`remote.${r}.url`,n),await a.set(`remote.${r}.fetch`,`+refs/heads/*:refs/remotes/${r}/*`),await nt.save({fs:t,gitdir:e,config:a})}async function Jx({fs:t,dir:e,gitdir:r=$.join(e,".git"),remote:n,url:i,force:a=!1}){try{return P("fs",t),P("gitdir",r),P("remote",n),P("url",i),await Zx({fs:new Q(t),gitdir:r,remote:n,url:i,force:a})}catch(s){throw s.caller="git.addRemote",s}}async function V4({fs:t,cache:e,onSign:r,gitdir:n,ref:i,tagger:a,message:s=i,gpgsig:o,object:l,signingKey:c,force:u=!1}){if(i=i.startsWith("refs/tags/")?i:`refs/tags/${i}`,!u&&await V.exists({fs:t,gitdir:n,ref:i}))throw new pn("tag",i);let f=await V.resolve({fs:t,gitdir:n,ref:l||"HEAD"}),{type:d}=await Ge({fs:t,cache:e,gitdir:n,oid:f}),h=Rr.from({object:f,type:d,tag:i.replace("refs/tags/",""),tagger:a,message:s,gpgsig:o});c&&(h=await Rr.sign(h,r,c));let p=await mr({fs:t,gitdir:n,type:"tag",object:h.toObject()});await V.writeRef({fs:t,gitdir:n,ref:i,value:p})}async function Qx({fs:t,onSign:e,dir:r,gitdir:n=$.join(r,".git"),ref:i,tagger:a,message:s=i,gpgsig:o,object:l,signingKey:c,force:u=!1,cache:f={}}){try{P("fs",t),P("gitdir",n),P("ref",i),c&&P("onSign",e);let d=new Q(t),h=await ia({fs:d,gitdir:n,author:a});if(!h)throw new zt("tagger");return await V4({fs:d,cache:f,onSign:e,gitdir:n,ref:i,tagger:h,message:s,gpgsig:o,object:l,signingKey:c,force:u})}catch(d){throw d.caller="git.annotatedTag",d}}async function W4({fs:t,gitdir:e,ref:r,object:n,checkout:i=!1,force:a=!1}){if(r!==zn.clean(r))throw new mn(r,zn.clean(r));let s=`refs/heads/${r}`;if(!a&&await V.exists({fs:t,gitdir:e,ref:s}))throw new pn("branch",r,!1);let o;try{o=await V.resolve({fs:t,gitdir:e,ref:n||"HEAD"})}catch(l){}o&&await V.writeRef({fs:t,gitdir:e,ref:s,value:o}),i&&await V.writeSymbolicRef({fs:t,gitdir:e,ref:"HEAD",value:s})}async function eS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n,object:i,checkout:a=!1,force:s=!1}){try{return P("fs",t),P("gitdir",r),P("ref",n),await W4({fs:new Q(t),gitdir:r,ref:n,object:i,checkout:a,force:s})}catch(o){throw o.caller="git.branch",o}}var tS=(t,e)=>t==="."||e==null||e.length===0||e==="."?!0:e.length>=t.length?e.startsWith(t):t.startsWith(e);async function fg({fs:t,cache:e,onProgress:r,onPostCheckout:n,dir:i,gitdir:a,remote:s,ref:o,filepaths:l,noCheckout:c,noUpdateHead:u,dryRun:f,force:d,track:h=!0,nonBlocking:p=!1,batchSize:g=100}){let v;if(n)try{v=await V.resolve({fs:t,gitdir:a,ref:"HEAD"})}catch(b){v="0000000000000000000000000000000000000000"}let y;try{y=await V.resolve({fs:t,gitdir:a,ref:o})}catch(b){if(o==="HEAD")throw b;let E=`${s}/${o}`;if(y=await V.resolve({fs:t,gitdir:a,ref:E}),h){let S=await nt.get({fs:t,gitdir:a});await S.set(`branch.${o}.remote`,s),await S.set(`branch.${o}.merge`,`refs/heads/${o}`),await nt.save({fs:t,gitdir:a,config:S})}await V.writeRef({fs:t,gitdir:a,ref:`refs/heads/${o}`,value:y})}if(!c){let b;try{b=await q4({fs:t,cache:e,onProgress:r,dir:i,gitdir:a,ref:o,force:d,filepaths:l})}catch(w){throw w instanceof je&&w.data.what===y?new Kl(o,y):w}let E=b.filter(([w])=>w==="conflict").map(([w,x])=>x);if(E.length>0)throw new Xl(E);let S=b.filter(([w])=>w==="error").map(([w,x])=>x);if(S.length>0)throw new pe(S.join(", "));if(f){n&&await n({previousHead:v,newHead:y,type:l!=null&&l.length>0?"file":"branch"});return}let A=0,k=b.length;if(await ct.acquire({fs:t,gitdir:a,cache:e},async function(w){await Promise.all(b.filter(([x])=>x==="delete"||x==="delete-index").map(async function([x,_]){let T=`${i}/${_}`;x==="delete"&&await t.rm(T),w.delete({filepath:_}),r&&await r({phase:"Updating workdir",loaded:++A,total:k})}))}),await ct.acquire({fs:t,gitdir:a,cache:e},async function(w){for(let[x,_]of b)if(x==="rmdir"||x==="rmdir-index"){let T=`${i}/${_}`;try{x==="rmdir"&&await t.rmdir(T),w.delete({filepath:_}),r&&await r({phase:"Updating workdir",loaded:++A,total:k})}catch(C){if(C.code==="ENOTEMPTY")console.log(`Did not delete ${_} because directory is not empty`);else throw C}}}),await Promise.all(b.filter(([w])=>w==="mkdir"||w==="mkdir-index").map(async function([w,x]){let _=`${i}/${x}`;await t.mkdir(_),r&&await r({phase:"Updating workdir",loaded:++A,total:k})})),p){let w=b.filter(([_])=>_==="create"||_==="create-index"||_==="update"||_==="mkdir-index"),x=await xx("Update Working Dir",w.map(([_,T,C,I,L])=>()=>X4({fs:t,cache:e,gitdir:a,dir:i},[_,T,C,I,L])),r,g);await ct.acquire({fs:t,gitdir:a,cache:e,allowUnmerged:!0},async function(_){await xx("Update Index",x.map(([T,C,I])=>()=>Y4({index:_,fullpath:T,oid:C,stats:I})),r,g)})}else await ct.acquire({fs:t,gitdir:a,cache:e,allowUnmerged:!0},async function(w){await Promise.all(b.filter(([x])=>x==="create"||x==="create-index"||x==="update"||x==="mkdir-index").map(async function([x,_,T,C,I]){let L=`${i}/${_}`;try{if(x!=="create-index"&&x!=="mkdir-index"){let{object:J}=await Ge({fs:t,cache:e,gitdir:a,oid:T});if(I&&await t.rm(L),C===33188)await t.write(L,J);else if(C===33261)await t.write(L,J,{mode:511});else if(C===40960)await t.writelink(L,J);else throw new pe(`Invalid mode 0o${C.toString(8)} detected in blob ${T}`)}let F=await t.lstat(L);C===33261&&(F.mode=493),x==="mkdir-index"&&(F.mode=57344),w.insert({filepath:_,stats:F,oid:T}),r&&await r({phase:"Updating workdir",loaded:++A,total:k})}catch(F){console.log(F)}}))});n&&await n({previousHead:v,newHead:y,type:l!=null&&l.length>0?"file":"branch"})}if(!u){let b=await V.expand({fs:t,gitdir:a,ref:o});b.startsWith("refs/heads")?await V.writeSymbolicRef({fs:t,gitdir:a,ref:"HEAD",value:b}):await V.writeRef({fs:t,gitdir:a,ref:"HEAD",value:y})}}async function q4({fs:t,cache:e,onProgress:r,dir:n,gitdir:i,ref:a,force:s,filepaths:o}){let l=0;return ra({fs:t,cache:e,dir:n,gitdir:i,trees:[Pr({ref:a}),yo(),Ya()],map:async function(c,[u,f,d]){if(c===".")return;if(o&&!o.some(p=>tS(c,p)))return null;switch(r&&await r({phase:"Analyzing workdir",loaded:++l}),[!!d,!!u,!!f].map(Number).join("")){case"000":return;case"001":return s&&o&&o.includes(c)?["delete",c]:void 0;case"010":switch(await u.type()){case"tree":return["mkdir",c];case"blob":return["create",c,await u.oid(),await u.mode()];case"commit":return["mkdir-index",c,await u.oid(),await u.mode()];default:return["error",`new entry Unhandled type ${await u.type()}`]}case"011":switch(`${await u.type()}-${await f.type()}`){case"tree-tree":return;case"tree-blob":case"blob-tree":return["conflict",c];case"blob-blob":return await u.oid()!==await f.oid()?s?["update",c,await u.oid(),await u.mode(),await u.mode()!==await f.mode()]:["conflict",c]:await u.mode()!==await f.mode()?s?["update",c,await u.oid(),await u.mode(),!0]:["conflict",c]:["create-index",c,await u.oid(),await u.mode()];case"commit-tree":return;case"commit-blob":return["conflict",c];default:return["error",`new entry Unhandled type ${u.type}`]}case"100":return["delete-index",c];case"101":switch(await d.type()){case"tree":return["rmdir-index",c];case"blob":return await d.oid()!==await f.oid()?s?["delete",c]:["conflict",c]:["delete",c];case"commit":return["rmdir-index",c];default:return["error",`delete entry Unhandled type ${await d.type()}`]}case"110":case"111":switch(`${await d.type()}-${await u.type()}`){case"tree-tree":return;case"blob-blob":{if(await d.oid()===await u.oid()&&await d.mode()===await u.mode()&&!s)return;if(f){if(await f.oid()!==await d.oid()&&await f.oid()!==await u.oid())return s?["update",c,await u.oid(),await u.mode(),await u.mode()!==await f.mode()]:["conflict",c]}else if(s)return["update",c,await u.oid(),await u.mode(),await u.mode()!==await d.mode()];return await u.mode()!==await d.mode()?["update",c,await u.oid(),await u.mode(),!0]:await u.oid()!==await d.oid()?["update",c,await u.oid(),await u.mode(),!1]:void 0}case"tree-blob":return["update-dir-to-blob",c,await u.oid()];case"blob-tree":return["update-blob-to-tree",c];case"commit-commit":return["mkdir-index",c,await u.oid(),await u.mode()];default:return["error",`update entry Unhandled type ${await d.type()}-${await u.type()}`]}}},reduce:async function(c,u){return u=Hx(u),c?c&&c[0]==="rmdir"?(u.push(c),u):(u.unshift(c),u):u}})}async function Y4({index:t,fullpath:e,stats:r,oid:n}){try{t.insert({filepath:e,stats:r,oid:n})}catch(i){console.warn(`Error inserting ${e} into index:`,i)}}async function X4({fs:t,cache:e,gitdir:r,dir:n},[i,a,s,o,l]){let c=`${n}/${a}`;if(i!=="create-index"&&i!=="mkdir-index"){let{object:f}=await Ge({fs:t,cache:e,gitdir:r,oid:s});if(l&&await t.rm(c),o===33188)await t.write(c,f);else if(o===33261)await t.write(c,f,{mode:511});else if(o===40960)await t.writelink(c,f);else throw new pe(`Invalid mode 0o${o.toString(8)} detected in blob ${s}`)}let u=await t.lstat(c);return o===33261&&(u.mode=493),i==="mkdir-index"&&(u.mode=57344),[a,s,u]}async function xx(t,e,r,n){let i=[];try{for(let a=0;al());(await Promise.allSettled(s)).forEach(l=>{l.status==="fulfilled"&&i.push(l.value)}),r&&await r({phase:"Updating workdir",loaded:a+s.length,total:e.length})}return i}catch(a){console.error(`Error during ${t}: ${a}`)}return i}async function dg({fs:t,onProgress:e,onPostCheckout:r,dir:n,gitdir:i=$.join(n,".git"),remote:a="origin",ref:s,filepaths:o,noCheckout:l=!1,noUpdateHead:c=s===void 0,dryRun:u=!1,force:f=!1,track:d=!0,cache:h={},nonBlocking:p=!1,batchSize:g=100}){try{P("fs",t),P("dir",n),P("gitdir",i);let v=s||"HEAD";return await fg({fs:new Q(t),cache:h,onProgress:e,onPostCheckout:r,dir:n,gitdir:i,remote:a,ref:v,filepaths:o,noCheckout:l,noUpdateHead:c,dryRun:u,force:f,track:d,nonBlocking:p,batchSize:g})}catch(v){throw v.caller="git.checkout",v}}var K4=new RegExp("^refs/(heads/|tags/|remotes/)?(.*)");function za(t){let e=K4.exec(t);return e?e[1]==="remotes/"&&t.endsWith("/HEAD")?e[2].slice(0,-5):e[2]:t}async function sa({fs:t,gitdir:e,fullname:r=!1,test:n=!1}){let i=await V.resolve({fs:t,gitdir:e,ref:"HEAD",depth:2});if(n)try{await V.resolve({fs:t,gitdir:e,ref:i})}catch(a){return}if(i.startsWith("refs/"))return r?i:za(i)}function Z4(t){return t=t.replace(/^git@([^:]+):/,"https://$1/"),t=t.replace(/^ssh:\/\//,"https://"),t}function rS({username:t="",password:e=""}){return`Basic ${Buffer.from(`${t}:${e}`).toString("base64")}`}async function uc(t,e){let r=jx(t);for(;;){let{value:n,done:i}=await r.next();if(n&&await e(n),i)break}r.return&&r.return()}async function $f(t){let e=0,r=[];await uc(t,a=>{r.push(a),e+=a.byteLength});let n=new Uint8Array(e),i=0;for(let a of r)n.set(a,i),i+=a.byteLength;return n}function Sx(t){let e=t.match(/^https?:\/\/([^/]+)@/);if(e==null)return{url:t,auth:{}};e=e[1];let[r,n]=e.split(":");return t=t.replace(`${e}@`,""),{url:t,auth:{username:r,password:n}}}function lg(t,e){let r=e.toString(16);return"0".repeat(t-r.length)+r}var Qe=class{static flush(){return Buffer.from("0000","utf8")}static delim(){return Buffer.from("0001","utf8")}static encode(e){typeof e=="string"&&(e=Buffer.from(e));let r=e.length+4,n=lg(4,r);return Buffer.concat([Buffer.from(n,"utf8"),e])}static streamReader(e){let r=new Mf(e);return async function(){try{let i=await r.read(4);if(i==null)return!0;if(i=parseInt(i.toString("utf8"),16),i===0||i===1)return null;let a=await r.read(i-4);return a==null?!0:a}catch(i){return e.error=i,!0}}}};async function Ex(t){let e={},r;for(;r=await t(),r!==!0;){if(r===null)continue;r=r.toString("utf8").replace(/\n$/,"");let n=r.indexOf("=");if(n>-1){let i=r.slice(0,n),a=r.slice(n+1);e[i]=a}else e[r]=!0}return{protocolVersion:2,capabilities2:e}}async function Ax(t,{service:e}){let r=new Set,n=new Map,i=new Map,a=Qe.streamReader(t),s=await a();for(;s===null;)s=await a();if(s===!0)throw new Zl;if(s.includes("version 2"))return Ex(a);if(s.toString("utf8").replace(/\n$/,"")!==`# service=${e}`)throw new Va(`# service=${e}\\n`,s.toString("utf8"));let o=await a();for(;o===null;)o=await a();if(o===!0)return{capabilities:r,refs:n,symrefs:i};if(o=o.toString("utf8"),o.includes("version 2"))return Ex(a);let[l,c]=Wm(o,"\0","\\x00");if(c.split(" ").map(u=>r.add(u)),l!=="0000000000000000000000000000000000000000 capabilities^{}"){let[u,f]=Wm(l," "," ");for(n.set(f,u);;){let d=await a();if(d===!0)break;if(d!==null){let[h,p]=Wm(d.toString("utf8")," "," ");n.set(p,h)}}}for(let u of r)if(u.startsWith("symref=")){let f=u.match(/symref=([^:]+):(.*)/);f.length===3&&i.set(f[1],f[2])}return{protocolVersion:1,capabilities:r,refs:n,symrefs:i}}function Wm(t,e,r){let n=t.trim().split(e);if(n.length!==2)throw new Va(`Two strings separated by '${r}'`,t.toString("utf8"));return n}var kx=(t,e)=>t.endsWith("?")?`${t}${e}`:`${t}/${e.replace(/^https?:\/\//,"")}`,Tx=(t,e)=>{(e.username||e.password)&&(t.Authorization=rS(e)),e.headers&&Object.assign(t,e.headers)},qm=async t=>{try{let e=Buffer.from(await $f(t.body)),r=e.toString("utf8");return{preview:r.length<256?r:r.slice(0,256)+"...",response:r,data:e}}catch(e){return{}}},mo=class{static async capabilities(){return["discover","connect"]}static async discover({http:e,onProgress:r,onAuth:n,onAuthSuccess:i,onAuthFailure:a,corsProxy:s,service:o,url:l,headers:c,protocolVersion:u}){let{url:f,auth:d}=Sx(l),h=s?kx(s,f):f;(d.username||d.password)&&(c.Authorization=rS(d)),u===2&&(c["Git-Protocol"]="version=2");let p,g,v=!1;do if(p=await e.request({onProgress:r,method:"GET",url:`${h}/info/refs?service=${o}`,headers:c}),g=!1,p.statusCode===401||p.statusCode===203){let y=v?a:n;if(y){if(d=await y(f,{...d,headers:{...c}}),d&&d.cancel)throw new uo;d&&(Tx(c,d),v=!0,g=!0)}}else p.statusCode===200&&v&&i&&await i(f,d);while(g);if(p.statusCode!==200){let{response:y}=await qm(p);throw new so(p.statusCode,p.statusMessage,y)}if(p.headers["content-type"]===`application/x-${o}-advertisement`){let y=await Ax(p.body,{service:o});return y.auth=d,y}else{let{preview:y,response:b,data:E}=await qm(p);try{let S=await Ax([E],{service:o});return S.auth=d,S}catch(S){throw new rc(y,b)}}}static async connect({http:e,onProgress:r,corsProxy:n,service:i,url:a,auth:s,body:o,headers:l}){let c=Sx(a);c&&(a=c.url),n&&(a=kx(n,a)),l["content-type"]=`application/x-${i}-request`,l.accept=`application/x-${i}-result`,Tx(l,s);let u=await e.request({onProgress:r,method:"POST",url:`${a}/${i}`,body:o,headers:l});if(u.statusCode!==200){let{response:f}=qm(u);throw new so(u.statusCode,u.statusMessage,f)}return u}};function J4({url:t}){if(t.startsWith("git@"))return{transport:"ssh",address:t};let e=t.match(/(\w+)(:\/\/|::)(.*)/);if(e!==null){if(e[2]==="://")return{transport:e[1],address:e[0]};if(e[2]==="::")return{transport:e[1],address:e[3]}}}var go=class{static getRemoteHelperFor({url:e}){let r=new Map;r.set("http",mo),r.set("https",mo);let n=J4({url:e});if(!n)throw new ic(e);if(r.has(n.transport))return r.get(n.transport);throw new nc(e,n.transport,n.transport==="ssh"?Z4(e):void 0)}},Ga=null,Wa=class{static async read({fs:e,gitdir:r}){Ga===null&&(Ga=new zl);let n=$.join(r,"shallow"),i=new Set;return await Ga.acquire(n,async function(){let a=await e.read(n,{encoding:"utf8"});if(a===null||a.trim()==="")return i;a.trim().split(` +`).map(s=>i.add(s))}),i}static async write({fs:e,gitdir:r,oids:n}){Ga===null&&(Ga=new zl);let i=$.join(r,"shallow");if(n.size>0){let a=[...n].join(` +`)+` +`;await Ga.acquire(i,async function(){await e.write(i,a,{encoding:"utf8"})})}else await Ga.acquire(i,async function(){await e.rm(i)})}};async function Q4({fs:t,gitdir:e,oid:r}){let n=`objects/${r.slice(0,2)}/${r.slice(2)}`;return t.exists(`${e}/${n}`)}async function eD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:i}){let a=await t.readdir($.join(r,"objects/pack"));a=a.filter(s=>s.endsWith(".idx"));for(let s of a){let o=`${r}/objects/pack/${s}`,l=await ug({fs:t,cache:e,filename:o,getExternalRefDelta:i});if(l.error)throw new pe(l.error);if(l.offsets.has(n))return!0}return!1}async function Cx({fs:t,cache:e,gitdir:r,oid:n,format:i="content"}){let a=o=>Ge({fs:t,cache:e,gitdir:r,oid:o}),s=await Q4({fs:t,gitdir:r,oid:n});return s||(s=await eD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:a})),s}function tD(t){let i="5041434b"+"00000002"+"00000000";return t.slice(0,12).toString("hex")===i}function nS(t,e){let r=t.map(n=>n.split("=",1)[0]);return e.filter(n=>{let i=n.split("=",1)[0];return r.includes(i)})}var Bf={name:"isomorphic-git",version:"1.32.2",agent:"git/isomorphic-git@1.32.2"},ro=class{constructor(){this._queue=[]}write(e){if(this._ended)throw Error("You cannot write to a FIFO that has already been ended!");if(this._waiting){let r=this._waiting;this._waiting=null,r({value:e})}else this._queue.push(e)}end(){if(this._ended=!0,this._waiting){let e=this._waiting;this._waiting=null,e({done:!0})}}destroy(e){this.error=e,this.end()}async next(){if(this._queue.length>0)return{value:this._queue.shift()};if(this._ended)return{done:!0};if(this._waiting)throw Error("You cannot call read until the previous call to read has returned!");return new Promise(e=>{this._waiting=e})}};function rD(t){let e=t.indexOf("\r"),r=t.indexOf(` +`);return e===-1&&r===-1?-1:e===-1?r+1:r===-1?e+1:r===e+1?r+1:Math.min(e,r)+1}function iS(t){let e=new ro,r="";return(async()=>(await uc(t,n=>{for(n=n.toString("utf8"),r+=n;;){let i=rD(r);if(i===-1)break;e.write(r.slice(0,i)),r=r.slice(i)}}),r.length>0&&e.write(r),e.end()))(),e}var Ff=class{static demux(e){let r=Qe.streamReader(e),n=new ro,i=new ro,a=new ro,s=async function(){let o=await r();if(o===null)return s();if(o===!0){n.end(),a.end(),e.error?i.destroy(e.error):i.end();return}switch(o[0]){case 1:{i.write(o.slice(1));break}case 2:{a.write(o.slice(1));break}case 3:{let l=o.slice(1);a.write(l),n.end(),a.end(),i.destroy(new Error(l.toString("utf8")));return}default:n.write(o)}s()};return s(),{packetlines:n,packfile:i,progress:a}}};async function nD(t){let{packetlines:e,packfile:r,progress:n}=Ff.demux(t),i=[],a=[],s=[],o=!1,l=!1;return new Promise((c,u)=>{uc(e,f=>{let d=f.toString("utf8").trim();if(d.startsWith("shallow")){let h=d.slice(-41).trim();h.length!==40&&u(new Qi(h)),i.push(h)}else if(d.startsWith("unshallow")){let h=d.slice(-41).trim();h.length!==40&&u(new Qi(h)),a.push(h)}else if(d.startsWith("ACK")){let[,h,p]=d.split(" ");s.push({oid:h,status:p}),p||(l=!0)}else d.startsWith("NAK")?(o=!0,l=!0):(l=!0,o=!0);l&&(t.error?u(t.error):c({shallows:i,unshallows:a,acks:s,nak:o,packfile:r,progress:n}))}).finally(()=>{l||(t.error?u(t.error):c({shallows:i,unshallows:a,acks:s,nak:o,packfile:r,progress:n}))})})}function iD({capabilities:t=[],wants:e=[],haves:r=[],shallows:n=[],depth:i=null,since:a=null,exclude:s=[]}){let o=[];e=[...new Set(e)];let l=` ${t.join(" ")}`;for(let c of e)o.push(Qe.encode(`want ${c}${l} +`)),l="";for(let c of n)o.push(Qe.encode(`shallow ${c} +`));i!==null&&o.push(Qe.encode(`deepen ${i} +`)),a!==null&&o.push(Qe.encode(`deepen-since ${Math.floor(a.valueOf()/1e3)} +`));for(let c of s)o.push(Qe.encode(`deepen-not ${c} +`));o.push(Qe.flush());for(let c of r)o.push(Qe.encode(`have ${c} +`));return o.push(Qe.encode(`done +`)),o}async function hg({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,gitdir:l,ref:c,remoteRef:u,remote:f,url:d,corsProxy:h,depth:p=null,since:g=null,exclude:v=[],relative:y=!1,tags:b=!1,singleBranch:E=!1,headers:S={},prune:A=!1,pruneTags:k=!1}){let w=c||await sa({fs:t,gitdir:l,test:!0}),x=await nt.get({fs:t,gitdir:l}),_=f||w&&await x.get(`branch.${w}.remote`)||"origin",T=d||await x.get(`remote.${_}.url`);if(typeof T=="undefined")throw new dr("remote OR url");let C=u||w&&await x.get(`branch.${w}.merge`)||c||"HEAD";h===void 0&&(h=await x.get("http.corsProxy"));let I=go.getRemoteHelperFor({url:T}),L=await I.discover({http:r,onAuth:a,onAuthSuccess:s,onAuthFailure:o,corsProxy:h,service:"git-upload-pack",url:T,headers:S,protocolVersion:1}),F=L.auth,J=L.refs;if(J.size===0)return{defaultBranch:null,fetchHead:null,fetchHeadDescription:null};if(p!==null&&!L.capabilities.has("shallow"))throw new Ji("shallow","depth");if(g!==null&&!L.capabilities.has("deepen-since"))throw new Ji("deepen-since","since");if(v.length>0&&!L.capabilities.has("deepen-not"))throw new Ji("deepen-not","exclude");if(y===!0&&!L.capabilities.has("deepen-relative"))throw new Ji("deepen-relative","relative");let{oid:de,fullref:le}=V.resolveAgainstMap({ref:C,map:J});for(let U of J.keys())U===le||U==="HEAD"||U.startsWith("refs/heads/")||b&&U.startsWith("refs/tags/")||J.delete(U);let ce=nS([...L.capabilities],["multi_ack_detailed","no-done","side-band-64k","ofs-delta",`agent=${Bf.agent}`]);y&&ce.push("deepen-relative");let Te=E?[de]:J.values(),ne=E?[w]:await V.listRefs({fs:t,gitdir:l,filepath:"refs"}),N=[];for(let U of ne)try{U=await V.expand({fs:t,gitdir:l,ref:U});let Je=await V.resolve({fs:t,gitdir:l,ref:U});await Cx({fs:t,cache:e,gitdir:l,oid:Je})&&N.push(Je)}catch(Je){}N=[...new Set(N)];let q=await Wa.read({fs:t,gitdir:l}),B=L.capabilities.has("shallow")?[...q]:[],Fe=iD({capabilities:ce,wants:Te,haves:N,shallows:B,depth:p,since:g,exclude:v}),lr=Buffer.from(await $f(Fe)),Ut=await I.connect({http:r,onProgress:n,corsProxy:h,service:"git-upload-pack",url:T,auth:F,body:[lr],headers:S}),X=await nD(Ut.body);Ut.headers&&(X.headers=Ut.headers);for(let U of X.shallows)if(!q.has(U))try{let{object:Je}=await Ge({fs:t,cache:e,gitdir:l,oid:U}),j=new pr(Je),Z=await Promise.all(j.headers().parent.map(qe=>Cx({fs:t,cache:e,gitdir:l,oid:qe})));Z.length===0||Z.every(qe=>qe)||q.add(U)}catch(Je){q.add(U)}for(let U of X.unshallows)q.delete(U);if(await Wa.write({fs:t,gitdir:l,oids:q}),E){let U=new Map([[le,de]]),Je=new Map,j=10,Z=le;for(;j--;){let Rt=L.symrefs.get(Z);if(Rt===void 0)break;Je.set(Z,Rt),Z=Rt}let Se=J.get(Z);Se&&U.set(Z,Se);let{pruned:qe}=await V.updateRemoteRefs({fs:t,gitdir:l,remote:_,refs:U,symrefs:Je,tags:b,prune:A});A&&(X.pruned=qe)}else{let{pruned:U}=await V.updateRemoteRefs({fs:t,gitdir:l,remote:_,refs:J,symrefs:L.symrefs,tags:b,prune:A,pruneTags:k});A&&(X.pruned=U)}if(X.HEAD=L.symrefs.get("HEAD"),X.HEAD===void 0){let{oid:U}=V.resolveAgainstMap({ref:"HEAD",map:J});for(let[Je,j]of J.entries())if(Je!=="HEAD"&&j===U){X.HEAD=Je;break}}let Oe=le.startsWith("refs/tags")?"tag":"branch";if(X.FETCH_HEAD={oid:de,description:`${Oe} '${za(le)}' of ${T}`},n||i){let U=iS(X.progress);uc(U,async Je=>{if(i&&await i(Je),n){let j=Je.match(/([^:]*).*\((\d+?)\/(\d+?)\)/);j&&await n({phase:j[1].trim(),loaded:parseInt(j[2],10),total:parseInt(j[3],10)})}})}let De=Buffer.from(await $f(X.packfile));if(Ut.body.error)throw Ut.body.error;let Pt=De.slice(-20).toString("hex"),Le={defaultBranch:X.HEAD,fetchHead:X.FETCH_HEAD.oid,fetchHeadDescription:X.FETCH_HEAD.description};if(X.headers&&(Le.headers=X.headers),A&&(Le.pruned=X.pruned),Pt!==""&&!tD(De)){Le.packfile=`objects/pack/pack-${Pt}.pack`;let U=$.join(l,Le.packfile);await t.write(U,De);let Je=Z=>Ge({fs:t,cache:e,gitdir:l,oid:Z}),j=await ql.fromPack({pack:De,getExternalRefDelta:Je,onProgress:n});await t.write(U.replace(/\.pack$/,".idx"),await j.toBuffer())}return Le}async function aS({fs:t,bare:e=!1,dir:r,gitdir:n=e?r:$.join(r,".git"),defaultBranch:i="master"}){if(await t.exists(n+"/config"))return;let a=["hooks","info","objects/info","objects/pack","refs/heads","refs/tags"];a=a.map(s=>n+"/"+s);for(let s of a)await t.mkdir(s);await t.write(n+"/config",`[core] + repositoryformatversion = 0 + filemode = false + bare = ${e} +`+(e?"":` logallrefupdates = true +`)+` symlinks = false + ignorecase = true +`),await t.write(n+"/HEAD",`ref: refs/heads/${i} +`)}async function aD({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,onPostCheckout:l,dir:c,gitdir:u,url:f,corsProxy:d,ref:h,remote:p,depth:g,since:v,exclude:y,relative:b,singleBranch:E,noCheckout:S,noTags:A,headers:k,nonBlocking:w,batchSize:x=100}){try{if(await aS({fs:t,gitdir:u}),await Zx({fs:t,gitdir:u,remote:p,url:f,force:!1}),d){let C=await nt.get({fs:t,gitdir:u});await C.set("http.corsProxy",d),await nt.save({fs:t,gitdir:u,config:C})}let{defaultBranch:_,fetchHead:T}=await hg({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,gitdir:u,ref:h,remote:p,corsProxy:d,depth:g,since:v,exclude:y,relative:b,singleBranch:E,headers:k,tags:!A});if(T===null)return;h=h||_,h=h.replace("refs/heads/",""),await fg({fs:t,cache:e,onProgress:n,onPostCheckout:l,dir:c,gitdir:u,ref:h,remote:p,noCheckout:S,nonBlocking:w,batchSize:x})}catch(_){throw await t.rmdir(u,{recursive:!0,maxRetries:10}).catch(()=>{}),_}}async function sS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPostCheckout:o,dir:l,gitdir:c=$.join(l,".git"),url:u,corsProxy:f=void 0,ref:d=void 0,remote:h="origin",depth:p=void 0,since:g=void 0,exclude:v=[],relative:y=!1,singleBranch:b=!1,noCheckout:E=!1,noTags:S=!1,headers:A={},cache:k={},nonBlocking:w=!1,batchSize:x=100}){try{return P("fs",t),P("http",e),P("gitdir",c),E||P("dir",l),P("url",u),await aD({fs:new Q(t),cache:k,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPostCheckout:o,dir:l,gitdir:c,url:u,corsProxy:f,ref:d,remote:h,depth:p,since:g,exclude:v,relative:y,singleBranch:b,noCheckout:E,noTags:S,headers:A,nonBlocking:w,batchSize:x})}catch(_){throw _.caller="git.clone",_}}async function oS({fs:t,onSign:e,dir:r,gitdir:n=$.join(r,".git"),message:i,author:a,committer:s,signingKey:o,amend:l=!1,dryRun:c=!1,noUpdateBranch:u=!1,ref:f,parent:d,tree:h,cache:p={}}){try{P("fs",t),l||P("message",i),o&&P("onSign",e);let g=new Q(t);return await Nf({fs:g,cache:p,onSign:e,gitdir:n,message:i,author:a,committer:s,signingKey:o,amend:l,dryRun:c,noUpdateBranch:u,ref:f,parent:d,tree:h})}catch(g){throw g.caller="git.commit",g}}async function lS({fs:t,dir:e,gitdir:r=$.join(e,".git"),fullname:n=!1,test:i=!1}){try{return P("fs",t),P("gitdir",r),await sa({fs:new Q(t),gitdir:r,fullname:n,test:i})}catch(a){throw a.caller="git.currentBranch",a}}async function sD({fs:t,gitdir:e,ref:r}){if(r=r.startsWith("refs/heads/")?r:`refs/heads/${r}`,!await V.exists({fs:t,gitdir:e,ref:r}))throw new je(r);let i=await V.expand({fs:t,gitdir:e,ref:r}),a=await sa({fs:t,gitdir:e,fullname:!0});if(i===a){let l=await V.resolve({fs:t,gitdir:e,ref:i});await V.writeRef({fs:t,gitdir:e,ref:"HEAD",value:l})}await V.deleteRef({fs:t,gitdir:e,ref:i});let s=za(r),o=await nt.get({fs:t,gitdir:e});await o.deleteSection("branch",s),await nt.save({fs:t,gitdir:e,config:o})}async function cS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n}){try{return P("fs",t),P("ref",n),await sD({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.deleteBranch",i}}async function uS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n}){try{P("fs",t),P("ref",n),await V.deleteRef({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.deleteRef",i}}async function oD({fs:t,gitdir:e,remote:r}){let n=await nt.get({fs:t,gitdir:e});await n.deleteSection("remote",r),await nt.save({fs:t,gitdir:e,config:n})}async function fS({fs:t,dir:e,gitdir:r=$.join(e,".git"),remote:n}){try{return P("fs",t),P("remote",n),await oD({fs:new Q(t),gitdir:r,remote:n})}catch(i){throw i.caller="git.deleteRemote",i}}async function lD({fs:t,gitdir:e,ref:r}){r=r.startsWith("refs/tags/")?r:`refs/tags/${r}`,await V.deleteRef({fs:t,gitdir:e,ref:r})}async function dS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n}){try{return P("fs",t),P("ref",n),await lD({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.deleteTag",i}}async function cD({fs:t,gitdir:e,oid:r}){let n=r.slice(0,2);return(await t.readdir(`${e}/objects/${n}`)).map(a=>`${n}${a}`).filter(a=>a.startsWith(r))}async function uD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:i}){let a=[],s=await t.readdir($.join(r,"objects/pack"));s=s.filter(o=>o.endsWith(".idx"));for(let o of s){let l=`${r}/objects/pack/${o}`,c=await ug({fs:t,cache:e,filename:l,getExternalRefDelta:i});if(c.error)throw new pe(c.error);for(let u of c.offsets.keys())u.startsWith(n)&&a.push(u)}return a}async function fD({fs:t,cache:e,gitdir:r,oid:n}){let i=o=>Ge({fs:t,cache:e,gitdir:r,oid:o}),a=await cD({fs:t,gitdir:r,oid:n}),s=await uD({fs:t,cache:e,gitdir:r,oid:n,getExternalRefDelta:i});for(let o of s)a.indexOf(o)===-1&&a.push(o);if(a.length===1)return a[0];throw a.length>1?new Yl("oids",n,a):new je(`an object matching "${n}"`)}async function hS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await fD({fs:new Q(t),cache:i,gitdir:r,oid:n})}catch(a){throw a.caller="git.expandOid",a}}async function pS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n}){try{return P("fs",t),P("gitdir",r),P("ref",n),await V.expand({fs:new Q(t),gitdir:r,ref:n})}catch(i){throw i.caller="git.expandRef",i}}async function pg({fs:t,cache:e,gitdir:r,oids:n}){let i={},a=n.length,s=n.map((o,l)=>({index:l,oid:o}));for(;s.length;){let o=new Set;for(let{oid:c,index:u}of s)i[c]||(i[c]=new Set),i[c].add(u),i[c].size===a&&o.add(c);if(o.size>0)return[...o];let l=new Map;for(let{oid:c,index:u}of s)try{let{object:f}=await Ge({fs:t,cache:e,gitdir:r,oid:c}),d=pr.from(f),{parent:h}=d.parseHeaders();for(let p of h)(!i[p]||!i[p].has(u))&&l.set(p+":"+u,{oid:p,index:u})}catch(f){}s=Array.from(l.values())}return[]}var Ym=/^.*(\r?\n|$)/gm;function dD({branches:t,contents:e}){let r=t[1],n=t[2],i=e[0],a=e[1],s=e[2],o=a.match(Ym),l=i.match(Ym),c=s.match(Ym),u=q8(o,l,c),f=7,d="",h=!0;for(let p of u)p.ok&&(d+=p.ok.join("")),p.conflict&&(h=!1,d+=`${"<".repeat(f)} ${r} +`,d+=p.conflict.a.join(""),d+=`${"=".repeat(f)} +`,d+=p.conflict.b.join(""),d+=`${">".repeat(f)} ${n} +`);return{cleanMerge:h,mergedText:d}}async function hD({fs:t,cache:e,dir:r,gitdir:n=$.join(r,".git"),index:i,ourOid:a,baseOid:s,theirOid:o,ourName:l="ours",baseName:c="base",theirName:u="theirs",dryRun:f=!1,abortOnConflict:d=!0,mergeDriver:h}){let p=Pr({ref:a}),g=Pr({ref:s}),v=Pr({ref:o}),y=[],b=[],E=[],S=[],A=await ra({fs:t,cache:e,dir:r,gitdir:n,trees:[p,g,v],map:async function(k,[w,x,_]){let T=Cf(k),C=await If(w,x),I=await If(_,x);switch(`${C}-${I}`){case"false-false":return{mode:await x.mode(),path:T,oid:await x.oid(),type:await x.type()};case"false-true":return!_&&await w.type()==="tree"?{mode:await w.mode(),path:T,oid:await w.oid(),type:await w.type()}:_?{mode:await _.mode(),path:T,oid:await _.oid(),type:await _.type()}:void 0;case"true-false":return!w&&await _.type()==="tree"?{mode:await _.mode(),path:T,oid:await _.oid(),type:await _.type()}:w?{mode:await w.mode(),path:T,oid:await w.oid(),type:await w.type()}:void 0;case"true-true":{if(w&&_&&await w.type()==="tree"&&await _.type()==="tree")return{mode:await w.mode(),path:T,oid:await w.oid(),type:"tree"};if(w&&_&&await w.type()==="blob"&&await _.type()==="blob")return pD({fs:t,gitdir:n,path:T,ours:w,base:x,theirs:_,ourName:l,baseName:c,theirName:u,mergeDriver:h}).then(async L=>{if(L.cleanMerge)d||i.insert({filepath:k,oid:L.mergeResult.oid,stage:0});else if(y.push(k),b.push(k),!d){let F="";x&&await x.type()==="blob"&&(F=await x.oid());let J=await w.oid(),de=await _.oid();i.delete({filepath:k}),F&&i.insert({filepath:k,oid:F,stage:1}),i.insert({filepath:k,oid:J,stage:2}),i.insert({filepath:k,oid:de,stage:3})}return L.mergeResult});if(x&&!w&&_&&await x.type()==="blob"&&await _.type()==="blob"){if(y.push(k),E.push(k),!d){let L=await x.oid(),F=await _.oid();i.delete({filepath:k}),i.insert({filepath:k,oid:L,stage:1}),i.insert({filepath:k,oid:F,stage:3})}return{mode:await _.mode(),oid:await _.oid(),type:"blob",path:T}}if(x&&w&&!_&&await x.type()==="blob"&&await w.type()==="blob"){if(y.push(k),S.push(k),!d){let L=await x.oid(),F=await w.oid();i.delete({filepath:k}),i.insert({filepath:k,oid:L,stage:1}),i.insert({filepath:k,oid:F,stage:2})}return{mode:await w.mode(),oid:await w.oid(),type:"blob",path:T}}if(x&&!w&&!_&&(await x.type()==="blob"||await x.type()==="tree"))return;throw new oo}}},reduce:y.length!==0&&(!r||d)?void 0:async(k,w)=>{let x=w.filter(Boolean);if(k&&!(k&&k.type==="tree"&&x.length===0&&k.path!==".")){if(x.length>0||k.path==="."&&x.length===0){let T=new hr(x).toObject(),C=await mr({fs:t,gitdir:n,type:"tree",object:T,dryRun:f});k.oid=C}return k}}});return y.length!==0?(r&&!d&&await ra({fs:t,cache:e,dir:r,gitdir:n,trees:[Pr({ref:A.oid})],map:async function(k,[w]){let x=`${r}/${k}`;if(await w.type()==="blob"){let _=await w.mode(),T=new TextDecoder().decode(await w.content());await t.write(x,T,{mode:_})}return!0}}),new lo(y,b,E,S)):A.oid}async function pD({fs:t,gitdir:e,path:r,ours:n,base:i,theirs:a,ourName:s,theirName:o,baseName:l,dryRun:c,mergeDriver:u=dD}){let f="blob",d="100755",h="",p="";i&&await i.type()==="blob"&&(d=await i.mode(),h=await i.oid(),p=Buffer.from(await i.content()).toString("utf8"));let g=d===await n.mode()?await a.mode():await n.mode();if(await n.oid()===await a.oid())return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await n.oid(),type:f}};if(await n.oid()===h)return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await a.oid(),type:f}};if(await a.oid()===h)return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await n.oid(),type:f}};let v=Buffer.from(await n.content()).toString("utf8"),y=Buffer.from(await a.content()).toString("utf8"),{mergedText:b,cleanMerge:E}=await u({branches:[l,s,o],contents:[p,v,y],path:r}),S=await mr({fs:t,gitdir:e,type:"blob",object:Buffer.from(b,"utf8"),dryRun:c});return{cleanMerge:E,mergeResult:{mode:g,path:r,oid:S,type:f}}}async function mS({fs:t,cache:e,dir:r,gitdir:n,ours:i,theirs:a,fastForward:s=!0,fastForwardOnly:o=!1,dryRun:l=!1,noUpdateBranch:c=!1,abortOnConflict:u=!0,message:f,author:d,committer:h,signingKey:p,onSign:g,mergeDriver:v,allowUnrelatedHistories:y=!1}){i===void 0&&(i=await sa({fs:t,gitdir:n,fullname:!0})),i=await V.expand({fs:t,gitdir:n,ref:i}),a=await V.expand({fs:t,gitdir:n,ref:a});let b=await V.resolve({fs:t,gitdir:n,ref:i}),E=await V.resolve({fs:t,gitdir:n,ref:a}),S=await pg({fs:t,cache:e,gitdir:n,oids:[b,E]});if(S.length!==1)if(S.length===0&&y)S.push("4b825dc642cb6eb9a060e54bf8d69288fbee4904");else throw new oo;let A=S[0];if(A===E)return{oid:b,alreadyMerged:!0};if(s&&A===b)return!l&&!c&&await V.writeRef({fs:t,gitdir:n,ref:i,value:E}),{oid:E,fastForward:!0};{if(o)throw new Jl;let k=await ct.acquire({fs:t,gitdir:n,cache:e,allowUnmerged:!1},async x=>hD({fs:t,cache:e,dir:r,gitdir:n,index:x,ourOid:b,theirOid:E,baseOid:A,ourName:za(i),baseName:"base",theirName:za(a),dryRun:l,abortOnConflict:u,mergeDriver:v}));if(k instanceof lo)throw k;return f||(f=`Merge branch '${za(a)}' into ${za(i)}`),{oid:await Nf({fs:t,cache:e,gitdir:n,message:f,ref:i,tree:k,parent:[b,E],author:d,committer:h,signingKey:p,onSign:g,dryRun:l,noUpdateBranch:c}),tree:k,mergeCommit:!0}}}async function gS({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,dir:l,gitdir:c,ref:u,url:f,remote:d,remoteRef:h,prune:p,pruneTags:g,fastForward:v,fastForwardOnly:y,corsProxy:b,singleBranch:E,headers:S,author:A,committer:k,signingKey:w}){try{if(!u){let T=await sa({fs:t,gitdir:c});if(!T)throw new dr("ref");u=T}let{fetchHead:x,fetchHeadDescription:_}=await hg({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,gitdir:c,corsProxy:b,ref:u,url:f,remote:d,remoteRef:h,singleBranch:E,headers:S,prune:p,pruneTags:g});await mS({fs:t,cache:e,gitdir:c,ours:u,theirs:x,fastForward:v,fastForwardOnly:y,message:`Merge ${_}`,author:A,committer:k,signingKey:w,dryRun:!1,noUpdateBranch:!1}),await fg({fs:t,cache:e,onProgress:n,dir:l,gitdir:c,ref:u,remote:d,noCheckout:!1})}catch(x){throw x.caller="git.pull",x}}async function vS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l=$.join(o,".git"),ref:c,url:u,remote:f,remoteRef:d,corsProxy:h,singleBranch:p,headers:g={},cache:v={}}){try{P("fs",t),P("http",e),P("gitdir",l);let y={name:"",email:"",timestamp:Date.now(),timezoneOffset:0};return await gS({fs:new Q(t),cache:v,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l,ref:c,url:u,remote:f,remoteRef:d,fastForwardOnly:!0,corsProxy:h,singleBranch:p,headers:g,author:y,committer:y})}catch(y){throw y.caller="git.fastForward",y}}async function yS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l=$.join(o,".git"),ref:c,remote:u,remoteRef:f,url:d,corsProxy:h,depth:p=null,since:g=null,exclude:v=[],relative:y=!1,tags:b=!1,singleBranch:E=!1,headers:S={},prune:A=!1,pruneTags:k=!1,cache:w={}}){try{return P("fs",t),P("http",e),P("gitdir",l),await hg({fs:new Q(t),cache:w,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,gitdir:l,ref:c,remote:u,remoteRef:f,url:d,corsProxy:h,depth:p,since:g,exclude:v,relative:y,tags:b,singleBranch:E,headers:S,prune:A,pruneTags:k})}catch(x){throw x.caller="git.fetch",x}}async function wS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oids:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oids",n),await pg({fs:new Q(t),cache:i,gitdir:r,oids:n})}catch(a){throw a.caller="git.findMergeBase",a}}async function bS({fs:t,filepath:e}){if(await t.exists($.join(e,".git")))return e;{let r=ao(e);if(r===e)throw new je(`git root for ${e}`);return bS({fs:t,filepath:r})}}async function _S({fs:t,filepath:e}){try{return P("fs",t),P("filepath",e),await bS({fs:new Q(t),filepath:e})}catch(r){throw r.caller="git.findRoot",r}}async function xS({fs:t,dir:e,gitdir:r=$.join(e,".git"),path:n}){try{return P("fs",t),P("gitdir",r),P("path",n),await oc({fs:new Q(t),gitdir:r,path:n})}catch(i){throw i.caller="git.getConfig",i}}async function mD({fs:t,gitdir:e,path:r}){return(await nt.get({fs:t,gitdir:e})).getall(r)}async function SS({fs:t,dir:e,gitdir:r=$.join(e,".git"),path:n}){try{return P("fs",t),P("gitdir",r),P("path",n),await mD({fs:new Q(t),gitdir:r,path:n})}catch(i){throw i.caller="git.getConfigAll",i}}async function ES({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,url:a,headers:s={},forPush:o=!1}){try{P("http",t),P("url",a);let c=await go.getRemoteHelperFor({url:a}).discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,headers:s,protocolVersion:1}),u={capabilities:[...c.capabilities]};for(let[f,d]of c.refs){let h=f.split("/"),p=h.pop(),g=u;for(let v of h)g[v]=g[v]||{},g=g[v];g[p]=d}for(let[f,d]of c.symrefs){let h=f.split("/"),p=h.pop(),g=u;for(let v of h)g[v]=g[v]||{},g=g[v];g[p]=d}return u}catch(l){throw l.caller="git.getRemoteInfo",l}}function AS(t,e,r,n){let i=[];for(let[a,s]of t.refs){if(e&&!a.startsWith(e))continue;if(a.endsWith("^{}")){if(n){let l=a.replace("^{}",""),c=i[i.length-1],u=c.ref===l?c:i.find(f=>f.ref===l);if(u===void 0)throw new Error("I did not expect this to happen");u.peeled=s}continue}let o={ref:a,oid:s};r&&t.symrefs.has(a)&&(o.target=t.symrefs.get(a)),i.push(o)}return i}async function kS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,url:a,headers:s={},forPush:o=!1,protocolVersion:l=2}){try{P("http",t),P("url",a);let u=await go.getRemoteHelperFor({url:a}).discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,headers:s,protocolVersion:l});if(u.protocolVersion===2)return{protocolVersion:u.protocolVersion,capabilities:u.capabilities2};let f={};for(let d of u.capabilities){let[h,p]=d.split("=");p?f[h]=p:f[h]=!0}return{protocolVersion:1,capabilities:f,refs:AS(u,void 0,!0,!0)}}catch(c){throw c.caller="git.getRemoteInfo2",c}}async function gD({type:t,object:e,format:r="content",oid:n=void 0}){return r!=="deflated"&&(r!=="wrapped"&&(e=ea.wrap({type:t,object:e})),n=await bi(e)),{oid:n,object:e}}async function TS({object:t}){try{P("object",t),typeof t=="string"?t=Buffer.from(t,"utf8"):t=Buffer.from(t);let e="blob",{oid:r,object:n}=await gD({type:"blob",format:"content",object:t});return{oid:r,type:e,object:new Uint8Array(n),format:"wrapped"}}catch(e){throw e.caller="git.hashBlob",e}}async function vD({fs:t,cache:e,onProgress:r,dir:n,gitdir:i,filepath:a}){try{a=$.join(n,a);let s=await t.read(a),o=c=>Ge({fs:t,cache:e,gitdir:i,oid:c}),l=await ql.fromPack({pack:s,getExternalRefDelta:o,onProgress:r});return await t.write(a.replace(/\.pack$/,".idx"),await l.toBuffer()),{oids:[...l.hashes]}}catch(s){throw s.caller="git.indexPack",s}}async function CS({fs:t,onProgress:e,dir:r,gitdir:n=$.join(r,".git"),filepath:i,cache:a={}}){try{return P("fs",t),P("dir",r),P("gitdir",r),P("filepath",i),await vD({fs:new Q(t),cache:a,onProgress:e,dir:r,gitdir:n,filepath:i})}catch(s){throw s.caller="git.indexPack",s}}async function PS({fs:t,bare:e=!1,dir:r,gitdir:n=e?r:$.join(r,".git"),defaultBranch:i="master"}){try{return P("fs",t),P("gitdir",n),e||P("dir",r),await aS({fs:new Q(t),bare:e,dir:r,gitdir:n,defaultBranch:i})}catch(a){throw a.caller="git.init",a}}async function RS({fs:t,cache:e,gitdir:r,oid:n,ancestor:i,depth:a}){let s=await Wa.read({fs:t,gitdir:r});if(!n)throw new dr("oid");if(!i)throw new dr("ancestor");if(n===i)return!1;let o=[n],l=new Set,c=0;for(;o.length;){if(c++===a)throw new ec(a);let u=o.shift(),{type:f,object:d}=await Ge({fs:t,cache:e,gitdir:r,oid:u});if(f!=="commit")throw new tr(u,f,"commit");let h=pr.from(d).parse();for(let p of h.parent)if(p===i)return!0;if(!s.has(u))for(let p of h.parent)l.has(p)||(o.push(p),l.add(p))}return!1}async function MS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,ancestor:i,depth:a=-1,cache:s={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),P("ancestor",i),await RS({fs:new Q(t),cache:s,gitdir:r,oid:n,ancestor:i,depth:a})}catch(o){throw o.caller="git.isDescendent",o}}async function OS({fs:t,dir:e,gitdir:r=$.join(e,".git"),filepath:n}){try{return P("fs",t),P("dir",e),P("gitdir",r),P("filepath",n),na.isIgnored({fs:new Q(t),dir:e,gitdir:r,filepath:n})}catch(i){throw i.caller="git.isIgnored",i}}async function IS({fs:t,dir:e,gitdir:r=$.join(e,".git"),remote:n}){try{return P("fs",t),P("gitdir",r),V.listBranches({fs:new Q(t),gitdir:r,remote:n})}catch(i){throw i.caller="git.listBranches",i}}async function yD({fs:t,gitdir:e,ref:r,cache:n}){if(r){let i=await V.resolve({gitdir:e,fs:t,ref:r}),a=[];return await $S({fs:t,cache:n,gitdir:e,oid:i,filenames:a,prefix:""}),a}else return ct.acquire({fs:t,gitdir:e,cache:n},async function(i){return i.entries.map(a=>a.path)})}async function $S({fs:t,cache:e,gitdir:r,oid:n,filenames:i,prefix:a}){let{tree:s}=await wo({fs:t,cache:e,gitdir:r,oid:n});for(let o of s)o.type==="tree"?await $S({fs:t,cache:e,gitdir:r,oid:o.oid,filenames:i,prefix:$.join(a,o.path)}):i.push($.join(a,o.path))}async function FS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),await yD({fs:new Q(t),cache:i,gitdir:r,ref:n})}catch(a){throw a.caller="git.listFiles",a}}async function wD({fs:t,cache:e,gitdir:r,ref:n}){let i;try{i=await V.resolve({gitdir:r,fs:t,ref:n})}catch(o){if(o instanceof je)return[]}return(await wo({fs:t,cache:e,gitdir:r,oid:i})).tree.map(o=>({target:o.path,note:o.oid}))}async function DS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n="refs/notes/commits",cache:i={}}){try{return P("fs",t),P("gitdir",r),P("ref",n),await wD({fs:new Q(t),cache:i,gitdir:r,ref:n})}catch(a){throw a.caller="git.listNotes",a}}async function LS({fs:t,dir:e,gitdir:r=$.join(e,".git"),filepath:n}){try{return P("fs",t),P("gitdir",r),V.listRefs({fs:new Q(t),gitdir:r,filepath:n})}catch(i){throw i.caller="git.listRefs",i}}async function bD({fs:t,gitdir:e}){let r=await nt.get({fs:t,gitdir:e}),n=await r.getSubsections("remote");return Promise.all(n.map(async a=>{let s=await r.get(`remote.${a}.url`);return{remote:a,url:s}}))}async function jS({fs:t,dir:e,gitdir:r=$.join(e,".git")}){try{return P("fs",t),P("gitdir",r),await bD({fs:new Q(t),gitdir:r})}catch(n){throw n.caller="git.listRemotes",n}}async function _D(t){let e=Qe.streamReader(t),r=[],n;for(;n=await e(),n!==!0;){if(n===null)continue;n=n.toString("utf8").replace(/\n$/,"");let[i,a,...s]=n.split(" "),o={ref:a,oid:i};for(let l of s){let[c,u]=l.split(":");c==="symref-target"?o.target=u:c==="peeled"&&(o.peeled=u)}r.push(o)}return r}async function xD({prefix:t,symrefs:e,peelTags:r}){let n=[];return n.push(Qe.encode(`command=ls-refs +`)),n.push(Qe.encode(`agent=${Bf.agent} +`)),(r||e||t)&&n.push(Qe.delim()),r&&n.push(Qe.encode("peel")),e&&n.push(Qe.encode("symrefs")),t&&n.push(Qe.encode(`ref-prefix ${t}`)),n.push(Qe.flush()),n}async function NS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,url:a,headers:s={},forPush:o=!1,protocolVersion:l=2,prefix:c,symrefs:u,peelTags:f}){try{P("http",t),P("url",a);let d=await mo.discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:n,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,headers:s,protocolVersion:l});if(d.protocolVersion===1)return AS(d,c,u,f);let h=await xD({prefix:c,symrefs:u,peelTags:f}),p=await mo.connect({http:t,auth:d.auth,headers:s,corsProxy:i,service:o?"git-receive-pack":"git-upload-pack",url:a,body:h});return _D(p.body)}catch(d){throw d.caller="git.listServerRefs",d}}async function BS({fs:t,dir:e,gitdir:r=$.join(e,".git")}){try{return P("fs",t),P("gitdir",r),V.listTags({fs:new Q(t),gitdir:r})}catch(n){throw n.caller="git.listTags",n}}function SD(t,e){return t.committer.timestamp-e.committer.timestamp}var ED="e69de29bb2d1d6434b8b29ae775ad8c2e48c5391";async function Px({fs:t,cache:e,gitdir:r,oid:n,fileId:i}){if(i===ED)return;let a=n,s,o=await fo({fs:t,cache:e,gitdir:r,oid:n}),l=o.tree;return i===o.oid?s=o.path:(s=await HS({fs:t,cache:e,gitdir:r,tree:l,fileId:i,oid:a}),Array.isArray(s)&&(s.length===0?s=void 0:s.length===1&&(s=s[0]))),s}async function HS({fs:t,cache:e,gitdir:r,tree:n,fileId:i,oid:a,filepaths:s=[],parentPath:o=""}){let l=n.entries().map(function(c){let u;return c.oid===i?(u=$.join(o,c.path),s.push(u)):c.type==="tree"&&(u=Ge({fs:t,cache:e,gitdir:r,oid:c.oid}).then(function({object:f}){return HS({fs:t,cache:e,gitdir:r,tree:hr.from(f),fileId:i,oid:a,filepaths:s,parentPath:$.join(o,c.path)})})),u});return await Promise.all(l),s}async function AD({fs:t,cache:e,gitdir:r,filepath:n,ref:i,depth:a,since:s,force:o,follow:l}){let c=typeof s=="undefined"?void 0:Math.floor(s.valueOf()/1e3),u=[],f=await Wa.read({fs:t,gitdir:r}),d=await V.resolve({fs:t,gitdir:r,ref:i}),h=[await po({fs:t,cache:e,gitdir:r,oid:d})],p,g,v;function y(b){v&&n&&u.push(b)}for(;h.length>0;){let b=h.pop();if(c!==void 0&&b.commit.committer.timestamp<=c)break;if(n){let E;try{E=await lc({fs:t,cache:e,gitdir:r,oid:b.commit.tree,filepath:n}),g&&p!==E&&u.push(g),p=E,g=b,v=!0}catch(S){if(S instanceof je){let A=l&&p;if(A&&(A=await Px({fs:t,cache:e,gitdir:r,oid:b.commit.tree,fileId:p}),A))if(Array.isArray(A)){if(g){let k=await Px({fs:t,cache:e,gitdir:r,oid:g.commit.tree,fileId:p});if(Array.isArray(k))if(A=A.filter(w=>k.indexOf(w)===-1),A.length===1)A=A[0],n=A,g&&u.push(g);else{A=!1,g&&u.push(g);break}}}else n=A,g&&u.push(g);if(!A){if(v&&p&&(u.push(g),!o))break;if(!o&&!l)throw S}g=b,v=!1}else throw S}}else u.push(b);if(a!==void 0&&u.length===a){y(b);break}if(!f.has(b.oid))for(let E of b.commit.parent){let S=await po({fs:t,cache:e,gitdir:r,oid:E});h.map(A=>A.oid).includes(S.oid)||h.push(S)}h.length===0&&y(b),h.sort((E,S)=>SD(E.commit,S.commit))}return u}async function US({fs:t,dir:e,gitdir:r=$.join(e,".git"),filepath:n,ref:i="HEAD",depth:a,since:s,force:o,follow:l,cache:c={}}){try{return P("fs",t),P("gitdir",r),P("ref",i),await AD({fs:new Q(t),cache:c,gitdir:r,filepath:n,ref:i,depth:a,since:s,force:o,follow:l})}catch(u){throw u.caller="git.log",u}}async function GS({fs:t,onSign:e,dir:r,gitdir:n=$.join(r,".git"),ours:i,theirs:a,fastForward:s=!0,fastForwardOnly:o=!1,dryRun:l=!1,noUpdateBranch:c=!1,abortOnConflict:u=!0,message:f,author:d,committer:h,signingKey:p,cache:g={},mergeDriver:v,allowUnrelatedHistories:y=!1}){try{P("fs",t),p&&P("onSign",e);let b=new Q(t),E=await ia({fs:b,gitdir:n,author:d});if(!E&&(!o||!s))throw new zt("author");let S=await ho({fs:b,gitdir:n,author:E,committer:h});if(!S&&(!o||!s))throw new zt("committer");return await mS({fs:b,cache:g,dir:r,gitdir:n,ours:i,theirs:a,fastForward:s,fastForwardOnly:o,dryRun:l,noUpdateBranch:c,abortOnConflict:u,message:f,author:E,committer:S,signingKey:p,onSign:e,mergeDriver:v,allowUnrelatedHistories:y})}catch(b){throw b.caller="git.merge",b}}var kD={commit:16,tree:32,blob:48,tag:64,ofs_delta:96,ref_delta:112};async function zS({fs:t,cache:e,dir:r,gitdir:n=$.join(r,".git"),oids:i}){let a=new Mx,s=[];function o(u,f){let d=Buffer.from(u,f);s.push(d),a.update(d)}async function l({stype:u,object:f}){let d=kD[u],h=f.length,p=h>15?128:0,g=h&15;h=h>>>4;let v=(p|d|g).toString(16);for(o(v,"hex");p;)p=h>127?128:0,v=p|h&127,o(lg(2,v),"hex"),h=h>>>7;o(Buffer.from(await Gx(f)))}o("PACK"),o("00000002","hex"),o(lg(8,i.length),"hex");for(let u of i){let{type:f,object:d}=await Ge({fs:t,cache:e,gitdir:n,oid:u});await l({write:o,object:d,stype:f})}let c=a.digest();return s.push(c),s}async function TD({fs:t,cache:e,gitdir:r,oids:n,write:i}){let a=await zS({fs:t,cache:e,gitdir:r,oids:n}),s=Buffer.from(await $f(a)),l=`pack-${s.slice(-20).toString("hex")}.pack`;return i?(await t.write($.join(r,`objects/pack/${l}`),s),{filename:l}):{filename:l,packfile:new Uint8Array(s)}}async function VS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oids:n,write:i=!1,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("oids",n),await TD({fs:new Q(t),cache:a,gitdir:r,oids:n,write:i})}catch(s){throw s.caller="git.packObjects",s}}async function WS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l=$.join(o,".git"),ref:c,url:u,remote:f,remoteRef:d,prune:h=!1,pruneTags:p=!1,fastForward:g=!0,fastForwardOnly:v=!1,corsProxy:y,singleBranch:b,headers:E={},author:S,committer:A,signingKey:k,cache:w={}}){try{P("fs",t),P("gitdir",l);let x=new Q(t),_=await ia({fs:x,gitdir:l,author:S});if(!_)throw new zt("author");let T=await ho({fs:x,gitdir:l,author:_,committer:A});if(!T)throw new zt("committer");return await gS({fs:x,cache:w,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,dir:o,gitdir:l,ref:c,url:u,remote:f,remoteRef:d,fastForward:g,fastForwardOnly:v,corsProxy:y,singleBranch:b,headers:E,author:_,committer:T,signingKey:k,prune:h,pruneTags:p})}catch(x){throw x.caller="git.pull",x}}async function CD({fs:t,cache:e,dir:r,gitdir:n=$.join(r,".git"),start:i,finish:a}){let s=await Wa.read({fs:t,gitdir:n}),o=new Set,l=new Set;for(let f of i)o.add(await V.resolve({fs:t,gitdir:n,ref:f}));for(let f of a)try{let d=await V.resolve({fs:t,gitdir:n,ref:f});l.add(d)}catch(d){}let c=new Set;async function u(f){c.add(f);let{type:d,object:h}=await Ge({fs:t,cache:e,gitdir:n,oid:f});if(d==="tag"){let g=Rr.from(h).headers().object;return u(g)}if(d!=="commit")throw new tr(f,d,"commit");if(!s.has(f)){let g=pr.from(h).headers().parent;for(f of g)!l.has(f)&&!c.has(f)&&await u(f)}}for(let f of o)await u(f);return c}async function Xm({fs:t,cache:e,dir:r,gitdir:n=$.join(r,".git"),oids:i}){let a=new Set;async function s(o){if(a.has(o))return;a.add(o);let{type:l,object:c}=await Ge({fs:t,cache:e,gitdir:n,oid:o});if(l==="tag"){let f=Rr.from(c).headers().object;await s(f)}else if(l==="commit"){let f=pr.from(c).headers().tree;await s(f)}else if(l==="tree"){let u=hr.from(c);for(let f of u)f.type==="blob"&&a.add(f.oid),f.type==="tree"&&await s(f.oid)}}for(let o of i)await s(o);return a}async function PD(t){let e={},r="",n=Qe.streamReader(t),i=await n();for(;i!==!0;)i!==null&&(r+=i.toString("utf8")+` +`),i=await n();let a=r.toString("utf8").split(` +`);if(i=a.shift(),!i.startsWith("unpack "))throw new Va('unpack ok" or "unpack [error message]',i);e.ok=i==="unpack ok",e.ok||(e.error=i.slice(7)),e.refs={};for(let s of a){if(s.trim()==="")continue;let o=s.slice(0,2),l=s.slice(3),c=l.indexOf(" ");c===-1&&(c=l.length);let u=l.slice(0,c),f=l.slice(c+1);e.refs[u]={ok:o==="ok",error:f}}return e}async function RD({capabilities:t=[],triplets:e=[]}){let r=[],n=`\0 ${t.join(" ")}`;for(let i of e)r.push(Qe.encode(`${i.oldoid} ${i.oid} ${i.fullRef}${n} +`)),n="";return r.push(Qe.flush()),r}async function MD({fs:t,cache:e,http:r,onProgress:n,onMessage:i,onAuth:a,onAuthSuccess:s,onAuthFailure:o,onPrePush:l,gitdir:c,ref:u,remoteRef:f,remote:d,url:h,force:p=!1,delete:g=!1,corsProxy:v,headers:y={}}){let b=u||await sa({fs:t,gitdir:c});if(typeof b=="undefined")throw new dr("ref");let E=await nt.get({fs:t,gitdir:c});d=d||await E.get(`branch.${b}.pushRemote`)||await E.get("remote.pushDefault")||await E.get(`branch.${b}.remote`)||"origin";let S=h||await E.get(`remote.${d}.pushurl`)||await E.get(`remote.${d}.url`);if(typeof S=="undefined")throw new dr("remote OR url");let A=f||await E.get(`branch.${b}.merge`);if(typeof S=="undefined")throw new dr("remoteRef");v===void 0&&(v=await E.get("http.corsProxy"));let k=await V.expand({fs:t,gitdir:c,ref:b}),w=g?"0000000000000000000000000000000000000000":await V.resolve({fs:t,gitdir:c,ref:k}),x=go.getRemoteHelperFor({url:S}),_=await x.discover({http:r,onAuth:a,onAuthSuccess:s,onAuthFailure:o,corsProxy:v,service:"git-receive-pack",url:S,headers:y,protocolVersion:1}),T=_.auth,C;if(!A)C=k;else try{C=await V.expandAgainstMap({ref:A,map:_.refs})}catch(q){if(q instanceof je)C=A.startsWith("refs/")?A:`refs/heads/${A}`;else throw q}let I=_.refs.get(C)||"0000000000000000000000000000000000000000";if(l&&!await l({remote:d,url:S,localRef:{ref:g?"(delete)":k,oid:w},remoteRef:{ref:C,oid:I}}))throw new uo;let L=!_.capabilities.has("no-thin"),F=new Set;if(!g){let q=[..._.refs.values()],B=new Set;if(I!=="0000000000000000000000000000000000000000"){let Fe=await pg({fs:t,cache:e,gitdir:c,oids:[w,I]});for(let lr of Fe)q.push(lr);L&&(B=await Xm({fs:t,cache:e,gitdir:c,oids:Fe}))}if(!q.includes(w)){let Fe=await CD({fs:t,cache:e,gitdir:c,start:[w],finish:q});F=await Xm({fs:t,cache:e,gitdir:c,oids:Fe})}if(L){try{let Fe=await V.resolve({fs:t,gitdir:c,ref:`refs/remotes/${d}/HEAD`,depth:2}),{oid:lr}=await V.resolveAgainstMap({ref:Fe.replace(`refs/remotes/${d}/`,""),fullref:Fe,map:_.refs}),Ut=[lr];for(let X of await Xm({fs:t,cache:e,gitdir:c,oids:Ut}))B.add(X)}catch(Fe){}for(let Fe of B)F.delete(Fe)}if(w===I&&(p=!0),!p){if(k.startsWith("refs/tags")&&I!=="0000000000000000000000000000000000000000")throw new co("tag-exists");if(w!=="0000000000000000000000000000000000000000"&&I!=="0000000000000000000000000000000000000000"&&!await RS({fs:t,cache:e,gitdir:c,oid:w,ancestor:I,depth:-1}))throw new co("not-fast-forward")}}let J=nS([..._.capabilities],["report-status","side-band-64k",`agent=${Bf.agent}`]),de=await RD({capabilities:J,triplets:[{oldoid:I,oid:w,fullRef:C}]}),le=g?[]:await zS({fs:t,cache:e,gitdir:c,oids:[...F]}),ce=await x.connect({http:r,onProgress:n,corsProxy:v,service:"git-receive-pack",url:S,auth:T,headers:y,body:[...de,...le]}),{packfile:Te,progress:ne}=await Ff.demux(ce.body);if(i){let q=iS(ne);uc(q,async B=>{await i(B)})}let N=await PD(Te);if(ce.headers&&(N.headers=ce.headers),d&&N.ok&&N.refs[C].ok&&!k.startsWith("refs/tags")){let q=`refs/remotes/${d}/${C.replace("refs/heads","")}`;g?await V.deleteRef({fs:t,gitdir:c,ref:q}):await V.writeRef({fs:t,gitdir:c,ref:q,value:w})}if(N.ok&&Object.values(N.refs).every(q=>q.ok))return N;{let q=Object.entries(N.refs).filter(([B,Fe])=>!Fe.ok).map(([B,Fe])=>` + - ${B}: ${Fe.error}`).join("");throw new Ql(q,N)}}async function qS({fs:t,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPrePush:o,dir:l,gitdir:c=$.join(l,".git"),ref:u,remoteRef:f,remote:d="origin",url:h,force:p=!1,delete:g=!1,corsProxy:v,headers:y={},cache:b={}}){try{return P("fs",t),P("http",e),P("gitdir",c),await MD({fs:new Q(t),cache:b,http:e,onProgress:r,onMessage:n,onAuth:i,onAuthSuccess:a,onAuthFailure:s,onPrePush:o,gitdir:c,ref:u,remoteRef:f,remote:d,url:h,force:p,delete:g,corsProxy:v,headers:y})}catch(E){throw E.caller="git.push",E}}async function YS({fs:t,cache:e,gitdir:r,oid:n}){let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n});if(i==="tag")return n=Rr.from(a).parse().object,YS({fs:t,cache:e,gitdir:r,oid:n});if(i!=="blob")throw new tr(n,i,"blob");return{oid:n,blob:new Uint8Array(a)}}async function XS({fs:t,cache:e,gitdir:r,oid:n,filepath:i=void 0}){return i!==void 0&&(n=await lc({fs:t,cache:e,gitdir:r,oid:n,filepath:i})),await YS({fs:t,cache:e,gitdir:r,oid:n})}async function KS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,filepath:i,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await XS({fs:new Q(t),cache:a,gitdir:r,oid:n,filepath:i})}catch(s){throw s.caller="git.readBlob",s}}async function mg({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await po({fs:new Q(t),cache:i,gitdir:r,oid:n})}catch(a){throw a.caller="git.readCommit",a}}async function OD({fs:t,cache:e,gitdir:r,ref:n="refs/notes/commits",oid:i}){let a=await V.resolve({gitdir:r,fs:t,ref:n}),{blob:s}=await XS({fs:t,cache:e,gitdir:r,oid:a,filepath:i});return s}async function ZS({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n="refs/notes/commits",oid:i,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("ref",n),P("oid",i),await OD({fs:new Q(t),cache:a,gitdir:r,ref:n,oid:i})}catch(s){throw s.caller="git.readNote",s}}async function JS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,format:i="parsed",filepath:a=void 0,encoding:s=void 0,cache:o={}}){try{P("fs",t),P("gitdir",r),P("oid",n);let l=new Q(t);a!==void 0&&(n=await lc({fs:l,cache:o,gitdir:r,oid:n,filepath:a}));let u=await Ge({fs:l,cache:o,gitdir:r,oid:n,format:i==="parsed"?"content":i});if(u.oid=n,i==="parsed")switch(u.format="parsed",u.type){case"commit":u.object=pr.from(u.object).parse();break;case"tree":u.object=hr.from(u.object).entries();break;case"blob":s?u.object=u.object.toString(s):(u.object=new Uint8Array(u.object),u.format="content");break;case"tag":u.object=Rr.from(u.object).parse();break;default:throw new tr(u.oid,u.type,"blob|commit|tag|tree")}else(u.format==="deflated"||u.format==="wrapped")&&(u.type=u.format);return u}catch(l){throw l.caller="git.readObject",l}}async function ID({fs:t,cache:e,gitdir:r,oid:n}){let{type:i,object:a}=await Ge({fs:t,cache:e,gitdir:r,oid:n,format:"content"});if(i!=="tag")throw new tr(n,i,"tag");let s=Rr.from(a);return{oid:n,tag:s.parse(),payload:s.payload()}}async function QS({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,cache:i={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await ID({fs:new Q(t),cache:i,gitdir:r,oid:n})}catch(a){throw a.caller="git.readTag",a}}async function eE({fs:t,dir:e,gitdir:r=$.join(e,".git"),oid:n,filepath:i=void 0,cache:a={}}){try{return P("fs",t),P("gitdir",r),P("oid",n),await wo({fs:new Q(t),cache:a,gitdir:r,oid:n,filepath:i})}catch(s){throw s.caller="git.readTree",s}}async function tE({fs:t,dir:e,gitdir:r=$.join(e,".git"),filepath:n,cache:i={}}){try{P("fs",t),P("gitdir",r),P("filepath",n),await ct.acquire({fs:new Q(t),gitdir:r,cache:i},async function(a){a.delete({filepath:n})})}catch(a){throw a.caller="git.remove",a}}async function $D({fs:t,cache:e,onSign:r,gitdir:n,ref:i="refs/notes/commits",oid:a,author:s,committer:o,signingKey:l}){let c;try{c=await V.resolve({gitdir:n,fs:t,ref:i})}catch(p){if(!(p instanceof je))throw p}let f=(await wo({fs:t,gitdir:n,oid:c||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;f=f.filter(p=>p.path!==a);let d=await cc({fs:t,gitdir:n,tree:f});return await Nf({fs:t,cache:e,onSign:r,gitdir:n,ref:i,tree:d,parent:c&&[c],message:`Note removed by 'isomorphic-git removeNote' +`,author:s,committer:o,signingKey:l})}async function rE({fs:t,onSign:e,dir:r,gitdir:n=$.join(r,".git"),ref:i="refs/notes/commits",oid:a,author:s,committer:o,signingKey:l,cache:c={}}){try{P("fs",t),P("gitdir",n),P("oid",a);let u=new Q(t),f=await ia({fs:u,gitdir:n,author:s});if(!f)throw new zt("author");let d=await ho({fs:u,gitdir:n,author:f,committer:o});if(!d)throw new zt("committer");return await $D({fs:u,cache:c,onSign:e,gitdir:n,ref:i,oid:a,author:f,committer:d,signingKey:l})}catch(u){throw u.caller="git.removeNote",u}}async function FD({fs:t,gitdir:e,oldref:r,ref:n,checkout:i=!1}){if(n!==zn.clean(n))throw new mn(n,zn.clean(n));if(r!==zn.clean(r))throw new mn(r,zn.clean(r));let a=`refs/heads/${r}`,s=`refs/heads/${n}`;if(await V.exists({fs:t,gitdir:e,ref:s}))throw new pn("branch",n,!1);let l=await V.resolve({fs:t,gitdir:e,ref:a,depth:1});await V.writeRef({fs:t,gitdir:e,ref:s,value:l}),await V.deleteRef({fs:t,gitdir:e,ref:a});let u=await sa({fs:t,gitdir:e,fullname:!0})===a;(i||u)&&await V.writeSymbolicRef({fs:t,gitdir:e,ref:"HEAD",value:s})}async function nE({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n,oldref:i,checkout:a=!1}){try{return P("fs",t),P("gitdir",r),P("ref",n),P("oldref",i),await FD({fs:new Q(t),gitdir:r,ref:n,oldref:i,checkout:a})}catch(s){throw s.caller="git.renameBranch",s}}async function iE({gitdir:t,type:e,object:r}){return bi(ea.wrap({type:e,object:r}))}async function aE({fs:t,dir:e,gitdir:r=$.join(e,".git"),filepath:n,ref:i,cache:a={}}){try{P("fs",t),P("gitdir",r),P("filepath",n);let s=new Q(t),o,l;try{o=await V.resolve({fs:s,gitdir:r,ref:i||"HEAD"})}catch(f){if(i)throw f}if(o)try{o=await lc({fs:s,cache:a,gitdir:r,oid:o,filepath:n})}catch(f){o=null}let c={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:0,uid:0,gid:0,size:0},u=e&&await s.read($.join(e,n));u&&(l=await iE({gitdir:r,type:"blob",object:u}),o===l&&(c=await s.lstat($.join(e,n)))),await ct.acquire({fs:s,gitdir:r,cache:a},async function(f){f.delete({filepath:n}),o&&f.insert({filepath:n,stats:c,oid:o})})}catch(s){throw s.caller="git.reset",s}}async function sE({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n,depth:i}){try{return P("fs",t),P("gitdir",r),P("ref",n),await V.resolve({fs:new Q(t),gitdir:r,ref:n,depth:i})}catch(a){throw a.caller="git.resolveRef",a}}async function oE({fs:t,dir:e,gitdir:r=$.join(e,".git"),path:n,value:i,append:a=!1}){try{P("fs",t),P("gitdir",r),P("path",n);let s=new Q(t),o=await nt.get({fs:s,gitdir:r});a?await o.append(n,i):await o.set(n,i),await nt.save({fs:s,gitdir:r,config:o})}catch(s){throw s.caller="git.setConfig",s}}async function lE({fs:t,gitdir:e,commit:r}){let n=pr.from(r).toObject();return await mr({fs:t,gitdir:e,type:"commit",object:n,format:"content"})}var Df=class t{static get timezoneOffsetForRefLogEntry(){let e=new Date().getTimezoneOffset(),r=Math.abs(Math.floor(e/60)),n=Math.abs(e%60).toString().padStart(2,"0");return`${e>0?"-":"+"}${r.toString().padStart(2,"0")}${n}`}static createStashReflogEntry(e,r,n){let i=e.name.replace(/\s/g,""),a="0000000000000000000000000000000000000000",s=Math.floor(Date.now()/1e3),o=t.timezoneOffsetForRefLogEntry;return`${a} ${r} ${i} ${e.email} ${s} ${o} ${n} +`}static getStashReflogEntry(e,r=!1){return e.split(` +`).filter(a=>a).reverse().map((a,s)=>r?`stash@{${s}}: ${a.split(" ")[1]}`:a)}},DD={stage:Ya,workdir:yo},Km;async function vo(t,e){return Km===void 0&&(Km=new zl),Km.acquire(t,e)}async function LD(t,e,r,n,i=null){let a=$.join(r,n),s=await t.lstat(a);if(!s)throw new je(a);if(s.isDirectory())throw new pe(`${a}: file expected, but found directory`);let o=i?await Lx({fs:t,gitdir:e,oid:i}):void 0,l=o?i:void 0;return o||await vo({fs:t,gitdir:e,currentFilepath:a},async()=>{let c=s.isSymbolicLink()?await t.readlink(a).then(zx):await t.read(a);if(c===null)throw new je(a);l=await mr({fs:t,gitdir:e,type:"blob",object:c})}),l}async function jD({fs:t,dir:e,gitdir:r,entries:n}){async function i(a){if(a.type==="tree"){if(!a.oid){let s=await Promise.all(a.children.map(i));a.oid=await cc({fs:t,gitdir:r,tree:s}),a.mode=16384}}else a.type==="blob"&&(a.oid=await LD(t,r,e,a.path,a.oid),a.mode=33188);return a.path=a.path.split("/").pop(),a}return Promise.all(n.map(i))}async function Rx({fs:t,dir:e,gitdir:r,treePair:n}){let i=n[1]==="stage",a=n.map(h=>typeof h=="string"?DD[h]():h),s=[],u=await ra({fs:t,cache:{},dir:e,gitdir:r,trees:a,map:async(h,[p,g])=>{if(!(h==="."||await na.isIgnored({fs:t,dir:e,gitdir:r,filepath:h}))&&g)return(!p||await p.oid()!==await g.oid()&&await g.oid()!==void 0)&&s.push([p,g]),{mode:await g.mode(),path:h,oid:await g.oid(),type:await g.type()}},reduce:async(h,p)=>(p=p.filter(Boolean),h?(h.children=p,h):p.length>0?p:void 0),iterate:async(h,p)=>{let g=[];for(let v of p){let[y,b]=v;i?b&&(await t.exists(`${e}/${b.toString()}`)?g.push(v):s.push([null,b])):y&&(b?g.push(v):s.push([y,null]))}return g.length?Promise.all(g.map(h)):[]}});if(s.length===0||u.length===0)return null;let d=(await jD({fs:t,dir:e,gitdir:r,entries:u})).filter(Boolean).map(h=>({mode:h.mode,path:h.path,oid:h.oid,type:h.type}));return cc({fs:t,gitdir:r,tree:d})}async function ND({fs:t,dir:e,gitdir:r,stashCommit:n,parentCommit:i,wasStaged:a}){let s=[],o=[],l=await ra({fs:t,cache:{},dir:e,gitdir:r,trees:[Pr({ref:i}),Pr({ref:n})],map:async(c,[u,f])=>{if(c==="."||await na.isIgnored({fs:t,dir:e,gitdir:r,filepath:c}))return;let d=f?await f.type():await u.type();if(d!=="tree"&&d!=="blob")return;if(!f&&u){let p=d==="tree"?"rmdir":"rm";return d==="tree"&&s.push(c),d==="blob"&&a&&o.push({filepath:c,oid:await u.oid()}),{method:p,filepath:c}}let h=await f.oid();if(!u||await u.oid()!==h)return d==="tree"?{method:"mkdir",filepath:c}:(a&&o.push({filepath:c,oid:h,stats:await t.lstat($.join(e,c))}),{method:"write",filepath:c,oid:h})}});await vo({fs:t,gitdir:r,dirRemoved:s,ops:l},async()=>{for(let c of l){let u=$.join(e,c.filepath);switch(c.method){case"rmdir":await t.rmdir(u);break;case"mkdir":await t.mkdir(u);break;case"rm":await t.rm(u);break;case"write":if(!s.some(f=>u.startsWith(f))){let{object:f}=await Ge({fs:t,cache:{},gitdir:r,oid:c.oid});await t.exists(u)&&await t.rm(u),await t.write(u,f)}break}}}),await ct.acquire({fs:t,gitdir:r,cache:{}},async c=>{o.forEach(({filepath:u,stats:f,oid:d})=>{c.insert({filepath:u,stats:f,oid:d})})})}var qa=class t{constructor({fs:e,dir:r,gitdir:n=$.join(r,".git")}){Object.assign(this,{fs:e,dir:r,gitdir:n,_author:null})}static get refStash(){return"refs/stash"}static get refLogsStash(){return"logs/refs/stash"}get refStashPath(){return $.join(this.gitdir,t.refStash)}get refLogsStashPath(){return $.join(this.gitdir,t.refLogsStash)}async getAuthor(){if(!this._author&&(this._author=await ia({fs:this.fs,gitdir:this.gitdir,author:{}}),!this._author))throw new zt("author");return this._author}async getStashSHA(e,r){return await this.fs.exists(this.refStashPath)?(r||await this.readStashReflogs({parsed:!1}))[e].split(" ")[1]:null}async writeStashCommit({message:e,tree:r,parent:n}){return lE({fs:this.fs,gitdir:this.gitdir,commit:{message:e,tree:r,parent:n,author:await this.getAuthor(),committer:await this.getAuthor()}})}async readStashCommit(e){let r=await this.readStashReflogs({parsed:!1});if(e!==0&&(e<0||e>r.length-1))throw new mn(`stash@${e}`,"number that is in range of [0, num of stash pushed]");let n=await this.getStashSHA(e,r);return n?po({fs:this.fs,cache:{},gitdir:this.gitdir,oid:n}):{}}async writeStashRef(e){return V.writeRef({fs:this.fs,gitdir:this.gitdir,ref:t.refStash,value:e})}async writeStashReflogEntry({stashCommit:e,message:r}){let n=await this.getAuthor(),i=Df.createStashReflogEntry(n,e,r),a=this.refLogsStashPath;await vo({filepath:a,entry:i},async()=>{let s=await this.fs.exists(a)?await this.fs.read(a,"utf8"):"";await this.fs.write(a,s+i,"utf8")})}async readStashReflogs({parsed:e=!1}){if(!await this.fs.exists(this.refLogsStashPath))return[];let n=(await this.fs.read(this.refLogsStashPath)).toString();return Df.getStashReflogEntry(n,e)}};async function BD({fs:t,dir:e,gitdir:r,message:n=""}){let i=new qa({fs:t,dir:e,gitdir:r});await i.getAuthor();let a=await sa({fs:t,gitdir:r,fullname:!1}),s=await V.resolve({fs:t,gitdir:r,ref:"HEAD"}),l=(await mg({fs:t,dir:e,gitdir:r,oid:s})).commit.message,c=[s],u=null,f=Pr({ref:"HEAD"}),d=await Rx({fs:t,dir:e,gitdir:r,treePair:[Pr({ref:"HEAD"}),"stage"]});if(d){let v=await i.writeStashCommit({message:`stash-Index: WIP on ${a} - ${new Date().toISOString()}`,tree:d,parent:c});c.push(v),u=d,f=Ya()}let h=await Rx({fs:t,dir:e,gitdir:r,treePair:[f,"workdir"]});if(h){let v=await i.writeStashCommit({message:`stash-WorkDir: WIP on ${a} - ${new Date().toISOString()}`,tree:h,parent:[c[c.length-1]]});c.push(v),u=h}if(!u||!d&&!h)throw new je("changes, nothing to stash");let p=(n.trim()||`WIP on ${a}`)+`: ${s.substring(0,7)} ${l}`,g=await i.writeStashCommit({message:p,tree:u,parent:c});return await i.writeStashRef(g),await i.writeStashReflogEntry({stashCommit:g,message:p}),await dg({fs:t,dir:e,gitdir:r,ref:a,track:!1,force:!0}),g}async function cE({fs:t,dir:e,gitdir:r,refIdx:n=0}){let a=await new qa({fs:t,dir:e,gitdir:r}).readStashCommit(n),{parent:s=null}=a.commit?a.commit:{};if(!(!s||!Array.isArray(s)))for(let o=0;o{await t.exists(s)&&await t.rm(s)});let o=await i.readStashReflogs({parsed:!1});if(!o.length)return;o.splice(n,1);let l=i.refLogsStashPath;await vo({reflogEntries:o,stashReflogPath:l,stashMgr:i},async()=>{if(o.length){await t.write(l,o.join(` +`),"utf8");let c=o[o.length-1].split(" ")[1];await i.writeStashRef(c)}else await t.rm(l)})}async function HD({fs:t,dir:e,gitdir:r}){return new qa({fs:t,dir:e,gitdir:r}).readStashReflogs({parsed:!0})}async function UD({fs:t,dir:e,gitdir:r}){let n=new qa({fs:t,dir:e,gitdir:r}),i=[n.refStashPath,n.refLogsStashPath];await vo(i,async()=>{await Promise.all(i.map(async a=>{if(await t.exists(a))return t.rm(a)}))})}async function GD({fs:t,dir:e,gitdir:r,refIdx:n=0}){await cE({fs:t,dir:e,gitdir:r,refIdx:n}),await uE({fs:t,dir:e,gitdir:r,refIdx:n})}async function fE({fs:t,dir:e,gitdir:r=$.join(e,".git"),op:n="push",message:i="",refIdx:a=0}){P("fs",t),P("dir",e),P("gitdir",r),P("op",n);let s={push:BD,apply:cE,drop:uE,list:HD,clear:UD,pop:GD},o=["apply","drop","pop"];try{let l=new Q(t);["refs","logs","logs/refs"].map(f=>$.join(r,f)).forEach(async f=>{await l.exists(f)||await l.mkdir(f)});let u=s[n];if(u){if(o.includes(n)&&a<0)throw new mn(`stash@${a}`,"number that is in range of [0, num of stash pushed]");return await u({fs:l,dir:e,gitdir:r,message:i,refIdx:a})}throw new Error(`To be implemented: ${n}`)}catch(l){throw l.caller="git.stash",l}}async function dE({fs:t,dir:e,gitdir:r=$.join(e,".git"),filepath:n,cache:i={}}){try{P("fs",t),P("gitdir",r),P("filepath",n);let a=new Q(t);if(await na.isIgnored({fs:a,gitdir:r,dir:e,filepath:n}))return"ignored";let o=await zD({fs:a,cache:i,gitdir:r}),l=await hE({fs:a,cache:i,gitdir:r,tree:o,path:n}),c=await ct.acquire({fs:a,gitdir:r,cache:i},async function(g){for(let v of g)if(v.path===n)return v;return null}),u=await a.lstat($.join(e,n)),f=l!==null,d=c!==null,h=u!==null,p=async()=>{if(d&&!Tf(c,u))return c.oid;{let g=await a.read($.join(e,n)),v=await iE({gitdir:r,type:"blob",object:g});return d&&c.oid===v&&u.size!==-1&&ct.acquire({fs:a,gitdir:r,cache:i},async function(y){y.insert({filepath:n,stats:u,oid:v})}),v}};if(!f&&!h&&!d)return"absent";if(!f&&!h&&d)return"*absent";if(!f&&h&&!d)return"*added";if(!f&&h&&d)return await p()===c.oid?"added":"*added";if(f&&!h&&!d)return"deleted";if(f&&!h&&d)return l===c.oid,"*deleted";if(f&&h&&!d)return await p()===l?"*undeleted":"*undeletemodified";if(f&&h&&d){let g=await p();return g===l?g===c.oid?"unmodified":"*unmodified":g===c.oid?"modified":"*modified"}}catch(a){throw a.caller="git.status",a}}async function hE({fs:t,cache:e,gitdir:r,tree:n,path:i}){typeof i=="string"&&(i=i.split("/"));let a=i.shift();for(let s of n)if(s.path===a){if(i.length===0)return s.oid;let{type:o,object:l}=await Ge({fs:t,cache:e,gitdir:r,oid:s.oid});if(o==="tree"){let c=hr.from(l);return hE({fs:t,cache:e,gitdir:r,tree:c,path:i})}if(o==="blob")throw new tr(s.oid,o,"blob",i.join("/"))}return null}async function zD({fs:t,cache:e,gitdir:r}){let n;try{n=await V.resolve({fs:t,gitdir:r,ref:"HEAD"})}catch(a){if(a instanceof je)return[]}let{tree:i}=await wo({fs:t,cache:e,gitdir:r,oid:n});return i}async function pE({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n="HEAD",filepaths:i=["."],filter:a,cache:s={},ignored:o=!1}){try{P("fs",t),P("gitdir",r),P("ref",n);let l=new Q(t);return await ra({fs:l,cache:s,dir:e,gitdir:r,trees:[Pr({ref:n}),yo(),Ya()],map:async function(c,[u,f,d]){if(!u&&!d&&f&&!o&&await na.isIgnored({fs:l,dir:e,filepath:c})||!i.some(k=>tS(c,k)))return null;if(a&&!a(c))return;let[h,p,g]=await Promise.all([u&&u.type(),f&&f.type(),d&&d.type()]),v=[h,p,g].includes("blob");if((h==="tree"||h==="special")&&!v)return;if(h==="commit")return null;if((p==="tree"||p==="special")&&!v)return;if(g==="commit")return null;if((g==="tree"||g==="special")&&!v)return;let y=h==="blob"?await u.oid():void 0,b=g==="blob"?await d.oid():void 0,E;h!=="blob"&&p==="blob"&&g!=="blob"?E="42":p==="blob"&&(E=await f.oid());let S=[void 0,y,E,b],A=S.map(k=>S.indexOf(k));return A.shift(),[c,...A]}})}catch(l){throw l.caller="git.statusMatrix",l}}async function mE({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n,object:i,force:a=!1}){try{P("fs",t),P("gitdir",r),P("ref",n);let s=new Q(t);if(n===void 0)throw new dr("ref");n=n.startsWith("refs/tags/")?n:`refs/tags/${n}`;let o=await V.resolve({fs:s,gitdir:r,ref:i||"HEAD"});if(!a&&await V.exists({fs:s,gitdir:r,ref:n}))throw new pn("tag",n);await V.writeRef({fs:s,gitdir:r,ref:n,value:o})}catch(s){throw s.caller="git.tag",s}}async function gE({fs:t,dir:e,gitdir:r=$.join(e,".git"),cache:n={},filepath:i,oid:a,mode:s,add:o,remove:l,force:c}){try{P("fs",t),P("gitdir",r),P("filepath",i);let u=new Q(t);if(l)return await ct.acquire({fs:u,gitdir:r,cache:n},async function(d){if(!c){let h=await u.lstat($.join(e,i));if(h){if(h.isDirectory())throw new ta("directory");return}}d.has({filepath:i})&&d.delete({filepath:i})});let f;if(!a){if(f=await u.lstat($.join(e,i)),!f)throw new je(`file at "${i}" on disk and "remove" not set`);if(f.isDirectory())throw new ta("directory")}return await ct.acquire({fs:u,gitdir:r,cache:n},async function(d){if(!o&&!d.has({filepath:i}))throw new je(`file at "${i}" in index and "add" not set`);let h;if(a)h={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:s,uid:0,gid:0,size:0};else{h=f;let p=h.isSymbolicLink()?await u.readlink($.join(e,i)):await u.read($.join(e,i));a=await mr({fs:u,gitdir:r,type:"blob",format:"content",object:p})}return d.insert({filepath:i,oid:a,stats:h}),a})}catch(u){throw u.caller="git.updateIndex",u}}function vE(){try{return Bf.version}catch(t){throw t.caller="git.version",t}}async function yE({fs:t,dir:e,gitdir:r=$.join(e,".git"),trees:n,map:i,reduce:a,iterate:s,cache:o={}}){try{return P("fs",t),P("gitdir",r),P("trees",n),await ra({fs:new Q(t),cache:o,dir:e,gitdir:r,trees:n,map:i,reduce:a,iterate:s})}catch(l){throw l.caller="git.walk",l}}async function wE({fs:t,dir:e,gitdir:r=$.join(e,".git"),blob:n}){try{return P("fs",t),P("gitdir",r),P("blob",n),await mr({fs:new Q(t),gitdir:r,type:"blob",object:n,format:"content"})}catch(i){throw i.caller="git.writeBlob",i}}async function bE({fs:t,dir:e,gitdir:r=$.join(e,".git"),commit:n}){try{return P("fs",t),P("gitdir",r),P("commit",n),await lE({fs:new Q(t),gitdir:r,commit:n})}catch(i){throw i.caller="git.writeCommit",i}}async function _E({fs:t,dir:e,gitdir:r=$.join(e,".git"),type:n,object:i,format:a="parsed",oid:s,encoding:o=void 0}){try{let l=new Q(t);if(a==="parsed"){switch(n){case"commit":i=pr.from(i).toObject();break;case"tree":i=hr.from(i).toObject();break;case"blob":i=Buffer.from(i,o);break;case"tag":i=Rr.from(i).toObject();break;default:throw new tr(s||"",n,"blob|commit|tag|tree")}a="content"}return s=await mr({fs:l,gitdir:r,type:n,object:i,oid:s,format:a}),s}catch(l){throw l.caller="git.writeObject",l}}async function xE({fs:t,dir:e,gitdir:r=$.join(e,".git"),ref:n,value:i,force:a=!1,symbolic:s=!1}){try{P("fs",t),P("gitdir",r),P("ref",n),P("value",i);let o=new Q(t);if(n!==zn.clean(n))throw new mn(n,zn.clean(n));if(!a&&await V.exists({fs:o,gitdir:r,ref:n}))throw new pn("ref",n);s?await V.writeSymbolicRef({fs:o,gitdir:r,ref:n,value:i}):(i=await V.resolve({fs:o,gitdir:r,ref:i}),await V.writeRef({fs:o,gitdir:r,ref:n,value:i}))}catch(o){throw o.caller="git.writeRef",o}}async function VD({fs:t,gitdir:e,tag:r}){let n=Rr.from(r).toObject();return await mr({fs:t,gitdir:e,type:"tag",object:n,format:"content"})}async function SE({fs:t,dir:e,gitdir:r=$.join(e,".git"),tag:n}){try{return P("fs",t),P("gitdir",r),P("tag",n),await VD({fs:new Q(t),gitdir:r,tag:n})}catch(i){throw i.caller="git.writeTag",i}}async function EE({fs:t,dir:e,gitdir:r=$.join(e,".git"),tree:n}){try{return P("fs",t),P("gitdir",r),P("tree",n),await cc({fs:new Q(t),gitdir:r,tree:n})}catch(i){throw i.caller="git.writeTree",i}}var WD={Errors:Bx,STAGE:Ya,TREE:Pr,WORKDIR:yo,add:Vx,abortMerge:Ux,addNote:Kx,addRemote:Jx,annotatedTag:Qx,branch:eS,checkout:dg,clone:sS,commit:oS,getConfig:xS,getConfigAll:SS,setConfig:oE,currentBranch:lS,deleteBranch:cS,deleteRef:uS,deleteRemote:fS,deleteTag:dS,expandOid:hS,expandRef:pS,fastForward:vS,fetch:yS,findMergeBase:wS,findRoot:_S,getRemoteInfo:ES,getRemoteInfo2:kS,hashBlob:TS,indexPack:CS,init:PS,isDescendent:MS,isIgnored:OS,listBranches:IS,listFiles:FS,listNotes:DS,listRefs:LS,listRemotes:jS,listServerRefs:NS,listTags:BS,log:US,merge:GS,packObjects:VS,pull:WS,push:qS,readBlob:KS,readCommit:mg,readNote:ZS,readObject:JS,readTag:QS,readTree:eE,remove:tE,removeNote:rE,renameBranch:nE,resetIndex:aE,updateIndex:gE,resolveRef:sE,status:dE,statusMatrix:pE,tag:mE,version:vE,walk:yE,writeBlob:wE,writeCommit:bE,writeObject:_E,writeRef:xE,writeTag:SE,writeTree:EE,stash:fE};Y.Errors=Bx;Y.STAGE=Ya;Y.TREE=Pr;Y.WORKDIR=yo;Y.abortMerge=Ux;Y.add=Vx;Y.addNote=Kx;Y.addRemote=Jx;Y.annotatedTag=Qx;Y.branch=eS;Y.checkout=dg;Y.clone=sS;Y.commit=oS;Y.currentBranch=lS;Y.default=WD;Y.deleteBranch=cS;Y.deleteRef=uS;Y.deleteRemote=fS;Y.deleteTag=dS;Y.expandOid=hS;Y.expandRef=pS;Y.fastForward=vS;Y.fetch=yS;Y.findMergeBase=wS;Y.findRoot=_S;Y.getConfig=xS;Y.getConfigAll=SS;Y.getRemoteInfo=ES;Y.getRemoteInfo2=kS;Y.hashBlob=TS;Y.indexPack=CS;Y.init=PS;Y.isDescendent=MS;Y.isIgnored=OS;Y.listBranches=IS;Y.listFiles=FS;Y.listNotes=DS;Y.listRefs=LS;Y.listRemotes=jS;Y.listServerRefs=NS;Y.listTags=BS;Y.log=US;Y.merge=GS;Y.packObjects=VS;Y.pull=WS;Y.push=qS;Y.readBlob=KS;Y.readCommit=mg;Y.readNote=ZS;Y.readObject=JS;Y.readTag=QS;Y.readTree=eE;Y.remove=tE;Y.removeNote=rE;Y.renameBranch=nE;Y.resetIndex=aE;Y.resolveRef=sE;Y.setConfig=oE;Y.stash=fE;Y.status=dE;Y.statusMatrix=pE;Y.tag=mE;Y.updateIndex=gE;Y.version=vE;Y.walk=yE;Y.writeBlob=wE;Y.writeCommit=bE;Y.writeObject=_E;Y.writeRef=xE;Y.writeTag=SE;Y.writeTree=EE});var kE=M((GY,AE)=>{m();var bo=1e3,_o=bo*60,xo=_o*60,Xa=xo*24,qD=Xa*7,YD=Xa*365.25;AE.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return XD(t);if(r==="number"&&isFinite(t))return e.long?ZD(t):KD(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function XD(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*YD;case"weeks":case"week":case"w":return r*qD;case"days":case"day":case"d":return r*Xa;case"hours":case"hour":case"hrs":case"hr":case"h":return r*xo;case"minutes":case"minute":case"mins":case"min":case"m":return r*_o;case"seconds":case"second":case"secs":case"sec":case"s":return r*bo;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function KD(t){var e=Math.abs(t);return e>=Xa?Math.round(t/Xa)+"d":e>=xo?Math.round(t/xo)+"h":e>=_o?Math.round(t/_o)+"m":e>=bo?Math.round(t/bo)+"s":t+"ms"}function ZD(t){var e=Math.abs(t);return e>=Xa?Hf(t,e,Xa,"day"):e>=xo?Hf(t,e,xo,"hour"):e>=_o?Hf(t,e,_o,"minute"):e>=bo?Hf(t,e,bo,"second"):t+" ms"}function Hf(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var CE=M((VY,TE)=>{m();function JD(t){r.debug=r,r.default=r,r.coerce=l,r.disable=s,r.enable=i,r.enabled=o,r.humanize=kE(),r.destroy=c,Object.keys(t).forEach(u=>{r[u]=t[u]}),r.names=[],r.skips=[],r.formatters={};function e(u){let f=0;for(let d=0;d{if(k==="%%")return"%";S++;let x=r.formatters[w];if(typeof x=="function"){let _=v[S];k=x.call(y,_),v.splice(S,1),S--}return k}),r.formatArgs.call(y,v),(y.log||r.log).apply(y,v)}return g.namespace=u,g.useColors=r.useColors(),g.color=r.selectColor(u),g.extend=n,g.destroy=r.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==r.namespaces&&(h=r.namespaces,p=r.enabled(u)),p),set:v=>{d=v}}),typeof r.init=="function"&&r.init(g),g}function n(u,f){let d=r(this.namespace+(typeof f=="undefined"?":":f)+u);return d.log=this.log,d}function i(u){r.save(u),r.namespaces=u,r.names=[],r.skips=[];let f=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let d of f)d[0]==="-"?r.skips.push(d.slice(1)):r.names.push(d)}function a(u,f){let d=0,h=0,p=-1,g=0;for(;d"-"+f)].join(",");return r.enable(""),u}function o(u){for(let f of r.skips)if(a(u,f))return!1;for(let f of r.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 r.enable(r.load()),r}TE.exports=JD});var Gf=M((gr,Uf)=>{m();gr.formatArgs=eL;gr.save=tL;gr.load=rL;gr.useColors=QD;gr.storage=nL();gr.destroy=(()=>{let t=!1;return()=>{t||(t=!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`."))}})();gr.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 QD(){if(typeof window!="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function eL(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+Uf.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}gr.log=console.debug||console.log||(()=>{});function tL(t){try{t?gr.storage.setItem("debug",t):gr.storage.removeItem("debug")}catch(e){}}function rL(){let t;try{t=gr.storage.getItem("debug")||gr.storage.getItem("DEBUG")}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}function nL(){try{return localStorage}catch(t){}}Uf.exports=CE()(gr);var{formatters:iL}=Uf.exports;iL.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var PE=M(Mr=>{"use strict";m();var aL=Mr&&Mr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Mr,"__esModule",{value:!0});var sL=require("fs"),oL=aL(Gf()),So=oL.default("@kwsites/file-exists");function lL(t,e,r){So("checking %s",t);try{let n=sL.statSync(t);return n.isFile()&&e?(So("[OK] path represents a file"),!0):n.isDirectory()&&r?(So("[OK] path represents a directory"),!0):(So("[FAIL] path represents something other than a file or directory"),!1)}catch(n){if(n.code==="ENOENT")return So("[FAIL] path is not accessible: %o",n),!1;throw So("[FATAL] %o",n),n}}function cL(t,e=Mr.READABLE){return lL(t,(e&Mr.FILE)>0,(e&Mr.FOLDER)>0)}Mr.exists=cL;Mr.FILE=1;Mr.FOLDER=2;Mr.READABLE=Mr.FILE+Mr.FOLDER});var RE=M(zf=>{"use strict";m();function uL(t){for(var e in t)zf.hasOwnProperty(e)||(zf[e]=t[e])}Object.defineProperty(zf,"__esModule",{value:!0});uL(PE())});var yg=M(Ka=>{"use strict";m();Object.defineProperty(Ka,"__esModule",{value:!0});Ka.createDeferred=Ka.deferred=void 0;function vg(){let t,e,r="pending";return{promise:new Promise((i,a)=>{t=i,e=a}),done(i){r==="pending"&&(r="resolved",t(i))},fail(i){r==="pending"&&(r="rejected",e(i))},get fulfilled(){return r!=="pending"},get status(){return r}}}Ka.deferred=vg;Ka.createDeferred=vg;Ka.default=vg});var yT=M((FX,vT)=>{"use strict";m();vT.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var bT=M((LX,wT)=>{m();var c0={px:{px:1,cm:37.79527559055118,mm:3.7795275590551185,in:96,pt:1.3333333333333333,pc:16},cm:{px:.026458333333333334,cm:1,mm:.1,in:2.54,pt:.035277777777777776,pc:.42333333333333334},mm:{px:.26458333333333334,cm:10,mm:1,in:25.4,pt:.35277777777777775,pc:4.233333333333333},in:{px:.010416666666666666,cm:.39370078740157477,mm:.03937007874015748,in:1,pt:.013888888888888888,pc:.16666666666666666},pt:{px:.75,cm:28.346456692913385,mm:2.834645669291339,in:72,pt:1,pc:12},pc:{px:.0625,cm:2.3622047244094486,mm:.2362204724409449,in:6,pt:.08333333333333333,pc:1},deg:{deg:1,grad:.9,rad:180/Math.PI,turn:360},grad:{deg:1.1111111111111112,grad:1,rad:200/Math.PI,turn:400},rad:{deg:Math.PI/180,grad:Math.PI/200,rad:1,turn:Math.PI*2},turn:{deg:.002777777777777778,grad:.0025,rad:.5/Math.PI,turn:1},s:{s:1,ms:.001},ms:{s:1e3,ms:1},Hz:{Hz:1,kHz:1e3},kHz:{Hz:.001,kHz:1},dpi:{dpi:1,dpcm:.39370078740157477,dppx:.010416666666666666},dpcm:{dpi:2.54,dpcm:1,dppx:.026458333333333334},dppx:{dpi:96,dpcm:37.79527559055118,dppx:1}};wT.exports=function(t,e,r,n){if(!c0.hasOwnProperty(r))throw new Error("Cannot convert to "+r);if(!c0[r].hasOwnProperty(e))throw new Error("Cannot convert from "+e+" to "+r);var i=c0[r][e]*t;return n!==!1?(n=Math.pow(10,parseInt(n)||5),Math.round(i*n)/n):i}});var $T=M(xi=>{"use strict";m();Object.defineProperty(xi,"__esModule",{value:!0});xi.fromRgba=Po;xi.fromRgb=u0;xi.fromHsla=md;xi.fromHsl=OT;xi.fromString=IT;xi.default=void 0;var _T=ET(yT()),bB=ET(bT());function ET(t){return t&&t.__esModule?t:{default:t}}function _B(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function xT(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r-1}function TB(t,e,r){var n=t/255,i=e/255,a=r/255,s=Math.max(n,i,a),o=Math.min(n,i,a),l=s-o,c=(s+o)/2;if(l===0)return[0,0,c*100];var u=l/(1-Math.abs(2*c-1)),f=function(){switch(s){case n:return(i-a)/l%6;case i:return(a-n)/l+2;default:return(n-i)/l+4}}();return[f*60,u*100,c*100]}function CB(t,e,r){var n=t/60,i=e/100,a=r/100,s=(1-Math.abs(2*a-1))*i,o=s*(1-Math.abs(n%2-1)),l=a-s/2,c=function(){return n<1?[s,o,0]:n<2?[o,s,0]:n<3?[0,s,o]:n<4?[0,o,s]:n<5?[o,0,s]:[s,0,o]}(),u=nr(c,3),f=u[0],d=u[1],h=u[2];return[(f+l)*255,(d+l)*255,(h+l)*255]}var PB=function(){function t(e){var r=nr(e,4),n=r[0],i=r[1],a=r[2],s=r[3];_B(this,t),this.values=[Math.max(Math.min(parseInt(n,10),255),0),Math.max(Math.min(parseInt(i,10),255),0),Math.max(Math.min(parseInt(a,10),255),0),s==null?1:Math.max(Math.min(parseFloat(s),255),0)]}return xB(t,[{key:"toRgbString",value:function(){var r=nr(this.values,4),n=r[0],i=r[1],a=r[2],s=r[3];return s===1?"rgb(".concat(n,", ").concat(i,", ").concat(a,")"):"rgba(".concat(n,", ").concat(i,", ").concat(a,", ").concat(s,")")}},{key:"toHslString",value:function(){var r=this.toHslaArray(),n=nr(r,4),i=n[0],a=n[1],s=n[2],o=n[3];return o===1?"hsl(".concat(i,", ").concat(a,"%, ").concat(s,"%)"):"hsla(".concat(i,", ").concat(a,"%, ").concat(s,"%, ").concat(o,")")}},{key:"toHexString",value:function(){var r=nr(this.values,4),n=r[0],i=r[1],a=r[2],s=r[3];return n=Number(n).toString(16).padStart(2,"0"),i=Number(i).toString(16).padStart(2,"0"),a=Number(a).toString(16).padStart(2,"0"),s=s<1?parseInt(s*255,10).toString(16).padStart(2,"0"):"","#".concat(n).concat(i).concat(a).concat(s)}},{key:"toRgbaArray",value:function(){return this.values}},{key:"toHslaArray",value:function(){var r=nr(this.values,4),n=r[0],i=r[1],a=r[2],s=r[3],o=TB(n,i,a),l=nr(o,3),c=l[0],u=l[1],f=l[2];return[c,u,f,s]}}]),t}();function Po(t){var e=nr(t,4),r=e[0],n=e[1],i=e[2],a=e[3];return new PB([r,n,i,a])}function u0(t){var e=nr(t,3),r=e[0],n=e[1],i=e[2];return Po([r,n,i,1])}function md(t){var e=nr(t,4),r=e[0],n=e[1],i=e[2],a=e[3],s=CB(r,n,i),o=nr(s,3),l=o[0],c=o[1],u=o[2];return Po([l,c,u,a])}function OT(t){var e=nr(t,3),r=e[0],n=e[1],i=e[2];return md([r,n,i,1])}function RB(t){var e=AT.exec(t)||kT.exec(t),r=nr(e,5),n=r[1],i=r[2],a=r[3],s=r[4];return n=parseInt(n.length<2?n.repeat(2):n,16),i=parseInt(i.length<2?i.repeat(2):i,16),a=parseInt(a.length<2?a.repeat(2):a,16),s=s&&(parseInt(s.length<2?s.repeat(2):s,16)/255).toPrecision(1)||1,Po([n,i,a,s])}function MB(t){var e=TT.exec(t)||PT.exec(t)||CT.exec(t)||RT.exec(t),r=nr(e,5),n=r[1],i=r[2],a=r[3],s=r[4];return n=bc(n,"%")?parseInt(n,10)*255/100:parseInt(n,10),i=bc(i,"%")?parseInt(i,10)*255/100:parseInt(i,10),a=bc(a,"%")>0?parseInt(a,10)*255/100:parseInt(a,10),s=s===void 0?1:parseFloat(s)/(bc(s,"%")?100:1),Po([n,i,a,s])}function OB(t){var e=MT.exec(t),r=nr(e,6),n=r[1],i=r[2],a=r[3],s=r[4],o=r[5];return i=i||"deg",n=(0,bB.default)(parseFloat(n),i,"deg"),a=parseFloat(a),s=parseFloat(s),o=o===void 0?1:parseFloat(o)/(bc(o,"%")?100:1),md([n,a,s,o])}function IT(t){return _T.default[t]?u0(_T.default[t]):AT.test(t)||kT.test(t)?RB(t):TT.test(t)||PT.test(t)||CT.test(t)||RT.test(t)?MB(t):MT.test(t)?OB(t):null}var IB={fromString:IT,fromRgb:u0,fromRgba:Po,fromHsl:OT,fromHsla:md};xi.default=IB});var f0=M((HX,DT)=>{"use strict";m();var FT=Object.prototype.toString;DT.exports=function(e){var r=FT.call(e),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&FT.call(e.callee)==="[object Function]"),n}});var VT=M((GX,zT)=>{"use strict";m();var GT;Object.keys||(_c=Object.prototype.hasOwnProperty,d0=Object.prototype.toString,LT=f0(),h0=Object.prototype.propertyIsEnumerable,jT=!h0.call({toString:null},"toString"),NT=h0.call(function(){},"prototype"),xc=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],gd=function(t){var e=t.constructor;return e&&e.prototype===t},BT={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},HT=function(){if(typeof window=="undefined")return!1;for(var t in window)try{if(!BT["$"+t]&&_c.call(window,t)&&window[t]!==null&&typeof window[t]=="object")try{gd(window[t])}catch(e){return!0}}catch(e){return!0}return!1}(),UT=function(t){if(typeof window=="undefined"||!HT)return gd(t);try{return gd(t)}catch(e){return!1}},GT=function(e){var r=e!==null&&typeof e=="object",n=d0.call(e)==="[object Function]",i=LT(e),a=r&&d0.call(e)==="[object String]",s=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var o=NT&&n;if(a&&e.length>0&&!_c.call(e,0))for(var l=0;l0)for(var c=0;c{"use strict";m();var $B=Array.prototype.slice,FB=f0(),WT=Object.keys,vd=WT?function(e){return WT(e)}:VT(),qT=Object.keys;vd.shim=function(){if(Object.keys){var e=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);e||(Object.keys=function(n){return FB(n)?qT($B.call(n)):qT(n)})}else Object.keys=vd;return Object.keys||vd};YT.exports=vd});var fa=M((qX,JT)=>{"use strict";m();var DB=yd(),LB=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",jB=Object.prototype.toString,NB=Array.prototype.concat,XT=Qu(),BB=function(t){return typeof t=="function"&&jB.call(t)==="[object Function]"},KT=ef()(),HB=function(t,e,r,n){if(e in t){if(n===!0){if(t[e]===r)return}else if(!BB(n)||!n())return}KT?XT(t,e,r,!0):XT(t,e,r)},ZT=function(t,e){var r=arguments.length>2?arguments[2]:{},n=DB(e);LB&&(n=NB.call(n,Object.getOwnPropertySymbols(e)));for(var i=0;i{"use strict";m();var UB=yd(),eC=xl()(),tC=xt(),wd=Nu(),GB=tC("Array.prototype.push"),QT=tC("Object.prototype.propertyIsEnumerable"),zB=eC?wd.getOwnPropertySymbols:null;rC.exports=function(e,r){if(e==null)throw new TypeError("target must be an object");var n=wd(e);if(arguments.length===1)return n;for(var i=1;i{"use strict";m();var m0=p0(),VB=function(){if(!Object.assign)return!1;for(var t="abcdefghijklmnopqrst",e=t.split(""),r={},n=0;n{"use strict";m();var qB=fa(),YB=g0();iC.exports=function(){var e=YB();return qB(Object,{assign:e},{assign:function(){return Object.assign!==e}}),e}});var cC=M((tK,lC)=>{"use strict";m();var XB=fa(),KB=$a(),ZB=p0(),sC=g0(),JB=aC(),QB=KB.apply(sC()),oC=function(e,r){return QB(Object,arguments)};XB(oC,{getPolyfill:sC,implementation:ZB,shim:JB});lC.exports=oC});var v0=M((nK,dC)=>{"use strict";m();var uC=$n(),fC=$a(),e7=fC(uC("String.prototype.indexOf"));dC.exports=function(e,r){var n=uC(e,!!r);return typeof n=="function"&&e7(e,".prototype.")>-1?fC(n):n}});var pC=M((aK,hC)=>{"use strict";m();var Ec=function(){return typeof function(){}.name=="string"},Sc=Object.getOwnPropertyDescriptor;if(Sc)try{Sc([],"length")}catch(t){Sc=null}Ec.functionsHaveConfigurableNames=function(){if(!Ec()||!Sc)return!1;var e=Sc(function(){},"name");return!!e&&!!e.configurable};var t7=Function.prototype.bind;Ec.boundFunctionsHaveNames=function(){return Ec()&&typeof t7=="function"&&function(){}.bind().name!==""};hC.exports=Ec});var vC=M((oK,gC)=>{"use strict";m();var mC=Qu(),r7=ef()(),n7=pC().functionsHaveConfigurableNames(),i7=ur();gC.exports=function(e,r){if(typeof e!="function")throw new i7("`fn` is not a function");var n=arguments.length>2&&!!arguments[2];return(!n||n7)&&(r7?mC(e,"name",r,!0,!0):mC(e,"name",r)),e}});var y0=M((cK,yC)=>{"use strict";m();var a7=vC(),s7=ur(),o7=Object;yC.exports=a7(function(){if(this==null||this!==o7(this))throw new s7("RegExp.prototype.flags getter called on non-object");var e="";return this.hasIndices&&(e+="d"),this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),this.dotAll&&(e+="s"),this.unicode&&(e+="u"),this.unicodeSets&&(e+="v"),this.sticky&&(e+="y"),e},"get flags",!0)});var w0=M((fK,wC)=>{"use strict";m();var l7=y0(),c7=fa().supportsDescriptors,u7=Object.getOwnPropertyDescriptor;wC.exports=function(){if(c7&&/a/mig.flags==="gim"){var e=u7(RegExp.prototype,"flags");if(e&&typeof e.get=="function"&&"dotAll"in RegExp.prototype&&"hasIndices"in RegExp.prototype){var r="",n={};if(Object.defineProperty(n,"hasIndices",{get:function(){r+="d"}}),Object.defineProperty(n,"sticky",{get:function(){r+="y"}}),e.get.call(n),r==="dy")return e.get}}return l7}});var xC=M((hK,_C)=>{"use strict";m();var f7=fa().supportsDescriptors,d7=w0(),h7=Gi(),p7=Object.defineProperty,m7=$p(),bC=qu(),g7=/a/;_C.exports=function(){if(!f7||!bC)throw new m7("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var e=d7(),r=bC(g7),n=h7(r,"flags");return(!n||n.get!==e)&&p7(r,"flags",{configurable:!0,enumerable:!1,get:e}),e}});var kC=M((mK,AC)=>{"use strict";m();var v7=fa(),y7=$a(),w7=y0(),SC=w0(),b7=xC(),EC=y7(SC());v7(EC,{getPolyfill:SC,implementation:w7,shim:b7});AC.exports=EC});var _0=M((vK,CC)=>{"use strict";m();var _7=zi()(),x7=xt(),b0=x7("Object.prototype.toString"),bd=function(e){return _7&&e&&typeof e=="object"&&Symbol.toStringTag in e?!1:b0(e)==="[object Arguments]"},TC=function(e){return bd(e)?!0:e!==null&&typeof e=="object"&&"length"in e&&typeof e.length=="number"&&e.length>=0&&b0(e)!=="[object Array]"&&"callee"in e&&b0(e.callee)==="[object Function]"},S7=function(){return bd(arguments)}();bd.isLegacyArguments=TC;CC.exports=S7?bd:TC});var PC=M(()=>{m()});var Pc=M((xK,XC)=>{m();var M0=typeof Map=="function"&&Map.prototype,x0=Object.getOwnPropertyDescriptor&&M0?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,xd=M0&&x0&&typeof x0.get=="function"?x0.get:null,RC=M0&&Map.prototype.forEach,O0=typeof Set=="function"&&Set.prototype,S0=Object.getOwnPropertyDescriptor&&O0?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Sd=O0&&S0&&typeof S0.get=="function"?S0.get:null,MC=O0&&Set.prototype.forEach,E7=typeof WeakMap=="function"&&WeakMap.prototype,kc=E7?WeakMap.prototype.has:null,A7=typeof WeakSet=="function"&&WeakSet.prototype,Tc=A7?WeakSet.prototype.has:null,k7=typeof WeakRef=="function"&&WeakRef.prototype,OC=k7?WeakRef.prototype.deref:null,T7=Boolean.prototype.valueOf,C7=Object.prototype.toString,P7=Function.prototype.toString,R7=String.prototype.match,I0=String.prototype.slice,da=String.prototype.replace,M7=String.prototype.toUpperCase,IC=String.prototype.toLowerCase,UC=RegExp.prototype.test,$C=Array.prototype.concat,qn=Array.prototype.join,O7=Array.prototype.slice,FC=Math.floor,k0=typeof BigInt=="function"?BigInt.prototype.valueOf:null,E0=Object.getOwnPropertySymbols,T0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Ro=typeof Symbol=="function"&&typeof Symbol.iterator=="object",Cc=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Ro||!0)?Symbol.toStringTag:null,GC=Object.prototype.propertyIsEnumerable,DC=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function LC(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||UC.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-FC(-t):FC(t);if(n!==t){var i=String(n),a=I0.call(e,i.length+1);return da.call(i,r,"$&_")+"."+da.call(da.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return da.call(e,r,"$&_")}var C0=PC(),jC=C0.custom,NC=WC(jC)?jC:null,zC={__proto__:null,double:'"',single:"'"},I7={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};XC.exports=function t(e,r,n,i){var a=r||{};if(Si(a,"quoteStyle")&&!Si(zC,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Si(a,"maxStringLength")&&(typeof a.maxStringLength=="number"?a.maxStringLength<0&&a.maxStringLength!==1/0:a.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var s=Si(a,"customInspect")?a.customInspect:!0;if(typeof s!="boolean"&&s!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Si(a,"indent")&&a.indent!==null&&a.indent!==" "&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Si(a,"numericSeparator")&&typeof a.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=a.numericSeparator;if(typeof e=="undefined")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return YC(e,a);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var l=String(e);return o?LC(e,l):l}if(typeof e=="bigint"){var c=String(e)+"n";return o?LC(e,c):c}var u=typeof a.depth=="undefined"?5:a.depth;if(typeof n=="undefined"&&(n=0),n>=u&&u>0&&typeof e=="object")return P0(e)?"[Array]":"[Object]";var f=Z7(a,n);if(typeof i=="undefined")i=[];else if(qC(i,e)>=0)return"[Circular]";function d(L,F,J){if(F&&(i=O7.call(i),i.push(F)),J){var de={depth:a.depth};return Si(a,"quoteStyle")&&(de.quoteStyle=a.quoteStyle),t(L,de,n+1,i)}return t(L,a,n+1,i)}if(typeof e=="function"&&!BC(e)){var h=U7(e),p=_d(e,d);return"[Function"+(h?": "+h:" (anonymous)")+"]"+(p.length>0?" { "+qn.call(p,", ")+" }":"")}if(WC(e)){var g=Ro?da.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):T0.call(e);return typeof e=="object"&&!Ro?Ac(g):g}if(Y7(e)){for(var v="<"+IC.call(String(e.nodeName)),y=e.attributes||[],b=0;b",v}if(P0(e)){if(e.length===0)return"[]";var E=_d(e,d);return f&&!K7(E)?"["+R0(E,f)+"]":"[ "+qn.call(E,", ")+" ]"}if(D7(e)){var S=_d(e,d);return!("cause"in Error.prototype)&&"cause"in e&&!GC.call(e,"cause")?"{ ["+String(e)+"] "+qn.call($C.call("[cause]: "+d(e.cause),S),", ")+" }":S.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+qn.call(S,", ")+" }"}if(typeof e=="object"&&s){if(NC&&typeof e[NC]=="function"&&C0)return C0(e,{depth:u-n});if(s!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(G7(e)){var A=[];return RC&&RC.call(e,function(L,F){A.push(d(F,e,!0)+" => "+d(L,e))}),HC("Map",xd.call(e),A,f)}if(W7(e)){var k=[];return MC&&MC.call(e,function(L){k.push(d(L,e))}),HC("Set",Sd.call(e),k,f)}if(z7(e))return A0("WeakMap");if(q7(e))return A0("WeakSet");if(V7(e))return A0("WeakRef");if(j7(e))return Ac(d(Number(e)));if(B7(e))return Ac(d(k0.call(e)));if(N7(e))return Ac(T7.call(e));if(L7(e))return Ac(d(String(e)));if(typeof window!="undefined"&&e===window)return"{ [object Window] }";if(typeof globalThis!="undefined"&&e===globalThis||typeof global!="undefined"&&e===global)return"{ [object globalThis] }";if(!F7(e)&&!BC(e)){var w=_d(e,d),x=DC?DC(e)===Object.prototype:e instanceof Object||e.constructor===Object,_=e instanceof Object?"":"null prototype",T=!x&&Cc&&Object(e)===e&&Cc in e?I0.call(ha(e),8,-1):_?"Object":"",C=x||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",I=C+(T||_?"["+qn.call($C.call([],T||[],_||[]),": ")+"] ":"");return w.length===0?I+"{}":f?I+"{"+R0(w,f)+"}":I+"{ "+qn.call(w,", ")+" }"}return String(e)};function VC(t,e,r){var n=r.quoteStyle||e,i=zC[n];return i+t+i}function $7(t){return da.call(String(t),/"/g,""")}function ts(t){return!Cc||!(typeof t=="object"&&(Cc in t||typeof t[Cc]!="undefined"))}function P0(t){return ha(t)==="[object Array]"&&ts(t)}function F7(t){return ha(t)==="[object Date]"&&ts(t)}function BC(t){return ha(t)==="[object RegExp]"&&ts(t)}function D7(t){return ha(t)==="[object Error]"&&ts(t)}function L7(t){return ha(t)==="[object String]"&&ts(t)}function j7(t){return ha(t)==="[object Number]"&&ts(t)}function N7(t){return ha(t)==="[object Boolean]"&&ts(t)}function WC(t){if(Ro)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!T0)return!1;try{return T0.call(t),!0}catch(e){}return!1}function B7(t){if(!t||typeof t!="object"||!k0)return!1;try{return k0.call(t),!0}catch(e){}return!1}var H7=Object.prototype.hasOwnProperty||function(t){return t in this};function Si(t,e){return H7.call(t,e)}function ha(t){return C7.call(t)}function U7(t){if(t.name)return t.name;var e=R7.call(P7.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function qC(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return YC(I0.call(t,0,e.maxStringLength),e)+n}var i=I7[e.quoteStyle||"single"];i.lastIndex=0;var a=da.call(da.call(t,i,"\\$1"),/[\x00-\x1f]/g,X7);return VC(a,"single",e)}function X7(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+M7.call(e.toString(16))}function Ac(t){return"Object("+t+")"}function A0(t){return t+" { ? }"}function HC(t,e,r,n){var i=n?R0(r,n):qn.call(r,", ");return t+" ("+e+") {"+i+"}"}function K7(t){for(var e=0;e=0)return!1;return!0}function Z7(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=qn.call(Array(t.indent+1)," ");else return null;return{base:r,prev:qn.call(Array(e+1),r)}}function R0(t,e){if(t.length===0)return"";var r=` +`+e.prev+e.base;return r+qn.call(t,","+r)+` +`+e.prev}function _d(t,e){var r=P0(t),n=[];if(r){n.length=t.length;for(var i=0;i{"use strict";m();var J7=Pc(),Q7=ur(),Ed=function(t,e,r){for(var n=t,i;(i=n.next)!=null;n=i)if(i.key===e)return n.next=i.next,r||(i.next=t.next,t.next=i),i},e9=function(t,e){if(t){var r=Ed(t,e);return r&&r.value}},t9=function(t,e,r){var n=Ed(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},r9=function(t,e){return t?!!Ed(t,e):!1},n9=function(t,e){if(t)return Ed(t,e,!0)};KC.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new Q7("Side channel does not contain "+J7(n))},delete:function(n){var i=e&&e.next,a=n9(e,n);return a&&i&&i===a&&(e=void 0),!!a},get:function(n){return e9(e,n)},has:function(n){return r9(e,n)},set:function(n,i){e||(e={next:void 0}),t9(e,n,i)}};return r}});var $0=M((kK,QC)=>{"use strict";m();var i9=$n(),Rc=xt(),a9=Pc(),s9=ur(),JC=i9("%Map%",!0),o9=Rc("Map.prototype.get",!0),l9=Rc("Map.prototype.set",!0),c9=Rc("Map.prototype.has",!0),u9=Rc("Map.prototype.delete",!0),f9=Rc("Map.prototype.size",!0);QC.exports=!!JC&&function(){var e,r={assert:function(n){if(!r.has(n))throw new s9("Side channel does not contain "+a9(n))},delete:function(n){if(e){var i=u9(e,n);return f9(e)===0&&(e=void 0),i}return!1},get:function(n){if(e)return o9(e,n)},has:function(n){return e?c9(e,n):!1},set:function(n,i){e||(e=new JC),l9(e,n,i)}};return r}});var tP=M((CK,eP)=>{"use strict";m();var d9=$n(),kd=xt(),h9=Pc(),Ad=$0(),p9=ur(),Mo=d9("%WeakMap%",!0),m9=kd("WeakMap.prototype.get",!0),g9=kd("WeakMap.prototype.set",!0),v9=kd("WeakMap.prototype.has",!0),y9=kd("WeakMap.prototype.delete",!0);eP.exports=Mo?function(){var e,r,n={assert:function(i){if(!n.has(i))throw new p9("Side channel does not contain "+h9(i))},delete:function(i){if(Mo&&i&&(typeof i=="object"||typeof i=="function")){if(e)return y9(e,i)}else if(Ad&&r)return r.delete(i);return!1},get:function(i){return Mo&&i&&(typeof i=="object"||typeof i=="function")&&e?m9(e,i):r&&r.get(i)},has:function(i){return Mo&&i&&(typeof i=="object"||typeof i=="function")&&e?v9(e,i):!!r&&r.has(i)},set:function(i,a){Mo&&i&&(typeof i=="object"||typeof i=="function")?(e||(e=new Mo),g9(e,i,a)):Ad&&(r||(r=Ad()),r.set(i,a))}};return n}:Ad});var F0=M((RK,rP)=>{"use strict";m();var w9=ur(),b9=Pc(),_9=ZC(),x9=$0(),S9=tP(),E9=S9||x9||_9;rP.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new w9("Side channel does not contain "+b9(n))},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,i){e||(e=E9()),e.set(n,i)}};return r}});var iP=M((OK,nP)=>{"use strict";m();var A9=Yu(),Mc=F0()(),Ei=ur(),D0={assert:function(t,e){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");if(Mc.assert(t),!D0.has(t,e))throw new Ei("`"+e+"` is not present on `O`")},get:function(t,e){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");var r=Mc.get(t);return r&&r["$"+e]},has:function(t,e){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");var r=Mc.get(t);return!!r&&A9(r,"$"+e)},set:function(t,e,r){if(!t||typeof t!="object"&&typeof t!="function")throw new Ei("`O` is not an object");if(typeof e!="string")throw new Ei("`slot` must be a string");var n=Mc.get(t);n||(n={},Mc.set(t,n)),n["$"+e]=r}};Object.freeze&&Object.freeze(D0);nP.exports=D0});var oP=M(($K,sP)=>{"use strict";m();var Oc=iP(),k9=Bu(),aP=typeof StopIteration=="object"?StopIteration:null;sP.exports=function(e){if(!aP)throw new k9("this environment lacks StopIteration");Oc.set(e,"[[Done]]",!1);var r={next:function(){var i=Oc.get(this,"[[Iterator]]"),a=!!Oc.get(i,"[[Done]]");try{return{done:a,value:a?void 0:i.next()}}catch(s){if(Oc.set(i,"[[Done]]",!0),s!==aP)throw s;return{done:!0,value:void 0}}}};return Oc.set(r,"[[Iterator]]",e),r}});var L0=M((DK,cP)=>{"use strict";m();var lP=xt(),T9=lP("String.prototype.valueOf"),C9=function(e){try{return T9(e),!0}catch(r){return!1}},P9=lP("Object.prototype.toString"),R9="[object String]",M9=zi()();cP.exports=function(e){return typeof e=="string"?!0:!e||typeof e!="object"?!1:M9?C9(e):P9(e)===R9}});var N0=M((jK,dP)=>{"use strict";m();var j0=typeof Map=="function"&&Map.prototype?Map:null,O9=typeof Set=="function"&&Set.prototype?Set:null,Td;j0||(Td=function(e){return!1});var fP=j0?Map.prototype.has:null,uP=O9?Set.prototype.has:null;!Td&&!fP&&(Td=function(e){return!1});dP.exports=Td||function(e){if(!e||typeof e!="object")return!1;try{if(fP.call(e),uP)try{uP.call(e)}catch(r){return!0}return e instanceof j0}catch(r){}return!1}});var H0=M((BK,mP)=>{"use strict";m();var I9=typeof Map=="function"&&Map.prototype?Map:null,B0=typeof Set=="function"&&Set.prototype?Set:null,Cd;B0||(Cd=function(e){return!1});var hP=I9?Map.prototype.has:null,pP=B0?Set.prototype.has:null;!Cd&&!pP&&(Cd=function(e){return!1});mP.exports=Cd||function(e){if(!e||typeof e!="object")return!1;try{if(pP.call(e),hP)try{hP.call(e)}catch(r){return!0}return e instanceof B0}catch(r){}return!1}});var TP=M((UK,Md)=>{"use strict";m();var gP=_0(),vP=oP();Gu()()||xl()()?(Pd=Symbol.iterator,Md.exports=function(e){if(e!=null&&typeof e[Pd]!="undefined")return e[Pd]();if(gP(e))return Array.prototype[Pd].call(e)}):(yP=ju(),wP=L0(),U0=$n(),bP=U0("%Map%",!0),_P=U0("%Set%",!0),Jr=v0(),G0=Jr("Array.prototype.push"),z0=Jr("String.prototype.charCodeAt"),xP=Jr("String.prototype.slice"),SP=function(e,r){var n=e.length;if(r+1>=n)return r+1;var i=z0(e,r);if(i<55296||i>56319)return r+1;var a=z0(e,r+1);return a<56320||a>57343?r+1:r+2},Rd=function(e){var r=0;return{next:function(){var i=r>=e.length,a;return i||(a=e[r],r+=1),{done:i,value:a}}}},V0=function(e,r){if(yP(e)||gP(e))return Rd(e);if(wP(e)){var n=0;return{next:function(){var a=SP(e,n),s=xP(e,n,a);return n=a,{done:a>e.length,value:s}}}}if(r&&typeof e["_es6-shim iterator_"]!="undefined")return e["_es6-shim iterator_"]()},!bP&&!_P?Md.exports=function(e){if(e!=null)return V0(e,!0)}:(EP=N0(),AP=H0(),W0=Jr("Map.prototype.forEach",!0),q0=Jr("Set.prototype.forEach",!0),(typeof process=="undefined"||!process.versions||!process.versions.node)&&(Y0=Jr("Map.prototype.iterator",!0),X0=Jr("Set.prototype.iterator",!0)),K0=Jr("Map.prototype.@@iterator",!0)||Jr("Map.prototype._es6-shim iterator_",!0),Z0=Jr("Set.prototype.@@iterator",!0)||Jr("Set.prototype._es6-shim iterator_",!0),kP=function(e){if(EP(e)){if(Y0)return vP(Y0(e));if(K0)return K0(e);if(W0){var r=[];return W0(e,function(i,a){G0(r,[a,i])}),Rd(r)}}if(AP(e)){if(X0)return vP(X0(e));if(Z0)return Z0(e);if(q0){var n=[];return q0(e,function(i){G0(n,i)}),Rd(n)}}},Md.exports=function(e){return kP(e)||V0(e)}));var Pd,yP,wP,U0,bP,_P,Jr,G0,z0,xP,SP,Rd,V0,EP,AP,W0,q0,Y0,X0,K0,Z0,kP});var J0=M((zK,PP)=>{"use strict";m();var CP=function(t){return t!==t};PP.exports=function(e,r){return e===0&&r===0?1/e===1/r:!!(e===r||CP(e)&&CP(r))}});var Q0=M((WK,RP)=>{"use strict";m();var $9=J0();RP.exports=function(){return typeof Object.is=="function"?Object.is:$9}});var OP=M((YK,MP)=>{"use strict";m();var F9=Q0(),D9=fa();MP.exports=function(){var e=F9();return D9(Object,{is:e},{is:function(){return Object.is!==e}}),e}});var DP=M((KK,FP)=>{"use strict";m();var L9=fa(),j9=$a(),N9=J0(),IP=Q0(),B9=OP(),$P=j9(IP(),Object);L9($P,{getPolyfill:IP,implementation:N9,shim:B9});FP.exports=$P});var tv=M((JK,BP)=>{"use strict";m();var H9=$a(),NP=xt(),U9=$n(),ev=U9("%ArrayBuffer%",!0),Od=NP("ArrayBuffer.prototype.byteLength",!0),G9=NP("Object.prototype.toString"),LP=!!ev&&!Od&&new ev(0).slice,jP=!!LP&&H9(LP);BP.exports=Od||jP?function(e){if(!e||typeof e!="object")return!1;try{return Od?Od(e):jP(e,0),!0}catch(r){return!1}}:ev?function(e){return G9(e)==="[object ArrayBuffer]"}:function(e){return!1}});var GP=M((eZ,UP)=>{"use strict";m();var HP=xt(),z9=HP("Date.prototype.getDay"),V9=function(e){try{return z9(e),!0}catch(r){return!1}},W9=HP("Object.prototype.toString"),q9="[object Date]",Y9=zi()();UP.exports=function(e){return typeof e!="object"||e===null?!1:Y9?V9(e):W9(e)===q9}});var av=M((rZ,YP)=>{"use strict";m();var zP=xt(),X9=zi()(),K9=Yu(),Z9=Gi(),iv;X9?(VP=zP("RegExp.prototype.exec"),rv={},Id=function(){throw rv},nv={toString:Id,valueOf:Id},typeof Symbol.toPrimitive=="symbol"&&(nv[Symbol.toPrimitive]=Id),iv=function(e){if(!e||typeof e!="object")return!1;var r=Z9(e,"lastIndex"),n=r&&K9(r,"value");if(!n)return!1;try{VP(e,nv)}catch(i){return i===rv}}):(WP=zP("Object.prototype.toString"),qP="[object RegExp]",iv=function(e){return!e||typeof e!="object"&&typeof e!="function"?!1:WP(e)===qP});var VP,rv,Id,nv,WP,qP;YP.exports=iv});var ZP=M((iZ,KP)=>{"use strict";m();var J9=xt(),XP=J9("SharedArrayBuffer.prototype.byteLength",!0);KP.exports=XP?function(e){if(!e||typeof e!="object")return!1;try{return XP(e),!0}catch(r){return!1}}:function(e){return!1}});var eR=M((sZ,QP)=>{"use strict";m();var JP=xt(),Q9=JP("Number.prototype.toString"),eH=function(e){try{return Q9(e),!0}catch(r){return!1}},tH=JP("Object.prototype.toString"),rH="[object Number]",nH=zi()();QP.exports=function(e){return typeof e=="number"?!0:!e||typeof e!="object"?!1:nH?eH(e):tH(e)===rH}});var nR=M((lZ,rR)=>{"use strict";m();var tR=xt(),iH=tR("Boolean.prototype.toString"),aH=tR("Object.prototype.toString"),sH=function(e){try{return iH(e),!0}catch(r){return!1}},oH="[object Boolean]",lH=zi()();rR.exports=function(e){return typeof e=="boolean"?!0:e===null||typeof e!="object"?!1:lH?sH(e):aH(e)===oH}});var aR=M((uZ,iR)=>{"use strict";m();var cH=xt(),uH=av(),fH=cH("RegExp.prototype.exec"),dH=ur();iR.exports=function(e){if(!uH(e))throw new dH("`regex` must be a RegExp");return function(n){return fH(e,n)!==null}}});var uR=M((dZ,sv)=>{"use strict";m();var cR=xt(),hH=cR("Object.prototype.toString"),pH=Gu()(),mH=aR();pH?(sR=cR("Symbol.prototype.toString"),oR=mH(/^Symbol\(.*\)$/),lR=function(e){return typeof e.valueOf()!="symbol"?!1:oR(sR(e))},sv.exports=function(e){if(typeof e=="symbol")return!0;if(!e||typeof e!="object"||hH(e)!=="[object Symbol]")return!1;try{return lR(e)}catch(r){return!1}}):sv.exports=function(e){return!1};var sR,oR,lR});var hR=M((pZ,dR)=>{"use strict";m();var fR=typeof BigInt!="undefined"&&BigInt;dR.exports=function(){return typeof fR=="function"&&typeof BigInt=="function"&&typeof fR(42)=="bigint"&&typeof BigInt(42)=="bigint"}});var gR=M((gZ,ov)=>{"use strict";m();var gH=hR()();gH?(pR=BigInt.prototype.valueOf,mR=function(e){try{return pR.call(e),!0}catch(r){}return!1},ov.exports=function(e){return e===null||typeof e=="undefined"||typeof e=="boolean"||typeof e=="string"||typeof e=="number"||typeof e=="symbol"||typeof e=="function"?!1:typeof e=="bigint"?!0:mR(e)}):ov.exports=function(e){return!1};var pR,mR});var yR=M((yZ,vR)=>{"use strict";m();var vH=L0(),yH=eR(),wH=nR(),bH=uR(),_H=gR();vR.exports=function(e){if(e==null||typeof e!="object"&&typeof e!="function")return null;if(vH(e))return"String";if(yH(e))return"Number";if(wH(e))return"Boolean";if(bH(e))return"Symbol";if(_H(e))return"BigInt"}});var _R=M((bZ,bR)=>{"use strict";m();var $d=typeof WeakMap=="function"&&WeakMap.prototype?WeakMap:null,wR=typeof WeakSet=="function"&&WeakSet.prototype?WeakSet:null,Fd;$d||(Fd=function(e){return!1});var cv=$d?$d.prototype.has:null,lv=wR?wR.prototype.has:null;!Fd&&!cv&&(Fd=function(e){return!1});bR.exports=Fd||function(e){if(!e||typeof e!="object")return!1;try{if(cv.call(e,cv),lv)try{lv.call(e,lv)}catch(r){return!0}return e instanceof $d}catch(r){}return!1}});var SR=M((xZ,fv)=>{"use strict";m();var xH=$n(),xR=xt(),SH=xH("%WeakSet%",!0),uv=xR("WeakSet.prototype.has",!0);uv?(Dd=xR("WeakMap.prototype.has",!0),fv.exports=function(e){if(!e||typeof e!="object")return!1;try{if(uv(e,uv),Dd)try{Dd(e,Dd)}catch(r){return!0}return e instanceof SH}catch(r){}return!1}):fv.exports=function(e){return!1};var Dd});var AR=M((EZ,ER)=>{"use strict";m();var EH=N0(),AH=H0(),kH=_R(),TH=SR();ER.exports=function(e){if(e&&typeof e=="object"){if(EH(e))return"Map";if(AH(e))return"Set";if(kH(e))return"WeakMap";if(TH(e))return"WeakSet"}return!1}});var CR=M((kZ,TR)=>{"use strict";m();var CH=xt(),kR=CH("ArrayBuffer.prototype.byteLength",!0),PH=tv();TR.exports=function(e){return PH(e)?kR?kR(e):e.byteLength:NaN}});var QR=M((CZ,JR)=>{"use strict";m();var XR=cC(),Yn=v0(),PR=kC(),RH=$n(),Oo=TP(),MH=F0(),RR=DP(),MR=_0(),OR=ju(),IR=tv(),$R=GP(),FR=av(),DR=ZP(),LR=yd(),jR=yR(),NR=AR(),BR=Kp(),HR=CR(),UR=Yn("SharedArrayBuffer.prototype.byteLength",!0),GR=Yn("Date.prototype.getTime"),dv=Object.getPrototypeOf,zR=Yn("Object.prototype.toString"),jd=RH("%Set%",!0),hv=Yn("Map.prototype.has",!0),Nd=Yn("Map.prototype.get",!0),VR=Yn("Map.prototype.size",!0),Bd=Yn("Set.prototype.add",!0),KR=Yn("Set.prototype.delete",!0),Hd=Yn("Set.prototype.has",!0),Ld=Yn("Set.prototype.size",!0);function WR(t,e,r,n){for(var i=Oo(t),a;(a=i.next())&&!a.done;)if(gn(e,a.value,r,n))return KR(t,a.value),!0;return!1}function ZR(t){if(typeof t=="undefined")return null;if(typeof t!="object")return typeof t=="symbol"?!1:typeof t=="string"||typeof t=="number"?+t==+t:!0}function OH(t,e,r,n,i,a){var s=ZR(r);if(s!=null)return s;var o=Nd(e,s),l=XR({},i,{strict:!1});return typeof o=="undefined"&&!hv(e,s)||!gn(n,o,l,a)?!1:!hv(t,s)&&gn(n,o,l,a)}function IH(t,e,r){var n=ZR(r);return n!=null?n:Hd(e,n)&&!Hd(t,n)}function qR(t,e,r,n,i,a){for(var s=Oo(t),o,l;(o=s.next())&&!o.done;)if(l=o.value,gn(r,l,i,a)&&gn(n,Nd(e,l),i,a))return KR(t,l),!0;return!1}function gn(t,e,r,n){var i=r||{};if(i.strict?RR(t,e):t===e)return!0;var a=jR(t),s=jR(e);if(a!==s)return!1;if(!t||!e||typeof t!="object"&&typeof e!="object")return i.strict?RR(t,e):t==e;var o=n.has(t),l=n.has(e),c;if(o&&l){if(n.get(t)===n.get(e))return!0}else c={};return o||n.set(t,c),l||n.set(e,c),DH(t,e,i,n)}function YR(t){return!t||typeof t!="object"||typeof t.length!="number"||typeof t.copy!="function"||typeof t.slice!="function"||t.length>0&&typeof t[0]!="number"?!1:!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))}function $H(t,e,r,n){if(Ld(t)!==Ld(e))return!1;for(var i=Oo(t),a=Oo(e),s,o,l;(s=i.next())&&!s.done;)if(s.value&&typeof s.value=="object")l||(l=new jd),Bd(l,s.value);else if(!Hd(e,s.value)){if(r.strict||!IH(t,e,s.value))return!1;l||(l=new jd),Bd(l,s.value)}if(l){for(;(o=a.next())&&!o.done;)if(o.value&&typeof o.value=="object"){if(!WR(l,o.value,r.strict,n))return!1}else if(!r.strict&&!Hd(t,o.value)&&!WR(l,o.value,r.strict,n))return!1;return Ld(l)===0}return!0}function FH(t,e,r,n){if(VR(t)!==VR(e))return!1;for(var i=Oo(t),a=Oo(e),s,o,l,c,u,f;(s=i.next())&&!s.done;)if(c=s.value[0],u=s.value[1],c&&typeof c=="object")l||(l=new jd),Bd(l,c);else if(f=Nd(e,c),typeof f=="undefined"&&!hv(e,c)||!gn(u,f,r,n)){if(r.strict||!OH(t,e,c,u,r,n))return!1;l||(l=new jd),Bd(l,c)}if(l){for(;(o=a.next())&&!o.done;)if(c=o.value[0],f=o.value[1],c&&typeof c=="object"){if(!qR(l,t,c,f,r,n))return!1}else if(!r.strict&&(!t.has(c)||!gn(Nd(t,c),f,r,n))&&!qR(l,t,c,f,XR({},r,{strict:!1}),n))return!1;return Ld(l)===0}return!0}function DH(t,e,r,n){var i,a;if(typeof t!=typeof e||t==null||e==null||zR(t)!==zR(e)||MR(t)!==MR(e))return!1;var s=OR(t),o=OR(e);if(s!==o)return!1;var l=t instanceof Error,c=e instanceof Error;if(l!==c||(l||c)&&(t.name!==e.name||t.message!==e.message))return!1;var u=FR(t),f=FR(e);if(u!==f||(u||f)&&(t.source!==e.source||PR(t)!==PR(e)))return!1;var d=$R(t),h=$R(e);if(d!==h||(d||h)&&GR(t)!==GR(e)||r.strict&&dv&&dv(t)!==dv(e))return!1;var p=BR(t),g=BR(e);if(p!==g)return!1;if(p||g){if(t.length!==e.length)return!1;for(i=0;i=0;i--)if(k[i]!=w[i])return!1;for(i=k.length-1;i>=0;i--)if(a=k[i],!gn(t[a],e[a],r,n))return!1;var x=NR(t),_=NR(e);return x!==_?!1:x==="Set"||_==="Set"?$H(t,e,r,n):x==="Map"?FH(t,e,r,n):!0}JR.exports=function(e,r,n){return gn(e,r,n,MH())}});var _v=M((exports,module)=>{m();(function(){"use strict";var ERROR="input is invalid type",WINDOW=typeof window=="object",root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&typeof self=="object",NODE_JS=!root.JS_SHA256_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;NODE_JS?root=global:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&typeof module=="object"&&module.exports,AMD=typeof define=="function"&&define.amd,ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer!="undefined",HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];(root.JS_SHA256_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(t){return Object.prototype.toString.call(t)==="[object Array]"}),ARRAY_BUFFER&&(root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(t){return typeof t=="object"&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(t,e){return function(r){return new Sha256(e,!0).update(r)[t]()}},createMethod=function(t){var e=createOutputMethod("hex",t);NODE_JS&&(e=nodeWrap(e,t)),e.create=function(){return new Sha256(t)},e.update=function(i){return e.create().update(i)};for(var r=0;r>2]|=t[i]<>2]|=n<>2]|=(192|n>>6)<>2]|=(128|n&63)<=57344?(o[a>>2]|=(224|n>>12)<>2]|=(128|n>>6&63)<>2]|=(128|n&63)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|n&63)<=64?(this.block=o[16],this.start=a-64,this.hash(),this.hashed=!0):this.start=a}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[e&3],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var t=this.h0,e=this.h1,r=this.h2,n=this.h3,i=this.h4,a=this.h5,s=this.h6,o=this.h7,l=this.blocks,c,u,f,d,h,p,g,v,y,b,E;for(c=16;c<64;++c)h=l[c-15],u=(h>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,h=l[c-2],f=(h>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,l[c]=l[c-16]+u+l[c-7]+f<<0;for(E=e&r,c=0;c<64;c+=4)this.first?(this.is224?(v=300032,h=l[0]-1413257819,o=h-150054599<<0,n=h+24177077<<0):(v=704751109,h=l[0]-210244248,o=h-1521486534<<0,n=h+143694565<<0),this.first=!1):(u=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),f=(i>>>6|i<<26)^(i>>>11|i<<21)^(i>>>25|i<<7),v=t&e,d=v^t&r^E,g=i&a^~i&s,h=o+f+g+K[c]+l[c],p=u+d,o=n+h<<0,n=h+p<<0),u=(n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10),f=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),y=n&t,d=y^n&e^v,g=o&i^~o&a,h=s+f+g+K[c+1]+l[c+1],p=u+d,s=r+h<<0,r=h+p<<0,u=(r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10),f=(s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7),b=r&n,d=b^r&t^y,g=s&o^~s&i,h=a+f+g+K[c+2]+l[c+2],p=u+d,a=e+h<<0,e=h+p<<0,u=(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10),f=(a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7),E=e&r,d=E^e&n^b,g=a&s^~a&o,h=i+f+g+K[c+3]+l[c+3],p=u+d,i=t+h<<0,t=h+p<<0;this.h0=this.h0+t<<0,this.h1=this.h1+e<<0,this.h2=this.h2+r<<0,this.h3=this.h3+n<<0,this.h4=this.h4+i<<0,this.h5=this.h5+a<<0,this.h6=this.h6+s<<0,this.h7=this.h7+o<<0},Sha256.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,i=this.h4,a=this.h5,s=this.h6,o=this.h7,l=HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[t&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[e&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[r&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[n&15]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[i&15]+HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[a&15]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[s&15];return this.is224||(l+=HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[o&15]),l},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,i=this.h4,a=this.h5,s=this.h6,o=this.h7,l=[t>>24&255,t>>16&255,t>>8&255,t&255,e>>24&255,e>>16&255,e>>8&255,e&255,r>>24&255,r>>16&255,r>>8&255,r&255,n>>24&255,n>>16&255,n>>8&255,n&255,i>>24&255,i>>16&255,i>>8&255,i&255,a>>24&255,a>>16&255,a>>8&255,a&255,s>>24&255,s>>16&255,s>>8&255,s&255];return this.is224||l.push(o>>24&255,o>>16&255,o>>8&255,o&255),l},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(this.is224?28:32),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),e.setUint32(20,this.h5),e.setUint32(24,this.h6),this.is224||e.setUint32(28,this.h7),t};function HmacSha256(t,e,r){var n,i=typeof t;if(i==="string"){var a=[],s=t.length,o=0,l;for(n=0;n>6,a[o++]=128|l&63):l<55296||l>=57344?(a[o++]=224|l>>12,a[o++]=128|l>>6&63,a[o++]=128|l&63):(l=65536+((l&1023)<<10|t.charCodeAt(++n)&1023),a[o++]=240|l>>18,a[o++]=128|l>>12&63,a[o++]=128|l>>6&63,a[o++]=128|l&63);t=a}else if(i==="object"){if(t===null)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!ARRAY_BUFFER||!ArrayBuffer.isView(t)))throw new Error(ERROR)}else throw new Error(ERROR);t.length>64&&(t=new Sha256(e,!0).update(t).array());var c=[],u=[];for(n=0;n<64;++n){var f=t[n]||0;c[n]=92^f,u[n]=54^f}Sha256.call(this,e,r),this.update(u),this.oKeyPad=c,this.inner=!0,this.sharedMemory=r}HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&define(function(){return exports}))})()});var bM=M(qv=>{m();(function(t){var e=/\S/,r=/\"/g,n=/\n/g,i=/\r/g,a=/\\/g,s=/\u2028/,o=/\u2029/;t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(x,_){var T=x.length,C=0,I=1,L=2,F=C,J=null,de=null,le="",ce=[],Te=!1,ne=0,N=0,q="{{",B="}}";function Fe(){le.length>0&&(ce.push({tag:"_t",text:new String(le)}),le="")}function lr(){for(var Oe=!0,De=N;De"&&(Le.indent=ce[Pt].text.toString()),ce.splice(Pt,1));else De||ce.push({tag:` +`});Te=!1,N=ce.length}function X(Oe,De){var Pt="="+B,Le=Oe.indexOf(Pt,De),U=c(Oe.substring(Oe.indexOf("=",De)+1,Le)).split(" ");return q=U[0],B=U[U.length-1],Le+Pt.length-1}for(_&&(_=_.split(" "),q=_[0],B=_[1]),ne=0;ne0;){if(F=w.shift(),L&&L.tag=="<"&&!(F.tag in f))throw new Error("Illegal content in < super tag.");if(t.tags[F.tag]<=t.tags.$||h(F,T))_.push(F),F.nodes=d(w,F.tag,_,T);else if(F.tag=="/"){if(_.length===0)throw new Error("Closing tag without opener: /"+F.n);if(I=_.pop(),F.n!=I.n&&!p(F.n,I.n,T))throw new Error("Nesting error: "+I.n+" vs. "+F.n);return I.end=F.i,C}else F.tag==` +`&&(F.last=w.length==0||w[0].tag==` +`);C.push(F)}if(_.length>0)throw new Error("missing closing tag: "+_.pop().n);return C}function h(w,x){for(var _=0,T=x.length;_":S,"<":function(w,x){var _={partials:{},code:"",subs:{},inPartial:!0};t.walk(w.nodes,_);var T=x.partials[S(w,x)];T.subs=_.subs,T.partials=_.partials},$:function(w,x){var _={subs:{},code:"",partials:x.partials,prefix:w.n};t.walk(w.nodes,_),x.subs[w.n]=_.code,x.inPartial||(x.code+='t.sub("'+b(w.n)+'",c,p,i);')},"\n":function(w,x){x.code+=k('"\\n"'+(w.last?"":" + i"))},_v:function(w,x){x.code+="t.b(t.v(t."+E(w.n)+'("'+b(w.n)+'",c,p,0)));'},_t:function(w,x){x.code+=k('"'+b(w.text)+'"')},"{":A,"&":A};function A(w,x){x.code+="t.b(t.t(t."+E(w.n)+'("'+b(w.n)+'",c,p,0)));'}function k(w){return"t.b("+w+");"}t.walk=function(w,x){for(var _,T=0,C=w.length;T{m();var HU={};(function(t){t.Template=function(d,h,p,g){d=d||{},this.r=d.code||this.r,this.c=p,this.options=g||{},this.text=h||"",this.partials=d.partials||{},this.subs=d.subs||{},this.buf=""},t.Template.prototype={r:function(d,h,p){return""},v:u,t:c,render:function(h,p,g){return this.ri([h],p||{},g)},ri:function(d,h,p){return this.r(d,h,p)},ep:function(d,h){var p=this.partials[d],g=h[p.name];if(p.instance&&p.base==g)return p.instance;if(typeof g=="string"){if(!this.c)throw new Error("No compiler available.");g=this.c.compile(g,this.options)}if(!g)return null;if(this.partials[d].base=g,p.subs){h.stackText||(h.stackText={});for(key in p.subs)h.stackText[key]||(h.stackText[key]=this.activeSub!==void 0&&h.stackText[this.activeSub]?h.stackText[this.activeSub]:this.text);g=r(g,p.subs,p.partials,this.stackSubs,this.stackPartials,h.stackText)}return this.partials[d].instance=g,g},rp:function(d,h,p,g){var v=this.ep(d,p);return v?v.ri(h,p,g):""},rs:function(d,h,p){var g=d[d.length-1];if(!f(g)){p(d,h,this);return}for(var v=0;v=0;S--)if(y=h[S],v=e(d,y,E),v!==void 0){b=!0;break}return b?(!g&&typeof v=="function"&&(v=this.mv(v,h,p)),v):g?!1:""},ls:function(d,h,p,g,v){var y=this.options.delimiters;return this.options.delimiters=v,this.b(this.ct(c(d.call(h,g)),h,p)),this.options.delimiters=y,!1},ct:function(d,h,p){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(d,this.options).render(h,p)},b:function(d){this.buf+=d},fl:function(){var d=this.buf;return this.buf="",d},ms:function(d,h,p,g,v,y,b){var E,S=h[h.length-1],A=d.call(S);return typeof A=="function"?g?!0:(E=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(A,S,p,E.substring(v,y),b)):A},mv:function(d,h,p){var g=h[h.length-1],v=d.call(g);return typeof v=="function"?this.ct(c(v.call(g)),g,p):v},sub:function(d,h,p,g){var v=this.subs[d];v&&(this.activeSub=d,v(h,p,this,g),this.activeSub=!1)}};function e(d,h,p){var g;return h&&typeof h=="object"&&(h[d]!==void 0?g=h[d]:p&&h.get&&typeof h.get=="function"&&(g=h.get(d))),g}function r(d,h,p,g,v,y){function b(){}b.prototype=d;function E(){}E.prototype=d.subs;var S,A=new b;A.subs=new E,A.subsText={},A.buf="",g=g||{},A.stackSubs=g,A.subsText=y;for(S in h)g[S]||(g[S]=h[S]);for(S in g)A.subs[S]=g[S];v=v||{},A.stackPartials=v;for(S in p)v[S]||(v[S]=p[S]);for(S in v)A.partials[S]=v[S];return A}var n=/&/g,i=//g,s=/\'/g,o=/\"/g,l=/[&<>\"\']/;function c(d){return String(d==null?"":d)}function u(d){return d=c(d),l.test(d)?d.replace(n,"&").replace(i,"<").replace(a,">").replace(s,"'").replace(o,"""):d}var f=Array.isArray||function(d){return Object.prototype.toString.call(d)==="[object Array]"}})(typeof Yv!="undefined"?Yv:HU)});var Xv=M((Dee,xM)=>{m();var _h=bM();_h.Template=_M().Template;_h.template=_h.Template;xM.exports=_h});var R5=M((Eu,uy)=>{m();(function(e,r){typeof Eu=="object"&&typeof uy=="object"?uy.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Eu=="object"?Eu.feather=r():e.feather=r()})(typeof self!="undefined"?self:Eu,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.r=function(n){Object.defineProperty(n,"__esModule",{value:!0})},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=0)}({"./dist/icons.json":function(t){t.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',table:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},"./node_modules/classnames/dedupe.js":function(t,e,r){var n,i;(function(){"use strict";var a=function(){function s(){}s.prototype=Object.create(null);function o(g,v){for(var y=v.length,b=0;b1?arguments[1]:void 0,v=g!==void 0,y=0,b=c(d),E,S,A,k;if(v&&(g=n(g,p>2?arguments[2]:void 0,2)),b!=null&&!(h==Array&&s(b)))for(k=b.call(d),S=new h;!(A=k.next()).done;y++)l(S,y,v?a(k,g,[A.value,y],!0):A.value);else for(E=o(d.length),S=new h(E);E>y;y++)l(S,y,v?g(d[y],y):d[y]);return S.length=y,S}},"./node_modules/core-js/internals/array-includes.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-indexed-object.js"),i=r("./node_modules/core-js/internals/to-length.js"),a=r("./node_modules/core-js/internals/to-absolute-index.js");t.exports=function(s){return function(o,l,c){var u=n(o),f=i(u.length),d=a(c,f),h;if(s&&l!=l){for(;f>d;)if(h=u[d++],h!=h)return!0}else for(;f>d;d++)if((s||d in u)&&u[d]===l)return s||d||0;return!s&&-1}}},"./node_modules/core-js/internals/bind-context.js":function(t,e,r){var n=r("./node_modules/core-js/internals/a-function.js");t.exports=function(i,a,s){if(n(i),a===void 0)return i;switch(s){case 0:return function(){return i.call(a)};case 1:return function(o){return i.call(a,o)};case 2:return function(o,l){return i.call(a,o,l)};case 3:return function(o,l,c){return i.call(a,o,l,c)}}return function(){return i.apply(a,arguments)}}},"./node_modules/core-js/internals/call-with-safe-iteration-closing.js":function(t,e,r){var n=r("./node_modules/core-js/internals/an-object.js");t.exports=function(i,a,s,o){try{return o?a(n(s)[0],s[1]):a(s)}catch(c){var l=i.return;throw l!==void 0&&n(l.call(i)),c}}},"./node_modules/core-js/internals/check-correctness-of-iteration.js":function(t,e,r){var n=r("./node_modules/core-js/internals/well-known-symbol.js"),i=n("iterator"),a=!1;try{var s=0,o={next:function(){return{done:!!s++}},return:function(){a=!0}};o[i]=function(){return this},Array.from(o,function(){throw 2})}catch(l){}t.exports=function(l,c){if(!c&&!a)return!1;var u=!1;try{var f={};f[i]=function(){return{next:function(){return{done:u=!0}}}},l(f)}catch(d){}return u}},"./node_modules/core-js/internals/classof-raw.js":function(t,e){var r={}.toString;t.exports=function(n){return r.call(n).slice(8,-1)}},"./node_modules/core-js/internals/classof.js":function(t,e,r){var n=r("./node_modules/core-js/internals/classof-raw.js"),i=r("./node_modules/core-js/internals/well-known-symbol.js"),a=i("toStringTag"),s=n(function(){return arguments}())=="Arguments",o=function(l,c){try{return l[c]}catch(u){}};t.exports=function(l){var c,u,f;return l===void 0?"Undefined":l===null?"Null":typeof(u=o(c=Object(l),a))=="string"?u:s?n(c):(f=n(c))=="Object"&&typeof c.callee=="function"?"Arguments":f}},"./node_modules/core-js/internals/copy-constructor-properties.js":function(t,e,r){var n=r("./node_modules/core-js/internals/has.js"),i=r("./node_modules/core-js/internals/own-keys.js"),a=r("./node_modules/core-js/internals/object-get-own-property-descriptor.js"),s=r("./node_modules/core-js/internals/object-define-property.js");t.exports=function(o,l){for(var c=i(l),u=s.f,f=a.f,d=0;d",E="java"+y+":",S;for(p.style.display="none",o.appendChild(p),p.src=String(E),S=p.contentWindow.document,S.open(),S.write(v+y+b+"document.F=Object"+v+"/"+y+b),S.close(),h=S.F;g--;)delete h[f][a[g]];return h()};t.exports=Object.create||function(g,v){var y;return g!==null?(d[f]=n(g),y=new d,d[f]=null,y[u]=g):y=h(),v===void 0?y:i(y,v)},s[u]=!0},"./node_modules/core-js/internals/object-define-properties.js":function(t,e,r){var n=r("./node_modules/core-js/internals/descriptors.js"),i=r("./node_modules/core-js/internals/object-define-property.js"),a=r("./node_modules/core-js/internals/an-object.js"),s=r("./node_modules/core-js/internals/object-keys.js");t.exports=n?Object.defineProperties:function(l,c){a(l);for(var u=s(c),f=u.length,d=0,h;f>d;)i.f(l,h=u[d++],c[h]);return l}},"./node_modules/core-js/internals/object-define-property.js":function(t,e,r){var n=r("./node_modules/core-js/internals/descriptors.js"),i=r("./node_modules/core-js/internals/ie8-dom-define.js"),a=r("./node_modules/core-js/internals/an-object.js"),s=r("./node_modules/core-js/internals/to-primitive.js"),o=Object.defineProperty;e.f=n?o:function(c,u,f){if(a(c),u=s(u,!0),a(f),i)try{return o(c,u,f)}catch(d){}if("get"in f||"set"in f)throw TypeError("Accessors not supported");return"value"in f&&(c[u]=f.value),c}},"./node_modules/core-js/internals/object-get-own-property-descriptor.js":function(t,e,r){var n=r("./node_modules/core-js/internals/descriptors.js"),i=r("./node_modules/core-js/internals/object-property-is-enumerable.js"),a=r("./node_modules/core-js/internals/create-property-descriptor.js"),s=r("./node_modules/core-js/internals/to-indexed-object.js"),o=r("./node_modules/core-js/internals/to-primitive.js"),l=r("./node_modules/core-js/internals/has.js"),c=r("./node_modules/core-js/internals/ie8-dom-define.js"),u=Object.getOwnPropertyDescriptor;e.f=n?u:function(d,h){if(d=s(d),h=o(h,!0),c)try{return u(d,h)}catch(p){}if(l(d,h))return a(!i.f.call(d,h),d[h])}},"./node_modules/core-js/internals/object-get-own-property-names.js":function(t,e,r){var n=r("./node_modules/core-js/internals/object-keys-internal.js"),i=r("./node_modules/core-js/internals/enum-bug-keys.js"),a=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(o){return n(o,a)}},"./node_modules/core-js/internals/object-get-own-property-symbols.js":function(t,e){e.f=Object.getOwnPropertySymbols},"./node_modules/core-js/internals/object-get-prototype-of.js":function(t,e,r){var n=r("./node_modules/core-js/internals/has.js"),i=r("./node_modules/core-js/internals/to-object.js"),a=r("./node_modules/core-js/internals/shared-key.js"),s=r("./node_modules/core-js/internals/correct-prototype-getter.js"),o=a("IE_PROTO"),l=Object.prototype;t.exports=s?Object.getPrototypeOf:function(c){return c=i(c),n(c,o)?c[o]:typeof c.constructor=="function"&&c instanceof c.constructor?c.constructor.prototype:c instanceof Object?l:null}},"./node_modules/core-js/internals/object-keys-internal.js":function(t,e,r){var n=r("./node_modules/core-js/internals/has.js"),i=r("./node_modules/core-js/internals/to-indexed-object.js"),a=r("./node_modules/core-js/internals/array-includes.js"),s=r("./node_modules/core-js/internals/hidden-keys.js"),o=a(!1);t.exports=function(l,c){var u=i(l),f=0,d=[],h;for(h in u)!n(s,h)&&n(u,h)&&d.push(h);for(;c.length>f;)n(u,h=c[f++])&&(~o(d,h)||d.push(h));return d}},"./node_modules/core-js/internals/object-keys.js":function(t,e,r){var n=r("./node_modules/core-js/internals/object-keys-internal.js"),i=r("./node_modules/core-js/internals/enum-bug-keys.js");t.exports=Object.keys||function(s){return n(s,i)}},"./node_modules/core-js/internals/object-property-is-enumerable.js":function(t,e,r){"use strict";var n={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,a=i&&!n.call({1:2},1);e.f=a?function(o){var l=i(this,o);return!!l&&l.enumerable}:n},"./node_modules/core-js/internals/object-set-prototype-of.js":function(t,e,r){var n=r("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i=!1,a={},s;try{s=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,s.call(a,[]),i=a instanceof Array}catch(o){}return function(l,c){return n(l,c),i?s.call(l,c):l.__proto__=c,l}}():void 0)},"./node_modules/core-js/internals/own-keys.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/object-get-own-property-names.js"),a=r("./node_modules/core-js/internals/object-get-own-property-symbols.js"),s=r("./node_modules/core-js/internals/an-object.js"),o=n.Reflect;t.exports=o&&o.ownKeys||function(c){var u=i.f(s(c)),f=a.f;return f?u.concat(f(c)):u}},"./node_modules/core-js/internals/path.js":function(t,e,r){t.exports=r("./node_modules/core-js/internals/global.js")},"./node_modules/core-js/internals/redefine.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/shared.js"),a=r("./node_modules/core-js/internals/hide.js"),s=r("./node_modules/core-js/internals/has.js"),o=r("./node_modules/core-js/internals/set-global.js"),l=r("./node_modules/core-js/internals/function-to-string.js"),c=r("./node_modules/core-js/internals/internal-state.js"),u=c.get,f=c.enforce,d=String(l).split("toString");i("inspectSource",function(h){return l.call(h)}),(t.exports=function(h,p,g,v){var y=v?!!v.unsafe:!1,b=v?!!v.enumerable:!1,E=v?!!v.noTargetGet:!1;if(typeof g=="function"&&(typeof p=="string"&&!s(g,"name")&&a(g,"name",p),f(g).source=d.join(typeof p=="string"?p:"")),h===n){b?h[p]=g:o(p,g);return}else y?!E&&h[p]&&(b=!0):delete h[p];b?h[p]=g:a(h,p,g)})(Function.prototype,"toString",function(){return typeof this=="function"&&u(this).source||l.call(this)})},"./node_modules/core-js/internals/require-object-coercible.js":function(t,e){t.exports=function(r){if(r==null)throw TypeError("Can't call method on "+r);return r}},"./node_modules/core-js/internals/set-global.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/hide.js");t.exports=function(a,s){try{i(n,a,s)}catch(o){n[a]=s}return s}},"./node_modules/core-js/internals/set-to-string-tag.js":function(t,e,r){var n=r("./node_modules/core-js/internals/object-define-property.js").f,i=r("./node_modules/core-js/internals/has.js"),a=r("./node_modules/core-js/internals/well-known-symbol.js"),s=a("toStringTag");t.exports=function(o,l,c){o&&!i(o=c?o:o.prototype,s)&&n(o,s,{configurable:!0,value:l})}},"./node_modules/core-js/internals/shared-key.js":function(t,e,r){var n=r("./node_modules/core-js/internals/shared.js"),i=r("./node_modules/core-js/internals/uid.js"),a=n("keys");t.exports=function(s){return a[s]||(a[s]=i(s))}},"./node_modules/core-js/internals/shared.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/set-global.js"),a=r("./node_modules/core-js/internals/is-pure.js"),s="__core-js_shared__",o=n[s]||i(s,{});(t.exports=function(l,c){return o[l]||(o[l]=c!==void 0?c:{})})("versions",[]).push({version:"3.1.3",mode:a?"pure":"global",copyright:"\xA9 2019 Denis Pushkarev (zloirock.ru)"})},"./node_modules/core-js/internals/string-at.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-integer.js"),i=r("./node_modules/core-js/internals/require-object-coercible.js");t.exports=function(a,s,o){var l=String(i(a)),c=n(s),u=l.length,f,d;return c<0||c>=u?o?"":void 0:(f=l.charCodeAt(c),f<55296||f>56319||c+1===u||(d=l.charCodeAt(c+1))<56320||d>57343?o?l.charAt(c):f:o?l.slice(c,c+2):(f-55296<<10)+(d-56320)+65536)}},"./node_modules/core-js/internals/to-absolute-index.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-integer.js"),i=Math.max,a=Math.min;t.exports=function(s,o){var l=n(s);return l<0?i(l+o,0):a(l,o)}},"./node_modules/core-js/internals/to-indexed-object.js":function(t,e,r){var n=r("./node_modules/core-js/internals/indexed-object.js"),i=r("./node_modules/core-js/internals/require-object-coercible.js");t.exports=function(a){return n(i(a))}},"./node_modules/core-js/internals/to-integer.js":function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(i){return isNaN(i=+i)?0:(i>0?n:r)(i)}},"./node_modules/core-js/internals/to-length.js":function(t,e,r){var n=r("./node_modules/core-js/internals/to-integer.js"),i=Math.min;t.exports=function(a){return a>0?i(n(a),9007199254740991):0}},"./node_modules/core-js/internals/to-object.js":function(t,e,r){var n=r("./node_modules/core-js/internals/require-object-coercible.js");t.exports=function(i){return Object(n(i))}},"./node_modules/core-js/internals/to-primitive.js":function(t,e,r){var n=r("./node_modules/core-js/internals/is-object.js");t.exports=function(i,a){if(!n(i))return i;var s,o;if(a&&typeof(s=i.toString)=="function"&&!n(o=s.call(i))||typeof(s=i.valueOf)=="function"&&!n(o=s.call(i))||!a&&typeof(s=i.toString)=="function"&&!n(o=s.call(i)))return o;throw TypeError("Can't convert object to primitive value")}},"./node_modules/core-js/internals/uid.js":function(t,e){var r=0,n=Math.random();t.exports=function(i){return"Symbol(".concat(i===void 0?"":i,")_",(++r+n).toString(36))}},"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js":function(t,e,r){var n=r("./node_modules/core-js/internals/is-object.js"),i=r("./node_modules/core-js/internals/an-object.js");t.exports=function(a,s){if(i(a),!n(s)&&s!==null)throw TypeError("Can't set "+String(s)+" as a prototype")}},"./node_modules/core-js/internals/well-known-symbol.js":function(t,e,r){var n=r("./node_modules/core-js/internals/global.js"),i=r("./node_modules/core-js/internals/shared.js"),a=r("./node_modules/core-js/internals/uid.js"),s=r("./node_modules/core-js/internals/native-symbol.js"),o=n.Symbol,l=i("wks");t.exports=function(c){return l[c]||(l[c]=s&&o[c]||(s?o:a)("Symbol."+c))}},"./node_modules/core-js/modules/es.array.from.js":function(t,e,r){var n=r("./node_modules/core-js/internals/export.js"),i=r("./node_modules/core-js/internals/array-from.js"),a=r("./node_modules/core-js/internals/check-correctness-of-iteration.js"),s=!a(function(o){Array.from(o)});n({target:"Array",stat:!0,forced:s},{from:i})},"./node_modules/core-js/modules/es.string.iterator.js":function(t,e,r){"use strict";var n=r("./node_modules/core-js/internals/string-at.js"),i=r("./node_modules/core-js/internals/internal-state.js"),a=r("./node_modules/core-js/internals/define-iterator.js"),s="String Iterator",o=i.set,l=i.getterFor(s);a(String,"String",function(c){o(this,{type:s,string:String(c),index:0})},function(){var u=l(this),f=u.string,d=u.index,h;return d>=f.length?{value:void 0,done:!0}:(h=n(f,d,!0),u.index+=h.length,{value:h,done:!1})})},"./node_modules/webpack/buildin/global.js":function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(n){typeof window=="object"&&(r=window)}t.exports=r},"./src/default-attrs.json":function(t){t.exports={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}},"./src/icon.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(h){for(var p=1;p2&&arguments[2]!==void 0?arguments[2]:[];u(this,h),this.name=p,this.contents=g,this.tags=v,this.attrs=n({},l.default,{class:"feather feather-"+p})}return i(h,[{key:"toSvg",value:function(){var g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},v=n({},this.attrs,g,{class:(0,s.default)(this.attrs.class,g.class)});return""+this.contents+""}},{key:"toString",value:function(){return this.contents}}]),h}();function d(h){return Object.keys(h).map(function(p){return p+'="'+h[p]+'"'}).join(" ")}e.default=f},"./src/icons.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("./src/icon.js"),i=c(n),a=r("./dist/icons.json"),s=c(a),o=r("./src/tags.json"),l=c(o);function c(u){return u&&u.__esModule?u:{default:u}}e.default=Object.keys(s.default).map(function(u){return new i.default(u,s.default[u],l.default[u])}).reduce(function(u,f){return u[f.name]=f,u},{})},"./src/index.js":function(t,e,r){"use strict";var n=r("./src/icons.js"),i=c(n),a=r("./src/to-svg.js"),s=c(a),o=r("./src/replace.js"),l=c(o);function c(u){return u&&u.__esModule?u:{default:u}}t.exports={icons:i.default,toSvg:s.default,replace:l.default}},"./src/replace.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(d){for(var h=1;h0&&arguments[0]!==void 0?arguments[0]:{};if(typeof document=="undefined")throw new Error("`feather.replace()` only works in a browser environment.");var h=document.querySelectorAll("[data-feather]");Array.from(h).forEach(function(p){return u(p,d)})}function u(d){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},p=f(d),g=p["data-feather"];if(delete p["data-feather"],o.default[g]===void 0){console.warn("feather: '"+g+"' is not a valid icon");return}var v=o.default[g].toSvg(n({},h,p,{class:(0,a.default)(h.class,p.class)})),y=new DOMParser().parseFromString(v,"image/svg+xml"),b=y.querySelector("svg");d.parentNode.replaceChild(b,d)}function f(d){return Array.from(d.attributes).reduce(function(h,p){return h[p.name]=p.value,h},{})}e.default=c},"./src/tags.json":function(t){t.exports={activity:["pulse","health","action","motion"],airplay:["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],anchor:[],archive:["index","box"],"at-sign":["mention","at","email","message"],award:["achievement","badge"],aperture:["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],battery:["power","electricity"],"battery-charging":["power","electricity"],bell:["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],bluetooth:["wireless"],"book-open":["read","library"],book:["read","dictionary","booklet","magazine","library"],bookmark:["read","clip","marker","tag"],box:["cube"],briefcase:["work","bag","baggage","folder"],calendar:["date"],camera:["photo"],cast:["chromecast","airplay"],"chevron-down":["expand"],"chevron-up":["collapse"],circle:["off","zero","record"],clipboard:["copy"],clock:["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],cloud:["weather"],codepen:["logo"],codesandbox:["logo"],code:["source","programming"],coffee:["drink","cup","mug","tea","cafe","hot","beverage"],columns:["layout"],command:["keyboard","cmd","terminal","prompt"],compass:["navigation","safari","travel","direction"],copy:["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],cpu:["processor","technology"],"credit-card":["purchase","payment","cc"],crop:["photo","image"],crosshair:["aim","target"],database:["storage","memory"],delete:["remove"],disc:["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],droplet:["water"],edit:["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],eye:["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],facebook:["logo","social"],"fast-forward":["music"],figma:["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],film:["movie","video"],filter:["funnel","hopper"],flag:["report"],"folder-minus":["directory"],"folder-plus":["directory"],folder:["directory"],framer:["logo","design","tool"],frown:["emoji","face","bad","sad","emotion"],gift:["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],github:["logo","version control"],gitlab:["logo","version control"],globe:["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],hash:["hashtag","number","pound"],headphones:["music","audio","sound"],heart:["like","love","emotion"],"help-circle":["question mark"],hexagon:["shape","node.js","logo"],home:["house","living"],image:["picture"],inbox:["email"],instagram:["logo","camera"],key:["password","login","authentication","secure"],layers:["stack"],layout:["window","webpage"],"life-buoy":["help","life ring","support"],link:["chain","url"],"link-2":["chain","url"],linkedin:["logo","social media"],list:["options"],lock:["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],mail:["email","message"],"map-pin":["location","navigation","travel","marker"],map:["location","navigation","travel"],maximize:["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],meh:["emoji","face","neutral","emotion"],menu:["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],mic:["record","sound","listen"],minimize:["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],minus:["subtract"],monitor:["tv","screen","display"],moon:["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],move:["arrows"],music:["note"],navigation:["location","travel"],"navigation-2":["location","travel"],octagon:["stop"],package:["box","container"],paperclip:["attachment"],pause:["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],percent:["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],phone:["call"],play:["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],plus:["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],pocket:["logo","save"],power:["on","off"],printer:["fax","office","device"],radio:["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],repeat:["loop","arrows"],rewind:["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],rss:["feed","subscribe"],save:["floppy disk"],scissors:["cut"],search:["find","magnifier","magnifying glass"],send:["message","mail","email","paper airplane","paper aeroplane"],settings:["cog","edit","gear","preferences"],"share-2":["network","connections"],shield:["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],shuffle:["music"],"skip-back":["music"],"skip-forward":["music"],slack:["logo"],slash:["ban","no"],sliders:["settings","controls"],smartphone:["cellphone","device"],smile:["emoji","face","happy","good","emotion"],speaker:["audio","music"],star:["bookmark","favorite","like"],"stop-circle":["media","music"],sun:["brightness","weather","light"],sunrise:["weather","time","morning","day"],sunset:["weather","time","evening","night"],tablet:["device"],tag:["label"],target:["logo","bullseye"],terminal:["code","command line","prompt"],thermometer:["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],tool:["settings","spanner"],trash:["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],triangle:["delta"],truck:["delivery","van","shipping","transport","lorry"],tv:["television","stream"],twitch:["logo"],twitter:["logo","social"],type:["text"],umbrella:["rain","weather"],unlock:["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],user:["person","account"],users:["group"],"video-off":["camera","movie","film"],video:["camera","movie","film"],voicemail:["phone"],volume:["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],watch:["clock","time"],"wifi-off":["disabled"],wifi:["connection","signal","wireless"],wind:["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],x:["cancel","close","delete","remove","times","clear"],youtube:["logo","video","play"],"zap-off":["flash","camera","lightning"],zap:["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}},"./src/to-svg.js":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("./src/icons.js"),i=a(n);function a(o){return o&&o.__esModule?o:{default:o}}function s(o){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."),!o)throw new Error("The required `key` (icon name) parameter is missing.");if(!i.default[o])throw new Error("No icon matching '"+o+"'. See the complete list of icons at https://feathericons.com");return i.default[o].toSvg(l)}e.default=s},0:function(t,e,r){r("./node_modules/core-js/es/array/from.js"),t.exports=r("./src/index.js")}})})});var IV={};rI(IV,{default:()=>vp});module.exports=nI(IV);m();var D5=Ot(gg()),_e=require("obsidian"),L5=Ot(require("path"));m();var is=require("obsidian");m();var p3=Ot(Gf()),$r=Ot(require("fs/promises")),Ti=require("obsidian"),Ve=Ot(require("path")),Dc=require("path");m();var rd=Ot(RE(),1),Qf=Ot(Gf(),1),tk=require("child_process"),jk=Ot(yg(),1),Eo=Ot(yg(),1),uT=require("node:events"),jg=Object.defineProperty,fL=Object.getOwnPropertyDescriptor,Ng=Object.getOwnPropertyNames,dL=Object.prototype.hasOwnProperty,W=(t,e)=>function(){return t&&(e=(0,t[Ng(t)[0]])(t=0)),e},hL=(t,e)=>function(){return e||(0,t[Ng(t)[0]])((e={exports:{}}).exports,e),e.exports},ft=(t,e)=>{for(var r in e)jg(t,r,{get:e[r],enumerable:!0})},pL=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ng(e))!dL.call(t,i)&&i!==r&&jg(t,i,{get:()=>e[i],enumerable:!(n=fL(e,i))||n.enumerable});return t},it=t=>pL(jg({},"__esModule",{value:!0}),t);function mL(...t){let e=new String(t);return td.set(e,t),e}function Kf(t){return t instanceof String&&td.has(t)}function ME(t){return td.get(t)||[]}var td,pc=W({"src/lib/args/pathspec.ts"(){"use strict";td=new WeakMap}}),Ir,la=W({"src/lib/errors/git-error.ts"(){"use strict";Ir=class extends Error{constructor(t,e){super(e),this.task=t,Object.setPrototypeOf(this,new.target.prototype)}}}}),mc,ko=W({"src/lib/errors/git-response-error.ts"(){"use strict";la(),mc=class extends Ir{constructor(t,e){super(void 0,e||String(t)),this.git=t}}}}),lA,cA=W({"src/lib/errors/task-configuration-error.ts"(){"use strict";la(),lA=class extends Ir{constructor(t){super(void 0,t)}}}});function uA(t){return typeof t!="function"?Qa:t}function fA(t){return typeof t=="function"&&t!==Qa}function dA(t,e){let r=t.indexOf(e);return r<=0?[t,""]:[t.substr(0,r),t.substr(r+1)]}function hA(t,e=0){return pA(t)&&t.length>e?t[e]:void 0}function Ja(t,e=0){if(pA(t)&&t.length>e)return t[t.length-1-e]}function pA(t){return!!(t&&typeof t.length=="number")}function gc(t="",e=!0,r=` +`){return t.split(r).reduce((n,i)=>{let a=e?i.trim():i;return a&&n.push(a),n},[])}function Bg(t,e){return gc(t,!0).map(r=>e(r))}function Hg(t){return(0,rd.exists)(t,rd.FOLDER)}function Me(t,e){return Array.isArray(t)?t.includes(e)||t.push(e):t.add(e),e}function mA(t,e){return Array.isArray(t)&&!t.includes(e)&&t.push(e),t}function nd(t,e){if(Array.isArray(t)){let r=t.indexOf(e);r>=0&&t.splice(r,1)}else t.delete(e);return e}function Vn(t){return Array.isArray(t)?t:[t]}function gA(t){return t.replace(/[\s-]+(.)/g,(e,r)=>r.toUpperCase())}function vA(t){return Vn(t).map(String)}function He(t,e=0){if(t==null)return e;let r=parseInt(t,10);return isNaN(r)?e:r}function dc(t,e){let r=[];for(let n=0,i=t.length;nr in t?{[r]:t[r]}:{}))}function Ag(t=0){return new Promise(e=>setTimeout(e,t))}function kg(t){if(t!==!1)return t}var Ao,Qa,vc,id=W({"src/lib/utils/util.ts"(){"use strict";Ao="\0",Qa=()=>{},vc=Object.prototype.toString.call.bind(Object.prototype.toString)}});function Wn(t,e,r){return e(t)?t:arguments.length>2?r:void 0}function Tg(t,e){let r=Kf(t)?"string":typeof t;return/number|string|boolean/.test(r)&&(!e||!e.includes(r))}function ad(t){return!!t&&vc(t)==="[object Object]"}function wA(t){return typeof t=="function"}var yc,Vt,bA,Zf,Ug,_A=W({"src/lib/utils/argument-filters.ts"(){"use strict";id(),pc(),yc=t=>Array.isArray(t),Vt=t=>typeof t=="string",bA=t=>Array.isArray(t)&&t.every(Vt),Zf=t=>Vt(t)||Array.isArray(t)&&t.every(Vt),Ug=t=>t==null||"number|boolean|function".includes(typeof t)?!1:Array.isArray(t)||typeof t=="string"||typeof t.length=="number"}}),Cg,gL=W({"src/lib/utils/exit-codes.ts"(){"use strict";Cg=(t=>(t[t.SUCCESS=0]="SUCCESS",t[t.ERROR=1]="ERROR",t[t.NOT_FOUND=-2]="NOT_FOUND",t[t.UNCLEAN=128]="UNCLEAN",t))(Cg||{})}}),Jf,vL=W({"src/lib/utils/git-output-streams.ts"(){"use strict";Jf=class xA{constructor(e,r){this.stdOut=e,this.stdErr=r}asStrings(){return new xA(this.stdOut.toString("utf8"),this.stdErr.toString("utf8"))}}}}),me,oa,yL=W({"src/lib/utils/line-parser.ts"(){"use strict";me=class{constructor(t,e){this.matches=[],this.parse=(r,n)=>(this.resetMatches(),this._regExp.every((i,a)=>this.addMatch(i,a,r(a)))?this.useMatches(n,this.prepareMatches())!==!1:!1),this._regExp=Array.isArray(t)?t:[t],e&&(this.useMatches=e)}useMatches(t,e){throw new Error("LineParser:useMatches not implemented")}resetMatches(){this.matches.length=0}prepareMatches(){return this.matches}addMatch(t,e,r){let n=r&&t.exec(r);return n&&this.pushMatch(e,n),!!n}pushMatch(t,e){this.matches.push(...e.slice(1))}},oa=class extends me{addMatch(t,e,r){return/^remote:\s/.test(String(r))&&super.addMatch(t,e,r)}pushMatch(t,e){(t>0||e.length>1)&&super.pushMatch(t,e)}}}});function SA(...t){let e=process.cwd(),r=Object.assign({baseDir:e,...EA},...t.filter(n=>typeof n=="object"&&n));return r.baseDir=r.baseDir||e,r.trimmed=r.trimmed===!0,r}var EA,wL=W({"src/lib/utils/simple-git-options.ts"(){"use strict";EA={binary:"git",maxConcurrentProcesses:5,config:[],trimmed:!1}}});function Gg(t,e=[]){return ad(t)?Object.keys(t).reduce((r,n)=>{let i=t[n];if(Kf(i))r.push(i);else if(Tg(i,["boolean"]))r.push(n+"="+i);else if(Array.isArray(i))for(let a of i)Tg(a,["string","number"])||r.push(n+"="+a);else r.push(n);return r},e):e}function vr(t,e=0,r=!1){let n=[];for(let i=0,a=e<0?t.length:e;i{for(let a=gc(i,n),s=0,o=a.length;s{if(!(s+c>=o))return a[s+c]};e.some(({parse:c})=>c(l,t))}}),t}var xL=W({"src/lib/utils/task-parser.ts"(){"use strict";id()}}),AA={};ft(AA,{ExitCodes:()=>Cg,GitOutputStreams:()=>Jf,LineParser:()=>me,NOOP:()=>Qa,NULL:()=>Ao,RemoteLineParser:()=>oa,append:()=>Me,appendTaskOptions:()=>Gg,asArray:()=>Vn,asCamelCase:()=>gA,asFunction:()=>uA,asNumber:()=>He,asStringArray:()=>vA,bufferToString:()=>hc,callTaskParser:()=>Pg,createInstanceConfig:()=>SA,delay:()=>Ag,filterArray:()=>yc,filterFunction:()=>wA,filterHasLength:()=>Ug,filterPlainObject:()=>ad,filterPrimitives:()=>Tg,filterString:()=>Vt,filterStringArray:()=>bA,filterStringOrStringArray:()=>Zf,filterType:()=>Wn,first:()=>hA,folderExists:()=>Hg,forEachLineWithContent:()=>Bg,getTrailingOptions:()=>vr,including:()=>mA,isUserFunction:()=>fA,last:()=>Ja,objectToString:()=>vc,orVoid:()=>kg,parseStringResponse:()=>wr,pick:()=>yA,prefixedArray:()=>dc,remove:()=>nd,splitOn:()=>dA,toLinesWithContent:()=>gc,trailingFunctionArgument:()=>at,trailingOptionsArgument:()=>zg});var he=W({"src/lib/utils/index.ts"(){"use strict";_A(),gL(),vL(),yL(),wL(),_L(),xL(),id()}}),kA={};ft(kA,{CheckRepoActions:()=>Rg,checkIsBareRepoTask:()=>CA,checkIsRepoRootTask:()=>TA,checkIsRepoTask:()=>SL});function SL(t){switch(t){case"bare":return CA();case"root":return TA()}return{commands:["rev-parse","--is-inside-work-tree"],format:"utf-8",onError:sd,parser:Vg}}function TA(){return{commands:["rev-parse","--git-dir"],format:"utf-8",onError:sd,parser(e){return/^\.(git)?$/.test(e.trim())}}}function CA(){return{commands:["rev-parse","--is-bare-repository"],format:"utf-8",onError:sd,parser:Vg}}function EL(t){return/(Not a git repository|Kein Git-Repository)/i.test(String(t))}var Rg,sd,Vg,PA=W({"src/lib/tasks/check-is-repo.ts"(){"use strict";he(),Rg=(t=>(t.BARE="bare",t.IN_TREE="tree",t.IS_REPO_ROOT="root",t))(Rg||{}),sd=({exitCode:t},e,r,n)=>{if(t===128&&EL(e))return r(Buffer.from("false"));n(e)},Vg=t=>t.trim()==="true"}});function AL(t,e){let r=new RA(t),n=t?OA:MA;return gc(e).forEach(i=>{let a=i.replace(n,"");r.paths.push(a),(IA.test(a)?r.folders:r.files).push(a)}),r}var RA,MA,OA,IA,kL=W({"src/lib/responses/CleanSummary.ts"(){"use strict";he(),RA=class{constructor(t){this.dryRun=t,this.paths=[],this.files=[],this.folders=[]}},MA=/^[a-z]+\s*/i,OA=/^[a-z]+\s+[a-z]+\s*/i,IA=/\/$/}}),Mg={};ft(Mg,{EMPTY_COMMANDS:()=>od,adhocExecTask:()=>$A,configurationErrorTask:()=>yr,isBufferTask:()=>DA,isEmptyTask:()=>LA,straightThroughBufferTask:()=>FA,straightThroughStringTask:()=>rr});function $A(t){return{commands:od,format:"empty",parser:t}}function yr(t){return{commands:od,format:"empty",parser(){throw typeof t=="string"?new lA(t):t}}}function rr(t,e=!1){return{commands:t,format:"utf-8",parser(r){return e?String(r).trim():r}}}function FA(t){return{commands:t,format:"buffer",parser(e){return e}}}function DA(t){return t.format==="buffer"}function LA(t){return t.format==="empty"||!t.commands.length}var od,ut=W({"src/lib/tasks/task.ts"(){"use strict";cA(),od=[]}}),jA={};ft(jA,{CONFIG_ERROR_INTERACTIVE_MODE:()=>Wg,CONFIG_ERROR_MODE_REQUIRED:()=>qg,CONFIG_ERROR_UNKNOWN_OPTION:()=>Yg,CleanOptions:()=>Wf,cleanTask:()=>NA,cleanWithOptionsTask:()=>TL,isCleanOptionsArray:()=>CL});function TL(t,e){let{cleanMode:r,options:n,valid:i}=PL(t);return r?i.options?(n.push(...e),n.some(OL)?yr(Wg):NA(r,n)):yr(Yg+JSON.stringify(t)):yr(qg)}function NA(t,e){return{commands:["clean",`-${t}`,...e],format:"utf-8",parser(n){return AL(t==="n",n)}}}function CL(t){return Array.isArray(t)&&t.every(e=>Xg.has(e))}function PL(t){let e,r=[],n={cleanMode:!1,options:!0};return t.replace(/[^a-z]i/g,"").split("").forEach(i=>{RL(i)?(e=i,n.cleanMode=!0):n.options=n.options&&ML(r[r.length]=`-${i}`)}),{cleanMode:e,options:r,valid:n}}function RL(t){return t==="f"||t==="n"}function ML(t){return/^-[a-z]$/i.test(t)&&Xg.has(t.charAt(1))}function OL(t){return/^-[^\-]/.test(t)?t.indexOf("i")>0:t==="--interactive"}var Wg,qg,Yg,Wf,Xg,BA=W({"src/lib/tasks/clean.ts"(){"use strict";kL(),he(),ut(),Wg="Git clean interactive mode is not supported",qg='Git clean mode parameter ("n" or "f") is required',Yg="Git clean unknown option found in: ",Wf=(t=>(t.DRY_RUN="n",t.FORCE="f",t.IGNORED_INCLUDED="x",t.IGNORED_ONLY="X",t.EXCLUDING="e",t.QUIET="q",t.RECURSIVE="d",t))(Wf||{}),Xg=new Set(["i",...vA(Object.values(Wf))])}});function IL(t){let e=new UA;for(let r of HA(t))e.addValue(r.file,String(r.key),r.value);return e}function $L(t,e){let r=null,n=[],i=new Map;for(let a of HA(t,e))a.key===e&&(n.push(r=a.value),i.has(a.file)||i.set(a.file,[]),i.get(a.file).push(r));return{key:e,paths:Array.from(i.keys()),scopes:i,value:r,values:n}}function FL(t){return t.replace(/^(file):/,"")}function*HA(t,e=null){let r=t.split("\0");for(let n=0,i=r.length-1;nObject.assign(t,this.values[e]),{})),this._all}addFile(t){if(!(t in this.values)){let e=Ja(this.files);this.values[t]=e?Object.create(this.values[e]):{},this.files.push(t)}return this.values[t]}addValue(t,e,r){let n=this.addFile(t);n.hasOwnProperty(e)?Array.isArray(n[e])?n[e].push(r):n[e]=[n[e],r]:n[e]=r,this._all=void 0}}}});function wg(t,e){return typeof t=="string"&&Og.hasOwnProperty(t)?t:e}function LL(t,e,r,n){let i=["config",`--${n}`];return r&&i.push("--add"),i.push(t,e),{commands:i,format:"utf-8",parser(a){return a}}}function jL(t,e){let r=["config","--null","--show-origin","--get-all",t];return e&&r.splice(1,0,`--${e}`),{commands:r,format:"utf-8",parser(n){return $L(n,t)}}}function NL(t){let e=["config","--list","--show-origin","--null"];return t&&e.push(`--${t}`),{commands:e,format:"utf-8",parser(r){return IL(r)}}}function BL(){return{addConfig(t,e,...r){return this._runTask(LL(t,e,r[0]===!0,wg(r[1],"local")),at(arguments))},getConfig(t,e){return this._runTask(jL(t,wg(e,void 0)),at(arguments))},listConfig(...t){return this._runTask(NL(wg(t[0],void 0)),at(arguments))}}}var Og,GA=W({"src/lib/tasks/config.ts"(){"use strict";DL(),he(),Og=(t=>(t.system="system",t.global="global",t.local="local",t.worktree="worktree",t))(Og||{})}});function HL(t){return zA.has(t)}var bg,zA,VA=W({"src/lib/tasks/diff-name-status.ts"(){"use strict";bg=(t=>(t.ADDED="A",t.COPIED="C",t.DELETED="D",t.MODIFIED="M",t.RENAMED="R",t.CHANGED="T",t.UNMERGED="U",t.UNKNOWN="X",t.BROKEN="B",t))(bg||{}),zA=new Set(Object.values(bg))}});function UL(...t){return new qA().param(...t)}function GL(t){let e=new Set,r={};return Bg(t,n=>{let[i,a,s]=n.split(Ao);e.add(i),(r[i]=r[i]||[]).push({line:He(a),path:i,preview:s})}),{paths:e,results:r}}function zL(){return{grep(t){let e=at(arguments),r=vr(arguments);for(let i of WA)if(r.includes(i))return this._runTask(yr(`git.grep: use of "${i}" is not supported.`),e);typeof t=="string"&&(t=UL().param(t));let n=["grep","--null","-n","--full-name",...r,...t];return this._runTask({commands:n,format:"utf-8",parser(i){return GL(i)}},e)}}}var WA,fc,OE,qA,YA=W({"src/lib/tasks/grep.ts"(){"use strict";he(),ut(),WA=["-h"],fc=Symbol("grepQuery"),qA=class{constructor(){this[OE]=[]}*[(OE=fc,Symbol.iterator)](){for(let t of this[fc])yield t}and(...t){return t.length&&this[fc].push("--and","(",...dc(t,"-e"),")"),this}param(...t){return this[fc].push(...dc(t,"-e")),this}}}}),XA={};ft(XA,{ResetMode:()=>qf,getResetMode:()=>WL,resetTask:()=>VL});function VL(t,e){let r=["reset"];return KA(t)&&r.push(`--${t}`),r.push(...e),rr(r)}function WL(t){if(KA(t))return t;switch(typeof t){case"string":case"undefined":return"soft"}}function KA(t){return ZA.includes(t)}var qf,ZA,JA=W({"src/lib/tasks/reset.ts"(){"use strict";ut(),qf=(t=>(t.MIXED="mixed",t.SOFT="soft",t.HARD="hard",t.MERGE="merge",t.KEEP="keep",t))(qf||{}),ZA=Array.from(Object.values(qf))}});function qL(){return(0,Qf.default)("simple-git")}function IE(t,e,r){return!e||!String(e).replace(/\s*/,"")?r?(n,...i)=>{t(n,...i),r(n,...i)}:t:(n,...i)=>{t(`%s ${n}`,e,...i),r&&r(n,...i)}}function YL(t,e,{namespace:r}){if(typeof t=="string")return t;let n=e&&e.namespace||"";return n.startsWith(r)?n.substr(r.length+1):n||r}function Kg(t,e,r,n=qL()){let i=t&&`[${t}]`||"",a=[],s=typeof e=="string"?n.extend(e):e,o=YL(Wn(e,Vt),s,n);return c(r);function l(u,f){return Me(a,Kg(t,o.replace(/^[^:]+/,u),f,n))}function c(u){let f=u&&`[${u}]`||"",d=s&&IE(s,f)||Qa,h=IE(n,`${i} ${f}`,d);return Object.assign(s?d:h,{label:t,sibling:l,info:h,step:c})}}var QA=W({"src/lib/git-logger.ts"(){"use strict";he(),Qf.default.formatters.L=t=>String(Ug(t)?t.length:"-"),Qf.default.formatters.B=t=>Buffer.isBuffer(t)?t.toString("utf8"):vc(t)}}),ek,XL=W({"src/lib/runners/tasks-pending-queue.ts"(){"use strict";var t;la(),QA(),ek=(t=class{constructor(r="GitExecutor"){this.logLabel=r,this._queue=new Map}withProgress(r){return this._queue.get(r)}createProgress(r){let n=t.getName(r.commands[0]),i=Kg(this.logLabel,n);return{task:r,logger:i,name:n}}push(r){let n=this.createProgress(r);return n.logger("Adding task to the queue, commands = %o",r.commands),this._queue.set(r,n),n}fatal(r){for(let[n,{logger:i}]of Array.from(this._queue.entries()))n===r.task?(i.info("Failed %o",r),i("Fatal exception, any as-yet un-started tasks run through this executor will not be attempted")):i.info("A fatal exception occurred in a previous task, the queue has been purged: %o",r.message),this.complete(n);if(this._queue.size!==0)throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`)}complete(r){this.withProgress(r)&&this._queue.delete(r)}attempt(r){let n=this.withProgress(r);if(!n)throw new Ir(void 0,"TasksPendingQueue: attempt called for an unknown task");return n.logger("Starting task"),n}static getName(r="empty"){return`task:${r}:${++t.counter}`}},t.counter=0,t)}});function Za(t,e){return{method:hA(t.commands)||"",commands:e}}function KL(t,e){return r=>{e("[ERROR] child process exception %o",r),t.push(Buffer.from(String(r.stack),"ascii"))}}function $E(t,e,r,n){return i=>{r("%s received %L bytes",e,i),n("%B",i),t.push(i)}}var Ig,ZL=W({"src/lib/runners/git-executor-chain.ts"(){"use strict";la(),ut(),he(),XL(),Ig=class{constructor(t,e,r){this._executor=t,this._scheduler=e,this._plugins=r,this._chain=Promise.resolve(),this._queue=new ek}get cwd(){return this._cwd||this._executor.cwd}set cwd(t){this._cwd=t}get env(){return this._executor.env}get outputHandler(){return this._executor.outputHandler}chain(){return this}push(t){return this._queue.push(t),this._chain=this._chain.then(()=>this.attemptTask(t))}async attemptTask(t){let e=await this._scheduler.next(),r=()=>this._queue.complete(t);try{let{logger:n}=this._queue.attempt(t);return await(LA(t)?this.attemptEmptyTask(t,n):this.attemptRemoteTask(t,n))}catch(n){throw this.onFatalException(t,n)}finally{r(),e()}}onFatalException(t,e){let r=e instanceof Ir?Object.assign(e,{task:t}):new Ir(t,e&&String(e));return this._chain=Promise.resolve(),this._queue.fatal(r),r}async attemptRemoteTask(t,e){let r=this._plugins.exec("spawn.binary","",Za(t,t.commands)),n=this._plugins.exec("spawn.args",[...t.commands],Za(t,t.commands)),i=await this.gitResponse(t,r,n,this.outputHandler,e.step("SPAWN")),a=await this.handleTaskData(t,n,i,e.step("HANDLE"));return e("passing response to task's parser as a %s",t.format),DA(t)?Pg(t.parser,a):Pg(t.parser,a.asStrings())}async attemptEmptyTask(t,e){return e("empty task bypassing child process to call to task's parser"),t.parser(this)}handleTaskData(t,e,r,n){let{exitCode:i,rejection:a,stdOut:s,stdErr:o}=r;return new Promise((l,c)=>{n("Preparing to handle process response exitCode=%d stdOut=",i);let{error:u}=this._plugins.exec("task.error",{error:a},{...Za(t,e),...r});if(u&&t.onError)return n.info("exitCode=%s handling with custom error handler"),t.onError(r,u,f=>{n.info("custom error handler treated as success"),n("custom error returned a %s",vc(f)),l(new Jf(Array.isArray(f)?Buffer.concat(f):f,Buffer.concat(o)))},c);if(u)return n.info("handling as error: exitCode=%s stdErr=%s rejection=%o",i,o.length,a),c(u);n.info("retrieving task output complete"),l(new Jf(Buffer.concat(s),Buffer.concat(o)))})}async gitResponse(t,e,r,n,i){let a=i.sibling("output"),s=this._plugins.exec("spawn.options",{cwd:this.cwd,env:this.env,windowsHide:!0},Za(t,t.commands));return new Promise(o=>{let l=[],c=[];i.info("%s %o",e,r),i("%O",s);let u=this._beforeSpawn(t,r);if(u)return o({stdOut:l,stdErr:c,exitCode:9901,rejection:u});this._plugins.exec("spawn.before",void 0,{...Za(t,r),kill(d){u=d||u}});let f=(0,tk.spawn)(e,r,s);f.stdout.on("data",$E(l,"stdOut",i,a.step("stdOut"))),f.stderr.on("data",$E(c,"stdErr",i,a.step("stdErr"))),f.on("error",KL(c,i)),n&&(i("Passing child process stdOut/stdErr to custom outputHandler"),n(e,f.stdout,f.stderr,[...r])),this._plugins.exec("spawn.after",void 0,{...Za(t,r),spawned:f,close(d,h){o({stdOut:l,stdErr:c,exitCode:d,rejection:u||h})},kill(d){f.killed||(u=d,f.kill("SIGINT"))}})})}_beforeSpawn(t,e){let r;return this._plugins.exec("spawn.before",void 0,{...Za(t,e),kill(n){r=n||r}}),r}}}}),rk={};ft(rk,{GitExecutor:()=>nk});var nk,JL=W({"src/lib/runners/git-executor.ts"(){"use strict";ZL(),nk=class{constructor(t,e,r){this.cwd=t,this._scheduler=e,this._plugins=r,this._chain=new Ig(this,this._scheduler,this._plugins)}chain(){return new Ig(this,this._scheduler,this._plugins)}push(t){return this._chain.push(t)}}}});function QL(t,e,r=Qa){let n=a=>{r(null,a)},i=a=>{(a==null?void 0:a.task)===t&&r(a instanceof mc?ej(a):a,void 0)};e.then(n,i)}function ej(t){let e=n=>{console.warn(`simple-git deprecation notice: accessing GitResponseError.${n} should be GitResponseError.git.${n}, this will no longer be available in version 3`),e=Qa};return Object.create(t,Object.getOwnPropertyNames(t.git).reduce(r,{}));function r(n,i){return i in t||(n[i]={enumerable:!1,configurable:!1,get(){return e(i),t.git[i]}}),n}}var tj=W({"src/lib/task-callback.ts"(){"use strict";ko(),he()}});function FE(t,e){return $A(r=>{if(!Hg(t))throw new Error(`Git.cwd: cannot change to non-directory "${t}"`);return(e||r).cwd=t})}var rj=W({"src/lib/tasks/change-working-directory.ts"(){"use strict";he(),ut()}});function _g(t){let e=["checkout",...t];return e[1]==="-b"&&e.includes("-B")&&(e[1]=nd(e,"-B")),rr(e)}function nj(){return{checkout(){return this._runTask(_g(vr(arguments,1)),at(arguments))},checkoutBranch(t,e){return this._runTask(_g(["-b",t,e,...vr(arguments)]),at(arguments))},checkoutLocalBranch(t){return this._runTask(_g(["-b",t,...vr(arguments)]),at(arguments))}}}var ij=W({"src/lib/tasks/checkout.ts"(){"use strict";he(),ut()}});function aj(){return{count:0,garbage:0,inPack:0,packs:0,prunePackable:0,size:0,sizeGarbage:0,sizePack:0}}function sj(){return{countObjects(){return this._runTask({commands:["count-objects","--verbose"],format:"utf-8",parser(t){return wr(aj(),[ik],t)}})}}}var ik,oj=W({"src/lib/tasks/count-objects.ts"(){"use strict";he(),ik=new me(/([a-z-]+): (\d+)$/,(t,[e,r])=>{let n=gA(e);t.hasOwnProperty(n)&&(t[n]=He(r))})}});function lj(t){return wr({author:null,branch:"",commit:"",root:!1,summary:{changes:0,insertions:0,deletions:0}},ak,t)}var ak,cj=W({"src/lib/parsers/parse-commit.ts"(){"use strict";he(),ak=[new me(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/,(t,[e,r,n])=>{t.branch=e,t.commit=n,t.root=!!r}),new me(/\s*Author:\s(.+)/i,(t,[e])=>{let r=e.split("<"),n=r.pop();!n||!n.includes("@")||(t.author={email:n.substr(0,n.length-1),name:r.join("<").trim()})}),new me(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g,(t,[e,r,n])=>{t.summary.changes=parseInt(e,10)||0,t.summary.insertions=parseInt(r,10)||0,t.summary.deletions=parseInt(n,10)||0}),new me(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/,(t,[e,r,n])=>{t.summary.changes=parseInt(e,10)||0;let i=parseInt(r,10)||0;n==="-"?t.summary.deletions=i:n==="+"&&(t.summary.insertions=i)})]}});function uj(t,e,r){return{commands:["-c","core.abbrev=40","commit",...dc(t,"-m"),...e,...r],format:"utf-8",parser:lj}}function fj(){return{commit(e,...r){let n=at(arguments),i=t(e)||uj(Vn(e),Vn(Wn(r[0],Zf,[])),[...Wn(r[1],yc,[]),...vr(arguments,0,!0)]);return this._runTask(i,n)}};function t(e){return!Zf(e)&&yr("git.commit: requires the commit message to be supplied as a string/string[]")}}var dj=W({"src/lib/tasks/commit.ts"(){"use strict";cj(),he(),ut()}});function hj(){return{firstCommit(){return this._runTask(rr(["rev-list","--max-parents=0","HEAD"],!0),at(arguments))}}}var pj=W({"src/lib/tasks/first-commit.ts"(){"use strict";he(),ut()}});function mj(t,e){let r=["hash-object",t];return e&&r.push("-w"),rr(r,!0)}var gj=W({"src/lib/tasks/hash-object.ts"(){"use strict";ut()}});function vj(t,e,r){let n=String(r).trim(),i;if(i=sk.exec(n))return new Yf(t,e,!1,i[1]);if(i=ok.exec(n))return new Yf(t,e,!0,i[1]);let a="",s=n.split(" ");for(;s.length;)if(s.shift()==="in"){a=s.join(" ");break}return new Yf(t,e,/^re/i.test(n),a)}var Yf,sk,ok,yj=W({"src/lib/responses/InitSummary.ts"(){"use strict";Yf=class{constructor(t,e,r,n){this.bare=t,this.path=e,this.existing=r,this.gitDir=n}},sk=/^Init.+ repository in (.+)$/,ok=/^Rein.+ in (.+)$/}});function wj(t){return t.includes(Zg)}function bj(t=!1,e,r){let n=["init",...r];return t&&!wj(n)&&n.splice(1,0,Zg),{commands:n,format:"utf-8",parser(i){return vj(n.includes("--bare"),e,i)}}}var Zg,_j=W({"src/lib/tasks/init.ts"(){"use strict";yj(),Zg="--bare"}});function Jg(t){for(let e=0;ewr(new lk,e,r,!1)}var xg,DE,LE,jE,uk,fk=W({"src/lib/parsers/parse-diff-summary.ts"(){"use strict";wc(),Sj(),VA(),he(),xg=[new me(/^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/,(t,[e,r,n=""])=>{t.files.push({file:e.trim(),changes:He(r),insertions:n.replace(/[^+]/g,"").length,deletions:n.replace(/[^-]/g,"").length,binary:!1})}),new me(/^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,(t,[e,r,n])=>{t.files.push({file:e.trim(),before:He(r),after:He(n),binary:!0})}),new me(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/,(t,[e,r])=>{let n=/(\d+) i/.exec(r),i=/(\d+) d/.exec(r);t.changed=He(e),t.insertions=He(n==null?void 0:n[1]),t.deletions=He(i==null?void 0:i[1])})],DE=[new me(/(\d+)\t(\d+)\t(.+)$/,(t,[e,r,n])=>{let i=He(e),a=He(r);t.changed++,t.insertions+=i,t.deletions+=a,t.files.push({file:n,changes:i+a,insertions:i,deletions:a,binary:!1})}),new me(/-\t-\t(.+)$/,(t,[e])=>{t.changed++,t.files.push({file:e,after:0,before:0,binary:!0})})],LE=[new me(/(.+)$/,(t,[e])=>{t.changed++,t.files.push({file:e,changes:0,insertions:0,deletions:0,binary:!1})})],jE=[new me(/([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/,(t,[e,r,n,i,a])=>{t.changed++,t.files.push({file:a!=null?a:n,changes:0,insertions:0,deletions:0,binary:!1,status:kg(HL(e)&&e),from:kg(!!a&&n!==a&&n),similarity:He(r)})})],uk={"":xg,"--stat":xg,"--numstat":DE,"--name-status":jE,"--name-only":LE}}});function Ej(t,e){return e.reduce((r,n,i)=>(r[n]=t[i]||"",r),Object.create({diff:null}))}function dk(t=r0,e=hk,r=""){let n=ck(r);return function(i){let a=gc(i.trim(),!1,e0).map(function(s){let o=s.split(t0),l=Ej(o[0].split(t),e);return o.length>1&&o[1].trim()&&(l.diff=n(o[1])),l});return{all:a,latest:a.length&&a[0]||null,total:a.length}}}var e0,t0,r0,hk,pk=W({"src/lib/parsers/parse-list-log-summary.ts"(){"use strict";he(),fk(),wc(),e0="\xF2\xF2\xF2\xF2\xF2\xF2 ",t0=" \xF2\xF2",r0=" \xF2 ",hk=["hash","date","message","refs","author_name","author_email"]}}),mk={};ft(mk,{diffSummaryTask:()=>Aj,validateLogFormatConfig:()=>ld});function Aj(t){let e=Jg(t),r=["diff"];return e===""&&(e="--stat",r.push("--stat=4096")),r.push(...t),ld(r)||{commands:r,format:"utf-8",parser:ck(e)}}function ld(t){let e=t.filter(xj);if(e.length>1)return yr(`Summary flags are mutually exclusive - pick one of ${e.join(",")}`);if(e.length&&t.includes("-z"))return yr(`Summary flag ${e} parsing is not compatible with null termination option '-z'`)}var n0=W({"src/lib/tasks/diff.ts"(){"use strict";wc(),fk(),ut()}});function kj(t,e){let r=[],n=[];return Object.keys(t).forEach(i=>{r.push(i),n.push(String(t[i]))}),[r,n.join(e)]}function Tj(t){return Object.keys(t).reduce((e,r)=>(r in $g||(e[r]=t[r]),e),{})}function gk(t={},e=[]){let r=Wn(t.splitter,Vt,r0),n=ad(t.format)?t.format:{hash:"%H",date:t.strictDate===!1?"%ai":"%aI",message:"%s",refs:"%D",body:t.multiLine?"%B":"%b",author_name:t.mailMap!==!1?"%aN":"%an",author_email:t.mailMap!==!1?"%aE":"%ae"},[i,a]=kj(n,r),s=[],o=[`--pretty=format:${e0}${a}${t0}`,...e],l=t.n||t["max-count"]||t.maxCount;if(l&&o.push(`--max-count=${l}`),t.from||t.to){let c=t.symmetric!==!1?"...":"..";s.push(`${t.from||""}${c}${t.to||""}`)}return Vt(t.file)&&o.push("--follow",mL(t.file)),Gg(Tj(t),o),{fields:i,splitter:r,commands:[...o,...s]}}function Cj(t,e,r){let n=dk(t,e,Jg(r));return{commands:["log",...r],format:"utf-8",parser:n}}function Pj(){return{log(...r){let n=at(arguments),i=gk(zg(arguments),Wn(arguments[0],yc)),a=e(...r)||ld(i.commands)||t(i);return this._runTask(a,n)}};function t(r){return Cj(r.splitter,r.fields,r.commands)}function e(r,n){return Vt(r)&&Vt(n)&&yr("git.log(string, string) should be replaced with git.log({ from: string, to: string })")}}var $g,vk=W({"src/lib/tasks/log.ts"(){"use strict";wc(),pc(),pk(),he(),ut(),n0(),$g=(t=>(t[t["--pretty"]=0]="--pretty",t[t["max-count"]=1]="max-count",t[t.maxCount=2]="maxCount",t[t.n=3]="n",t[t.file=4]="file",t[t.format=5]="format",t[t.from=6]="from",t[t.to=7]="to",t[t.splitter=8]="splitter",t[t.symmetric=9]="symmetric",t[t.mailMap=10]="mailMap",t[t.multiLine=11]="multiLine",t[t.strictDate=12]="strictDate",t))($g||{})}}),Xf,yk,Rj=W({"src/lib/responses/MergeSummary.ts"(){"use strict";Xf=class{constructor(t,e=null,r){this.reason=t,this.file=e,this.meta=r}toString(){return`${this.file}:${this.reason}`}},yk=class{constructor(){this.conflicts=[],this.merges=[],this.result="success"}get failed(){return this.conflicts.length>0}get reason(){return this.result}toString(){return this.conflicts.length?`CONFLICTS: ${this.conflicts.join(", ")}`:"OK"}}}}),Fg,wk,Mj=W({"src/lib/responses/PullSummary.ts"(){"use strict";Fg=class{constructor(){this.remoteMessages={all:[]},this.created=[],this.deleted=[],this.files=[],this.deletions={},this.insertions={},this.summary={changes:0,deletions:0,insertions:0}}},wk=class{constructor(){this.remote="",this.hash={local:"",remote:""},this.branch={local:"",remote:""},this.message=""}toString(){return this.message}}}});function Sg(t){return t.objects=t.objects||{compressing:0,counting:0,enumerating:0,packReused:0,reused:{count:0,delta:0},total:{count:0,delta:0}}}function NE(t){let e=/^\s*(\d+)/.exec(t),r=/delta (\d+)/i.exec(t);return{count:He(e&&e[1]||"0"),delta:He(r&&r[1]||"0")}}var bk,Oj=W({"src/lib/parsers/parse-remote-objects.ts"(){"use strict";he(),bk=[new oa(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i,(t,[e,r])=>{let n=e.toLowerCase(),i=Sg(t.remoteMessages);Object.assign(i,{[n]:He(r)})}),new oa(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i,(t,[e,r])=>{let n=e.toLowerCase(),i=Sg(t.remoteMessages);Object.assign(i,{[n]:He(r)})}),new oa(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i,(t,[e,r,n])=>{let i=Sg(t.remoteMessages);i.total=NE(e),i.reused=NE(r),i.packReused=He(n)})]}});function _k(t,e){return wr({remoteMessages:new Sk},xk,e)}var xk,Sk,Ek=W({"src/lib/parsers/parse-remote-messages.ts"(){"use strict";he(),Oj(),xk=[new oa(/^remote:\s*(.+)$/,(t,[e])=>(t.remoteMessages.all.push(e.trim()),!1)),...bk,new oa([/create a (?:pull|merge) request/i,/\s(https?:\/\/\S+)$/],(t,[e])=>{t.remoteMessages.pullRequestUrl=e}),new oa([/found (\d+) vulnerabilities.+\(([^)]+)\)/i,/\s(https?:\/\/\S+)$/],(t,[e,r,n])=>{t.remoteMessages.vulnerabilities={count:He(e),summary:r,url:n}})],Sk=class{constructor(){this.all=[]}}}});function Ij(t,e){let r=wr(new wk,Ak,[t,e]);return r.message&&r}var BE,HE,UE,GE,Ak,zE,i0,kk=W({"src/lib/parsers/parse-pull.ts"(){"use strict";Mj(),he(),Ek(),BE=/^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/,HE=/(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/,UE=/^(create|delete) mode \d+ (.+)/,GE=[new me(BE,(t,[e,r,n])=>{t.files.push(e),r&&(t.insertions[e]=r.length),n&&(t.deletions[e]=n.length)}),new me(HE,(t,[e,,r,,n])=>r!==void 0||n!==void 0?(t.summary.changes=+e||0,t.summary.insertions=+r||0,t.summary.deletions=+n||0,!0):!1),new me(UE,(t,[e,r])=>{Me(t.files,r),Me(e==="create"?t.created:t.deleted,r)})],Ak=[new me(/^from\s(.+)$/i,(t,[e])=>void(t.remote=e)),new me(/^fatal:\s(.+)$/,(t,[e])=>void(t.message=e)),new me(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/,(t,[e,r,n,i])=>{t.branch.local=n,t.hash.local=e,t.branch.remote=i,t.hash.remote=r})],zE=(t,e)=>wr(new Fg,GE,[t,e]),i0=(t,e)=>Object.assign(new Fg,zE(t,e),_k(t,e))}}),VE,Tk,WE,$j=W({"src/lib/parsers/parse-merge.ts"(){"use strict";Rj(),he(),kk(),VE=[new me(/^Auto-merging\s+(.+)$/,(t,[e])=>{t.merges.push(e)}),new me(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/,(t,[e,r])=>{t.conflicts.push(new Xf(e,r))}),new me(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/,(t,[e,r,n])=>{t.conflicts.push(new Xf(e,r,{deleteRef:n}))}),new me(/^CONFLICT\s+\((.+)\):/,(t,[e])=>{t.conflicts.push(new Xf(e,null))}),new me(/^Automatic merge failed;\s+(.+)$/,(t,[e])=>{t.result=e})],Tk=(t,e)=>Object.assign(WE(t,e),i0(t,e)),WE=t=>wr(new yk,VE,t)}});function qE(t){return t.length?{commands:["merge",...t],format:"utf-8",parser(e,r){let n=Tk(e,r);if(n.failed)throw new mc(n);return n}}:yr("Git.merge requires at least one option")}var Fj=W({"src/lib/tasks/merge.ts"(){"use strict";ko(),$j(),ut()}});function Dj(t,e,r){let n=r.includes("deleted"),i=r.includes("tag")||/^refs\/tags/.test(t),a=!r.includes("new");return{deleted:n,tag:i,branch:!i,new:!a,alreadyUpdated:a,local:t,remote:e}}var YE,Ck,XE,Lj=W({"src/lib/parsers/parse-push.ts"(){"use strict";he(),Ek(),YE=[new me(/^Pushing to (.+)$/,(t,[e])=>{t.repo=e}),new me(/^updating local tracking ref '(.+)'/,(t,[e])=>{t.ref={...t.ref||{},local:e}}),new me(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/,(t,[e,r,n])=>{t.pushed.push(Dj(e,r,n))}),new me(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,(t,[e,r,n])=>{t.branch={...t.branch||{},local:e,remote:r,remoteName:n}}),new me(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/,(t,[e,r,n,i])=>{t.update={head:{local:e,remote:r},hash:{from:n,to:i}}})],Ck=(t,e)=>{let r=XE(t,e),n=_k(t,e);return{...r,...n}},XE=(t,e)=>wr({pushed:[]},YE,[t,e])}}),Pk={};ft(Pk,{pushTagsTask:()=>jj,pushTask:()=>a0});function jj(t={},e){return Me(e,"--tags"),a0(t,e)}function a0(t={},e){let r=["push",...e];return t.branch&&r.splice(1,0,t.branch),t.remote&&r.splice(1,0,t.remote),nd(r,"-v"),Me(r,"--verbose"),Me(r,"--porcelain"),{commands:r,format:"utf-8",parser:Ck}}var Rk=W({"src/lib/tasks/push.ts"(){"use strict";Lj(),he()}});function Nj(){return{showBuffer(){let t=["show",...vr(arguments,1)];return t.includes("--binary")||t.splice(1,0,"--binary"),this._runTask(FA(t),at(arguments))},show(){let t=["show",...vr(arguments,1)];return this._runTask(rr(t),at(arguments))}}}var Bj=W({"src/lib/tasks/show.ts"(){"use strict";he(),ut()}}),KE,Mk,Hj=W({"src/lib/responses/FileStatusSummary.ts"(){"use strict";KE=/^(.+)\0(.+)$/,Mk=class{constructor(t,e,r){if(this.path=t,this.index=e,this.working_dir=r,e==="R"||r==="R"){let n=KE.exec(t)||[null,t,t];this.from=n[2]||"",this.path=n[1]||""}}}}});function ZE(t){let[e,r]=t.split(Ao);return{from:r||e,to:e}}function Or(t,e,r){return[`${t}${e}`,r]}function Eg(t,...e){return e.map(r=>Or(t,r,(n,i)=>Me(n.conflicted,i)))}function Uj(t,e){let r=e.trim();switch(" "){case r.charAt(2):return n(r.charAt(0),r.charAt(1),r.substr(3));case r.charAt(1):return n(" ",r.charAt(0),r.substr(2));default:return}function n(i,a,s){let o=`${i}${a}`,l=Ok.get(o);l&&l(t,s),o!=="##"&&o!=="!!"&&t.files.push(new Mk(s,i,a))}}var JE,Ok,Ik,Gj=W({"src/lib/responses/StatusSummary.ts"(){"use strict";he(),Hj(),JE=class{constructor(){this.not_added=[],this.conflicted=[],this.created=[],this.deleted=[],this.ignored=void 0,this.modified=[],this.renamed=[],this.files=[],this.staged=[],this.ahead=0,this.behind=0,this.current=null,this.tracking=null,this.detached=!1,this.isClean=()=>!this.files.length}},Ok=new Map([Or(" ","A",(t,e)=>Me(t.created,e)),Or(" ","D",(t,e)=>Me(t.deleted,e)),Or(" ","M",(t,e)=>Me(t.modified,e)),Or("A"," ",(t,e)=>Me(t.created,e)&&Me(t.staged,e)),Or("A","M",(t,e)=>Me(t.created,e)&&Me(t.staged,e)&&Me(t.modified,e)),Or("D"," ",(t,e)=>Me(t.deleted,e)&&Me(t.staged,e)),Or("M"," ",(t,e)=>Me(t.modified,e)&&Me(t.staged,e)),Or("M","M",(t,e)=>Me(t.modified,e)&&Me(t.staged,e)),Or("R"," ",(t,e)=>{Me(t.renamed,ZE(e))}),Or("R","M",(t,e)=>{let r=ZE(e);Me(t.renamed,r),Me(t.modified,r.to)}),Or("!","!",(t,e)=>{Me(t.ignored=t.ignored||[],e)}),Or("?","?",(t,e)=>Me(t.not_added,e)),...Eg("A","A","U"),...Eg("D","D","U"),...Eg("U","A","D","U"),["##",(t,e)=>{let r=/ahead (\d+)/,n=/behind (\d+)/,i=/^(.+?(?=(?:\.{3}|\s|$)))/,a=/\.{3}(\S*)/,s=/\son\s([\S]+)$/,o;o=r.exec(e),t.ahead=o&&+o[1]||0,o=n.exec(e),t.behind=o&&+o[1]||0,o=i.exec(e),t.current=o&&o[1],o=a.exec(e),t.tracking=o&&o[1],o=s.exec(e),t.current=o&&o[1]||t.current,t.detached=/\(no branch\)/.test(e)}]]),Ik=function(t){let e=t.split(Ao),r=new JE;for(let n=0,i=e.length;n!$k.includes(r))],parser(r){return Ik(r)}}}var $k,Vj=W({"src/lib/tasks/status.ts"(){"use strict";Gj(),$k=["--null","-z"]}});function ed(t=0,e=0,r=0,n="",i=!0){return Object.defineProperty({major:t,minor:e,patch:r,agent:n,installed:i},"toString",{value(){return`${this.major}.${this.minor}.${this.patch}`},configurable:!1,enumerable:!1})}function Wj(){return ed(0,0,0,"",!1)}function qj(){return{version(){return this._runTask({commands:["--version"],format:"utf-8",parser:Yj,onError(t,e,r,n){if(t.exitCode===-2)return r(Buffer.from(s0));n(e)}})}}}function Yj(t){return t===s0?Wj():wr(ed(0,0,0,t),Fk,t)}var s0,Fk,Xj=W({"src/lib/tasks/version.ts"(){"use strict";he(),s0="installed=false",Fk=[new me(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/,(t,[e,r,n,i=""])=>{Object.assign(t,ed(He(e),He(r),He(n),i))}),new me(/version (\d+)\.(\d+)\.(\D+)(.+)?$/,(t,[e,r,n,i=""])=>{Object.assign(t,ed(He(e),He(r),n,i))})]}}),Dk={};ft(Dk,{SimpleGitApi:()=>Dg});var Dg,Kj=W({"src/lib/simple-git-api.ts"(){"use strict";tj(),rj(),ij(),oj(),dj(),GA(),pj(),YA(),gj(),_j(),vk(),Fj(),Rk(),Bj(),Vj(),ut(),Xj(),he(),Dg=class{constructor(t){this._executor=t}_runTask(t,e){let r=this._executor.chain(),n=r.push(t);return e&&QL(t,n,e),Object.create(this,{then:{value:n.then.bind(n)},catch:{value:n.catch.bind(n)},_executor:{value:r}})}add(t){return this._runTask(rr(["add",...Vn(t)]),at(arguments))}cwd(t){let e=at(arguments);return typeof t=="string"?this._runTask(FE(t,this._executor),e):typeof(t==null?void 0:t.path)=="string"?this._runTask(FE(t.path,t.root&&this._executor||void 0),e):this._runTask(yr("Git.cwd: workingDirectory must be supplied as a string"),e)}hashObject(t,e){return this._runTask(mj(t,e===!0),at(arguments))}init(t){return this._runTask(bj(t===!0,this._executor.cwd,vr(arguments)),at(arguments))}merge(){return this._runTask(qE(vr(arguments)),at(arguments))}mergeFromTo(t,e){return Vt(t)&&Vt(e)?this._runTask(qE([t,e,...vr(arguments)]),at(arguments,!1)):this._runTask(yr("Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings"))}outputHandler(t){return this._executor.outputHandler=t,this}push(){let t=a0({remote:Wn(arguments[0],Vt),branch:Wn(arguments[1],Vt)},vr(arguments));return this._runTask(t,at(arguments))}stash(){return this._runTask(rr(["stash",...vr(arguments)]),at(arguments))}status(){return this._runTask(zj(vr(arguments)),at(arguments))}},Object.assign(Dg.prototype,nj(),fj(),BL(),sj(),hj(),zL(),Pj(),Nj(),qj())}}),Lk={};ft(Lk,{Scheduler:()=>Nk});var QE,Nk,Zj=W({"src/lib/runners/scheduler.ts"(){"use strict";he(),QA(),QE=(()=>{let t=0;return()=>{t++;let{promise:e,done:r}=(0,jk.createDeferred)();return{promise:e,done:r,id:t}}})(),Nk=class{constructor(t=2){this.concurrency=t,this.logger=Kg("","scheduler"),this.pending=[],this.running=[],this.logger("Constructed, concurrency=%s",t)}schedule(){if(!this.pending.length||this.running.length>=this.concurrency){this.logger("Schedule attempt ignored, pending=%s running=%s concurrency=%s",this.pending.length,this.running.length,this.concurrency);return}let t=Me(this.running,this.pending.shift());this.logger("Attempting id=%s",t.id),t.done(()=>{this.logger("Completing id=",t.id),nd(this.running,t),this.schedule()})}next(){let{promise:t,id:e}=Me(this.pending,QE());return this.logger("Scheduling id=%s",e),this.schedule(),t}}}}),Bk={};ft(Bk,{applyPatchTask:()=>Jj});function Jj(t,e){return rr(["apply",...e,...t])}var Qj=W({"src/lib/tasks/apply-patch.ts"(){"use strict";ut()}});function eN(t,e){return{branch:t,hash:e,success:!0}}function tN(t){return{branch:t,hash:null,success:!1}}var Hk,rN=W({"src/lib/responses/BranchDeleteSummary.ts"(){"use strict";Hk=class{constructor(){this.all=[],this.branches={},this.errors=[]}get success(){return!this.errors.length}}}});function Uk(t,e){return e===1&&Lg.test(t)}var eA,Lg,tA,cd,nN=W({"src/lib/parsers/parse-branch-delete.ts"(){"use strict";rN(),he(),eA=/(\S+)\s+\(\S+\s([^)]+)\)/,Lg=/^error[^']+'([^']+)'/m,tA=[new me(eA,(t,[e,r])=>{let n=eN(e,r);t.all.push(n),t.branches[e]=n}),new me(Lg,(t,[e])=>{let r=tN(e);t.errors.push(r),t.all.push(r),t.branches[e]=r})],cd=(t,e)=>wr(new Hk,tA,[t,e])}}),Gk,iN=W({"src/lib/responses/BranchSummary.ts"(){"use strict";Gk=class{constructor(){this.all=[],this.branches={},this.current="",this.detached=!1}push(t,e,r,n,i){t==="*"&&(this.detached=e,this.current=r),this.all.push(r),this.branches[r]={current:t==="*",linkedWorkTree:t==="+",name:r,commit:n,label:i}}}}});function rA(t){return t?t.charAt(0):""}function zk(t){return wr(new Gk,Vk,t)}var Vk,aN=W({"src/lib/parsers/parse-branch.ts"(){"use strict";iN(),he(),Vk=[new me(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/,(t,[e,r,n,i])=>{t.push(rA(e),!0,r,n,i)}),new me(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s,(t,[e,r,n,i])=>{t.push(rA(e),!1,r,n,i)})]}}),Wk={};ft(Wk,{branchLocalTask:()=>oN,branchTask:()=>sN,containsDeleteBranchCommand:()=>qk,deleteBranchTask:()=>cN,deleteBranchesTask:()=>lN});function qk(t){let e=["-d","-D","--delete"];return t.some(r=>e.includes(r))}function sN(t){let e=qk(t),r=["branch",...t];return r.length===1&&r.push("-a"),r.includes("-v")||r.splice(1,0,"-v"),{format:"utf-8",commands:r,parser(n,i){return e?cd(n,i).all[0]:zk(n)}}}function oN(){return{format:"utf-8",commands:["branch","-v"],parser:zk}}function lN(t,e=!1){return{format:"utf-8",commands:["branch","-v",e?"-D":"-d",...t],parser(r,n){return cd(r,n)},onError({exitCode:r,stdOut:n},i,a,s){if(!Uk(String(i),r))return s(i);a(n)}}}function cN(t,e=!1){let r={format:"utf-8",commands:["branch","-v",e?"-D":"-d",t],parser(n,i){return cd(n,i).branches[t]},onError({exitCode:n,stdErr:i,stdOut:a},s,o,l){if(!Uk(String(s),n))return l(s);throw new mc(r.parser(hc(a),hc(i)),String(s))}};return r}var uN=W({"src/lib/tasks/branch.ts"(){"use strict";ko(),nN(),aN(),he()}}),Yk,fN=W({"src/lib/responses/CheckIgnore.ts"(){"use strict";Yk=t=>t.split(/\n/g).map(e=>e.trim()).filter(e=>!!e)}}),Xk={};ft(Xk,{checkIgnoreTask:()=>dN});function dN(t){return{commands:["check-ignore",...t],format:"utf-8",parser:Yk}}var hN=W({"src/lib/tasks/check-ignore.ts"(){"use strict";fN()}}),Kk={};ft(Kk,{cloneMirrorTask:()=>mN,cloneTask:()=>Zk});function pN(t){return/^--upload-pack(=|$)/.test(t)}function Zk(t,e,r){let n=["clone",...r];return Vt(t)&&n.push(t),Vt(e)&&n.push(e),n.find(pN)?yr("git.fetch: potential exploit argument blocked."):rr(n)}function mN(t,e,r){return Me(r,"--mirror"),Zk(t,e,r)}var gN=W({"src/lib/tasks/clone.ts"(){"use strict";ut(),he()}});function vN(t,e){return wr({raw:t,remote:null,branches:[],tags:[],updated:[],deleted:[]},Jk,[t,e])}var Jk,yN=W({"src/lib/parsers/parse-fetch.ts"(){"use strict";he(),Jk=[new me(/From (.+)$/,(t,[e])=>{t.remote=e}),new me(/\* \[new branch]\s+(\S+)\s*-> (.+)$/,(t,[e,r])=>{t.branches.push({name:e,tracking:r})}),new me(/\* \[new tag]\s+(\S+)\s*-> (.+)$/,(t,[e,r])=>{t.tags.push({name:e,tracking:r})}),new me(/- \[deleted]\s+\S+\s*-> (.+)$/,(t,[e])=>{t.deleted.push({tracking:e})}),new me(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/,(t,[e,r,n,i])=>{t.updated.push({name:n,tracking:i,to:r,from:e})})]}}),Qk={};ft(Qk,{fetchTask:()=>bN});function wN(t){return/^--upload-pack(=|$)/.test(t)}function bN(t,e,r){let n=["fetch",...r];return t&&e&&n.push(t,e),n.find(wN)?yr("git.fetch: potential exploit argument blocked."):{commands:n,format:"utf-8",parser:vN}}var _N=W({"src/lib/tasks/fetch.ts"(){"use strict";yN(),ut()}});function xN(t){return wr({moves:[]},eT,t)}var eT,SN=W({"src/lib/parsers/parse-move.ts"(){"use strict";he(),eT=[new me(/^Renaming (.+) to (.+)$/,(t,[e,r])=>{t.moves.push({from:e,to:r})})]}}),tT={};ft(tT,{moveTask:()=>EN});function EN(t,e){return{commands:["mv","-v",...Vn(t),e],format:"utf-8",parser:xN}}var AN=W({"src/lib/tasks/move.ts"(){"use strict";SN(),he()}}),rT={};ft(rT,{pullTask:()=>kN});function kN(t,e,r){let n=["pull",...r];return t&&e&&n.splice(1,0,t,e),{commands:n,format:"utf-8",parser(i,a){return i0(i,a)},onError(i,a,s,o){let l=Ij(hc(i.stdOut),hc(i.stdErr));if(l)return o(new mc(l));o(a)}}}var TN=W({"src/lib/tasks/pull.ts"(){"use strict";ko(),kk(),he()}});function CN(t){let e={};return nT(t,([r])=>e[r]={name:r}),Object.values(e)}function PN(t){let e={};return nT(t,([r,n,i])=>{e.hasOwnProperty(r)||(e[r]={name:r,refs:{fetch:"",push:""}}),i&&n&&(e[r].refs[i.replace(/[^a-z]/g,"")]=n)}),Object.values(e)}function nT(t,e){Bg(t,r=>e(r.split(/\s+/)))}var RN=W({"src/lib/responses/GetRemoteSummary.ts"(){"use strict";he()}}),iT={};ft(iT,{addRemoteTask:()=>MN,getRemotesTask:()=>ON,listRemotesTask:()=>IN,remoteTask:()=>$N,removeRemoteTask:()=>FN});function MN(t,e,r){return rr(["remote","add",...r,t,e])}function ON(t){let e=["remote"];return t&&e.push("-v"),{commands:e,format:"utf-8",parser:t?PN:CN}}function IN(t){let e=[...t];return e[0]!=="ls-remote"&&e.unshift("ls-remote"),rr(e)}function $N(t){let e=[...t];return e[0]!=="remote"&&e.unshift("remote"),rr(e)}function FN(t){return rr(["remote","remove",t])}var DN=W({"src/lib/tasks/remote.ts"(){"use strict";RN(),ut()}}),aT={};ft(aT,{stashListTask:()=>LN});function LN(t={},e){let r=gk(t),n=["stash","list",...r.commands,...e],i=dk(r.splitter,r.fields,Jg(n));return ld(n)||{commands:n,format:"utf-8",parser:i}}var jN=W({"src/lib/tasks/stash-list.ts"(){"use strict";wc(),pk(),n0(),vk()}}),sT={};ft(sT,{addSubModuleTask:()=>NN,initSubModuleTask:()=>BN,subModuleTask:()=>ud,updateSubModuleTask:()=>HN});function NN(t,e){return ud(["add",t,e])}function BN(t){return ud(["init",...t])}function ud(t){let e=[...t];return e[0]!=="submodule"&&e.unshift("submodule"),rr(e)}function HN(t){return ud(["update",...t])}var UN=W({"src/lib/tasks/sub-module.ts"(){"use strict";ut()}});function GN(t,e){let r=isNaN(t),n=isNaN(e);return r!==n?r?1:-1:r?oT(t,e):0}function oT(t,e){return t===e?0:t>e?1:-1}function zN(t){return t.trim()}function Vf(t){return typeof t=="string"&&parseInt(t.replace(/^\D+/g,""),10)||0}var nA,lT,VN=W({"src/lib/responses/TagList.ts"(){"use strict";nA=class{constructor(t,e){this.all=t,this.latest=e}},lT=function(t,e=!1){let r=t.split(` +`).map(zN).filter(Boolean);e||r.sort(function(i,a){let s=i.split("."),o=a.split(".");if(s.length===1||o.length===1)return GN(Vf(s[0]),Vf(o[0]));for(let l=0,c=Math.max(s.length,o.length);li.indexOf(".")>=0);return new nA(r,n)}}}),cT={};ft(cT,{addAnnotatedTagTask:()=>YN,addTagTask:()=>qN,tagListTask:()=>WN});function WN(t=[]){let e=t.some(r=>/^--sort=/.test(r));return{format:"utf-8",commands:["tag","-l",...t],parser(r){return lT(r,e)}}}function qN(t){return{format:"utf-8",commands:["tag",t],parser(){return{name:t}}}}function YN(t,e){return{format:"utf-8",commands:["tag","-a","-m",e,t],parser(){return{name:t}}}}var XN=W({"src/lib/tasks/tag.ts"(){"use strict";VN()}}),KN=hL({"src/git.js"(t,e){"use strict";var{GitExecutor:r}=(JL(),it(rk)),{SimpleGitApi:n}=(Kj(),it(Dk)),{Scheduler:i}=(Zj(),it(Lk)),{configurationErrorTask:a}=(ut(),it(Mg)),{asArray:s,filterArray:o,filterPrimitives:l,filterString:c,filterStringOrStringArray:u,filterType:f,getTrailingOptions:d,trailingFunctionArgument:h,trailingOptionsArgument:p}=(he(),it(AA)),{applyPatchTask:g}=(Qj(),it(Bk)),{branchTask:v,branchLocalTask:y,deleteBranchesTask:b,deleteBranchTask:E}=(uN(),it(Wk)),{checkIgnoreTask:S}=(hN(),it(Xk)),{checkIsRepoTask:A}=(PA(),it(kA)),{cloneTask:k,cloneMirrorTask:w}=(gN(),it(Kk)),{cleanWithOptionsTask:x,isCleanOptionsArray:_}=(BA(),it(jA)),{diffSummaryTask:T}=(n0(),it(mk)),{fetchTask:C}=(_N(),it(Qk)),{moveTask:I}=(AN(),it(tT)),{pullTask:L}=(TN(),it(rT)),{pushTagsTask:F}=(Rk(),it(Pk)),{addRemoteTask:J,getRemotesTask:de,listRemotesTask:le,remoteTask:ce,removeRemoteTask:Te}=(DN(),it(iT)),{getResetMode:ne,resetTask:N}=(JA(),it(XA)),{stashListTask:q}=(jN(),it(aT)),{addSubModuleTask:B,initSubModuleTask:Fe,subModuleTask:lr,updateSubModuleTask:Ut}=(UN(),it(sT)),{addAnnotatedTagTask:X,addTagTask:Oe,tagListTask:De}=(XN(),it(cT)),{straightThroughBufferTask:Pt,straightThroughStringTask:Le}=(ut(),it(Mg));function U(j,Z){this._plugins=Z,this._executor=new r(j.baseDir,new i(j.maxConcurrentProcesses),Z),this._trimmed=j.trimmed}(U.prototype=Object.create(n.prototype)).constructor=U,U.prototype.customBinary=function(j){return this._plugins.reconfigure("binary",j),this},U.prototype.env=function(j,Z){return arguments.length===1&&typeof j=="object"?this._executor.env=j:(this._executor.env=this._executor.env||{})[j]=Z,this},U.prototype.stashList=function(j){return this._runTask(q(p(arguments)||{},o(j)&&j||[]),h(arguments))};function Je(j,Z,Se,qe){return typeof Se!="string"?a(`git.${j}() requires a string 'repoPath'`):Z(Se,f(qe,c),d(arguments))}U.prototype.clone=function(){return this._runTask(Je("clone",k,...arguments),h(arguments))},U.prototype.mirror=function(){return this._runTask(Je("mirror",w,...arguments),h(arguments))},U.prototype.mv=function(j,Z){return this._runTask(I(j,Z),h(arguments))},U.prototype.checkoutLatestTag=function(j){var Z=this;return this.pull(function(){Z.tags(function(Se,qe){Z.checkout(qe.latest,j)})})},U.prototype.pull=function(j,Z,Se,qe){return this._runTask(L(f(j,c),f(Z,c),d(arguments)),h(arguments))},U.prototype.fetch=function(j,Z){return this._runTask(C(f(j,c),f(Z,c),d(arguments)),h(arguments))},U.prototype.silent=function(j){return console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3"),this},U.prototype.tags=function(j,Z){return this._runTask(De(d(arguments)),h(arguments))},U.prototype.rebase=function(){return this._runTask(Le(["rebase",...d(arguments)]),h(arguments))},U.prototype.reset=function(j){return this._runTask(N(ne(j),d(arguments)),h(arguments))},U.prototype.revert=function(j){let Z=h(arguments);return typeof j!="string"?this._runTask(a("Commit must be a string"),Z):this._runTask(Le(["revert",...d(arguments,0,!0),j]),Z)},U.prototype.addTag=function(j){let Z=typeof j=="string"?Oe(j):a("Git.addTag requires a tag name");return this._runTask(Z,h(arguments))},U.prototype.addAnnotatedTag=function(j,Z){return this._runTask(X(j,Z),h(arguments))},U.prototype.deleteLocalBranch=function(j,Z,Se){return this._runTask(E(j,typeof Z=="boolean"?Z:!1),h(arguments))},U.prototype.deleteLocalBranches=function(j,Z,Se){return this._runTask(b(j,typeof Z=="boolean"?Z:!1),h(arguments))},U.prototype.branch=function(j,Z){return this._runTask(v(d(arguments)),h(arguments))},U.prototype.branchLocal=function(j){return this._runTask(y(),h(arguments))},U.prototype.raw=function(j){let Z=!Array.isArray(j),Se=[].slice.call(Z?arguments:j,0);for(let Rt=0;Rtt.removeEventListener("abort",a))}}]:void 0}function QN(t){return typeof t=="string"&&t.trim().toLowerCase()==="-c"}function eB(t,e){if(QN(t)&&/^\s*protocol(.[a-z]+)?.allow/.test(e))throw new _i(void 0,"unsafe","Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol")}function tB(t,e){if(/^\s*--(upload|receive)-pack/.test(t))throw new _i(void 0,"unsafe","Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack");if(e==="clone"&&/^\s*-u\b/.test(t))throw new _i(void 0,"unsafe","Use of clone with option -u is not permitted without enabling allowUnsafePack");if(e==="push"&&/^\s*--exec\b/.test(t))throw new _i(void 0,"unsafe","Use of push with option --exec is not permitted without enabling allowUnsafePack")}function rB({allowUnsafeProtocolOverride:t=!1,allowUnsafePack:e=!1}={}){return{type:"spawn.args",action(r,n){return r.forEach((i,a)=>{let s=aAg(i))).then(s.done)}return{type:"spawn.after",async action(i,{spawned:a,close:s}){var u,f;let o=r(),l=!0,c=()=>void(l=!1);(u=a.stdout)==null||u.on("data",c),(f=a.stderr)==null||f.on("data",c),a.on("error",c),a.on("close",d=>o.close(d)),a.on("exit",d=>o.exit(d));try{await o.result,l&&await Ag(50),s(o.exitCode)}catch(d){s(o.exitCode,d)}}}}he();var aB="Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings",aA="Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option";function sB(t){return!t||!/^([a-z]:)?([a-z0-9/.\\_-]+)$/i.test(t)}function sA(t,e){if(t.length<1||t.length>2)throw new _i(void 0,"binary",aB);if(t.some(sB))if(e)console.warn(aA);else throw new _i(void 0,"binary",aA);let[n,i]=t;return{binary:n,prefix:i}}function oB(t,e=["git"],r=!1){let n=sA(Vn(e),r);t.on("binary",i=>{n=sA(Vn(i),r)}),t.append("spawn.binary",()=>n.binary),t.append("spawn.args",i=>n.prefix?[n.prefix,...i]:i)}la();function lB(t){return!!(t.exitCode&&t.stdErr.length)}function cB(t){return Buffer.concat([...t.stdOut,...t.stdErr])}function uB(t=!1,e=lB,r=cB){return(n,i)=>!t&&n||!e(i)?n:r(i)}function oA(t){return{type:"task.error",action(e,r){let n=t(e.error,{stdErr:r.stdErr,stdOut:r.stdOut,exitCode:r.exitCode});return Buffer.isBuffer(n)?{error:new Ir(void 0,n.toString("utf-8"))}:{error:n}}}}he();var fB=class{constructor(){this.plugins=new Set,this.events=new uT.EventEmitter}on(t,e){this.events.on(t,e)}reconfigure(t,e){this.events.emit(t,e)}append(t,e){let r=Me(this.plugins,{type:t,action:e});return()=>this.plugins.delete(r)}add(t){let e=[];return Vn(t).forEach(r=>r&&this.plugins.add(Me(e,r))),()=>{e.forEach(r=>this.plugins.delete(r))}}exec(t,e,r){let n=e,i=Object.freeze(Object.create(r));for(let a of this.plugins)a.type===t&&(n=a.action(n,i));return n}};he();function dB(t){let e="--progress",r=["checkout","clone","fetch","pull","push"];return[{type:"spawn.args",action(a,s){return r.includes(s.method)?mA(a,e):a}},{type:"spawn.after",action(a,s){var o;s.commands.includes(e)&&((o=s.spawned.stderr)==null||o.on("data",l=>{let c=/^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(l.toString("utf8"));c&&t({method:s.method,stage:hB(c[1]),progress:He(c[2]),processed:He(c[3]),total:He(c[4])})}))}}]}function hB(t){return String(t.toLowerCase().split(" ",1))||"unknown"}he();function pB(t){let e=yA(t,["uid","gid"]);return{type:"spawn.options",action(r){return{...e,...r}}}}function mB({block:t,stdErr:e=!0,stdOut:r=!0}){if(t>0)return{type:"spawn.after",action(n,i){var c,u;let a;function s(){a&&clearTimeout(a),a=setTimeout(l,t)}function o(){var f,d;(f=i.spawned.stdout)==null||f.off("data",s),(d=i.spawned.stderr)==null||d.off("data",s),i.spawned.off("exit",o),i.spawned.off("close",o),a&&clearTimeout(a)}function l(){o(),i.kill(new _i(void 0,"timeout","block timeout reached"))}r&&((c=i.spawned.stdout)==null||c.on("data",s)),e&&((u=i.spawned.stderr)==null||u.on("data",s)),i.spawned.on("exit",o),i.spawned.on("close",o),s()}}}pc();function gB(){return{type:"spawn.args",action(t){let e=[],r;function n(i){(r=r||[]).push(...i)}for(let i=0;iKf(s)&&ME(s)||s));break}e.push(a)}return r?[...e,"--",...r.map(String)]:e}}}he();var vB=KN();function yB(t,e){var i;let r=new fB,n=SA(t&&(typeof t=="string"?{baseDir:t}:t)||{},e);if(!Hg(n.baseDir))throw new ZN(n,"Cannot use simple-git on a directory that does not exist");return Array.isArray(n.config)&&r.add(nB(n.config)),r.add(rB(n.unsafe)),r.add(gB()),r.add(iB(n.completion)),n.abort&&r.add(JN(n.abort)),n.progress&&r.add(dB(n.progress)),n.timeout&&r.add(mB(n.timeout)),n.spawnOptions&&r.add(pB(n.spawnOptions)),r.add(oA(uB(!0))),n.errors&&r.add(oA(n.errors)),oB(r,n.binary,(i=n.unsafe)==null?void 0:i.allowUnsafeCustomBinary),new vB(n,r)}ko();var fT=yB;m();var dT=require("obsidian"),fd="YYYY-MM-DD",o0=`${fd} HH:mm`,l0=`${fd} HH:mm:ss`,dd=40,To="conflict-files-obsidian-git.md",Xe={commitMessage:"vault backup: {{date}}",autoCommitMessage:"vault backup: {{date}}",commitMessageScript:"",commitDateFormat:l0,autoSaveInterval:0,autoPushInterval:0,autoPullInterval:0,autoPullOnBoot:!1,autoCommitOnlyStaged:!1,disablePush:!1,pullBeforePush:!0,disablePopups:!1,showErrorNotices:!0,disablePopupsForNoChanges:!1,listChangedFilesInMessageBody:!1,showStatusBar:!0,updateSubmodules:!1,syncMethod:"merge",customMessageOnAutoBackup:!1,autoBackupAfterFileChange:!1,treeStructure:!1,refreshSourceControl:dT.Platform.isDesktopApp,basePath:"",differentIntervalCommitAndPush:!1,changedFilesInStatusBar:!1,showedMobileNotice:!1,refreshSourceControlTimer:7e3,showBranchStatusBar:!0,setLastSaveToLastCommit:!1,submoduleRecurseCheckout:!1,gitDir:"",showFileMenu:!0,authorInHistoryView:"hide",dateInHistoryView:!1,diffStyle:"split",lineAuthor:{show:!1,followMovement:"inactive",authorDisplay:"initials",showCommitHash:!1,dateTimeFormatOptions:"date",dateTimeFormatCustomString:o0,dateTimeTimezone:"viewer-local",coloringMaxAge:"1y",colorNew:{r:255,g:150,b:150},colorOld:{r:120,g:160,b:255},textColorCss:"var(--text-muted)",ignoreWhitespace:!1,gutterSpacingFallbackLength:5}},Ft={type:"git-view",name:"Source Control",icon:"git-pull-request"},Zr={type:"git-history-view",name:"History",icon:"history"},ca={type:"split-diff-view",name:"Diff view",icon:"diff"},ua={type:"diff-view",name:"Diff View",icon:"git-pull-request"},hd="C:\\Program Files\\Git\\cmd\\git.exe",pd="git_credentials_input",es="obsidian_askpass.sh",hT=`#!/bin/sh + +PROMPT="$1" +TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT" + +cleanup() { + rm -f "$TEMP_FILE" "$TEMP_FILE.response" +} +trap cleanup EXIT + +echo "$PROMPT" > "$TEMP_FILE" + +while [ ! -e "$TEMP_FILE.response" ]; do + if [ ! -e "$TEMP_FILE" ]; then + echo "Trigger file got removed: Abort" >&2 + exit 1 + fi + sleep 0.1 +done + +RESPONSE=$(cat "$TEMP_FILE.response") + +echo "$RESPONSE" +`,pT=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"];m();var mT=require("obsidian"),wB={options:[],placeholder:"",allowEmpty:!1,onlySelection:!1,initialValue:void 0,obscure:!1},ze=class extends mT.SuggestModal{constructor(e,r){if(super(e.app),this.config={...wB,...r},this.setPlaceholder(this.config.placeholder),this.config.obscure){this.inputEl.type="password";let n=this.containerEl.querySelector(".prompt-input-container");n.addClass("git-obscure-prompt"),n.setAttr("git-is-obscured","true");let i=n==null?void 0:n.createDiv({cls:"search-input-clear-button"});i.style.marginRight="32px",i.id="git-show-password",i.addEventListener("click",()=>{n.getAttr("git-is-obscured")==="true"?(this.inputEl.type="text",n.setAttr("git-is-obscured","false")):(this.inputEl.type="password",n.setAttr("git-is-obscured","true"))})}}openAndGetResult(){return new Promise(e=>{this.resolve=e,this.open(),this.config.initialValue!=null&&(this.inputEl.value=this.config.initialValue,this.inputEl.dispatchEvent(new Event("input")))})}onClose(){new Promise(e=>setTimeout(e,10)).then(()=>{this.resolve&&this.resolve(void 0)})}getSuggestions(e){return this.config.onlySelection?this.config.options:this.config.allowEmpty?[e.length>0?e:" ",...this.config.options]:[e.length>0?e:"...",...this.config.options]}renderSuggestion(e,r){this.config.obscure?r.hide():r.setText(e)}onChooseSuggestion(e,r){if(this.resolve){let n;this.config.allowEmpty&&e===" "?n="":e==="..."?n=void 0:n=e,this.resolve(n)}}};m();function gT(t,e){let r=Object.assign({},t.lineAuthor,e.lineAuthor);return Object.assign({},t,e,{lineAuthor:r})}var Co=class extends Error{constructor(r){super("No network connection available");this.originalError=r}};m();var e3=Ot($T()),t3=require("child_process"),r3=Ot(QR()),Ai=require("obsidian");function Ud(t){throw new Error(`Unexpected object: ${t}`)}function Ic(t,e,r){return t===1?`${t} ${e}`:`${t} ${r!=null?r:e+"s"}`}var pv=(t,e)=>t==="."||e==null||e.length===0||e==="."?!0:e.length>=t.length?e.startsWith(t):t.startsWith(e);function vn(t,e){let r;if(e){if(e.button===0||e.button===1){let n=Ai.Keymap.isModEvent(e);r=t.workspace.getLeaf(n)}}else r=t.workspace.getLeaf(!1);return r}function Xn(t,e,r,n,i){if(e.button==2){let a=t.vault.getAbstractFileByPath(r);if(a!=null){let s=new Ai.Menu;t.workspace.trigger("file-menu",s,a,i,n),s.showAtPosition({x:e.pageX,y:e.pageY})}else{let s=new Ai.Menu;t.workspace.trigger("obsidian-git:menu",s,r,i,n),s.showAtPosition({x:e.pageX,y:e.pageY})}}}function pa(t){throw new Error("Impossible branch: "+t)}function mv(t){return`rgb(${t.r},${t.g},${t.b})`}function n3(t){var a;let e=(a=e3.fromString(t))==null?void 0:a.toRgbaArray();if(e===void 0)return;let[r,n,i]=e;return{r,g:n,b:i}}function i3(t){return t.diff(Ai.moment.unix(0),"seconds")}function a3(t){if(t.length!==0)return t.slice().sort()[Math.floor(t.length/2)]}function s3(t,e){return(0,r3.default)(t,e,{strict:!0})}function $c(t,e){return new Proxy(t,{get(r,n){return n==="length"?Math.min(e,r.length):r[n]}})}function o3(t,e,r){return t.length<=e?new Array(e-t.length).fill(r).join("")+t:t.substring(t.length-e)}function l3(t,e){if(e<=0)return t;let r=new Array(e).fill(" ").join(""),n=t.substring(e,t.length);return r+n}function gv(t,e,r){return t<=e&&e<=r}function ki(t){let[e,...r]=t.split("/");return[e,r.length===0?void 0:r.join("/")]}function Kn(t){return t.endsWith("/")?t:t.split("/").last().replace(/\.md$/,"")}function c3(t){return t===1?"1 minute":`${t} minutes`}function LH(t){let e=t.lastIndexOf(".");return t.substring(e+1)}function Io(t){if(t.endsWith(".md"))return!1;let e=LH(t);return pT.includes(e)}function vv(t){return(t.startsWith("https://github.com/")||t.startsWith("https://gitlab.com/"))&&(t.endsWith(".git")||(t=t+".git")),t}function $o(t,e){let r=e.vault.getAbstractFileByPath(t);if(!(r instanceof Ai.TFile))return!1;try{return!!e.viewRegistry.getTypeByExtension(r.extension)}catch(n){return!0}}function u3({isFolder:t,gitRelativePath:e}){let r="/";return r+=e,t&&(r+="/"),r.replace(/([\\!#*?[\]])/g,String.raw`\$1`).replace(/\s(?=\s*$)/g,String.raw`\ `)}function Fc(t,e,r={}){return new Promise((n,i)=>{let a=(0,t3.spawn)(t,e,r),s="",o="";a.stdout.on("data",l=>{s+=l.toString()}),a.stderr.on("data",l=>{o+=l.toString()}),a.on("error",l=>{n({error:new Error(l.message),stdout:s,stderr:s,code:1})}),a.on("close",l=>{n({stdout:s,stderr:o,code:l!=null?l:1,error:void 0})})})}m();var f3=require("obsidian"),Fo=class{constructor(e){this.plugin=e,this.app=e.app}getRelativeVaultPath(e){return this.plugin.settings.basePath?this.plugin.settings.basePath+"/"+e:e}getRelativeRepoPath(e,r=!0){return r&&this.plugin.settings.basePath.length>0?e.substring(this.plugin.settings.basePath.length+1):e}unload(){}_getTreeStructure(e,r=0){let n=[];for(e=[...e];e.length>0;){let i=e.first(),a=i.path.substring(r);if(a.contains("/")){let s=a.substring(0,a.indexOf("/")),o=e.filter(c=>c.path.substring(r).startsWith(s+"/"));o.forEach(c=>e.remove(c));let l=i.path.substring(0,a.indexOf("/")+r);n.push({title:s,path:l,vaultPath:this.getRelativeVaultPath(l),children:this._getTreeStructure(o,(r>0?r+s.length:s.length)+1)})}else n.push({title:a,data:i,path:i.path,vaultPath:this.getRelativeVaultPath(i.path)}),e.remove(i)}return n}simplify(e){var r,n,i,a;for(let s of e){for(;;){let o=((r=s.children)==null?void 0:r.length)==1,l=((i=(n=s.children)==null?void 0:n.first())==null?void 0:i.data)==null;if(!(s.children!=null&&o&&l))break;let c=s.children.first();s.title+="/"+c.title,s.data=c.data,s.path=c.path,s.vaultPath=c.vaultPath,s.children=c.children}s.children!=null&&this.simplify(s.children),(a=s.children)==null||a.sort((o,l)=>{let c=(l.data==null?1:0)-(o.data==null?1:0);return c!=0?c:o.title.localeCompare(l.title)})}return e.sort((s,o)=>{let l=(o.data==null?1:0)-(s.data==null?1:0);return l!=0?l:s.title.localeCompare(o.title)})}getTreeStructure(e){let r=this._getTreeStructure(e);return this.simplify(r)}async formatCommitMessage(e){let r;if(e.includes("{{numFiles}}")){r=await this.status();let n=r.staged.length;e=e.replace("{{numFiles}}",String(n))}if(e.includes("{{hostname}}")){let n=this.plugin.localStorage.getHostname()||"";e=e.replace("{{hostname}}",n)}if(e.includes("{{files}}")){r=r!=null?r:await this.status();let n={},i="";if(r.staged.length<100){r.staged.forEach(s=>{s.index in n?n[s.index].push(s.path):n[s.index]=[s.path]});let a=[];for(let[s,o]of Object.entries(n))a.push(s+" "+o.join(" "));i=a.join(", ")}else i="Too many files to list";e=e.replace("{{files}}",i)}if(e=e.replace("{{date}}",(0,f3.moment)().format(this.plugin.settings.commitDateFormat)),this.plugin.settings.listChangedFilesInMessageBody){let n=r!=null?r:await this.status(),i="";n.staged.length<100?i=n.staged.map(a=>a.path).join(` +`):i="Too many files to list",e=e+` + +Affected files: +`+i}return e}};var Ce=class extends Fo{constructor(r){super(r);this.useDefaultWindowsGitPath=!1}async setGitInstance(r=!1){var n;if(await this.isGitInstalled()){let i=this.app.vault.adapter,a=i.getBasePath(),s=a;this.plugin.settings.basePath&&(await i.exists((0,Ti.normalizePath)(this.plugin.settings.basePath))?s=Ve.join(a,this.plugin.settings.basePath):r||new Ti.Notice("ObsidianGit: Base path does not exist")),this.absoluteRepoPath=s,this.git=fT({baseDir:s,binary:this.plugin.localStorage.getGitPath()||(this.useDefaultWindowsGitPath?hd:void 0),config:["core.quotepath=off"],unsafe:{allowUnsafeCustomBinary:!0}});let o=this.plugin.localStorage.getPATHPaths(),l=this.plugin.localStorage.getEnvVars(),c=this.plugin.settings.gitDir;if(o.length>0){let v=process.env.PATH+":"+o.join(":");process.env.PATH=v}c&&(process.env.GIT_DIR=c);for(let v of l){let[y,b]=v.split("=");process.env[y]=b}let u="simple-git",f=",",h=((n=localStorage.debug)!=null?n:"").split(f);if(!h.includes(u)&&!h.includes(`-${u}`)&&(h.push(u),p3.default.enable(h.join(f))),await this.git.checkIsRepo()){let v=await this.git.revparse("--show-cdup"),y=(0,Dc.resolve)(s+Dc.sep+v);this.absoluteRepoPath=y,await this.git.cwd(y)}let p=Ve.join(a,this.app.vault.configDir,"plugins","obsidian-git"),g=Ve.join(p,es);process.env.SSH_ASKPASS==null&&(process.env.SSH_ASKPASS=g),process.env.OBSIDIAN_GIT_CREDENTIALS_INPUT=Ve.join(p,pd),process.env.SSH_ASKPASS==g&&this.askpass().catch(v=>this.plugin.displayError(v))}}getRelativeVaultPath(r){let i=this.app.vault.adapter.getBasePath(),a=Ve.join(this.absoluteRepoPath,r),s=Ve.relative(i,a);return Ti.Platform.isWin&&(s=s.replace(/\\/g,"/")),s}getRelativeRepoPath(r,n=!0){if(n){let a=this.plugin.app.vault.adapter.getBasePath(),s=this.absoluteRepoPath,o=Ve.join(a,r),l=Ve.relative(s,o);return Ti.Platform.isWin&&(l=l.replace(/\\/g,"/")),l}return r}async askpass(){let r=this.app.vault.adapter,n=r.getBasePath(),i=Ve.join(n,this.app.vault.configDir,"plugins","obsidian-git"),a=this.app.vault.configDir+"/plugins/obsidian-git/";await this.addAskPassScriptToExclude(),await $r.writeFile(Ve.join(i,es),hT),await $r.chmod(Ve.join(i,es),493),this.watchAbortController=new AbortController;let{signal:s}=this.watchAbortController;try{let o=$r.watch(i,{signal:s});for await(let l of o){if(l.filename!=pd)continue;let c=a+pd;if(!await r.exists(c))continue;let u=await r.read(c),f;u.length>60&&(f=new Ti.Notice(u,999999));let d=await new ze(this.plugin,{allowEmpty:!0,obscure:!0,placeholder:u.length>60?"Enter a response to the message.":u}).openAndGetResult();f==null||f.hide(),await r.exists(c)&&await r.write(`${c}.response`,d!=null?d:"")}}catch(o){this.plugin.displayError(o),await $r.rm(Ve.join(i,es),{force:!0}),await $r.rm(Ve.join(i,`${es}.response`),{force:!0}),await new Promise(l=>setTimeout(l,5e3)),this.plugin.log("Retry watch for ask pass"),await this.askpass()}}async addAskPassScriptToExclude(){try{let r=await this.git.revparse(["--path-format=absolute","--git-path","info/exclude"]),n=Ve.join(this.app.vault.configDir,"plugins","obsidian-git",es),i=this.getRelativeRepoPath(n,!0);(await $r.readFile(r,"utf-8")).split(` +`).some(l=>l.contains(i))||await $r.appendFile(r,i+` +`)}catch(r){console.error("Error while adding askpass script to exclude file:",r)}}unload(){var r;(r=this.watchAbortController)==null||r.abort()}async status(r){let n=r==null?void 0:r.path;this.plugin.setPluginState({gitAction:1});let i=await this.git.status(n!=null?["--",n]:[]);this.plugin.setPluginState({gitAction:0});let a=i.files.map(s=>{let o=this.formatPath(s);return{path:o.path,from:o.from,index:s.index==="?"?"U":s.index,workingDir:s.working_dir==="?"?"U":s.working_dir,vaultPath:this.getRelativeVaultPath(o.path)}});return{all:a,changed:a.filter(s=>s.workingDir!==" "),staged:a.filter(s=>s.index!==" "&&s.index!="U"),conflicted:i.conflicted.map(s=>this.formatPath({path:s}).path)}}async submoduleAwareHeadRevisonInContainingDirectory(r){let n=this.getRelativeRepoPath(r),a=["-C",Ve.dirname(n),"rev-parse","HEAD"],s=this.git.raw(a);return s.catch(o=>console.warn("obsidian-git: rev-parse error:",o)),s}async getSubmodulePaths(){return new Promise(r=>{this.git.outputHandler((n,i,a,s)=>{if(!(s.contains("submodule")&&s.contains("foreach")))return;let o="",l=this.app.vault.adapter.getBasePath()+(this.plugin.settings.basePath?"/"+this.plugin.settings.basePath:"");i.on("data",c=>{o+=c.toString("utf8")}),i.on("end",()=>{let u=o.split(` +`).map(f=>{let d=f.match(/'([^']*)'/);if(d!=null)return l+"/"+d[1]+Dc.sep}).filter(f=>!!f);u.reverse(),r(u)})}),this.git.subModule(["foreach","--recursive",""]).then(()=>{this.git.outputHandler(()=>{})},n=>this.plugin.displayError(n))})}formatPath(r){function n(i){if(i!=null)return i.startsWith('"')&&i.endsWith('"')?i.substring(1,i.length-1):i}return r.from!=null?{from:n(r.from),path:n(r.path)}:{path:n(r.path)}}async blame(r,n,i){if(r=this.getRelativeRepoPath(r),!await this.isTracked(r))return"untracked";let a=await this.getSubmoduleOfFile(r),s=a?["-C",a.submodule]:[],o=a?a.relativeFilepath:r;s.push("blame","--porcelain"),i&&s.push("-w");let l=`-C${dd}`;switch(n){case"inactive":break;case"same-commit":s.push("-C",l);break;case"all-commits":s.push("-C","-C",l);break;default:pa(n)}s.push("--",o);let c=await this.git.raw(s);return jH(c)}async isTracked(r){let n=await this.getSubmoduleOfFile(r),i=n?["-C",n.submodule]:[],a=n?n.relativeFilepath:r;return i.push("ls-files","--",a),this.git.raw(i).then(s=>s.trim()!=="")}async commitAll({message:r}){if(this.plugin.settings.updateSubmodules){this.plugin.setPluginState({gitAction:4});let i=await this.getSubmodulePaths();for(let a of i)await this.git.cwd({path:a,root:!1}).add("-A"),await this.git.cwd({path:a,root:!1}).commit(await this.formatCommitMessage(r))}this.plugin.setPluginState({gitAction:3}),await this.git.add("-A"),this.plugin.setPluginState({gitAction:4});let n=await this.git.commit(await this.formatCommitMessage(r));return this.app.workspace.trigger("obsidian-git:head-change"),n.summary.changes}async commit({message:r,amend:n}){this.plugin.setPluginState({gitAction:4});let i=(await this.git.commit(await this.formatCommitMessage(r),n?["--amend"]:[])).summary.changes;return this.app.workspace.trigger("obsidian-git:head-change"),this.plugin.setPluginState({gitAction:0}),i}async stage(r,n){this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,n),await this.git.add(["--",r]),this.plugin.setPluginState({gitAction:0})}async stageAll({dir:r}){this.plugin.setPluginState({gitAction:3}),await this.git.add(r!=null?r:"-A"),this.plugin.setPluginState({gitAction:0})}async unstageAll({dir:r}){this.plugin.setPluginState({gitAction:3}),await this.git.reset(r!=null?["--",r]:[]),this.plugin.setPluginState({gitAction:0})}async unstage(r,n){this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,n),await this.git.reset(["--",r]),this.plugin.setPluginState({gitAction:0})}async discard(r){this.plugin.setPluginState({gitAction:3}),await this.isTracked(r)&&await this.git.checkout(["--",r]),this.plugin.setPluginState({gitAction:0})}async getUntrackedPaths(r){let n=r==null?void 0:r.path;this.plugin.setPluginState({gitAction:1});let i=["ls-files","--others","--exclude-standard","--directory"];n!=null&&i.push("--",n);let a=await this.git.raw(i);return this.plugin.setPluginState({gitAction:0}),a.split(/\r\n|\r|\n/).filter(s=>s.length>0)}async hashObject(r){r=this.getRelativeRepoPath(r);let n=await this.getSubmoduleOfFile(r),i=n?["-C",n.submodule]:[],a=n?n.relativeFilepath:r;return i.push("hash-object","--",a),this.git.raw(i)}async discardAll({dir:r}){return this.discard(r!=null?r:".")}async pull(){this.plugin.setPluginState({gitAction:2});try{this.plugin.settings.updateSubmodules&&await this.git.subModule(["update","--remote","--merge","--recursive"]);let r=await this.branchInfo(),n=await this.git.revparse([r.current]);if(!r.tracking&&this.plugin.settings.updateSubmodules){this.plugin.log("No tracking branch found. Ignoring pull of main repo and updating submodules only.");return}await this.git.fetch();let i=await this.git.revparse([r.tracking]);if(n!==i){if(this.plugin.settings.syncMethod==="merge"||this.plugin.settings.syncMethod==="rebase")try{switch(this.plugin.settings.syncMethod){case"merge":await this.git.merge([r.tracking]);break;case"rebase":await this.git.rebase([r.tracking])}}catch(o){this.plugin.displayError(`Pull failed (${this.plugin.settings.syncMethod}): ${"message"in o?o.message:o}`);return}else if(this.plugin.settings.syncMethod==="reset")try{await this.git.raw(["update-ref",`refs/heads/${r.current}`,i]),await this.unstageAll({})}catch(o){this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${"message"in o?o.message:o}`)}this.app.workspace.trigger("obsidian-git:head-change");let a=await this.git.revparse([r.current]);return(await this.git.diff([`${n}..${a}`,"--name-only"])).split(/\r\n|\r|\n/).filter(o=>o.length>0).map(o=>({path:o,workingDir:"P",vaultPath:this.getRelativeVaultPath(o)}))}else return[]}catch(r){this.convertErrors(r)}}async push(){this.plugin.setPluginState({gitAction:5});try{if(this.plugin.settings.updateSubmodules){let s=await this.git.env({...process.env,OBSIDIAN_GIT:1}).subModule(["foreach","--recursive",`tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`]);console.log(s)}let r=await this.git.status(),n=r.tracking,i=r.current;if(!n&&this.plugin.settings.updateSubmodules){this.plugin.log("No tracking branch found. Ignoring push of main repo and updating submodules only.");return}let a=(await this.git.diffSummary([i,n,"--"])).changed;return await this.git.env({...process.env,OBSIDIAN_GIT:1}).push(),a}catch(r){this.convertErrors(r)}}async getUnpushedCommits(){let r=await this.git.status(),n=r.tracking,i=r.current;if(n==null||i==null)return 0;let[a,s]=ki(n);return(await this.getRemoteBranches(a)).includes(n)?(await this.git.diffSummary([i,n,"--"])).changed:(this.plugin.log(`Tracking branch ${n} does not exist on remote ${a}.`),0)}async canPush(){if(this.plugin.settings.updateSubmodules===!0)return!0;let r=await this.git.status(),n=r.tracking,i=r.current;return n?(await this.git.diffSummary([i,n,"--"])).changed!==0:!1}async checkRequirements(){return await this.isGitInstalled()?await this.git.checkIsRepo()?"valid":"missing-repo":"missing-git"}async branchInfo(){let r=await this.git.status(),n=await this.git.branch(["--no-color"]);return{current:r.current||void 0,tracking:r.tracking||void 0,branches:n.all}}async getRemoteUrl(r){try{return await this.git.remote(["get-url",r])||void 0}catch(n){if(String(n).contains(r))return;throw n}}async log(r,n=!0,i,a){let s;r&&(s=this.getRelativeRepoPath(r,n));let o={file:s,maxCount:i,"--diff-merges":"first-parent","--name-status":null};return a&&(o[a]=null),(await this.git.log(o)).all.map(c=>{var u,f,d,h;return{...c,author:{name:c.author_name,email:c.author_email},refs:c.refs.split(", ").filter(p=>p.length>0),diff:{...c.diff,files:(f=(u=c.diff)==null?void 0:u.files.map(p=>({...p,status:p.status,path:p.file,hash:c.hash,vaultPath:this.getRelativeVaultPath(p.file),fromPath:p.from,fromVaultPath:p.from!=null?this.getRelativeVaultPath(p.from):void 0,binary:p.binary})))!=null?f:[]},fileName:(h=(d=c.diff)==null?void 0:d.files.first())==null?void 0:h.file}})}async show(r,n,i=!0){let a=this.getRelativeRepoPath(n,i);return this.git.show([r+":"+a])}async checkout(r,n){if(n&&(r=`${n}/${r}`),await this.git.checkout(r),this.plugin.settings.submoduleRecurseCheckout){let i=await this.getSubmodulePaths();for(let a of i){let s=await this.git.cwd({path:a,root:!1}).branch();Object.keys(s.branches).includes(r)&&await this.git.cwd({path:a,root:!1}).checkout(r)}}}async createBranch(r){await this.git.checkout(["-b",r])}async deleteBranch(r,n){await this.git.branch([n?"-D":"-d",r])}async branchIsMerged(r){return!(await this.git.branch(["--no-merged"])).all.contains(r)}async init(){await this.git.init(!1)}async clone(r,n,i){await this.git.clone(r,Ve.join(this.app.vault.adapter.getBasePath(),n),i?["--depth",`${i}`]:[])}async setConfig(r,n){n==null?await this.git.raw(["config","--local","--unset",r]):await this.git.addConfig(r,n)}async getConfig(r){let i=(await this.git.listConfig("local")).all[r];if(typeof i=="string"||i==null)return i;throw new Error("Config value is not a string")}async fetch(r){await this.git.fetch(r!=null?[r]:[])}async setRemote(r,n){(await this.getRemotes()).includes(r)?await this.git.remote(["set-url",r,n]):await this.git.remote(["add",r,n])}async getRemoteBranches(r){let n=await this.git.branch(["-r","--list",`${r}*`]),i=[];for(let a in n.branches)i.push(n.branches[a].name);return i}async getRemotes(){let r=await this.git.remote([]);return r?r.trim().split(` +`):[]}async removeRemote(r){await this.git.removeRemote(r)}async updateUpstreamBranch(r){try{await this.git.branch(["--set-upstream-to",r])}catch(n){try{await this.git.branch(["--set-upstream",r])}catch(i){let[a,s]=ki(r),o=await this.branchInfo();await this.git.push(["--set-upstream",a,`${o.current}:${s}`])}}}updateGitPath(r){return this.setGitInstance()}updateBasePath(r){return this.setGitInstance(!0)}async getDiffString(r,n=!1,i){return n?await this.git.diff(["--cached","--",r]):i?await this.git.show([`${i}`,"--",r]):await this.git.diff(["--",r])}async diff(r,n,i){return await this.git.diff([`${n}..${i}`,"--",r])}async rawCommand(r){let n=r.split(" ");return await this.git.raw(n[0],...n.slice(1))}async getSubmoduleOfFile(r){if(!await this.app.vault.adapter.exists(Ve.dirname(r)))return;let n=await this.git.raw(["-C",Ve.dirname(r),"rev-parse","--show-toplevel"],l=>l&&console.warn("get-submodule-of-file",l==null?void 0:l.message));if(n=n.trim(),(await this.git.raw(["-C",Ve.dirname(r),"rev-parse","--show-superproject-working-tree"],l=>l&&console.warn("get-submodule-of-file",l==null?void 0:l.message))).trim()==="")return;let s=this.app.vault.adapter.getFullPath(Ve.normalize(r)),o=Ve.relative(n,s);return{submodule:n,relativeFilepath:o}}async getLastCommitTime(){let r=await this.git.log({n:1});if(r!=null&&r.latest!=null)return new Date(r.latest.date)}async isGitInstalled(){let r=this.plugin.localStorage.getGitPath(),n=await Fc(r||"git",["--version"],{});if(n.error)if(Ti.Platform.isWin&&!r){this.plugin.log(`Git not found in PATH. Checking standard installation path(${hd}) of Git for Windows.`);let i=await Fc(hd,["--version"]);if(i.error)return console.error(i.error),!1;this.useDefaultWindowsGitPath=!0}else return console.error(n.error),!1;else this.useDefaultWindowsGitPath=!1;return!0}convertErrors(r){if(r instanceof Ir){let n=String(r.message);if(n.contains("Could not resolve host")||n.contains("Unable to resolve host")||n.match(/ssh: connect to host .*? port .*?: Operation timed out/)!=null||n.match(/ssh: connect to host .*? port .*?: Network is unreachable/)!=null||n.match(/ssh: connect to host .*? port .*?: Undefined error: 0/)!=null)throw new Co(n)}throw r}async isFileTrackedByLFS(r){try{return(await this.git.raw(["check-attr","filter",r])).includes("filter: lfs")}catch(n){let i=n instanceof Error?n.message:String(n);return this.plugin.displayError(`Error checking LFS status: ${i}`),!1}}},m3={hash:"000000",isZeroCommit:!0,summary:""};function jH(t){let r=t.replace(`\r +`,` +`).split(` +`),n={commits:new Map,hashPerLine:[void 0],originalFileLineNrPerLine:[void 0],finalFileLineNrPerLine:[void 0],groupSizePerStartingLine:new Map},i=1;for(let a=0;a=4&&r.groupSizePerStartingLine.set(e,parseInt(t[3])),parseInt(t[2])!==e)throw Error(`git-blame output is out of order: ${e} vs ${t[2]}`);return n}function BH(t,e,r){let n=t[0],i=t.slice(1).join(" "),a=e.hashPerLine[r],s=e.commits.get(a)||{hash:a,author:{},committer:{},previous:{}};switch(n){case"summary":s.summary=i;break;case"author":s.author.name=i;break;case"author-mail":s.author.email=h3(i);break;case"author-time":s.author.epochSeconds=parseInt(i);break;case"author-tz":s.author.tz=i;break;case"committer":s.committer.name=i;break;case"committer-mail":s.committer.email=h3(i);break;case"committer-time":s.committer.epochSeconds=parseInt(i);break;case"committer-tz":s.committer.tz=i;break;case"previous":s.previous.commitHash=i;break;case"filename":s.previous.filename=i;break}e.commits.set(a,s)}function HH(t){if(t.summary===void 0)throw Error(`Summary not provided for commit: ${t.hash}`);yv(t.author)&&(t.author=void 0),yv(t.committer)&&(t.committer=void 0),yv(t.previous)&&(t.previous=void 0),t.isZeroCommit=!!t.hash.match(/^0*$/)}function yv(t){return!t||Object.keys(t).length===0}function d3(t){return t.length>0&&t[0].trim()===t[0]}function h3(t){let e=t.startsWith("<")?t.substring(1):t;return e.endsWith(">")?e.substring(0,e.length-1):e}m();var Q3=require("@codemirror/state");m();var O3=require("@codemirror/state"),th=require("obsidian");m();var bv=class{constructor(){this.eventsPerFilepath=new Map;this.startRemoveStalesSubscribersInterval()}ifFilepathDefinedTransformSubscribers(e,r){if(e)return this.ensureInitialized(e),r(this.eventsPerFilepath.get(e))}forEachSubscriber(e){this.eventsPerFilepath.forEach(r=>r.forEach(e))}ensureInitialized(e){this.eventsPerFilepath.get(e)||this.eventsPerFilepath.set(e,new Set)}startRemoveStalesSubscribersInterval(){this.removeStalesSubscribersTimer=window.setInterval(()=>this==null?void 0:this.forEachSubscriber(e=>e==null?void 0:e.removeIfStale()),6e4)}clear(){window.clearInterval(this.removeStalesSubscribersTimer),this.eventsPerFilepath.clear()}},Do=new bv;m();var Jd=require("@codemirror/state"),T3=Ot(_v());m();var z=require("obsidian");m();m();function yn(){}yn.prototype={diff:function(e,r){var n,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=i.callback;typeof i=="function"&&(a=i,i={});var s=this;function o(S){return S=s.postProcess(S,i),a?(setTimeout(function(){a(S)},0),!0):S}e=this.castInput(e,i),r=this.castInput(r,i),e=this.removeEmpty(this.tokenize(e,i)),r=this.removeEmpty(this.tokenize(r,i));var l=r.length,c=e.length,u=1,f=l+c;i.maxEditLength!=null&&(f=Math.min(f,i.maxEditLength));var d=(n=i.timeout)!==null&&n!==void 0?n:1/0,h=Date.now()+d,p=[{oldPos:-1,lastComponent:void 0}],g=this.extractCommon(p[0],r,e,0,i);if(p[0].oldPos+1>=c&&g+1>=l)return o(g3(s,p[0].lastComponent,r,e,s.useLongestToken));var v=-1/0,y=1/0;function b(){for(var S=Math.max(v,-u);S<=Math.min(y,u);S+=2){var A=void 0,k=p[S-1],w=p[S+1];k&&(p[S-1]=void 0);var x=!1;if(w){var _=w.oldPos-S;x=w&&0<=_&&_=c&&g+1>=l)return o(g3(s,A.lastComponent,r,e,s.useLongestToken));p[S]=A,A.oldPos+1>=c&&(y=Math.min(y,S-1)),g+1>=l&&(v=Math.max(v,S+1))}u++}if(a)(function S(){setTimeout(function(){if(u>f||Date.now()>h)return a();b()||S()},0)})();else for(;u<=f&&Date.now()<=h;){var E=b();if(E)return E}},addToPath:function(e,r,n,i,a){var s=e.lastComponent;return s&&!a.oneChangePerToken&&s.added===r&&s.removed===n?{oldPos:e.oldPos+i,lastComponent:{count:s.count+1,added:r,removed:n,previousComponent:s.previousComponent}}:{oldPos:e.oldPos+i,lastComponent:{count:1,added:r,removed:n,previousComponent:s}}},extractCommon:function(e,r,n,i,a){for(var s=r.length,o=n.length,l=e.oldPos,c=l-i,u=0;c+1h.length?g:h}),f.value=t.join(d)}else f.value=t.join(r.slice(c,c+f.count));c+=f.count,f.added||(u+=f.count)}}return a}var UH=new yn;function E3(t,e,r){return UH.diff(t,e,r)}function v3(t,e){var r;for(r=0;re.length&&(r=t.length-e.length);var n=e.length;t.length0&&e[s]!=e[a];)a=i[a];e[s]==e[a]&&a++}a=0;for(var o=r;o0&&t[o]!=e[a];)a=i[a];t[o]==e[a]&&a++}return a}var zd="a-zA-Z0-9_\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",zH=new RegExp("[".concat(zd,"]+|\\s+|[^").concat(zd,"]"),"ug"),Wd=new yn;Wd.equals=function(t,e,r){return r.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t.trim()===e.trim()};Wd.tokenize=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r;if(e.intlSegmenter){if(e.intlSegmenter.resolvedOptions().granularity!="word")throw new Error('The segmenter passed must have a granularity of "word"');r=Array.from(e.intlSegmenter.segment(t),function(a){return a.segment})}else r=t.match(zH)||[];var n=[],i=null;return r.forEach(function(a){/\s/.test(a)?i==null?n.push(a):n.push(n.pop()+a):/\s/.test(i)?n[n.length-1]==i?n.push(n.pop()+a):n.push(i+a):n.push(a),i=a}),n};Wd.join=function(t){return t.map(function(e,r){return r==0?e:e.replace(/^\s+/,"")}).join("")};Wd.postProcess=function(t,e){if(!t||e.oneChangePerToken)return t;var r=null,n=null,i=null;return t.forEach(function(a){a.added?n=a:a.removed?i=a:((n||i)&&b3(r,i,n,a),r=a,n=null,i=null)}),(n||i)&&b3(r,i,n,null),t};function b3(t,e,r,n){if(e&&r){var i=e.value.match(/^\s*/)[0],a=e.value.match(/\s*$/)[0],s=r.value.match(/^\s*/)[0],o=r.value.match(/\s*$/)[0];if(t){var l=v3(i,s);t.value=Ev(t.value,s,l),e.value=Lc(e.value,l),r.value=Lc(r.value,l)}if(n){var c=y3(a,o);n.value=Sv(n.value,o,c),e.value=Gd(e.value,c),r.value=Gd(r.value,c)}}else if(r)t&&(r.value=r.value.replace(/^\s*/,"")),n&&(n.value=n.value.replace(/^\s*/,""));else if(t&&n){var u=n.value.match(/^\s*/)[0],f=e.value.match(/^\s*/)[0],d=e.value.match(/\s*$/)[0],h=v3(u,f);e.value=Lc(e.value,h);var p=y3(Lc(u,h),d);e.value=Gd(e.value,p),n.value=Sv(n.value,u,p),t.value=Ev(t.value,u,u.slice(0,u.length-p.length))}else if(n){var g=n.value.match(/^\s*/)[0],v=e.value.match(/\s*$/)[0],y=w3(v,g);e.value=Gd(e.value,y)}else if(t){var b=t.value.match(/\s*$/)[0],E=e.value.match(/^\s*/)[0],S=w3(b,E);e.value=Lc(e.value,S)}}var A3=new yn;A3.tokenize=function(t){var e=new RegExp("(\\r?\\n)|[".concat(zd,"]+|[^\\S\\n\\r]+|[^").concat(zd,"]"),"ug");return t.match(e)||[]};function k3(t,e,r){return A3.diff(t,e,r)}var qd=new yn;qd.tokenize=function(t,e){e.stripTrailingCr&&(t=t.replace(/\r\n/g,` +`));var r=[],n=t.split(/(\n|\r\n)/);n[n.length-1]||n.pop();for(var i=0;it.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?f(I.lines.slice(-s.context)):[],h-=g.length,p-=g.length)}(C=g).push.apply(C,xv(T.map(function(le){return(_.added?"+":"-")+le}))),_.added?y+=T.length:v+=T.length}else{if(h)if(T.length<=s.context*2&&E(0,ma.normalizePath)(a.substring(e.length))):i=n,i}async mkdir(e){return this.adapter.mkdir(e)}async rmdir(e,r){var n,i;return this.adapter.rmdir(e,(i=(n=r==null?void 0:r.options)==null?void 0:n.recursive)!=null?i:!1)}async stat(e){if(e.endsWith(this.gitDir+"/index")){if(this.index!==void 0&&this.indexctime!=null&&this.indexmtime!=null)return{isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1,size:this.index.byteLength,type:"file",ctimeMs:this.indexctime,mtimeMs:this.indexmtime};{let n=await this.adapter.stat(e);if(n==null)throw{code:"ENOENT"};return this.indexctime=n.ctime,this.indexmtime=n.mtime,{ctimeMs:n.ctime,mtimeMs:n.mtime,size:n.size,type:"file",isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}}}e==="."&&(e="/");let r=this.vault.getAbstractFileByPath(e);if(this.maybeLog("Stat: "+e),r instanceof ma.TFile)return this.maybeLog("Reuse stat"),{ctimeMs:r.stat.ctime,mtimeMs:r.stat.mtime,size:r.stat.size,type:"file",isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1};{let n=await this.adapter.stat(e);if(n)return{ctimeMs:n.ctime,mtimeMs:n.mtime,size:n.size,type:n.type==="folder"?"directory":n.type,isFile:()=>n.type==="file",isDirectory:()=>n.type==="folder",isSymbolicLink:()=>!1};throw{code:"ENOENT"}}}async unlink(e){return this.adapter.remove(e)}async lstat(e){return this.stat(e)}async readlink(e){throw new Error(`readlink of (${e}) is not implemented.`)}async symlink(e){throw new Error(`symlink of (${e}) is not implemented.`)}async saveAndClear(){this.index!==void 0&&await this.adapter.writeBinary(this.plugin.gitManager.getRelativeVaultPath(this.gitDir+"/index"),this.index,{ctime:this.indexctime,mtime:this.indexmtime}),this.clearIndex()}clearIndex(){this.index=void 0,this.indexctime=void 0,this.indexmtime=void 0}get gitDir(){return this.plugin.settings.gitDir||".git"}maybeLog(e){}};var wn=class extends Fo{constructor(r){super(r);this.FILE=0;this.HEAD=1;this.WORKDIR=2;this.STAGE=3;this.status_mapping={"000":" ","003":"AD","020":"??","022":"A ","023":"AM",100:"D ",101:" D",103:"MD",110:"DA",111:" ",113:"MM",120:"DA",121:" M",122:"M ",123:"MM"};this.noticeLength=999999;this.fs=new Xd(this.app.vault,this.plugin)}getRepo(){return{fs:this.fs,dir:this.plugin.settings.basePath,gitdir:this.plugin.settings.gitDir||void 0,onAuth:()=>{var r,n;return{username:(r=this.plugin.localStorage.getUsername())!=null?r:void 0,password:(n=this.plugin.localStorage.getPassword())!=null?n:void 0}},onAuthFailure:async()=>{new rs.Notice("Authentication failed. Please try with different credentials");let r=await new ze(this.plugin,{placeholder:"Specify your username"}).openAndGetResult();if(r){let n=await new ze(this.plugin,{placeholder:"Specify your password/personal access token"}).openAndGetResult();if(n)return this.plugin.localStorage.setUsername(r),this.plugin.localStorage.setPassword(n),{username:r,password:n}}return{cancel:!0}},http:{async request({url:r,method:n,headers:i,body:a}){let s;a&&(s=await iU(a));let o=await(0,rs.requestUrl)({url:r,method:n,headers:i,body:s,throw:!1});return{url:r,method:n,headers:o.headers,body:nU(o.arrayBuffer),statusCode:o.status,statusMessage:o.status.toString()}}}}}async wrapFS(r){try{let n=await r;return await this.fs.saveAndClear(),n}catch(n){throw await this.fs.saveAndClear(),n}}async status(r){let n,i=window.setTimeout(()=>{n=new rs.Notice("This takes longer: Getting status",this.noticeLength)},2e4);try{this.plugin.setPluginState({gitAction:1});let a={...this.getRepo()};(r==null?void 0:r.path)!=null&&(a.filepaths=[`${r.path}/`]);let s=(await this.wrapFS(re.default.statusMatrix(a))).map(f=>this.getFileStatusResult(f)),o=[],l=[],c=[];for(let f of s)f.workingDir!==" "&&o.push(f),f.index!==" "&&f.index!=="U"&&l.push(f),(f.index!=" "||f.workingDir!=" ")&&c.push(f);let u=[];return window.clearTimeout(i),n==null||n.hide(),{all:c,changed:o,staged:l,conflicted:u}}catch(a){throw window.clearTimeout(i),n==null||n.hide(),this.plugin.displayError(a),a}}async commitAll({message:r,status:n,unstagedFiles:i}){try{return await this.checkAuthorInfo(),await this.stageAll({status:n,unstagedFiles:i}),this.commit({message:r})}catch(a){throw this.plugin.displayError(a),a}}async commit({message:r}){try{await this.checkAuthorInfo(),this.plugin.setPluginState({gitAction:4});let n=await this.formatCommitMessage(r),i=this.plugin.localStorage.getConflict(),a;if(i){let s=await this.branchInfo();a=[s.current,s.tracking]}await this.wrapFS(re.default.commit({...this.getRepo(),message:n,parent:a})),this.plugin.localStorage.setConflict(!1);return}catch(n){throw this.plugin.displayError(n),n}}async stage(r,n){let i=this.getRelativeRepoPath(r,n),a;n?a=r:a=this.getRelativeVaultPath(r);try{this.plugin.setPluginState({gitAction:3}),await this.app.vault.adapter.exists(a)?await this.wrapFS(re.default.add({...this.getRepo(),filepath:i})):await this.wrapFS(re.default.remove({...this.getRepo(),filepath:i}))}catch(s){throw this.plugin.displayError(s),s}}async stageAll({dir:r,status:n,unstagedFiles:i}){try{if(n)await Promise.all(n.changed.map(a=>a.workingDir!=="D"?this.wrapFS(re.default.add({...this.getRepo(),filepath:a.path})):re.default.remove({...this.getRepo(),filepath:a.path})));else{let a=i!=null?i:await this.getUnstagedFiles(r!=null?r:".");await Promise.all(a.map(({path:s,type:o})=>o=="D"?re.default.remove({...this.getRepo(),filepath:s}):this.wrapFS(re.default.add({...this.getRepo(),filepath:s}))))}}catch(a){throw this.plugin.displayError(a),a}}async unstage(r,n){try{this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,n),await this.wrapFS(re.default.resetIndex({...this.getRepo(),filepath:r}))}catch(i){throw this.plugin.displayError(i),i}}async unstageAll({dir:r,status:n}){try{let i;n?i=n.staged.map(a=>a.path):i=(await this.getStagedFiles(r!=null?r:".")).map(({path:s})=>s),await this.wrapFS(Promise.all(i.map(a=>re.default.resetIndex({...this.getRepo(),filepath:a}))))}catch(i){throw this.plugin.displayError(i),i}}async discard(r){try{this.plugin.setPluginState({gitAction:3}),await this.wrapFS(re.default.checkout({...this.getRepo(),filepaths:[r],force:!0}))}catch(n){throw this.plugin.displayError(n),n}}async discardAll({dir:r,status:n}){let i=[];n?r!=null?i=n.changed.filter(a=>a.workingDir!="U"&&a.path.startsWith(r)).map(a=>a.path):i=n.changed.filter(a=>a.workingDir!="U").map(a=>a.path):i=(await this.getUnstagedFiles(r)).filter(a=>a.type!="A").map(({path:a})=>a);try{await this.wrapFS(re.default.checkout({...this.getRepo(),filepaths:i,force:!0}))}catch(a){throw this.plugin.displayError(a),a}}async getUntrackedPaths(r){let n=[];if(r.status)for(let i of r.status.changed)i.index=="U"&&i.workingDir==="U"&&i.path.startsWith(r.path!=null?`${r.path}/`:"")&&n.push(i.path);else{let i=await this.status({path:r==null?void 0:r.path});for(let a of i.changed)a.index==="U"&&a.workingDir==="U"&&n.push(a.path)}return n}getProgressText(r,n){let i=`${r} progress:`;return n.phase&&(i=`${i} ${n.phase}:`),n.loaded&&(i=`${i} ${n.loaded}`,n.total&&(i=`${i} of ${n.total}`)),i}resolveRef(r){return this.wrapFS(re.default.resolveRef({...this.getRepo(),ref:r}))}async pull(){let r=this.showNotice("Initializing pull");try{this.plugin.setPluginState({gitAction:2});let n=await this.resolveRef("HEAD");await this.fetch();let i=await this.branchInfo();await this.checkAuthorInfo(),(await this.wrapFS(re.default.merge({...this.getRepo(),ours:i.current,theirs:i.tracking,abortOnConflict:!1}))).alreadyMerged||await this.wrapFS(re.default.checkout({...this.getRepo(),ref:i.current,onProgress:l=>{r!==void 0&&(r.noticeEl.innerText=this.getProgressText("Checkout",l))},remote:i.remote})),r==null||r.hide();let s=await this.resolveRef("HEAD"),o=await this.getFileChangesCount(n,s);return this.showNotice("Finished pull",!1),o.map(l=>({path:l.path,workingDir:"P",index:"P",vaultPath:this.getRelativeVaultPath(l.path)}))}catch(n){throw r==null||r.hide(),n instanceof re.Errors.MergeConflictError&&await this.plugin.handleConflict(n.data.filepaths.map(i=>this.getRelativeVaultPath(i))),this.plugin.displayError(n),n}}async push(){if(!await this.canPush())return 0;let r=this.showNotice("Initializing push");try{this.plugin.setPluginState({gitAction:1});let n=await this.branchInfo(),i=n.tracking,a=n.current,s=(await this.getFileChangesCount(a,i)).length;this.plugin.setPluginState({gitAction:5});let o=await this.getCurrentRemote();return await this.wrapFS(re.default.push({...this.getRepo(),remote:o,onProgress:l=>{r!==void 0&&(r.noticeEl.innerText=this.getProgressText("Pushing",l))}})),r==null||r.hide(),s}catch(n){throw r==null||r.hide(),this.plugin.displayError(n),n}}async getUnpushedCommits(){let r=await this.branchInfo(),n=r.tracking,i=r.current;if(n==null||i==null)return 0;let a=await this.resolveRef(i),s=await this.resolveRef(n);return(await this.getFileChangesCount(a,s)).length}async canPush(){let r=await this.branchInfo(),n=r.tracking,i=r.current,a=await this.resolveRef(i),s=await this.resolveRef(n);return a!=s}async checkRequirements(){return await this.plugin.app.vault.adapter.exists(`${this.getRepo().dir}/.git/HEAD`)?"valid":"missing-repo"}async branchInfo(){var r,n;try{let i=await re.default.currentBranch(this.getRepo())||"",a=await re.default.listBranches(this.getRepo()),s=(r=await this.getConfig(`branch.${i}.remote`))!=null?r:"origin",o=(n=await this.getConfig(`branch.${i}.merge`))==null?void 0:n.split("refs/heads")[1],l=o?s+o:void 0;return{current:i,tracking:l,branches:a,remote:s}}catch(i){throw this.plugin.displayError(i),i}}async getCurrentRemote(){var i;let r=await re.default.currentBranch(this.getRepo())||"";return(i=await this.getConfig(`branch.${r}.remote`))!=null?i:"origin"}async checkout(r,n){try{return this.wrapFS(re.default.checkout({...this.getRepo(),ref:r,force:!!n,remote:n}))}catch(i){throw this.plugin.displayError(i),i}}async createBranch(r){try{await this.wrapFS(re.default.branch({...this.getRepo(),ref:r,checkout:!0}))}catch(n){throw this.plugin.displayError(n),n}}async deleteBranch(r){try{await this.wrapFS(re.default.deleteBranch({...this.getRepo(),ref:r}))}catch(n){throw this.plugin.displayError(n),n}}branchIsMerged(r){return Promise.resolve(!0)}async init(){try{await this.wrapFS(re.default.init(this.getRepo()))}catch(r){throw this.plugin.displayError(r),r}}async clone(r,n,i){let a=this.showNotice("Initializing clone");try{await this.wrapFS(re.default.clone({...this.getRepo(),dir:n,url:r,depth:i,onProgress:s=>{a!==void 0&&(a.noticeEl.innerText=this.getProgressText("Cloning",s))}})),a==null||a.hide()}catch(s){throw a==null||a.hide(),this.plugin.displayError(s),s}}async setConfig(r,n){try{return this.wrapFS(re.default.setConfig({...this.getRepo(),path:r,value:n}))}catch(i){throw this.plugin.displayError(i),i}}async getConfig(r){try{return this.wrapFS(re.default.getConfig({...this.getRepo(),path:r}))}catch(n){throw this.plugin.displayError(n),n}}async fetch(r){let n=this.showNotice("Initializing fetch");try{let i={...this.getRepo(),onProgress:a=>{n!==void 0&&(n.noticeEl.innerText=this.getProgressText("Fetching",a))},remote:r!=null?r:await this.getCurrentRemote()};await this.wrapFS(re.default.fetch(i)),n==null||n.hide()}catch(i){throw this.plugin.displayError(i),n==null||n.hide(),i}}async setRemote(r,n){try{await this.wrapFS(re.default.addRemote({...this.getRepo(),remote:r,url:n,force:!0}))}catch(i){throw this.plugin.displayError(i),i}}async getRemoteBranches(r){let n=[];return n.push(...await this.wrapFS(re.default.listBranches({...this.getRepo(),remote:r}))),n.remove("HEAD"),n=n.map(i=>`${r}/${i}`),n}async getRemotes(){return(await this.wrapFS(re.default.listRemotes({...this.getRepo()}))).map(r=>r.remote)}async removeRemote(r){await this.wrapFS(re.default.deleteRemote({...this.getRepo(),remote:r}))}async getRemoteUrl(r){var n;return(n=(await this.wrapFS(re.default.listRemotes({...this.getRepo()}))).filter(i=>i.remote==r)[0])==null?void 0:n.url}async log(r,n=!0,i,a){let s=await this.wrapFS(re.default.log({...this.getRepo(),depth:i,ref:a}));return Promise.all(s.map(async o=>{let l=o.commit.message.split(` + +`);return{message:l[0],author:{name:o.commit.author.name,email:o.commit.author.email},body:l.slice(1).join(` + +`),date:new Date(o.commit.committer.timestamp).toDateString(),diff:{changed:0,files:(await this.getFileChangesCount(o.commit.parent.first(),o.oid)).map(c=>({path:c.path,status:c.type,vaultPath:this.getRelativeVaultPath(c.path),hash:o.oid}))},hash:o.oid,refs:[]}}))}updateBasePath(r){return this.getRepo().dir=r,Promise.resolve()}async updateUpstreamBranch(r){let[n,i]=ki(r),a=await this.branchInfo();await this.wrapFS(re.default.push({...this.getRepo(),remote:n,remoteRef:i})),await this.setConfig(`branch.${a.current}.merge`,`refs/heads/${i}`)}updateGitPath(r){return Promise.resolve()}async getFileChangesCount(r,n){return this.walkDifference({walkers:[re.default.TREE({ref:r}),re.default.TREE({ref:n})]})}async walkDifference({walkers:r,dir:n}){return await this.wrapFS(re.default.walk({...this.getRepo(),trees:r,map:async function(a,[s,o]){if(!pv(a,n))return null;if(await(s==null?void 0:s.type())==="tree"||await(o==null?void 0:o.type())==="tree")return;let l=await(s==null?void 0:s.oid()),c=await(o==null?void 0:o.oid()),u="equal";if(l!==c&&(u="M"),l===void 0&&(u="A"),c===void 0&&(u="D"),l===void 0&&c===void 0&&(console.log("Something weird happened:"),console.log(s),console.log(o)),u!=="equal")return{path:a,type:u}}}))}async getStagedFiles(r="."){return(await this.walkDifference({walkers:[re.default.TREE({ref:"HEAD"}),re.default.STAGE()],dir:r})).map(i=>({vaultPath:this.getRelativeVaultPath(i.path),path:i.path}))}async getUnstagedFiles(r="."){let n,i=window.setTimeout(()=>{n=new rs.Notice("This takes longer: Getting status",this.noticeLength)},2e4);try{let a=this.getRepo(),s=await this.wrapFS(re.default.walk({...a,trees:[re.default.WORKDIR(),re.default.STAGE()],map:async function(o,[l,c]){if(!c&&l&&await re.default.isIgnored({...a,filepath:o})||!pv(o,r))return null;let[u,f]=await Promise.all([l&&l.type(),c&&c.type()]),d=[u,f].includes("blob");if((u==="tree"||u==="special")&&!d)return;if(f==="commit")return null;if((f==="tree"||f==="special")&&!d)return;let h=f==="blob"?await c.oid():void 0,p;return u==="blob"&&f!=="blob"?p="42":u==="blob"&&(p=await l.oid()),p?h?p!==h?{path:o,type:"M"}:null:{path:o,type:"A"}:{path:o,type:"D"}}}));return window.clearTimeout(i),n==null||n.hide(),s}catch(a){throw window.clearTimeout(i),n==null||n.hide(),this.plugin.displayError(a),a}}async getDiffString(r,n=!1,i){let a=this.getRelativeVaultPath(r),s=async(c,[u])=>{if(r==c){let f=await u.oid();return(await re.default.readBlob({...this.getRepo(),oid:f})).blob}};if(i){let c=await(0,re.readBlob)({...this.getRepo(),filepath:r,oid:i}).then(h=>new TextDecoder().decode(h.blob)).catch(h=>{if(!(h instanceof re.default.Errors.NotFoundError))throw h}),u=await re.default.readCommit({...this.getRepo(),oid:i}),f=await(0,re.readBlob)({...this.getRepo(),filepath:r,oid:u.commit.parent.first()}).then(h=>new TextDecoder().decode(h.blob)).catch(h=>{if(!(h instanceof re.default.Errors.NotFoundError))throw h});return Yd(a,f!=null?f:"",c!=null?c:"")}let o=(await re.default.walk({...this.getRepo(),trees:[re.default.STAGE()],map:s})).first(),l=new TextDecoder().decode(o);if(n){let c=await this.resolveRef("HEAD").then(f=>(0,re.readBlob)({...this.getRepo(),filepath:r,oid:f})).then(f=>new TextDecoder().decode(f.blob)).catch(f=>{if(!(f instanceof re.default.Errors.NotFoundError))throw f});return Yd(a,c!=null?c:"",l)}else{let c;return await this.app.vault.adapter.exists(a)?c=await this.app.vault.adapter.read(a):c="",Yd(a,l,c)}}async getLastCommitTime(){let r=this.getRepo(),n=await this.resolveRef("HEAD"),a=(await re.default.readCommit({...r,oid:n})).commit.committer.timestamp;return new Date(a*1e3)}getFileStatusResult(r){let n=this.status_mapping[`${r[this.HEAD]}${r[this.WORKDIR]}${r[this.STAGE]}`];return{index:n[0]=="?"?"U":n[0],workingDir:n[1]=="?"?"U":n[1],path:r[this.FILE],vaultPath:this.getRelativeVaultPath(r[this.FILE])}}async checkAuthorInfo(){let r=await this.getConfig("user.name"),n=await this.getConfig("user.email");if(!r||!n)throw Error("Git author name and email are not set. Please set both fields in the settings.")}showNotice(r,n=!0){if(!this.plugin.settings.disablePopups)return new rs.Notice(r,n?this.noticeLength:void 0)}};async function*nU(t){yield new Uint8Array(t)}async function iU(t){let e=new ReadableStream({async start(n){for await(let i of t)n.enqueue(i);n.close()}});return await new Response(e).arrayBuffer()}var aU="https://momentjs.com/docs/#/parsing/string-format/",sU="https://publish.obsidian.md/git-doc/Line+Authoring",Kd=class extends z.PluginSettingTab{constructor(r,n){super(r,n);this.plugin=n;this.lineAuthorColorSettings=new Map}get settings(){return this.plugin.settings}display(){let{containerEl:r}=this,n=this.plugin,i;n.settings.differentIntervalCommitAndPush?i="commit":i="commit-and-sync";let a=n.gitReady;r.empty(),a||(r.createEl("p",{text:"Git is not ready. When all settings are correct you can configure commit-sync, etc."}),r.createEl("br"));let s;if(a){new z.Setting(r).setName("Automatic").setHeading(),new z.Setting(r).setName("Split timers for automatic commit and sync").setDesc("Enable to use one interval for commit and another for sync.").addToggle(u=>u.setValue(n.settings.differentIntervalCommitAndPush).onChange(async f=>{n.settings.differentIntervalCommitAndPush=f,await n.saveSettings(),n.automaticsManager.reload("commit","push"),this.refreshDisplayWithDelay()})),new z.Setting(r).setName(`Auto ${i} interval (minutes)`).setDesc(`${n.settings.differentIntervalCommitAndPush?"Commit":"Commit and sync"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)`).addText(u=>{u.inputEl.type="number",this.setNonDefaultValue({text:u,settingsProperty:"autoSaveInterval"}),u.setPlaceholder(String(Xe.autoSaveInterval)),u.onChange(async f=>{f!==""?n.settings.autoSaveInterval=Number(f):n.settings.autoSaveInterval=Xe.autoSaveInterval,await n.saveSettings(),n.automaticsManager.reload("commit")})}),s=new z.Setting(r).setName(`Auto ${i} after stopping file edits`).setDesc(`Requires the ${i} interval not to be 0. + If turned on, do auto ${i} every ${c3(n.settings.autoSaveInterval)} after stopping file edits. + This also prevents auto ${i} while editing a file. If turned off, it's independent from the last file edit.`).addToggle(u=>u.setValue(n.settings.autoBackupAfterFileChange).onChange(async f=>{n.settings.autoBackupAfterFileChange=f,this.refreshDisplayWithDelay(),await n.saveSettings(),n.automaticsManager.reload("commit")})),this.mayDisableSetting(s,n.settings.setLastSaveToLastCommit),s=new z.Setting(r).setName(`Auto ${i} after latest commit`).setDesc(`If turned on, sets last auto ${i} timestamp to the latest commit timestamp. This reduces the frequency of auto ${i} when doing manual commits.`).addToggle(u=>u.setValue(n.settings.setLastSaveToLastCommit).onChange(async f=>{n.settings.setLastSaveToLastCommit=f,await n.saveSettings(),n.automaticsManager.reload("commit"),this.refreshDisplayWithDelay()})),this.mayDisableSetting(s,n.settings.autoBackupAfterFileChange),s=new z.Setting(r).setName("Auto push interval (minutes)").setDesc("Push commits every X minutes. Set to 0 (default) to disable.").addText(u=>{u.inputEl.type="number",this.setNonDefaultValue({text:u,settingsProperty:"autoPushInterval"}),u.setPlaceholder(String(Xe.autoPushInterval)),u.onChange(async f=>{f!==""?n.settings.autoPushInterval=Number(f):n.settings.autoPushInterval=Xe.autoPushInterval,await n.saveSettings(),n.automaticsManager.reload("push")})}),this.mayDisableSetting(s,!n.settings.differentIntervalCommitAndPush),new z.Setting(r).setName("Auto pull interval (minutes)").setDesc("Pull changes every X minutes. Set to 0 (default) to disable.").addText(u=>{u.inputEl.type="number",this.setNonDefaultValue({text:u,settingsProperty:"autoPullInterval"}),u.setPlaceholder(String(Xe.autoPullInterval)),u.onChange(async f=>{f!==""?n.settings.autoPullInterval=Number(f):n.settings.autoPullInterval=Xe.autoPullInterval,await n.saveSettings(),n.automaticsManager.reload("pull")})}),new z.Setting(r).setName(`Auto ${i} only staged files`).setDesc(`If turned on, only staged files are committed on ${i}. If turned off, all changed files are committed.`).addToggle(u=>u.setValue(n.settings.autoCommitOnlyStaged).onChange(async f=>{n.settings.autoCommitOnlyStaged=f,await n.saveSettings()})),new z.Setting(r).setName(`Specify custom commit message on auto ${i}`).setDesc("You will get a pop up to specify your message.").addToggle(u=>u.setValue(n.settings.customMessageOnAutoBackup).onChange(async f=>{n.settings.customMessageOnAutoBackup=f,await n.saveSettings(),this.refreshDisplayWithDelay()})),s=new z.Setting(r).setName(`Commit message on auto ${i}`).setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message).").addTextArea(u=>{u.setPlaceholder(Xe.autoCommitMessage).onChange(async f=>{f===""?n.settings.autoCommitMessage=Xe.autoCommitMessage:n.settings.autoCommitMessage=f,await n.saveSettings()}),this.setNonDefaultValue({text:u,settingsProperty:"autoCommitMessage"})}),this.mayDisableSetting(s,n.settings.customMessageOnAutoBackup),new z.Setting(r).setName("Commit message").setHeading(),new z.Setting(r).setName("Commit message on manual commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message).").addTextArea(u=>{u.setPlaceholder(Xe.commitMessage).onChange(async f=>{f===""?n.settings.commitMessage=Xe.commitMessage:n.settings.commitMessage=f,await n.saveSettings()}),this.setNonDefaultValue({text:u,settingsProperty:"commitMessage"})}),new z.Setting(r).setName("Commit message script").setDesc("A script that is run using 'sh -c' to generate the commit message. May be used to generate commit messages using AI tools. Available placeholders: {{hostname}}, {{date}}.").addText(u=>{u.onChange(async f=>{f===""?n.settings.commitMessageScript=Xe.commitMessageScript:n.settings.commitMessageScript=f,await n.saveSettings()}),this.setNonDefaultValue({text:u,settingsProperty:"commitMessageScript"})});let c=new z.Setting(r).setName("{{date}} placeholder format").addMomentFormat(u=>u.setDefaultFormat(n.settings.commitDateFormat).setValue(n.settings.commitDateFormat).onChange(async f=>{n.settings.commitDateFormat=f,await n.saveSettings()}));c.descEl.innerHTML=` + Specify custom date format. E.g. "${l0}. See Moment.js for more formats.`,new z.Setting(r).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText(u=>{var f;return u.setValue((f=n.localStorage.getHostname())!=null?f:"").onChange(d=>{n.localStorage.setHostname(d)})}),new z.Setting(r).setName("Preview commit message").addButton(u=>u.setButtonText("Preview").onClick(async()=>{let f=await n.gitManager.formatCommitMessage(n.settings.commitMessage);new z.Notice(`${f}`)})),new z.Setting(r).setName("List filenames affected by commit in the commit body").addToggle(u=>u.setValue(n.settings.listChangedFilesInMessageBody).onChange(async f=>{n.settings.listChangedFilesInMessageBody=f,await n.saveSettings()})),new z.Setting(r).setName("Pull").setHeading(),n.gitManager instanceof Ce&&new z.Setting(r).setName("Merge strategy").setDesc("Decide how to integrate commits from your remote branch into your local branch.").addDropdown(u=>{let f={merge:"Merge",rebase:"Rebase",reset:"Other sync service (Only updates the HEAD without touching the working directory)"};u.addOptions(f),u.setValue(n.settings.syncMethod),u.onChange(async d=>{n.settings.syncMethod=d,await n.saveSettings()})}),new z.Setting(r).setName("Pull on startup").setDesc("Automatically pull commits when Obsidian starts.").addToggle(u=>u.setValue(n.settings.autoPullOnBoot).onChange(async f=>{n.settings.autoPullOnBoot=f,await n.saveSettings()})),new z.Setting(r).setName("Commit-and-sync").setDesc("Commit-and-sync with default settings means staging everything -> committing -> pulling -> pushing. Ideally this is a single action that you do regularly to keep your local and remote repository in sync.").setHeading(),s=new z.Setting(r).setName("Push on commit-and-sync").setDesc(`Most of the time you want to push after committing. Turning this off turns a commit-and-sync action into commit ${n.settings.pullBeforePush?"and pull ":""}only. It will still be called commit-and-sync.`).addToggle(u=>u.setValue(!n.settings.disablePush).onChange(async f=>{n.settings.disablePush=!f,this.refreshDisplayWithDelay(),await n.saveSettings()})),new z.Setting(r).setName("Pull on commit-and-sync").setDesc(`On commit-and-sync, pull commits as well. Turning this off turns a commit-and-sync action into commit ${n.settings.disablePush?"":"and push "}only.`).addToggle(u=>u.setValue(n.settings.pullBeforePush).onChange(async f=>{n.settings.pullBeforePush=f,this.refreshDisplayWithDelay(),await n.saveSettings()})),n.gitManager instanceof Ce&&(new z.Setting(r).setName("Line author information").setHeading(),this.addLineAuthorInfoSettings())}new z.Setting(r).setName("History view").setHeading(),new z.Setting(r).setName("Show Author").setDesc("Show the author of the commit in the history view.").addDropdown(c=>{let u={hide:"Hide",full:"Full",initials:"Initials"};c.addOptions(u),c.setValue(n.settings.authorInHistoryView),c.onChange(async f=>{n.settings.authorInHistoryView=f,await n.saveSettings(),await n.refresh()})}),new z.Setting(r).setName("Show Date").setDesc("Show the date of the commit in the history view. The {{date}} placeholder format is used to display the date.").addToggle(c=>c.setValue(n.settings.dateInHistoryView).onChange(async u=>{n.settings.dateInHistoryView=u,await n.saveSettings(),await n.refresh()})),new z.Setting(r).setName("Source control view").setHeading(),new z.Setting(r).setName("Automatically refresh source control view on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option.").addToggle(c=>c.setValue(n.settings.refreshSourceControl).onChange(async u=>{n.settings.refreshSourceControl=u,await n.saveSettings()})),new z.Setting(r).setName("Source control view refresh interval").setDesc("Milliseconds to wait after file change before refreshing the Source Control View.").addText(c=>{c.inputEl.type="number",this.setNonDefaultValue({text:c,settingsProperty:"refreshSourceControlTimer"}),c.setPlaceholder(String(Xe.refreshSourceControlTimer)),c.onChange(async f=>{f!==""&&Number.isInteger(Number(f))?n.settings.refreshSourceControlTimer=Math.max(Number(f),500):n.settings.refreshSourceControlTimer=Xe.refreshSourceControlTimer,await n.saveSettings(),n.setRefreshDebouncer()})}),new z.Setting(r).setName("Miscellaneous").setHeading(),n.gitManager instanceof Ce&&new z.Setting(r).setName("Diff view style").setDesc('Set the style for the diff view. Note that the actual diff in "Split" mode is not generated by Git, but the editor itself instead so it may differ from the diff generated by Git. One advantage of this is that you can edit the text in that view.').addDropdown(c=>{let u={split:"Split",git_unified:"Unified"};c.addOptions(u),c.setValue(n.settings.diffStyle),c.onChange(async f=>{n.settings.diffStyle=f,await n.saveSettings()})}),new z.Setting(r).setName("Disable informative notifications").setDesc("Disable informative notifications for git operations to minimize distraction (refer to status bar for updates).").addToggle(c=>c.setValue(n.settings.disablePopups).onChange(async u=>{n.settings.disablePopups=u,this.refreshDisplayWithDelay(),await n.saveSettings()})),new z.Setting(r).setName("Disable error notifications").setDesc("Disable error notifications of any kind to minimize distraction (refer to status bar for updates).").addToggle(c=>c.setValue(!n.settings.showErrorNotices).onChange(async u=>{n.settings.showErrorNotices=!u,await n.saveSettings()})),n.settings.disablePopups||new z.Setting(r).setName("Hide notifications for no changes").setDesc("Don't show notifications when there are no changes to commit or push.").addToggle(c=>c.setValue(n.settings.disablePopupsForNoChanges).onChange(async u=>{n.settings.disablePopupsForNoChanges=u,await n.saveSettings()})),new z.Setting(r).setName("Show status bar").setDesc("Obsidian must be restarted for the changes to take affect.").addToggle(c=>c.setValue(n.settings.showStatusBar).onChange(async u=>{n.settings.showStatusBar=u,await n.saveSettings()})),new z.Setting(r).setName("File menu integration").setDesc('Add "Stage", "Unstage" and "Add to .gitignore" actions to the file menu.').addToggle(c=>c.setValue(n.settings.showFileMenu).onChange(async u=>{n.settings.showFileMenu=u,await n.saveSettings()})),new z.Setting(r).setName("Show branch status bar").setDesc("Obsidian must be restarted for the changes to take affect.").addToggle(c=>c.setValue(n.settings.showBranchStatusBar).onChange(async u=>{n.settings.showBranchStatusBar=u,await n.saveSettings()})),new z.Setting(r).setName("Show the count of modified files in the status bar").addToggle(c=>c.setValue(n.settings.changedFilesInStatusBar).onChange(async u=>{n.settings.changedFilesInStatusBar=u,await n.saveSettings()})),n.gitManager instanceof wn?new z.Setting(r).setName("Authentication/commit author").setHeading():new z.Setting(r).setName("Commit author").setHeading(),n.gitManager instanceof wn&&new z.Setting(r).setName("Username on your git server. E.g. your username on GitHub").addText(c=>{var u;c.setValue((u=n.localStorage.getUsername())!=null?u:""),c.onChange(f=>{n.localStorage.setUsername(f)})}),n.gitManager instanceof wn&&new z.Setting(r).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText(c=>{c.inputEl.autocapitalize="off",c.inputEl.autocomplete="off",c.inputEl.spellcheck=!1,c.onChange(u=>{n.localStorage.setPassword(u)})}),n.gitReady&&new z.Setting(r).setName("Author name for commit").addText(async c=>{var u;c.setValue((u=await n.gitManager.getConfig("user.name"))!=null?u:""),c.onChange(async f=>{await n.gitManager.setConfig("user.name",f==""?void 0:f)})}),n.gitReady&&new z.Setting(r).setName("Author email for commit").addText(async c=>{var u;c.setValue((u=await n.gitManager.getConfig("user.email"))!=null?u:""),c.onChange(async f=>{await n.gitManager.setConfig("user.email",f==""?void 0:f)})}),new z.Setting(r).setName("Advanced").setDesc("These settings usually don't need to be changed, but may be required for special setups.").setHeading(),n.gitManager instanceof Ce&&(new z.Setting(r).setName("Update submodules").setDesc('"Commit-and-sync" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule.').addToggle(c=>c.setValue(n.settings.updateSubmodules).onChange(async u=>{n.settings.updateSubmodules=u,await n.saveSettings()})),n.settings.updateSubmodules&&new z.Setting(r).setName("Submodule recurse checkout/switch").setDesc("Whenever a checkout happens on the root repository, recurse the checkout on the submodules (if the branches exist).").addToggle(c=>c.setValue(n.settings.submoduleRecurseCheckout).onChange(async u=>{n.settings.submoduleRecurseCheckout=u,await n.saveSettings()}))),n.gitManager instanceof Ce&&new z.Setting(r).setName("Custom Git binary path").addText(c=>{var u;c.setValue((u=n.localStorage.getGitPath())!=null?u:""),c.setPlaceholder("git"),c.onChange(f=>{n.localStorage.setGitPath(f),n.gitManager.updateGitPath(f||"git").catch(d=>n.displayError(d))})}),n.gitManager instanceof Ce&&new z.Setting(r).setName("Additional environment variables").setDesc("Use each line for a new environment variable in the format KEY=VALUE .").addTextArea(c=>{c.setPlaceholder("GIT_DIR=/path/to/git/dir"),c.setValue(n.localStorage.getEnvVars().join(` +`)),c.onChange(u=>{n.localStorage.setEnvVars(u.split(` +`))})}),n.gitManager instanceof Ce&&new z.Setting(r).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea(c=>{c.setValue(n.localStorage.getPATHPaths().join(` +`)),c.onChange(u=>{n.localStorage.setPATHPaths(u.split(` +`))})}),n.gitManager instanceof Ce&&new z.Setting(r).setName("Reload with new environment variables").setDesc("Removing previously added environment variables will not take effect until Obsidian is restarted.").addButton(c=>{c.setButtonText("Reload"),c.setCta(),c.onClick(async()=>{await n.gitManager.setGitInstance()})}),new z.Setting(r).setName("Custom base path (Git repository path)").setDesc(` + Sets the relative path to the vault from which the Git binary should be executed. + Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows. + `).addText(c=>{c.setValue(n.settings.basePath),c.setPlaceholder("directory/directory-with-git-repo"),c.onChange(async u=>{n.settings.basePath=u,await n.saveSettings(),n.gitManager.updateBasePath(u||"").catch(f=>n.displayError(f))})}),new z.Setting(r).setName("Custom Git directory path (Instead of '.git')").setDesc('Requires restart of Obsidian to take effect. Use "\\" instead of "/" on Windows.').addText(c=>{c.setValue(n.settings.gitDir),c.setPlaceholder(".git"),c.onChange(async u=>{n.settings.gitDir=u,await n.saveSettings()})}),new z.Setting(r).setName("Disable on this device").setDesc("Disables the plugin on this device. This setting is not synced.").addToggle(c=>c.setValue(n.localStorage.getPluginDisabled()).onChange(u=>{n.localStorage.setPluginDisabled(u),u?n.unloadPlugin():n.init({fromReload:!0}).catch(f=>n.displayError(f)),new z.Notice("Obsidian must be restarted for the changes to take affect.")})),new z.Setting(r).setName("Support").setHeading(),new z.Setting(r).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development.").addButton(c=>{c.buttonEl.outerHTML="Buy Me a Coffee at ko-fi.com"});let o=r.createDiv();o.setAttr("align","center"),o.setAttr("style","margin: var(--size-4-2)");let l=o.createEl("button");if(l.setText("Copy Debug Information"),l.onclick=async()=>{await window.navigator.clipboard.writeText(JSON.stringify({settings:this.plugin.settings,pluginVersion:this.plugin.manifest.version},null,4)),new z.Notice("Debug information copied to clipboard. May contain sensitive information!")},z.Platform.isDesktopApp){let c=r.createDiv();c.setAttr("align","center"),c.setText(`Debugging and logging: +You can always see the logs of this and every other plugin by opening the console with`);let u=r.createDiv();u.setAttr("align","center"),u.addClass("obsidian-git-shortcuts"),z.Platform.isMacOS===!0?u.createEl("kbd",{text:"CMD (\u2318) + OPTION (\u2325) + I"}):u.createEl("kbd",{text:"CTRL + SHIFT + I"})}}mayDisableSetting(r,n){n&&(r.setDisabled(n),r.setClass("obsidian-git-disabled"))}configureLineAuthorShowStatus(r){this.settings.lineAuthor.show=r,this.plugin.saveSettings(),r?this.plugin.lineAuthoringFeature.activateFeature():this.plugin.lineAuthoringFeature.deactivateFeature()}async lineAuthorSettingHandler(r,n){this.settings.lineAuthor[r]=n,await this.plugin.saveSettings(),this.plugin.lineAuthoringFeature.refreshLineAuthorViews()}beforeSaveSettings(){let r=this.settings.lineAuthor;r.authorDisplay!=="hide"&&(r.lastShownAuthorDisplay=r.authorDisplay),r.dateTimeFormatOptions!=="hide"&&(r.lastShownDateTimeFormatOptions=r.dateTimeFormatOptions)}addLineAuthorInfoSettings(){let r=new z.Setting(this.containerEl).setName("Show commit authoring information next to each line");if(this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform()||r.setDesc("Only available on desktop currently.").setDisabled(!0),r.descEl.innerHTML=` + Feature guide and quick examples
+ The commit hash, author name and authoring date can all be individually toggled.
Hide everything, to only show the age-colored sidebar.`,r.addToggle(n=>n.setValue(this.settings.lineAuthor.show).onChange(i=>{this.configureLineAuthorShowStatus(i),this.refreshDisplayWithDelay()})),this.settings.lineAuthor.show){let n=new z.Setting(this.containerEl).setName("Follow movement and copies across files and commits").setDesc("").addDropdown(a=>{a.addOptions({inactive:"Do not follow (default)","same-commit":"Follow within same commit","all-commits":"Follow within all commits (maybe slow)"}),a.setValue(this.settings.lineAuthor.followMovement),a.onChange(s=>this.lineAuthorSettingHandler("followMovement",s))});if(n.descEl.innerHTML=` + By default (deactivated), each line only shows the newest commit where it was changed. +
+ With same commit, cut-copy-paste-ing of text is followed within the same commit and the original commit of authoring will be shown. +
+ With all commits, cut-copy-paste-ing text inbetween multiple commits will be detected. +
+ It uses git-blame and + for matches (at least ${dd} characters) within the same (or all) commit(s), the originating commit's information is shown.`,new z.Setting(this.containerEl).setName("Show commit hash").addToggle(a=>{a.setValue(this.settings.lineAuthor.showCommitHash),a.onChange(s=>this.lineAuthorSettingHandler("showCommitHash",s))}),new z.Setting(this.containerEl).setName("Author name display").setDesc("If and how the author is displayed").addDropdown(a=>{let s={hide:"Hide",initials:"Initials (default)","first name":"First name","last name":"Last name",full:"Full name"};a.addOptions(s),a.setValue(this.settings.lineAuthor.authorDisplay),a.onChange(async o=>this.lineAuthorSettingHandler("authorDisplay",o))}),new z.Setting(this.containerEl).setName("Authoring date display").setDesc("If and how the date and time of authoring the line is displayed").addDropdown(a=>{let s={hide:"Hide",date:"Date (default)",datetime:"Date and time","natural language":"Natural language",custom:"Custom"};a.addOptions(s),a.setValue(this.settings.lineAuthor.dateTimeFormatOptions),a.onChange(async o=>{await this.lineAuthorSettingHandler("dateTimeFormatOptions",o),this.refreshDisplayWithDelay()})}),this.settings.lineAuthor.dateTimeFormatOptions==="custom"){let a=new z.Setting(this.containerEl);a.setName("Custom authoring date format").addText(s=>{s.setValue(this.settings.lineAuthor.dateTimeFormatCustomString),s.setPlaceholder("YYYY-MM-DD HH:mm"),s.onChange(async o=>{await this.lineAuthorSettingHandler("dateTimeFormatCustomString",o),a.descEl.innerHTML=this.previewCustomDateTimeDescriptionHtml(o)})}),a.descEl.innerHTML=this.previewCustomDateTimeDescriptionHtml(this.settings.lineAuthor.dateTimeFormatCustomString)}new z.Setting(this.containerEl).setName("Authoring date display timezone").addDropdown(a=>{let s={"viewer-local":"My local (default)","author-local":"Author's local",utc0000:"UTC+0000/Z"};a.addOptions(s),a.setValue(this.settings.lineAuthor.dateTimeTimezone),a.onChange(async o=>this.lineAuthorSettingHandler("dateTimeTimezone",o))}).descEl.innerHTML=` + The time-zone in which the authoring date should be shown. + Either your local time-zone (default), + the author's time-zone during commit creation or + UTC\xB100:00. + `;let i=new z.Setting(this.containerEl).setName("Oldest age in coloring");i.descEl.innerHTML=this.previewOldestAgeDescriptionHtml(this.settings.lineAuthor.coloringMaxAge)[0],i.addText(a=>{a.setPlaceholder("1y"),a.setValue(this.settings.lineAuthor.coloringMaxAge),a.onChange(async s=>{let[o,l]=this.previewOldestAgeDescriptionHtml(s);i.descEl.innerHTML=o,l&&(await this.lineAuthorSettingHandler("coloringMaxAge",s),this.refreshColorSettingsName("oldest"))})}),this.createColorSetting("newest"),this.createColorSetting("oldest"),new z.Setting(this.containerEl).setName("Text color").addText(a=>{a.setValue(this.settings.lineAuthor.textColorCss),a.onChange(async s=>{await this.lineAuthorSettingHandler("textColorCss",s)})}).descEl.innerHTML=` + The CSS color of the gutter text.
+ + It is highly recommended to use + + CSS variables + defined by themes + (e.g.
var(--text-muted)
or +
var(--text-on-accent)
, + because they automatically adapt to theme changes.
+ + See: + List of available CSS variables in Obsidian + + `,new z.Setting(this.containerEl).setName("Ignore whitespace and newlines in changes").addToggle(a=>{a.setValue(this.settings.lineAuthor.ignoreWhitespace),a.onChange(s=>this.lineAuthorSettingHandler("ignoreWhitespace",s))}).descEl.innerHTML=` + Whitespace and newlines are interpreted as + part of the document and in changes + by default (hence not ignored). + This makes the last line being shown as 'changed' + when a new subsequent line is added, + even if the previously last line's text is the same. +
+ If you don't care about purely-whitespace changes + (e.g. list nesting / quote indentation changes), + then activating this will provide more meaningful change detection. + `}}createColorSetting(r){let n=new z.Setting(this.containerEl).setName("").addText(i=>{let a=Rv(r,this.settings.lineAuthor),s=Rv(r,Xe.lineAuthor);i.setPlaceholder(mv(s)),i.setValue(mv(a)),i.onChange(async o=>{let l=n3(o);if(l!==void 0){let c=r==="newest"?"colorNew":"colorOld";await this.lineAuthorSettingHandler(c,l)}this.refreshColorSettingsDesc(r,l)})});this.lineAuthorColorSettings.set(r,n),this.refreshColorSettingsName(r),this.refreshColorSettingsDesc(r,Rv(r,this.settings.lineAuthor))}refreshColorSettingsName(r){let n=this.lineAuthorColorSettings.get(r);if(n){let i=r==="oldest"?`oldest (${this.settings.lineAuthor.coloringMaxAge} or older)`:"newest";n.nameEl.innerText=`Color for ${i} commits`}}refreshColorSettingsDesc(r,n){let i=this.lineAuthorColorSettings.get(r);i&&(i.descEl.innerHTML=this.colorSettingPreviewDescHtml(r,this.settings.lineAuthor,n!==void 0))}colorSettingPreviewDescHtml(r,n,i){let a=i?Mv(r,n):"rgba(127,127,127,0.3)",s=z.moment.unix(z.moment.now()/1e3).format("YYYY-MM-DD"),o=i?`abcdef Author Name ${s}`:"invalid color";return`Supports 'rgb(r,g,b)', 'hsl(h,s,l)', hex (#) and + named colors (e.g. 'black', 'purple'). Color preview: ${`
${o}
`}`}previewCustomDateTimeDescriptionHtml(r){let n=(0,z.moment)().format(r);return`
Format string to display the authoring date.
Currently: ${n}`}previewOldestAgeDescriptionHtml(r){let n=Zd(r);return[`The oldest age in the line author coloring. Everything older will have the same color. +
Smallest valid age is "1d". Currently: ${n!==void 0?`${n.asDays()} days`:"invalid!"}`,n]}setNonDefaultValue({settingsProperty:r,text:n}){let i=this.plugin.settings[r];Xe[r]!==i&&n.setValue(JSON.stringify(i))}refreshDisplayWithDelay(r=80){setTimeout(()=>this.display(),r)}};function Rv(t,e){return t==="oldest"?e.colorOld:e.colorNew}function Zd(t){let e=z.moment.duration("P"+t.toUpperCase());return e.isValid()&&e.asDays()&&e.asDays()>=1?e:void 0}function C3(t,e,r){if(!(t===void 0||e===void 0||r===void 0))return`head${t}-obj${e}-path${r}`}var P3=Jd.Annotation.define();function R3(t,e,r){return r.update({annotations:P3.of({key:t,la:e,lineOffsetsFromUnsavedChanges:new Map})})}function oU(t){return t.annotation(P3)}var Lo=Jd.StateField.define({create:t=>{},update:(t,e)=>{var r;return(r=oU(e))!=null?r:lU(e,t)},compare:(t,e)=>(t==null?void 0:t.key)===(e==null?void 0:e.key)});function Qd(t){var a;let e=T3.sha256.create();if(!t)return e;let{la:r,key:n,lineOffsetsFromUnsavedChanges:i}=t;e.update(r==="untracked"?"t":"f"),e.update(n);for(let[s,o]of(a=i.entries())!=null?a:[])e.update([s,o]);return e}var Qr={get:void 0,save:void 0};function M3(t,e){Qr.get=t,Qr.save=e}function eh(t){var e,r;return(r=(e=Zd(t.coloringMaxAge))==null?void 0:e.asDays())!=null?r:Zd(Xe.lineAuthor.coloringMaxAge).asDays()}function lU(t,e){if(e)return t.changes.empty||t.changes.iterChanges((r,n,i,a)=>{var p;let s=t.startState.doc,{newDoc:o}=t,l=s.lineAt(r).number,c=s.lineAt(n).number,u=o.lineAt(i).number,f=o.lineAt(a).number,d=c-l+1,h=f-u+1;for(let g=u;g<=f;g++){let v=(p=e.lineOffsetsFromUnsavedChanges.get(g))!=null?p:0,y=f===g,b=h-d;y&&(v+=b),e.lineOffsetsFromUnsavedChanges.set(g,v)}}),e}var Ov=class{constructor(e){this.state=e;this.subscribeMe()}notifyLineAuthoring(e,r){if(this.view===void 0){console.warn(`Git: View is not defined for editor cache key. Unforeseen situation. id: ${e}`);return}let n=this.view.state,i=R3(e,r,n);this.view.dispatch(i)}updateToNewState(e){let r=this.lastSeenPath&&this.filepath!=this.lastSeenPath;return this.state=e,r&&(this.unsubscribeMe(this.lastSeenPath),this.subscribeMe()),this}removeIfStale(){this.view.destroyed&&this.unsubscribeMe(this.lastSeenPath)}subscribeMe(){this.filepath!==void 0&&(Do.ifFilepathDefinedTransformSubscribers(this.filepath,e=>e.add(this)),this.lastSeenPath=this.filepath)}unsubscribeMe(e){Do.ifFilepathDefinedTransformSubscribers(e,r=>r.delete(this))}get filepath(){var e,r;return(r=(e=this.state.field(th.editorInfoField))==null?void 0:e.file)==null?void 0:r.path}get view(){return this.state.field(th.editorEditorField)}},I3=O3.StateField.define({create:t=>new Ov(t),update:(t,e)=>t.updateToNewState(e.state),compare:(t,e)=>t===e});m();function $3(){jo=void 0,Iv=[],rh=0,ih.clear(),ah.clear(),No.clear()}var jo,nh=()=>jo;function F3(t,e){var i;let r=e.length;if(r<((i=jo==null?void 0:jo.length)!=null?i:0))return;jo={gutter:t,length:r,text:e};let n=Qr.get();r!==n.gutterSpacingFallbackLength&&(n.gutterSpacingFallbackLength=r,Qr.save(n))}var Iv=[],cU=15,rh=0;function D3(t){Iv[rh]=t,rh=(rh+1)%cU}function L3(){return a3(Iv)}var ih=new Map,ah=new Map,No=new Set;m();var K3=require("@codemirror/state"),Z3=require("@codemirror/view");m();var Lv=require("@codemirror/view"),W3=Ot(_v()),lh=require("obsidian");m();m();var sh={x:-10,y:-10};function j3(){sh.x===-10&&window.addEventListener("mousedown",t=>{sh.x=t.clientX,sh.y=t.clientY})}function N3(){for(let t of No)if(uU(t,sh))return t}function uU(t,e){let{x:r,y:n,width:i,height:a}=t.getBoundingClientRect();return r<=e.x&&e.x<=r+i&&n<=e.y&&e.y<=n+a}m();var Nc={};var B3="data-commit";function H3(t,e,r){if(e.hasFocus())return;let n=N3();if(!n)return;let i=dU(n);i&&(!i.isZeroCommit&&!i.isWaitingGutter&&fU(i,t),$v("showCommitHash",t),$v("authorDisplay",t),$v("dateTimeFormatOptions",t))}function fU(t,e){e.addItem(r=>r.setTitle("Copy commit hash").setIcon("copy").setSection("obs-git-line-author-copy").onClick(n=>navigator.clipboard.writeText(t.hash)))}function $v(t,e){var l,c;let r,n,i=Nc.plugin.settings.lineAuthor,a=i[t],s=typeof a=="boolean"?a:a!=="hide",o=Xe.lineAuthor[t];if(t==="showCommitHash")r="Show commit hash",n=a;else if(t==="authorDisplay"){let u=(l=i.lastShownAuthorDisplay)!=null?l:o;r="Show author "+(s?a:u),n=s?"hide":u}else if(t==="dateTimeFormatOptions"){let u=(c=i.lastShownDateTimeFormatOptions)!=null?c:o;r="Show "+(s?a:u),r+=r.contains("date")?"":" date",n=s?"hide":u}else pa(t);e.addItem(u=>u.setTitle(r).setSection("obs-git-line-author-configure").setChecked(s).onClick(f=>{var d,h;return(h=(d=Nc.plugin)==null?void 0:d.settingsTab)==null?void 0:h.lineAuthorSettingHandler(t,n)}))}function U3(t,e,r){r.setAttr(B3,JSON.stringify({hash:t.hash,isZeroCommit:t.isZeroCommit,isWaitingGutter:e}))}function dU(t){let e=t.getAttr(B3);return e?JSON.parse(e):void 0}m();function Mv(t,e){return t==="oldest"?oh(0,!1,e).color:oh(void 0,!0,e).color}function oh(t,e,r){let n=eh(r),i=Date.now()/1e3,a=t!=null?t:0,o=(e?0:i-a)/60/60/24,l=Math.pow(Math.clamp(o/n,0,1),1/2.3),c=hU(),u=r.colorNew,f=r.colorOld,d=c?.4:1,h=Fv(u.r,f.r,l)*d,p=Fv(u.g,f.g,l)*d,g=Fv(u.b,f.b,l)*d;return{color:`rgba(${h},${p},${g},${c?.75:.25})`,daysSinceCommit:o}}function Fv(t,e,r){return t+(e-t)*r}function hU(){var t;return((t=window.app)==null?void 0:t.getTheme())==="obsidian"}function G3(t){document.body.style.setProperty("--obs-git-gutter-text",t.textColorCss)}m();function z3(t,e,r){let n;for(let i=e;i<=r;i++){let a=t.hashPerLine[i],s=t.commits.get(a);(!n||s.isZeroCommit||pU(s,n))&&(n=s)}return n}function pU(t,e){var i,a,s,o;let r=(a=(i=t.author)==null?void 0:i.epochSeconds)!=null?a:0,n=(o=(s=e.author)==null?void 0:s.epochSeconds)!=null?o:0;return r>n}var V3="-",mU="+",gU=3,vU="*",yU=/\S/g,wU="%",Bo=class t extends Lv.GutterMarker{constructor(r){super();this.text=r}eq(r){return r instanceof t&&this.text===r.text}toDOM(){return document.createTextNode(this.text)}destroy(r){r&&(document.body.contains(r)||r.remove())}},Dv=class extends Lv.GutterMarker{constructor(r,n,i,a,s,o){super();this.lineAuthoring=r;this.startLine=n;this.endLine=i;this.key=a;this.settings=s;this.options=o;this.point=!1;this.elementClass="obs-git-blame-gutter"}eq(r){return this.key===(r==null?void 0:r.key)&&this.startLine===(r==null?void 0:r.startLine)&&this.endLine===(r==null?void 0:r.endLine)&&(this==null?void 0:this.options)===(r==null?void 0:r.options)}toDOM(){var r;return this.precomputedDomProvider=(r=this.precomputedDomProvider)!=null?r:this.computeDom(),this.precomputedDomProvider()}destroy(r){r&&(document.body.contains(r)||(No.delete(r),r.remove()))}computeDom(){let r=z3(this.lineAuthoring,this.startLine,this.endLine),n=r.isZeroCommit?"":this.renderNonZeroCommit(r);return!r.isZeroCommit&&this.options!=="waiting-for-result"?F3(this,n):n=this.adaptTextForFakeCommit(r,n,this.options),this.createHtmlNode(r,n,this.options==="waiting-for-result")}createHtmlNode(r,n,i){var c;let a=window.createDiv();a.innerText=n;let{color:s,daysSinceCommit:o}=oh((c=r==null?void 0:r.author)==null?void 0:c.epochSeconds,r==null?void 0:r.isZeroCommit,this.settings);a.style.backgroundColor=s,U3(r,i,a);function l(){let u=a.cloneNode(!0);return No.add(u),i||D3(o),u}return l}renderNonZeroCommit(r){let n=this.settings.showCommitHash?this.renderHash(r):"",i=this.settings.authorDisplay==="hide"?"":`${this.renderAuthorName(r,this.settings.authorDisplay)}`,a=this.settings.dateTimeFormatOptions==="hide"?"":`${this.renderAuthoringDate(r,this.settings.dateTimeFormatOptions,this.settings.dateTimeFormatCustomString,this.settings.dateTimeTimezone)}`;return[n,i,a].filter(o=>o.length>=1).join(" ")}renderHash(r){return r.hash.substring(0,6)}renderAuthorName(r,n){var o,l,c,u;let i=(l=(o=r==null?void 0:r.author)==null?void 0:o.name)!=null?l:"",a=i.split(" ").filter(f=>f.length>=1),s;switch(n){case"initials":s=a.map(f=>f[0].toUpperCase()).join("");break;case"first name":s=(c=a.first())!=null?c:V3;break;case"last name":s=(u=a.last())!=null?u:V3;break;case"full":s=i;break;default:return pa(n)}return s3(r==null?void 0:r.author,r==null?void 0:r.committer)||(s=s+vU),s}renderAuthoringDate(r,n,i,a){var c;let s="?";if(((c=r==null?void 0:r.author)==null?void 0:c.epochSeconds)===void 0)return s;let o;switch(n){case"date":o=fd;break;case"datetime":o=o0;break;case"custom":o=i;break;case"natural language":o=u=>{let f=u.diff((0,lh.moment)());return lh.moment.duration(f).humanize(!0)};break;default:return pa(n)}let l=lh.moment.unix(r.author.epochSeconds);switch(a){case"viewer-local":break;case"author-local":l=l.utcOffset(r.author.tz),typeof o=="string"&&(o+=" Z");break;case"utc0000":l=l.utc(),typeof o=="string"&&(o+="[Z]");break;default:return pa(a)}return typeof o=="string"?l.format(o):o(l)}adaptTextForFakeCommit(r,n,i){var l,c,u,f;let a=(c=(l=nh())==null?void 0:l.text)!=null?c:n,s=i!=="waiting-for-result"&&r.isZeroCommit?mU:wU;n=a.replace(yU,s);let o=(f=(u=Qr.get())==null?void 0:u.gutterSpacingFallbackLength)!=null?f:n.length;if(n=o3(n,o,s),i!=="waiting-for-result"&&r.isZeroCommit){let d=Math.min(o,gU);n=l3(n,o-d)}return n}};function ns(t,e,r,n,i,a){let s=W3.sha256.create();s.update(JSON.stringify(i)),s.update(`s${e}-e${r}-k${n}-o${a}`);let o=s.hex(),l=ih.get(o);if(l)return l;let c=new Dv(t,e,r,n,i,a);return ih.set(o,c),c}m();var q3=require("obsidian");function jv(){var e,r;let t=(r=(e=Qr.get())==null?void 0:e.gutterSpacingFallbackLength)!=null?r:Xe.lineAuthor.gutterSpacingFallbackLength;return new Bo(Array(t).fill("-").join(""))}function Nv(t){let{lineAuthoring:e,ageForInitialRender:r}=bU(t);return ns(e,1,1,"initialGutter"+r,t,"waiting-for-result")}function bU(t){var a;let e=(a=L3())!=null?a:eh(t)*.25,r=(0,q3.moment)().add(-e,"days"),n={name:"",epochSeconds:i3(r),tz:"+0000"},i={hash:"waiting-for-result",author:n,committer:n,isZeroCommit:!1};return{lineAuthoring:{hashPerLine:[void 0,"waiting-for-result"],commits:new Map([["waiting-for-result",i]])},ageForInitialRender:e}}m();function Y3(t,e){return ns({hashPerLine:[void 0,"000000"],commits:new Map([["000000",m3]])},1,1,t,e)}var Bv=new Bo(""),J3=(0,Z3.gutter)({class:"line-author-gutter-container",markers(t){let e=t.state.field(Lo,!1);return _U(t,e)},lineMarkerChange(t){let e=Qd(t.state.field(Lo));return Qd(t.startState.field(Lo))!==e},renderEmptyElements:!0,initialSpacer:t=>(X3(t),jv()),updateSpacer:(t,e)=>{var r,n;return X3(e.view),(n=(r=nh())==null?void 0:r.gutter)!=null?n:jv()}});function _U(t,e){let r=Qd(e),n=t.state.doc,i=new Map;for(let u=1;u<=n.lines;u++){let f=n.line(u).from,d=t.lineBlockAt(f).to;i.set(u,[f,d]),r.update([f,d,0])}let a=Qr.get();r.update("s"+Object.values(Qr).join(","));let s=r.hex(),o=ah.get(s);if(o)return o;let{result:l,allowCache:c}=xU(n,i,a,e);return c&&ah.set(s,l),l}function xU(t,e,r,n){let i=!0,a=t.lines,s=[];function o(f,d,h){return s.push(h.range(f,d))}let l=SU(a,n),c=t.length===0,u=t.iterLines(a,a+1).next().value==="";for(let f=1;f<=a;f++){let[d,h]=e.get(f),p=t.lineAt(h).number;if(c){o(d,h,Bv);continue}if(f===a&&u){o(d,h,Bv);continue}if(n===void 0){o(d,h,Nv(r)),i=!1;continue}let{key:g,la:v}=n;if(v==="untracked"){o(d,h,Y3(v,r));continue}let y=v.hashPerLine.length-1,b=l[f],E=l[p];if(E&&E>y&&o(d,h,Bv),b!==void 0&&gv(1,b,y)&&E!==void 0&&gv(1,E,y)){o(d,h,ns(v,b,E,g,r));continue}if(y<1){o(d,h,Nv(r)),i=!1;continue}let S=Math.clamp(b!=null?b:f,1,y),A=Math.clamp(E!=null?E:p,1,y);o(d,h,ns(v,S,A,g+"computing",r,"waiting-for-result"))}return{result:K3.RangeSet.of(s,!0),allowCache:i}}function SU(t,e){if(!(e!=null&&e.lineOffsetsFromUnsavedChanges))return Array.from(new Array(t+1),i=>i);let r=[void 0],n=0;for(let i=1;i<=t;i++){let a=e.lineOffsetsFromUnsavedChanges.get(i);n+=a!=null?a:0,r[i]=a===void 0?i-n:void 0}return r}function X3(t){t.dom.querySelectorAll(".cm-gutters").forEach(r=>{r!=null&&r.style&&(r.style.marginLeft||(r.style.marginLeft="unset"))})}var ch=class{constructor(e){this.plugin=e;this.lineAuthorings=new Map}async trackChanged(e){return this.trackChangedHelper(e).catch(r=>(console.warn("Git: Error in trackChanged."+r),Promise.reject(r)))}async trackChangedHelper(e){if(e){if(e.path===void 0){console.warn("Git: Attempted to track change of undefined filepath. Unforeseen situation.");return}return this.computeLineAuthorInfo(e.path)}}destroy(){this.lineAuthorings.clear(),Do.clear(),$3()}async computeLineAuthorInfo(e){let r=this.plugin.lineAuthoringFeature.isAvailableOnCurrentPlatform().gitManager,n=await r.submoduleAwareHeadRevisonInContainingDirectory(e),i=await r.hashObject(e),a=C3(n,i,e);if(a!==void 0){if(!this.lineAuthorings.has(a)){let s=await r.blame(e,this.plugin.settings.lineAuthor.followMovement,this.plugin.settings.lineAuthor.ignoreWhitespace);this.lineAuthorings.set(a,s)}this.notifyComputationResultToSubscribers(e,a)}}notifyComputationResultToSubscribers(e,r){Do.ifFilepathDefinedTransformSubscribers(e,n=>n.forEach(i=>i.notifyLineAuthoring(r,this.lineAuthorings.get(r))))}},eM=Q3.Prec.high([I3,Lo,J3]);var uh=class{constructor(e){this.plg=e;this.codeMirrorExtensions=[];this.handleWorkspaceLeaf=e=>{if(!this.lineAuthorInfoProvider){console.warn("Git: undefined lineAuthorInfoProvider. Unexpected situation.");return}let r=e==null?void 0:e.view;!(r instanceof is.MarkdownView)||r.file==null||(r==null?void 0:r.allowNoFile)===!0||this.lineAuthorInfoProvider.trackChanged(r.file).catch(console.error)}}onLoadPlugin(){this.plg.registerEditorExtension(this.codeMirrorExtensions),M3(()=>this.plg.settings.lineAuthor,e=>{this.plg.settings.lineAuthor=e,this.plg.saveSettings()})}conditionallyActivateBySettings(){this.plg.settings.lineAuthor.show&&this.activateFeature()}activateFeature(){try{if(!this.isAvailableOnCurrentPlatform().available)return;G3(this.plg.settings.lineAuthor),this.lineAuthorInfoProvider=new ch(this.plg),this.createEventHandlers(),this.activateCodeMirrorExtensions(),console.log(this.plg.manifest.name+": Enabled line authoring.")}catch(e){console.warn("Git: Error while loading line authoring feature.",e),this.deactivateFeature()}}deactivateFeature(){var e;this.destroyEventHandlers(),this.deactivateCodeMirrorExtensions(),(e=this.lineAuthorInfoProvider)==null||e.destroy(),this.lineAuthorInfoProvider=void 0,console.log(this.plg.manifest.name+": Disabled line authoring.")}isAvailableOnCurrentPlatform(){return{available:this.plg.useSimpleGit&&is.Platform.isDesktopApp,gitManager:this.plg.gitManager instanceof Ce?this.plg.gitManager:void 0}}refreshLineAuthorViews(){this.plg.settings.lineAuthor.show&&(this.deactivateFeature(),this.activateFeature())}activateCodeMirrorExtensions(){this.codeMirrorExtensions.push(eM),this.plg.app.workspace.updateOptions(),this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf)}deactivateCodeMirrorExtensions(){for(let e of this.codeMirrorExtensions)this.codeMirrorExtensions.remove(e);this.plg.app.workspace.updateOptions()}createEventHandlers(){this.gutterContextMenuEvent=this.createGutterContextMenuHandler(),this.fileOpenEvent=this.createFileOpenEvent(),this.workspaceLeafChangeEvent=this.createWorkspaceLeafChangeEvent(),this.fileModificationEvent=this.createVaultFileModificationHandler(),this.refreshOnCssChangeEvent=this.createCssRefreshHandler(),this.fileRenameEvent=this.createFileRenameEvent(),j3(),this.plg.registerEvent(this.gutterContextMenuEvent),this.plg.registerEvent(this.refreshOnCssChangeEvent),this.plg.registerEvent(this.fileOpenEvent),this.plg.registerEvent(this.workspaceLeafChangeEvent),this.plg.registerEvent(this.fileModificationEvent),this.plg.registerEvent(this.fileRenameEvent)}destroyEventHandlers(){this.plg.app.workspace.offref(this.refreshOnCssChangeEvent),this.plg.app.workspace.offref(this.fileOpenEvent),this.plg.app.workspace.offref(this.workspaceLeafChangeEvent),this.plg.app.workspace.offref(this.refreshOnCssChangeEvent),this.plg.app.vault.offref(this.fileRenameEvent),this.plg.app.workspace.offref(this.gutterContextMenuEvent)}createFileOpenEvent(){return this.plg.app.workspace.on("file-open",e=>{var r;return void((r=this.lineAuthorInfoProvider)==null?void 0:r.trackChanged(e).catch(console.error))})}createWorkspaceLeafChangeEvent(){return this.plg.app.workspace.on("active-leaf-change",this.handleWorkspaceLeaf)}createFileRenameEvent(){return this.plg.app.vault.on("rename",(e,r)=>{var n;return e instanceof is.TFile&&((n=this.lineAuthorInfoProvider)==null?void 0:n.trackChanged(e))})}createVaultFileModificationHandler(){return this.plg.app.vault.on("modify",e=>{var r;return e instanceof is.TFile&&((r=this.lineAuthorInfoProvider)==null?void 0:r.trackChanged(e))})}createCssRefreshHandler(){return this.plg.app.workspace.on("css-change",()=>this.refreshLineAuthorViews())}createGutterContextMenuHandler(){return this.plg.app.workspace.on("editor-menu",H3)}};m();var fh=class{constructor(e){this.plugin=e;this.tasks=[]}addTask(e,r){this.tasks.push({task:e,onFinished:r!=null?r:()=>{}}),this.tasks.length===1&&this.handleTask()}handleTask(){if(this.tasks.length>0){let e=this.tasks[0];e.task().then(r=>{e.onFinished(r),this.tasks.shift(),this.handleTask()},r=>{this.plugin.displayError(r),e.onFinished(void 0),this.tasks.shift(),this.handleTask()})}}clear(){this.tasks=[]}};m();var Fr=require("obsidian");var dh=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;this.messages=[];this.base="obsidian-git-statusbar-";this.statusBarEl.setAttribute("data-tooltip-position","top"),r.registerEvent(r.app.workspace.on("obsidian-git:refreshed",()=>{this.refreshCommitTimestamp().catch(console.error)}))}displayMessage(e,r){this.messages.push({message:`Git: ${e.slice(0,100)}`,timeout:r}),this.display()}display(){this.messages.length>0&&!this.currentMessage?(this.currentMessage=this.messages.shift(),this.statusBarEl.addClass(this.base+"message"),this.statusBarEl.ariaLabel="",this.statusBarEl.setText(this.currentMessage.message),this.lastMessageTimestamp=Date.now()):this.currentMessage?Date.now()-this.lastMessageTimestamp>=this.currentMessage.timeout&&(this.currentMessage=null,this.lastMessageTimestamp=null):this.displayState()}displayState(){switch((this.statusBarEl.getText().length>3||!this.statusBarEl.hasChildNodes())&&(this.statusBarEl.empty(),this.conflictEl=this.statusBarEl.createDiv(),this.conflictEl.setAttribute("data-tooltip-position","top"),this.conflictEl.style.float="left",this.pausedEl=this.statusBarEl.createDiv(),this.pausedEl.setAttribute("data-tooltip-position","top"),this.pausedEl.style.float="left",this.iconEl=this.statusBarEl.createDiv(),this.iconEl.style.float="left",this.textEl=this.statusBarEl.createDiv(),this.textEl.style.float="right",this.textEl.style.marginLeft="5px"),this.plugin.localStorage.getConflict()?((0,Fr.setIcon)(this.conflictEl,"alert-circle"),this.conflictEl.ariaLabel="You have merge conflicts. Resolve them and commit afterwards.",this.conflictEl.style.marginRight="5px",this.conflictEl.addClass(this.base+"conflict")):(this.conflictEl.empty(),this.conflictEl.style.marginRight=""),this.plugin.localStorage.getPausedAutomatics()?((0,Fr.setIcon)(this.pausedEl,"pause-circle"),this.pausedEl.ariaLabel="Automatic routines are currently paused.",this.pausedEl.style.marginRight="5px",this.pausedEl.addClass(this.base+"paused")):(this.pausedEl.empty(),this.pausedEl.style.marginRight=""),this.plugin.state.gitAction){case 0:this.displayFromNow();break;case 1:this.statusBarEl.ariaLabel="Checking repository status...",(0,Fr.setIcon)(this.iconEl,"refresh-cw"),this.statusBarEl.addClass(this.base+"status");break;case 3:this.statusBarEl.ariaLabel="Adding files...",(0,Fr.setIcon)(this.iconEl,"archive"),this.statusBarEl.addClass(this.base+"add");break;case 4:this.statusBarEl.ariaLabel="Committing changes...",(0,Fr.setIcon)(this.iconEl,"git-commit"),this.statusBarEl.addClass(this.base+"commit");break;case 5:this.statusBarEl.ariaLabel="Pushing changes...",(0,Fr.setIcon)(this.iconEl,"upload"),this.statusBarEl.addClass(this.base+"push");break;case 2:this.statusBarEl.ariaLabel="Pulling changes...",(0,Fr.setIcon)(this.iconEl,"download"),this.statusBarEl.addClass(this.base+"pull");break;default:this.statusBarEl.ariaLabel="Failed on initialization!",(0,Fr.setIcon)(this.iconEl,"alert-triangle"),this.statusBarEl.addClass(this.base+"failed-init");break}}displayFromNow(){var n;let e=this.lastCommitTimestamp,r=this.plugin.state.offlineMode;if(e){let i=(0,Fr.moment)(e).fromNow();this.statusBarEl.ariaLabel=`${r?"Offline: ":""}Last Commit: ${i}`,(n=this.unPushedCommits)!=null&&n&&(this.statusBarEl.ariaLabel+=` +(${this.unPushedCommits} unpushed commits)`)}else this.statusBarEl.ariaLabel=r?"Git is offline":"Git is ready";r?(0,Fr.setIcon)(this.iconEl,"globe"):(0,Fr.setIcon)(this.iconEl,"check"),this.plugin.settings.changedFilesInStatusBar&&this.plugin.cachedStatus&&this.textEl.setText(this.plugin.cachedStatus.changed.length.toString()),this.statusBarEl.addClass(this.base+"idle")}async refreshCommitTimestamp(){this.lastCommitTimestamp=await this.plugin.gitManager.getLastCommitTime(),this.unPushedCommits=await this.plugin.gitManager.getUnpushedCommits()}remove(){this.statusBarEl.remove()}};m();var ph=require("obsidian"),hh=class extends ph.SuggestModal{constructor(r){super(r.app);this.plugin=r;this.resolve=null;this.setPlaceholder("Type your message and select optional the version with the added date.")}openAndGetResult(){return new Promise(r=>{this.resolve=r,this.open()})}onClose(){new Promise(r=>setTimeout(r,10)).then(()=>{this.resolve&&this.resolve(void 0)})}getSuggestions(r){let n=(0,ph.moment)().format(this.plugin.settings.commitDateFormat);return r==""&&(r="..."),[r,`${n}: ${r}`,`${r}: ${n}`]}renderSuggestion(r,n){n.innerText=r}onChooseSuggestion(r,n){this.resolve&&this.resolve(r)}};m();var tM=require("obsidian"),Bc=class{constructor(e){this.plugin=e}saveLastAuto(e,r){r==="backup"?this.plugin.localStorage.setLastAutoBackup(e.toString()):r==="pull"?this.plugin.localStorage.setLastAutoPull(e.toString()):r==="push"&&this.plugin.localStorage.setLastAutoPush(e.toString())}loadLastAuto(){var e,r,n;return{backup:new Date((e=this.plugin.localStorage.getLastAutoBackup())!=null?e:""),pull:new Date((r=this.plugin.localStorage.getLastAutoPull())!=null?r:""),push:new Date((n=this.plugin.localStorage.getLastAutoPush())!=null?n:"")}}async init(){await this.setUpAutoCommitAndSync();let e=this.loadLastAuto();if(this.plugin.settings.differentIntervalCommitAndPush&&this.plugin.settings.autoPushInterval>0){let r=this.diff(this.plugin.settings.autoPushInterval,e.push);this.startAutoPush(r)}if(this.plugin.settings.autoPullInterval>0){let r=this.diff(this.plugin.settings.autoPullInterval,e.pull);this.startAutoPull(r)}}unload(){this.clearAutoPull(),this.clearAutoPush(),this.clearAutoCommitAndSync()}reload(...e){this.plugin.localStorage.getPausedAutomatics()||(e.contains("commit")&&(this.clearAutoCommitAndSync(),this.plugin.settings.autoSaveInterval>0&&this.startAutoCommitAndSync(this.plugin.settings.autoSaveInterval)),e.contains("push")&&(this.clearAutoPush(),this.plugin.settings.differentIntervalCommitAndPush&&this.plugin.settings.autoPushInterval>0&&this.startAutoPush(this.plugin.settings.autoPushInterval)),e.contains("pull")&&(this.clearAutoPull(),this.plugin.settings.autoPullInterval>0&&this.startAutoPull(this.plugin.settings.autoPullInterval)))}async setUpAutoCommitAndSync(){if(this.plugin.settings.setLastSaveToLastCommit){this.clearAutoCommitAndSync();let e=await this.plugin.gitManager.getLastCommitTime();e&&this.saveLastAuto(e,"backup")}if(!this.timeoutIDCommitAndSync&&!this.plugin.autoCommitDebouncer){let e=this.loadLastAuto();if(this.plugin.settings.autoSaveInterval>0){let r=this.diff(this.plugin.settings.autoSaveInterval,e.backup);this.startAutoCommitAndSync(r)}}}startAutoCommitAndSync(e){let r=(e!=null?e:this.plugin.settings.autoSaveInterval)*6e4;this.plugin.settings.autoBackupAfterFileChange?e===0?this.doAutoCommitAndSync():this.plugin.autoCommitDebouncer=(0,tM.debounce)(()=>this.doAutoCommitAndSync(),r,!0):(r>2147483647&&(r=2147483647),this.timeoutIDCommitAndSync=window.setTimeout(()=>this.doAutoCommitAndSync(),r))}doAutoCommitAndSync(){this.plugin.promiseQueue.addTask(async()=>{if(this.plugin.settings.setLastSaveToLastCommit){let r=await this.plugin.gitManager.getLastCommitTime();if(r){this.saveLastAuto(r,"backup");let n=this.diff(this.plugin.settings.autoSaveInterval,r);if(n>0)return this.startAutoCommitAndSync(n),!1}}let e=this.plugin.settings.autoCommitOnlyStaged;return this.plugin.settings.differentIntervalCommitAndPush?await this.plugin.commit({fromAuto:!0,onlyStaged:e}):await this.plugin.commitAndSync({fromAutoBackup:!0,onlyStaged:e}),!0},e=>{e!==!1&&(this.saveLastAuto(new Date,"backup"),this.startAutoCommitAndSync())})}startAutoPull(e){let r=(e!=null?e:this.plugin.settings.autoPullInterval)*6e4;r>2147483647&&(r=2147483647),this.timeoutIDPull=window.setTimeout(()=>this.doAutoPull(),r)}doAutoPull(){this.plugin.promiseQueue.addTask(()=>this.plugin.pullChangesFromRemote(),()=>{this.saveLastAuto(new Date,"pull"),this.startAutoPull()})}startAutoPush(e){let r=(e!=null?e:this.plugin.settings.autoPushInterval)*6e4;r>2147483647&&(r=2147483647),this.timeoutIDPush=window.setTimeout(()=>this.doAutoPush(),r)}doAutoPush(){this.plugin.promiseQueue.addTask(()=>this.plugin.push(),()=>{this.saveLastAuto(new Date,"push"),this.startAutoPush()})}clearAutoCommitAndSync(){var r;let e=!1;return this.timeoutIDCommitAndSync&&(window.clearTimeout(this.timeoutIDCommitAndSync),this.timeoutIDCommitAndSync=void 0,e=!0),this.plugin.autoCommitDebouncer&&((r=this.plugin.autoCommitDebouncer)==null||r.cancel(),this.plugin.autoCommitDebouncer=void 0,e=!0),e}clearAutoPull(){return this.timeoutIDPull?(window.clearTimeout(this.timeoutIDPull),this.timeoutIDPull=void 0,!0):!1}clearAutoPush(){return this.timeoutIDPush?(window.clearTimeout(this.timeoutIDPush),this.timeoutIDPush=void 0,!0):!1}diff(e,r){let i=e-Math.round((new Date().getTime()-r.getTime())/1e3/60);return Math.max(0,i)}};m();var bn=require("obsidian");m();var Hc=require("obsidian");async function rM(t,e,r){let n=await iM(e,r);if(n.result==="failure"){new Hc.Notice(n.reason);return}let{isGitHub:i,branch:a,repo:s,user:o,filePath:l}=n;if(i){let c=t.getCursor("from").line+1,u=t.getCursor("to").line+1;c===u?window.open(`https://github.com/${o}/${s}/blob/${a}/${l}?plain=1#L${c}`):window.open(`https://github.com/${o}/${s}/blob/${a}/${l}?plain=1#L${c}-L${u}`)}else new Hc.Notice("It seems like you are not using GitHub")}async function nM(t,e){let r=await iM(t,e);if(r.result==="failure"){new Hc.Notice(r.reason);return}let{isGitHub:n,branch:i,repo:a,user:s,filePath:o}=r;n?window.open(`https://github.com/${s}/${a}/commits/${i}/${o}`):new Hc.Notice("It seems like you are not using GitHub")}async function iM(t,e){let r=await e.branchInfo(),n=r.tracking,i=r.current,a,s=e.getRelativeRepoPath(t.path);if(e instanceof Ce){let l=await e.getSubmoduleOfFile(e.getRelativeRepoPath(t.path));if(l){s=l.relativeFilepath;let c=await e.git.cwd({path:l.submodule,root:!1}).status();if(n=c.tracking||void 0,i=c.current||void 0,n){let u=n.substring(0,n.indexOf("/")),f=await e.git.cwd({path:l.submodule,root:!1}).getConfig(`remote.${u}.url`,"local");if(f.value!=null)a=f.value;else return{result:"failure",reason:"Failed to get remote url of submodule"}}}}if(n==null)return{result:"failure",reason:"Remote branch is not configured"};if(i==null)return{result:"failure",reason:"Failed to get current branch name"};if(a==null){let l=n.substring(0,n.indexOf("/"));if(a=await e.getConfig(`remote.${l}.url`),a==null)return{result:"failure",reason:"Failed to get remote url"}}let o=a.match(/(?:^https:\/\/github\.com\/(.+)\/(.+?)(?:\.git)?$)|(?:^[a-zA-Z]+@github\.com:(.+)\/(.+?)(?:\.git)?$)/);if(o==null)return{result:"failure",reason:"Could not parse remote url"};{let[l,c,u,f,d]=o;return{result:"success",isGitHub:!!l,repo:u||d,user:c||f,branch:i,filePath:s}}}m();var aM=require("obsidian"),mh=class extends aM.FuzzySuggestModal{constructor(e,r){super(e.app),this.plugin=e,this.changedFiles=r,this.setPlaceholder("Not supported files will be opened by default app!")}getItems(){return this.changedFiles}getItemText(e){if(e.index=="U"&&e.workingDir=="U")return`Untracked | ${e.vaultPath}`;let r="",n="";return e.workingDir!=" "&&(r=`Working Dir: ${e.workingDir} `),e.index!=" "&&(n=`Index: ${e.index}`),`${r}${n} | ${e.vaultPath}`}onChooseItem(e,r){this.plugin.app.metadataCache.getFirstLinkpathDest(e.vaultPath,"")==null?this.app.openWithDefaultApp(e.vaultPath):this.plugin.app.workspace.openLinkText(e.vaultPath,"/")}};m();var sM=require("obsidian"),gh=class extends sM.Modal{constructor(r,n){super(r);this.content=n;this.resolve=null}openAndGetReslt(){return new Promise(r=>{this.resolve=r,this.open()})}onOpen(){let{contentEl:r,titleEl:n}=this;n.setText("Edit .gitignore");let i=r.createDiv(),a=i.createEl("textarea",{text:this.content,cls:["obsidian-git-textarea"],attr:{rows:10,cols:30,wrap:"off"}});i.createEl("button",{cls:["mod-cta","obsidian-git-center-button"],text:"Save"}).addEventListener("click",()=>{this.resolve(a.value),this.close()})}onClose(){let{contentEl:r}=this;r.empty(),this.resolve&&this.resolve(void 0)}};function oM(t){let e=t.app;t.addCommand({id:"edit-gitignore",name:"Edit .gitignore",callback:async()=>{let r=t.gitManager.getRelativeVaultPath(".gitignore");await e.vault.adapter.exists(r)||await e.vault.adapter.write(r,"");let n=await e.vault.adapter.read(r),a=await new gh(e,n).openAndGetReslt();a!==void 0&&(await e.vault.adapter.write(r,a),await t.refresh())}}),t.addCommand({id:"open-git-view",name:"Open source control view",callback:async()=>{var i;let r=e.workspace.getLeavesOfType(Ft.type),n;r.length===0?(n=(i=e.workspace.getRightLeaf(!1))!=null?i:e.workspace.getLeaf(),await n.setViewState({type:Ft.type})):n=r.first(),await e.workspace.revealLeaf(n),e.workspace.trigger("obsidian-git:refresh")}}),t.addCommand({id:"open-history-view",name:"Open history view",callback:async()=>{var i;let r=e.workspace.getLeavesOfType(Zr.type),n;r.length===0?(n=(i=e.workspace.getRightLeaf(!1))!=null?i:e.workspace.getLeaf(),await n.setViewState({type:Zr.type})):n=r.first(),await e.workspace.revealLeaf(n),e.workspace.trigger("obsidian-git:refresh")}}),t.addCommand({id:"open-diff-view",name:"Open diff view",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;{let i=t.gitManager.getRelativeRepoPath(n.path,!0);t.tools.openDiff({aFile:i,aRef:""})}}}),t.addCommand({id:"view-file-on-github",name:"Open file on GitHub",editorCallback:(r,{file:n})=>{if(n)return rM(r,n,t.gitManager)}}),t.addCommand({id:"view-history-on-github",name:"Open file history on GitHub",editorCallback:(r,{file:n})=>{if(n)return nM(n,t.gitManager)}}),t.addCommand({id:"pull",name:"Pull",callback:()=>t.promiseQueue.addTask(()=>t.pullChangesFromRemote())}),t.addCommand({id:"fetch",name:"Fetch",callback:()=>t.promiseQueue.addTask(()=>t.fetch())}),t.addCommand({id:"switch-to-remote-branch",name:"Switch to remote branch",callback:()=>t.promiseQueue.addTask(()=>t.switchRemoteBranch())}),t.addCommand({id:"add-to-gitignore",name:"Add file to .gitignore",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;t.addFileToGitignore(n.path,n instanceof bn.TFolder).catch(i=>t.displayError(i))}}),t.addCommand({id:"push",name:"Commit-and-sync",callback:()=>t.promiseQueue.addTask(()=>t.commitAndSync({fromAutoBackup:!1}))}),t.addCommand({id:"backup-and-close",name:"Commit-and-sync and then close Obsidian",callback:()=>t.promiseQueue.addTask(async()=>{await t.commitAndSync({fromAutoBackup:!1}),window.close()})}),t.addCommand({id:"commit-push-specified-message",name:"Commit-and-sync with specific message",callback:()=>t.promiseQueue.addTask(()=>t.commitAndSync({fromAutoBackup:!1,requestCustomMessage:!0}))}),t.addCommand({id:"commit",name:"Commit all changes",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1}))}),t.addCommand({id:"commit-specified-message",name:"Commit all changes with specific message",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0}))}),t.addCommand({id:"commit-smart",name:"Commit",callback:()=>t.promiseQueue.addTask(async()=>{let n=(await t.updateCachedStatus()).staged.length>0;return t.commit({fromAuto:!1,requestCustomMessage:!1,onlyStaged:n})})}),t.addCommand({id:"commit-staged",name:"Commit staged",checkCallback:function(r){if(r)return!1;t.promiseQueue.addTask(async()=>t.commit({fromAuto:!1,requestCustomMessage:!1}))}}),bn.Platform.isDesktopApp&&t.addCommand({id:"commit-amend-staged-specified-message",name:"Amend staged",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:!0,amend:!0}))}),t.addCommand({id:"commit-smart-specified-message",name:"Commit with specific message",callback:()=>t.promiseQueue.addTask(async()=>{let n=(await t.updateCachedStatus()).staged.length>0;return t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:n})})}),t.addCommand({id:"commit-staged-specified-message",name:"Commit staged with specific message",checkCallback:function(r){return r?!1:t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:!0}))}}),t.addCommand({id:"push2",name:"Push",callback:()=>t.promiseQueue.addTask(()=>t.push())}),t.addCommand({id:"stage-current-file",name:"Stage current file",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;t.promiseQueue.addTask(()=>t.stageFile(n))}}),t.addCommand({id:"unstage-current-file",name:"Unstage current file",checkCallback:r=>{let n=e.workspace.getActiveFile();if(r)return n!==null;t.promiseQueue.addTask(()=>t.unstageFile(n))}}),t.addCommand({id:"edit-remotes",name:"Edit remotes",callback:()=>t.editRemotes().catch(r=>t.displayError(r))}),t.addCommand({id:"remove-remote",name:"Remove remote",callback:()=>t.removeRemote().catch(r=>t.displayError(r))}),t.addCommand({id:"set-upstream-branch",name:"Set upstream branch",callback:()=>t.setUpstreamBranch().catch(r=>t.displayError(r))}),t.addCommand({id:"delete-repo",name:"CAUTION: Delete repository",callback:async()=>{await e.vault.adapter.exists(`${t.settings.basePath}/.git`)?await new ze(t,{options:["NO","YES"],placeholder:"Do you really want to delete the repository (.git directory)? plugin action cannot be undone.",onlySelection:!0}).openAndGetResult()==="YES"&&(await e.vault.adapter.rmdir(`${t.settings.basePath}/.git`,!0),new bn.Notice("Successfully deleted repository. Reloading plugin..."),t.unloadPlugin(),await t.init({fromReload:!0})):new bn.Notice("No repository found")}}),t.addCommand({id:"init-repo",name:"Initialize a new repo",callback:()=>t.createNewRepo().catch(r=>t.displayError(r))}),t.addCommand({id:"clone-repo",name:"Clone an existing remote repo",callback:()=>t.cloneNewRepo().catch(r=>t.displayError(r))}),t.addCommand({id:"list-changed-files",name:"List changed files",callback:async()=>{if(await t.isAllInitialized())try{let r=await t.updateCachedStatus();if(r.changed.length+r.staged.length>500){t.displayError("Too many changes to display");return}new mh(t,r.all).open()}catch(r){t.displayError(r)}}}),t.addCommand({id:"switch-branch",name:"Switch branch",callback:()=>{t.switchBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"create-branch",name:"Create new branch",callback:()=>{t.createBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"delete-branch",name:"Delete branch",callback:()=>{t.deleteBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"discard-all",name:"CAUTION: Discard all changes",callback:async()=>{let r=await t.discardAll();switch(r){case"discard":new bn.Notice("Discarded all changes in tracked files.");break;case"delete":new bn.Notice("Discarded all files.");break;case!1:break;default:Ud(r)}}}),t.addCommand({id:"pause-automatic-routines",name:"Pause/Resume automatic routines",callback:()=>{let r=!t.localStorage.getPausedAutomatics();t.localStorage.setPausedAutomatics(r),r?(t.automaticsManager.unload(),new bn.Notice("Paused automatic routines.")):(t.automaticsManager.reload("commit","push","pull"),new bn.Notice("Resumed automatic routines."))}}),t.addCommand({id:"raw-command",name:"Raw command",checkCallback:r=>{let n=t.gitManager;if(r)return n instanceof Ce;t.tools.runRawCommand().catch(i=>t.displayError(i))}}),t.addCommand({id:"toggle-line-author-info",name:"Toggle line author information",callback:()=>{var r;return(r=t.settingsTab)==null?void 0:r.configureLineAuthorShowStatus(!t.settings.lineAuthor.show)}})}m();var vh=class{constructor(e){this.plugin=e;this.prefix=this.plugin.manifest.id+":",this.app=e.app}migrate(){let e=["password","hostname","conflict","lastAutoPull","lastAutoBackup","lastAutoPush","gitPath","pluginDisabled"];for(let r of e){let n=localStorage.getItem(this.prefix+r);this.app.loadLocalStorage(this.prefix+r)==null&&n!=null&&n!=null&&(this.app.saveLocalStorage(this.prefix+r,n),localStorage.removeItem(this.prefix+r))}}getPassword(){return this.app.loadLocalStorage(this.prefix+"password")}setPassword(e){return this.app.saveLocalStorage(this.prefix+"password",e)}getUsername(){return this.app.loadLocalStorage(this.prefix+"username")}setUsername(e){return this.app.saveLocalStorage(this.prefix+"username",e)}getHostname(){return this.app.loadLocalStorage(this.prefix+"hostname")}setHostname(e){return this.app.saveLocalStorage(this.prefix+"hostname",e)}getConflict(){return this.app.loadLocalStorage(this.prefix+"conflict")=="true"}setConflict(e){return this.app.saveLocalStorage(this.prefix+"conflict",`${e}`)}getLastAutoPull(){return this.app.loadLocalStorage(this.prefix+"lastAutoPull")}setLastAutoPull(e){return this.app.saveLocalStorage(this.prefix+"lastAutoPull",e)}getLastAutoBackup(){return this.app.loadLocalStorage(this.prefix+"lastAutoBackup")}setLastAutoBackup(e){return this.app.saveLocalStorage(this.prefix+"lastAutoBackup",e)}getLastAutoPush(){return this.app.loadLocalStorage(this.prefix+"lastAutoPush")}setLastAutoPush(e){return this.app.saveLocalStorage(this.prefix+"lastAutoPush",e)}getGitPath(){return this.app.loadLocalStorage(this.prefix+"gitPath")}setGitPath(e){return this.app.saveLocalStorage(this.prefix+"gitPath",e)}getPATHPaths(){var e,r;return(r=(e=this.app.loadLocalStorage(this.prefix+"PATHPaths"))==null?void 0:e.split(":"))!=null?r:[]}setPATHPaths(e){return this.app.saveLocalStorage(this.prefix+"PATHPaths",e.join(":"))}getEnvVars(){var e;return JSON.parse((e=this.app.loadLocalStorage(this.prefix+"envVars"))!=null?e:"[]")}setEnvVars(e){return this.app.saveLocalStorage(this.prefix+"envVars",JSON.stringify(e))}getPluginDisabled(){return this.app.loadLocalStorage(this.prefix+"pluginDisabled")=="true"}setPluginDisabled(e){return this.app.saveLocalStorage(this.prefix+"pluginDisabled",`${e}`)}getPausedAutomatics(){return this.app.loadLocalStorage(this.prefix+"pausedAutomatics")=="true"}setPausedAutomatics(e){return this.app.saveLocalStorage(this.prefix+"pausedAutomatics",`${e}`)}};m();var Ho=require("obsidian");var Uc=class{constructor(e){this.plugin=e}async hasTooBigFiles(e){let r=await this.plugin.gitManager.branchInfo(),n=r.tracking?ki(r.tracking)[0]:null;if(!n)return!1;let i=await this.plugin.gitManager.getRemoteUrl(n);if(i!=null&&i.includes("github.com")){let a=[],s=this.plugin.gitManager;for(let o of e){let l=this.plugin.app.vault.getAbstractFileByPath(o.vaultPath),c=!1;if(l instanceof Ho.TFile)l.stat.size>=1e8&&(c=!0);else{let u=await this.plugin.app.vault.adapter.stat(o.vaultPath);u&&u.size>=1e8&&(c=!0)}if(c){let u=!1;s instanceof Ce&&(u=await s.isFileTrackedByLFS(o.path)),u||a.push(o)}}if(a.length>0)return this.plugin.displayError(`Aborted commit, because the following files are too big: +- ${a.map(o=>o.vaultPath).join(` +- `)} +Please remove them or add to .gitignore.`),!0}return!1}async writeAndOpenFile(e){e!==void 0&&await this.plugin.app.vault.adapter.write(To,e);let r=!1;this.plugin.app.workspace.iterateAllLeaves(n=>{n.getDisplayText()!=""&&To.startsWith(n.getDisplayText())&&(r=!0)}),r||await this.plugin.app.workspace.openLinkText(To,"/",!0)}openDiff({aFile:e,bFile:r,aRef:n,bRef:i,event:a}){var l,c;let s=this.plugin.settings.diffStyle;Ho.Platform.isMobileApp&&(s="git_unified");let o={aFile:e,bFile:r!=null?r:e,aRef:n,bRef:i};s=="split"?(l=vn(this.plugin.app,a))==null||l.setViewState({type:ca.type,active:!0,state:o}):s=="git_unified"&&((c=vn(this.plugin.app,a))==null||c.setViewState({type:ua.type,active:!0,state:o}))}async runRawCommand(){let e=this.plugin.gitManager;if(!(e instanceof Ce))return;let n=await new ze(this.plugin,{placeholder:"push origin master",allowEmpty:!1}).openAndGetResult();n!==void 0&&this.plugin.promiseQueue.addTask(async()=>{let i=new Ho.Notice(`Running '${n}'...`,999999);try{let a=await e.rawCommand(n);a?(i.setMessage(a),window.setTimeout(()=>i.hide(),5e3)):i.hide()}catch(a){throw i.hide(),a}})}};m();m();m();m();var Ke;(function(t){t.INSERT="insert",t.DELETE="delete",t.CONTEXT="context"})(Ke||(Ke={}));var lM={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"},cM={LINES:"lines",WORDS:"words",NONE:"none"},uM={WORD:"word",CHAR:"char"},as;(function(t){t.AUTO="auto",t.DARK="dark",t.LIGHT="light"})(as||(as={}));m();var EU=["-","[","]","/","{","}","(",")","*","+","?",".","\\","^","$","|"],AU=RegExp("["+EU.join("\\")+"]","g");function fM(t){return t.replace(AU,"\\$&")}function Hv(t){return t&&t.replace(/\\/g,"/")}function dM(t){let e,r,n,i=0;for(e=0,n=t.length;e1?r[r.length-1]:e}function pM(t,e){return e.reduce((r,n)=>r||t.startsWith(n),!1)}var mM=["a/","b/","i/","w/","c/","o/"];function ga(t,e,r){let n=r!==void 0?[...mM,r]:mM,i=e?new RegExp(`^${fM(e)} "?(.+?)"?$`):new RegExp('^"?(.+?)"?$'),[,a=""]=i.exec(t)||[],s=n.find(l=>a.indexOf(l)===0);return(s?a.slice(s.length):a).replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/,"")}function kU(t,e){return ga(t,"---",e)}function TU(t,e){return ga(t,"+++",e)}function gM(t,e={}){let r=[],n=null,i=null,a=null,s=null,o=null,l=null,c=null,u="--- ",f="+++ ",d="@@",h=/^old mode (\d{6})/,p=/^new mode (\d{6})/,g=/^deleted file mode (\d{6})/,v=/^new file mode (\d{6})/,y=/^copy from "?(.+)"?/,b=/^copy to "?(.+)"?/,E=/^rename from "?(.+)"?/,S=/^rename to "?(.+)"?/,A=/^similarity index (\d+)%/,k=/^dissimilarity index (\d+)%/,w=/^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/,x=/^Binary files (.*) and (.*) differ/,_=/^GIT binary patch/,T=/^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/,C=/^mode (\d{6}),(\d{6})\.\.(\d{6})/,I=/^new file mode (\d{6})/,L=/^deleted file mode (\d{6}),(\d{6})/,F=t.replace(/\\ No newline at end of file/g,"").replace(/\r\n?/g,` +`).split(` +`);function J(){i!==null&&n!==null&&(n.blocks.push(i),i=null)}function de(){n!==null&&(!n.oldName&&l!==null&&(n.oldName=l),!n.newName&&c!==null&&(n.newName=c),n.newName&&(r.push(n),n=null)),l=null,c=null}function le(){J(),de(),n={blocks:[],deletedLines:0,addedLines:0}}function ce(N){J();let q;n!==null&&((q=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(N))?(n.isCombined=!1,a=parseInt(q[1],10),o=parseInt(q[2],10)):(q=/^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(N))?(n.isCombined=!0,a=parseInt(q[1],10),s=parseInt(q[2],10),o=parseInt(q[3],10)):(N.startsWith(d)&&console.error("Failed to parse lines, starting in 0!"),a=0,o=0,n.isCombined=!1)),i={lines:[],oldStartLine:a,oldStartLine2:s,newStartLine:o,header:N}}function Te(N){if(n===null||i===null||a===null||o===null)return;let q={content:N},B=n.isCombined?["+ "," +","++"]:["+"],Fe=n.isCombined?["- "," -","--"]:["-"];pM(N,B)?(n.addedLines++,q.type=Ke.INSERT,q.oldNumber=void 0,q.newNumber=o++):pM(N,Fe)?(n.deletedLines++,q.type=Ke.DELETE,q.oldNumber=a++,q.newNumber=void 0):(q.type=Ke.CONTEXT,q.oldNumber=a++,q.newNumber=o++),i.lines.push(q)}function ne(N,q){let B=q;for(;B{if(!N||N.startsWith("*"))return;let B,Fe=F[q-1],lr=F[q+1],Ut=F[q+2];if(N.startsWith("diff --git")||N.startsWith("diff --combined")){if(le(),(B=/^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/.exec(N))&&(l=ga(B[1],void 0,e.dstPrefix),c=ga(B[2],void 0,e.srcPrefix)),n===null)throw new Error("Where is my file !!!");n.isGitDiff=!0;return}if(N.startsWith("Binary files")&&!(n!=null&&n.isGitDiff)){if(le(),(B=/^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/.exec(N))&&(l=ga(B[1],void 0,e.dstPrefix),c=ga(B[2],void 0,e.srcPrefix)),n===null)throw new Error("Where is my file !!!");n.isBinary=!0;return}if((!n||!n.isGitDiff&&n&&N.startsWith(u)&&lr.startsWith(f)&&Ut.startsWith(d))&&le(),n!=null&&n.isTooBig)return;if(n&&(typeof e.diffMaxChanges=="number"&&n.addedLines+n.deletedLines>e.diffMaxChanges||typeof e.diffMaxLineLength=="number"&&N.length>e.diffMaxLineLength)){n.isTooBig=!0,n.addedLines=0,n.deletedLines=0,n.blocks=[],i=null;let Oe=typeof e.diffTooBigMessage=="function"?e.diffTooBigMessage(r.length):"Diff too big to be displayed";ce(Oe);return}if(N.startsWith(u)&&lr.startsWith(f)||N.startsWith(f)&&Fe.startsWith(u)){if(n&&!n.oldName&&N.startsWith("--- ")&&(B=kU(N,e.srcPrefix))){n.oldName=B,n.language=hM(n.oldName,n.language);return}if(n&&!n.newName&&N.startsWith("+++ ")&&(B=TU(N,e.dstPrefix))){n.newName=B,n.language=hM(n.newName,n.language);return}}if(n&&(N.startsWith(d)||n.isGitDiff&&n.oldName&&n.newName&&!i)){ce(N);return}if(i&&(N.startsWith("+")||N.startsWith("-")||N.startsWith(" "))){Te(N);return}let X=!ne(N,q);if(n===null)throw new Error("Where is my file !!!");(B=h.exec(N))?n.oldMode=B[1]:(B=p.exec(N))?n.newMode=B[1]:(B=g.exec(N))?(n.deletedFileMode=B[1],n.isDeleted=!0):(B=v.exec(N))?(n.newFileMode=B[1],n.isNew=!0):(B=y.exec(N))?(X&&(n.oldName=B[1]),n.isCopy=!0):(B=b.exec(N))?(X&&(n.newName=B[1]),n.isCopy=!0):(B=E.exec(N))?(X&&(n.oldName=B[1]),n.isRename=!0):(B=S.exec(N))?(X&&(n.newName=B[1]),n.isRename=!0):(B=x.exec(N))?(n.isBinary=!0,n.oldName=ga(B[1],void 0,e.srcPrefix),n.newName=ga(B[2],void 0,e.dstPrefix),ce("Binary file")):_.test(N)?(n.isBinary=!0,ce(N)):(B=A.exec(N))?n.unchangedPercentage=parseInt(B[1],10):(B=k.exec(N))?n.changedPercentage=parseInt(B[1],10):(B=w.exec(N))?(n.checksumBefore=B[1],n.checksumAfter=B[2],B[3]&&(n.mode=B[3])):(B=T.exec(N))?(n.checksumBefore=[B[2],B[3]],n.checksumAfter=B[1]):(B=C.exec(N))?(n.oldMode=[B[2],B[3]],n.newMode=B[1]):(B=I.exec(N))?(n.newFileMode=B[1],n.isNew=!0):(B=L.exec(N))&&(n.deletedFileMode=B[1],n.isDeleted=!0)}),J(),de(),r}m();m();m();function PU(t,e){if(t.length===0)return e.length;if(e.length===0)return t.length;let r=[],n;for(n=0;n<=e.length;n++)r[n]=[n];let i;for(i=0;i<=t.length;i++)r[0][i]=i;for(n=1;n<=e.length;n++)for(i=1;i<=t.length;i++)e.charAt(n-1)===t.charAt(i-1)?r[n][i]=r[n-1][i-1]:r[n][i]=Math.min(r[n-1][i-1]+1,Math.min(r[n][i-1]+1,r[n-1][i]+1));return r[e.length][t.length]}function Uo(t){return(e,r)=>{let n=t(e).trim(),i=t(r).trim();return PU(n,i)/(n.length+i.length)}}function Go(t){function e(n,i,a=new Map){let s=1/0,o;for(let l=0;l0||o.indexB>0)&&(E=v.concat(E)),(n.length>d||i.length>h)&&(E=E.concat(b)),E}return r}var Dt={INSERTS:"d2h-ins",DELETES:"d2h-del",CONTEXT:"d2h-cntx",INFO:"d2h-info",INSERT_CHANGES:"d2h-ins d2h-change",DELETE_CHANGES:"d2h-del d2h-change"},ss={matching:cM.NONE,matchWordsThreshold:.25,maxLineLengthHighlight:1e4,diffStyle:uM.WORD,colorScheme:as.LIGHT},Zn="/",vM=Uo(t=>t.value),RU=Go(vM);function Gv(t){return t.indexOf("dev/null")!==-1}function MU(t){return t.replace(/(]*>((.|\n)*?)<\/ins>)/g,"")}function OU(t){return t.replace(/(]*>((.|\n)*?)<\/del>)/g,"")}function zo(t){switch(t){case Ke.CONTEXT:return Dt.CONTEXT;case Ke.INSERT:return Dt.INSERTS;case Ke.DELETE:return Dt.DELETES}}function Vo(t){switch(t){case as.DARK:return"d2h-dark-color-scheme";case as.AUTO:return"d2h-auto-color-scheme";case as.LIGHT:default:return"d2h-light-color-scheme"}}function IU(t){return t?2:1}function va(t){return t.slice(0).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}function en(t,e,r=!0){let n=IU(e);return{prefix:t.substring(0,n),content:r?va(t.substring(n)):t.substring(n)}}function os(t){let e=Hv(t.oldName),r=Hv(t.newName);if(e!==r&&!Gv(e)&&!Gv(r)){let n=[],i=[],a=e.split(Zn),s=r.split(Zn),o=a.length,l=s.length,c=0,u=o-1,f=l-1;for(;cc&&f>c&&a[u]===s[f];)i.unshift(s[f]),u-=1,f-=1;let d=n.join(Zn),h=i.join(Zn),p=a.slice(c,u+1).join(Zn),g=s.slice(c,f+1).join(Zn);return d.length&&h.length?d+Zn+"{"+p+" \u2192 "+g+"}"+Zn+h:d.length?d+Zn+"{"+p+" \u2192 "+g+"}":h.length?"{"+p+" \u2192 "+g+"}"+Zn+h:e+" \u2192 "+r}else return Gv(r)?e:r}function Wo(t){return`d2h-${dM(os(t)).toString().slice(-6)}`}function qo(t){let e="file-changed";return t.isRename||t.isCopy?e="file-renamed":t.isNew?e="file-added":t.isDeleted?e="file-deleted":t.newName!==t.oldName&&(e="file-renamed"),e}function wh(t,e,r,n={}){let{matching:i,maxLineLengthHighlight:a,matchWordsThreshold:s,diffStyle:o}=Object.assign(Object.assign({},ss),n),l=en(t,r,!1),c=en(e,r,!1);if(l.content.length>a||c.content.length>a)return{oldLine:{prefix:l.prefix,content:va(l.content)},newLine:{prefix:c.prefix,content:va(c.content)}};let u=o==="char"?E3(l.content,c.content):k3(l.content,c.content),f=[];if(o==="word"&&i==="words"){let h=u.filter(v=>v.removed),p=u.filter(v=>v.added);RU(p,h).forEach(v=>{v[0].length===1&&v[1].length===1&&vM(v[0][0],v[1][0]){let g=p.added?"ins":p.removed?"del":null,v=f.indexOf(p)>-1?' class="d2h-change"':"",y=va(p.value);return g!==null?`${h}<${g}${v}>${y}`:`${h}${y}`},"");return{oldLine:{prefix:l.prefix,content:MU(d)},newLine:{prefix:c.prefix,content:OU(d)}}}var yM="file-summary",$U="icon",FU={colorScheme:ss.colorScheme},bh=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},FU),r)}render(e){let r=e.map(n=>this.hoganUtils.render(yM,"line",{fileHtmlId:Wo(n),oldName:n.oldName,newName:n.newName,fileName:os(n),deletedLines:"-"+n.deletedLines,addedLines:"+"+n.addedLines},{fileIcon:this.hoganUtils.template($U,qo(n))})).join(` +`);return this.hoganUtils.render(yM,"wrapper",{colorScheme:Vo(this.config.colorScheme),filesNumber:e.length,files:r})}};m();var Vv=Object.assign(Object.assign({},ss),{renderNothingWhenEmpty:!1,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200}),Gc="generic",wM="line-by-line",DU="icon",LU="tag",zc=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},Vv),r)}render(e){let r=e.map(n=>{let i;return n.blocks.length?i=this.generateFileHtml(n):i=this.generateEmptyDiff(),this.makeFileDiffHtml(n,i)}).join(` +`);return this.hoganUtils.render(Gc,"wrapper",{colorScheme:Vo(this.config.colorScheme),content:r})}makeFileDiffHtml(e,r){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&e.blocks.length===0)return"";let n=this.hoganUtils.template(wM,"file-diff"),i=this.hoganUtils.template(Gc,"file-path"),a=this.hoganUtils.template(DU,"file"),s=this.hoganUtils.template(LU,qo(e));return n.render({file:e,fileHtmlId:Wo(e),diffs:r,filePath:i.render({fileDiffName:os(e)},{fileIcon:a,fileTag:s})})}generateEmptyDiff(){return this.hoganUtils.render(Gc,"empty-diff",{contentClass:"d2h-code-line",CSSLineClass:Dt})}generateFileHtml(e){let r=Go(Uo(n=>en(n.content,e.isCombined).content));return e.blocks.map(n=>{let i=this.hoganUtils.render(Gc,"block-header",{CSSLineClass:Dt,blockHeader:e.isTooBig?n.header:va(n.header),lineClass:"d2h-code-linenumber",contentClass:"d2h-code-line"});return this.applyLineGroupping(n).forEach(([a,s,o])=>{if(s.length&&o.length&&!a.length)this.applyRematchMatching(s,o,r).map(([l,c])=>{let{left:u,right:f}=this.processChangedLines(e,e.isCombined,l,c);i+=u,i+=f});else if(a.length)a.forEach(l=>{let{prefix:c,content:u}=en(l.content,e.isCombined);i+=this.generateSingleLineHtml(e,{type:Dt.CONTEXT,prefix:c,content:u,oldNumber:l.oldNumber,newNumber:l.newNumber})});else if(s.length||o.length){let{left:l,right:c}=this.processChangedLines(e,e.isCombined,s,o);i+=l,i+=c}else console.error("Unknown state reached while processing groups of lines",a,s,o)}),i}).join(` +`)}applyLineGroupping(e){let r=[],n=[],i=[];for(let a=0;a0)&&(r.push([[],n,i]),n=[],i=[]),s.type===Ke.CONTEXT?r.push([[s],[],[]]):s.type===Ke.INSERT&&n.length===0?r.push([[],[],[s]]):s.type===Ke.INSERT&&n.length>0?i.push(s):s.type===Ke.DELETE&&n.push(s)}return(n.length||i.length)&&(r.push([[],n,i]),n=[],i=[]),r}applyRematchMatching(e,r,n){let i=e.length*r.length,a=yh(e.concat(r).map(o=>o.content.length));return i{let i;return n.blocks.length?i=this.generateFileHtml(n):i=this.generateEmptyDiff(),this.makeFileDiffHtml(n,i)}).join(` +`);return this.hoganUtils.render(Vc,"wrapper",{colorScheme:Vo(this.config.colorScheme),content:r})}makeFileDiffHtml(e,r){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&e.blocks.length===0)return"";let n=this.hoganUtils.template(jU,"file-diff"),i=this.hoganUtils.template(Vc,"file-path"),a=this.hoganUtils.template(NU,"file"),s=this.hoganUtils.template(BU,qo(e));return n.render({file:e,fileHtmlId:Wo(e),diffs:r,filePath:i.render({fileDiffName:os(e)},{fileIcon:a,fileTag:s})})}generateEmptyDiff(){return{right:"",left:this.hoganUtils.render(Vc,"empty-diff",{contentClass:"d2h-code-side-line",CSSLineClass:Dt})}}generateFileHtml(e){let r=Go(Uo(n=>en(n.content,e.isCombined).content));return e.blocks.map(n=>{let i={left:this.makeHeaderHtml(n.header,e),right:this.makeHeaderHtml("")};return this.applyLineGroupping(n).forEach(([a,s,o])=>{if(s.length&&o.length&&!a.length)this.applyRematchMatching(s,o,r).map(([l,c])=>{let{left:u,right:f}=this.processChangedLines(e.isCombined,l,c);i.left+=u,i.right+=f});else if(a.length)a.forEach(l=>{let{prefix:c,content:u}=en(l.content,e.isCombined),{left:f,right:d}=this.generateLineHtml({type:Dt.CONTEXT,prefix:c,content:u,number:l.oldNumber},{type:Dt.CONTEXT,prefix:c,content:u,number:l.newNumber});i.left+=f,i.right+=d});else if(s.length||o.length){let{left:l,right:c}=this.processChangedLines(e.isCombined,s,o);i.left+=l,i.right+=c}else console.error("Unknown state reached while processing groups of lines",a,s,o)}),i}).reduce((n,i)=>({left:n.left+i.left,right:n.right+i.right}),{left:"",right:""})}applyLineGroupping(e){let r=[],n=[],i=[];for(let a=0;a0)&&(r.push([[],n,i]),n=[],i=[]),s.type===Ke.CONTEXT?r.push([[s],[],[]]):s.type===Ke.INSERT&&n.length===0?r.push([[],[],[s]]):s.type===Ke.INSERT&&n.length>0?i.push(s):s.type===Ke.DELETE&&n.push(s)}return(n.length||i.length)&&(r.push([[],n,i]),n=[],i=[]),r}applyRematchMatching(e,r,n){let i=e.length*r.length,a=yh(e.concat(r).map(o=>o.content.length));return i'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(n.rp("'),n.b(n.v(n.f("fileName",t,e,0))),n.b(""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(n.v(n.f("addedLines",t,e,0))),n.b(""),n.b(` +`+r),n.b(' '),n.b(n.v(n.f("deletedLines",t,e,0))),n.b(""),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{"'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' Files changed ('),n.b(n.v(n.f("filesNumber",t,e,0))),n.b(")"),n.b(` +`+r),n.b(' hide'),n.b(` +`+r),n.b(' show'),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
    '),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("files",t,e,0))),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-block-header"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b(""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b('
'),n.s(n.f("blockHeader",t,e,1),t,e,0,156,173,"{{ }}")&&(n.rs(t,e,function(i,a,s){s.b(s.t(s.f("blockHeader",i,a,0)))}),t.pop()),n.s(n.f("blockHeader",t,e,1),t,e,1,0,0,"")||n.b(" "),n.b("
"),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-empty-diff"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b(""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(" File without changes"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-file-path"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b(''),n.b(` +`+r),n.b(n.rp("'),n.b(n.v(n.f("fileDiffName",t,e,0))),n.b(""),n.b(` +`+r),n.b(n.rp(""),n.b(` +`+r),n.b('"),n.fl()},partials:{""),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("lineNumber",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.s(n.f("prefix",t,e,1),t,e,0,162,238,"{{ }}")&&(n.rs(t,e,function(i,a,s){s.b(' '),s.b(s.t(s.f("prefix",i,a,0))),s.b(""),s.b(` +`+r)}),t.pop()),n.s(n.f("prefix",t,e,1),t,e,1,0,0,"")||(n.b('  '),n.b(` +`+r)),n.s(n.f("content",t,e,1),t,e,0,371,445,"{{ }}")&&(n.rs(t,e,function(i,a,s){s.b(' '),s.b(s.t(s.f("content",i,a,0))),s.b(""),s.b(` +`+r)}),t.pop()),n.s(n.f("content",t,e,1),t,e,1,0,0,"")||(n.b('
'),n.b(` +`+r)),n.b("
"),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b(""),n.fl()},partials:{},subs:{}});dt["generic-wrapper"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("content",t,e,0))),n.b(` +`+r),n.b("
"),n.fl()},partials:{},subs:{}});dt["icon-file-added"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file-changed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file-deleted"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file-renamed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["icon-file"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('"),n.fl()},partials:{},subs:{}});dt["line-by-line-file-diff"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("filePath",t,e,0))),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("diffs",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.fl()},partials:{},subs:{}});dt["line-by-line-numbers"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(n.v(n.f("oldNumber",t,e,0))),n.b("
"),n.b(` +`+r),n.b('
'),n.b(n.v(n.f("newNumber",t,e,0))),n.b("
"),n.fl()},partials:{},subs:{}});dt["side-by-side-file-diff"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(" "),n.b(n.t(n.f("filePath",t,e,0))),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.d("diffs.left",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b('
'),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(' '),n.b(` +`+r),n.b(" "),n.b(n.t(n.d("diffs.right",t,e,0))),n.b(` +`+r),n.b(" "),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.b(` +`+r),n.b("
"),n.fl()},partials:{},subs:{}});dt["tag-file-added"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('ADDED'),n.fl()},partials:{},subs:{}});dt["tag-file-changed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('CHANGED'),n.fl()},partials:{},subs:{}});dt["tag-file-deleted"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('DELETED'),n.fl()},partials:{},subs:{}});dt["tag-file-renamed"]=new ht.Template({code:function(t,e,r){var n=this;return n.b(r=r||""),n.b('RENAMED'),n.fl()},partials:{},subs:{}});var qc=class{constructor({compiledTemplates:e={},rawTemplates:r={}}){let n=Object.entries(r).reduce((i,[a,s])=>{let o=Kv.compile(s,{asString:!1});return Object.assign(Object.assign({},i),{[a]:o})},{});this.preCompiledTemplates=Object.assign(Object.assign(Object.assign({},dt),e),n)}static compile(e){return Kv.compile(e,{asString:!1})}render(e,r,n,i,a){let s=this.templateKey(e,r);try{return this.preCompiledTemplates[s].render(n,i,a)}catch(o){throw new Error(`Could not find template to render '${s}'`)}}template(e,r){return this.preCompiledTemplates[this.templateKey(e,r)]}templateKey(e,r){return`${e}-${r}`}};var UU=Object.assign(Object.assign(Object.assign({},Vv),Wv),{outputFormat:lM.LINE_BY_LINE,drawFileList:!0});function SM(t,e={}){let r=Object.assign(Object.assign({},UU),e),n=typeof t=="string"?gM(t,r):t,i=new qc(r),{colorScheme:a}=r,s={colorScheme:a},o=r.drawFileList?new bh(i,s).render(n):"",l=r.outputFormat==="side-by-side"?new Wc(i,r).render(n):new zc(i,r).render(n);return o+l}var xh=require("obsidian");var ls=class extends xh.ItemView{constructor(r,n){super(r);this.plugin=n;this.gettingDiff=!1;this.parser=new DOMParser,this.navigation=!0,this.gitRefreshRef=this.app.workspace.on("obsidian-git:status-changed",()=>{this.refresh().catch(console.error)})}getViewType(){return ua.type}getDisplayText(){var r;if(((r=this.state)==null?void 0:r.bFile)!=null){let n=this.state.bFile.split("/").last();return n!=null&&n.endsWith(".md")&&(n=n.slice(0,-3)),`Diff: ${n}`}return ua.name}getIcon(){return ua.icon}async setState(r,n){this.state=r,xh.Platform.isMobile&&(this.leaf.view.titleEl.textContent=this.getDisplayText()),await this.refresh()}getState(){return this.state}onClose(){return this.app.workspace.offref(this.gitRefreshRef),this.app.workspace.offref(this.gitViewRefreshRef),super.onClose()}async onOpen(){return await this.refresh(),super.onOpen()}async refresh(){var r;if((r=this.state)!=null&&r.bFile&&!this.gettingDiff&&this.plugin.gitManager){this.gettingDiff=!0;try{let n=await this.plugin.gitManager.getDiffString(this.state.bFile,this.state.aRef=="HEAD",this.state.bRef);this.contentEl.empty();let i=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);if(!n){if(this.plugin.gitManager instanceof Ce&&await this.plugin.gitManager.isTracked(this.state.bFile))n=[`--- ${this.state.aFile}`,`+++ ${this.state.bFile}`,""].join(` +`);else if(await this.app.vault.adapter.exists(i)){let a=await this.app.vault.adapter.read(i);n=[...`--- /dev/null ++++ ${this.state.bFile} +@@ -0,0 +1,${a.split(` +`).length} @@`.split(` +`),...a.split(` +`).map(o=>`+${o}`)].join(` +`)}}if(n){let a=this.parser.parseFromString(SM(n),"text/html").querySelector(".d2h-file-diff");this.contentEl.append(a)}else{let a=this.contentEl.createDiv({cls:"obsidian-git-center"});a.createSpan({text:"\u26A0\uFE0F",attr:{style:"font-size: 2em"}}),a.createEl("br"),a.createSpan({text:"File not found: "+this.state.bFile})}}finally{this.gettingDiff=!1}}}};m();var Qo=require("obsidian");var el=require("@codemirror/commands");m();var Ie=require("@codemirror/view"),ke=require("@codemirror/state");m();var Zv="\u037C",EM=typeof Symbol=="undefined"?"__"+Zv:Symbol.for(Zv),Jv=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),AM=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},Sh=class{constructor(e,r){this.rules=[];let{finish:n}=r||{};function i(s){return/^@/.test(s)?[s]:s.split(/,\s*/)}function a(s,o,l,c){let u=[],f=/^@(\w+)\b/.exec(s[0]),d=f&&f[1]=="keyframes";if(f&&o==null)return l.push(s[0]+";");for(let h in o){let p=o[h];if(/&/.test(h))a(h.split(/,\s*/).map(g=>s.map(v=>g.replace(/&/,v))).reduce((g,v)=>g.concat(v)),p,l);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+h+") should be a primitive value.");a(i(h),p,u,d)}else p!=null&&u.push(h.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(u.length||d)&&l.push((n&&!f&&!c?s.map(n):s).join(", ")+" {"+u.join(" ")+"}")}for(let s in e)a(i(s),e[s],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=AM[EM]||1;return AM[EM]=e+1,Zv+e.toString(36)}static mount(e,r,n){let i=e[Jv],a=n&&n.nonce;i?a&&i.setNonce(a):i=new Qv(e,a),i.mount(Array.isArray(r)?r:[r],e)}},kM=new Map,Qv=class{constructor(e,r){let n=e.ownerDocument||e,i=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let a=kM.get(n);if(a)return e[Jv]=a;this.sheet=new i.CSSStyleSheet,kM.set(n,this)}else this.styleTag=n.createElement("style"),r&&this.styleTag.setAttribute("nonce",r);this.modules=[],e[Jv]=this}mount(e,r){let n=this.sheet,i=0,a=0;for(let s=0;s-1&&(this.modules.splice(l,1),a--,l=-1),l==-1){if(this.modules.splice(a++,0,o),n)for(let c=0;cc){let f=t.slice(e,r).indexOf(n.slice(i,a));if(f>-1)return[new pt(e,e+f,i,i),new pt(e+f+c,r,a,a)]}else if(c>l){let f=n.slice(i,a).indexOf(t.slice(e,r));if(f>-1)return[new pt(e,e,i,i+f),new pt(r,r,i+f+l,a)]}if(l==1||c==1)return[new pt(e,r,i,a)];let u=WM(t,e,r,n,i,a);if(u){let[f,d,h]=u;return us(t,e,f,n,i,d).concat(us(t,f+h,r,n,d+h,a))}return zU(t,e,r,n,i,a)}var Yc=1e9,Xc=0,s1=!1;function zU(t,e,r,n,i,a){let s=r-e,o=a-i;if(Yc<1e9&&Math.min(s,o)>Yc*16||Xc>0&&Date.now()>Xc)return Math.min(s,o)>Yc*64?[new pt(e,r,i,a)]:TM(t,e,r,n,i,a);let l=Math.ceil((s+o)/2);e1.reset(l),t1.reset(l);let c=(h,p)=>t.charCodeAt(e+h)==n.charCodeAt(i+p),u=(h,p)=>t.charCodeAt(r-h-1)==n.charCodeAt(a-p-1),f=(s-o)%2!=0?t1:null,d=f?null:e1;for(let h=0;hYc||Xc>0&&!(h&63)&&Date.now()>Xc)return TM(t,e,r,n,i,a);let p=e1.advance(h,s,o,l,f,!1,c)||t1.advance(h,s,o,l,d,!0,u);if(p)return VU(t,e,r,e+p[0],n,i,a,i+p[1])}return[new pt(e,r,i,a)]}var Ch=class{constructor(){this.vec=[]}reset(e){this.len=e<<1;for(let r=0;rr)this.end+=2;else if(f>n)this.start+=2;else if(a){let d=i+(r-n)-l;if(d>=0&&d=r-u)return[h,i+h-d]}else{let h=r-a.vec[d];if(u>=h)return[u,f]}}}return null}},e1=new Ch,t1=new Ch;function VU(t,e,r,n,i,a,s,o){let l=!1;return!Ko(t,n)&&++n==r&&(l=!0),!Ko(i,o)&&++o==s&&(l=!0),l?[new pt(e,r,a,s)]:us(t,e,n,i,a,o).concat(us(t,n,r,i,o,s))}function VM(t,e){let r=1,n=Math.min(t,e);for(;rr||u>a||t.slice(o,c)!=n.slice(l,u)){if(s==1)return o-e-(Ko(t,o)?0:1);s=s>>1}else{if(c==r||u==a)return c-e;o=c,l=u}}}function l1(t,e,r,n,i,a){if(e==r||i==a||t.charCodeAt(r-1)!=n.charCodeAt(a-1))return 0;let s=VM(r-e,a-i);for(let o=r,l=a;;){let c=o-s,u=l-s;if(c>1}else{if(c==e||u==i)return r-c;o=c,l=u}}}function r1(t,e,r,n,i,a,s,o){let l=n.slice(i,a),c=null;for(;;){if(c||s=r)break;let d=t.slice(u,f),h=-1;for(;(h=l.indexOf(d,h+1))!=-1;){let p=o1(t,f,r,n,i+h+d.length,a),g=l1(t,e,u,n,i,i+h),v=d.length+p+g;(!c||c[2]>1}}function WM(t,e,r,n,i,a){let s=r-e,o=a-i;if(si.fromA-e&&n.toB>i.fromB-e&&(t[r-1]=new pt(n.fromA,i.toA,n.fromB,i.toB),t.splice(r--,1))}}function WU(t,e,r){for(;;){qM(r,1);let n=!1;for(let i=0;i3||o>3){let l=i==t.length-1?e.length:t[i+1].fromA,c=a.fromA-n,u=l-a.toA,f=PM(e,a.fromA,c),d=CM(e,a.toA,u),h=a.fromA-f,p=d-a.toA;if((!s||!o)&&h&&p){let g=Math.max(s,o),[v,y,b]=s?[e,a.fromA,a.toA]:[r,a.fromB,a.toB];g>h&&e.slice(f,a.fromA)==v.slice(b-h,b)?(a=t[i]=new pt(f,f+s,a.fromB-h,a.toB-h),f=a.fromA,d=CM(e,a.toA,l-a.toA)):g>p&&e.slice(a.toA,d)==v.slice(y,y+p)&&(a=t[i]=new pt(d-s,d,a.fromB+p,a.toB+p),d=a.toA,f=PM(e,a.fromA,a.fromA-n)),h=a.fromA-f,p=d-a.toA}if(h||p)a=t[i]=new pt(a.fromA-h,a.toA+p,a.fromB-h,a.toB+p);else if(s){if(!o){let g=MM(e,a.fromA,a.toA),v,y=g<0?-1:RM(e,a.toA,a.fromA);g>-1&&(v=g-a.fromA)<=u&&e.slice(a.fromA,g)==e.slice(a.toA,a.toA+v)?a=t[i]=a.offset(v):y>-1&&(v=a.toA-y)<=c&&e.slice(a.fromA-v,a.fromA)==e.slice(y,a.toA)&&(a=t[i]=a.offset(-v))}}else{let g=MM(r,a.fromB,a.toB),v,y=g<0?-1:RM(r,a.toB,a.fromB);g>-1&&(v=g-a.fromB)<=u&&r.slice(a.fromB,g)==r.slice(a.toB,a.toB+v)?a=t[i]=a.offset(v):y>-1&&(v=a.toB-y)<=c&&r.slice(a.fromB-v,a.fromB)==r.slice(y,a.toB)&&(a=t[i]=a.offset(-v))}}n=a.toA}return qM(t,3),t}var cs;try{cs=new RegExp("[\\p{Alphabetic}\\p{Number}]","u")}catch(t){}function YM(t){return t>48&&t<58||t>64&&t<91||t>96&&t<123}function XM(t,e){if(e==t.length)return 0;let r=t.charCodeAt(e);return r<192?YM(r)?1:0:cs?!JM(r)||e==t.length-1?cs.test(String.fromCharCode(r))?1:0:cs.test(t.slice(e,e+2))?2:0:0}function KM(t,e){if(!e)return 0;let r=t.charCodeAt(e-1);return r<192?YM(r)?1:0:cs?!QM(r)||e==1?cs.test(String.fromCharCode(r))?1:0:cs.test(t.slice(e-2,e))?2:0:0}var ZM=8;function CM(t,e,r){if(e==t.length||!KM(t,e))return e;for(let n=e,i=e+r,a=0;ai)return n;n+=s}return e}function PM(t,e,r){if(!e||!XM(t,e))return e;for(let n=e,i=e-r,a=0;at>=55296&&t<=56319,QM=t=>t>=56320&&t<=57343;function Ko(t,e){return!e||e==t.length||!JM(t.charCodeAt(e-1))||!QM(t.charCodeAt(e))}function YU(t,e,r){var n;return Yc=((n=r==null?void 0:r.scanLimit)!==null&&n!==void 0?n:1e9)>>1,Xc=r!=null&&r.timeout?Date.now()+r.timeout:0,s1=!1,WU(t,e,us(t,0,t.length,e,0,e.length))}function eO(){return!s1}function tO(t,e,r){return qU(YU(t,e,r),t,e)}var Jn=ke.Facet.define({combine:t=>t[0]}),n1=ke.StateEffect.define(),XU=ke.Facet.define(),Zo=ke.StateField.define({create(t){return null},update(t,e){for(let r of e.effects)r.is(n1)&&(t=r.value);for(let r of e.state.facet(XU))t=r(t,e);return t}});var Xo=class t{constructor(e,r,n,i,a,s=!0){this.changes=e,this.fromA=r,this.toA=n,this.fromB=i,this.toB=a,this.precise=s}offset(e,r){return e||r?new t(this.changes,this.fromA+e,this.toA+e,this.fromB+r,this.toB+r,this.precise):this}get endA(){return Math.max(this.fromA,this.toA-1)}get endB(){return Math.max(this.fromB,this.toB-1)}static build(e,r,n){let i=tO(e.toString(),r.toString(),n);return rO(i,e,r,0,0,eO())}static updateA(e,r,n,i,a){return DM(FM(e,i,!0,n.length),e,r,n,a)}static updateB(e,r,n,i,a){return DM(FM(e,i,!1,r.length),e,r,n,a)}};function OM(t,e,r,n){let i=r.lineAt(t),a=n.lineAt(e);return i.to==t&&a.to==e&&tf+1&&v>d+1)break;h.push(p.offset(-c+n,-u+i)),[f,d]=IM(p.toA+n,p.toB+i,e,r),o++}s.push(new Xo(h,c,Math.max(c,f),u,Math.max(u,d),a))}return s}var Eh=1e3;function $M(t,e,r,n){let i=0,a=t.length;for(;;){if(i==a){let u=0,f=0;i&&({toA:u,toB:f}=t[i-1]);let d=e-(r?u:f);return[u+d,f+d]}let s=i+a>>1,o=t[s],[l,c]=r?[o.fromA,o.toA]:[o.fromB,o.toB];if(l>e)a=s;else if(c<=e)i=s+1;else return n?[o.fromA,o.fromB]:[o.toA,o.toB]}}function FM(t,e,r,n){let i=[];return e.iterChangedRanges((a,s,o,l)=>{let c=0,u=r?e.length:n,f=0,d=r?n:e.length;a>Eh&&([c,f]=$M(t,a-Eh,r,!0)),s=c?i[i.length-1]={fromA:p.fromA,fromB:p.fromB,toA:u,toB:d,diffA:p.diffA+g,diffB:p.diffB+v}:i.push({fromA:c,toA:u,fromB:f,toB:d,diffA:g,diffB:v})}),i}function DM(t,e,r,n,i){if(!t.length)return e;let a=[];for(let s=0,o=0,l=0,c=0;;s++){let u=s==t.length?null:t[s],f=u?u.fromA+o:r.length,d=u?u.fromB+l:n.length;for(;cf||v.toB+l>d)break;a.push(v.offset(o,l)),c++}if(!u)break;let h=u.toA+o+u.diffA,p=u.toB+l+u.diffB,g=tO(r.sliceString(f,h),n.sliceString(d,p),i);for(let v of rO(g,r,n,f,d,eO()))a.push(v);for(o+=u.diffA,l+=u.diffB;ch&&v.fromB+l>p)break;c++}}return a}var KU={scanLimit:500},nO=Ie.ViewPlugin.fromClass(class{constructor(t){({deco:this.deco,gutter:this.gutter}=NM(t))}update(t){(t.docChanged||t.viewportChanged||ZU(t.startState,t.state)||JU(t.startState,t.state))&&({deco:this.deco,gutter:this.gutter}=NM(t.view))}},{decorations:t=>t.deco}),Ah=ke.Prec.low((0,Ie.gutter)({class:"cm-changeGutter",markers:t=>{var e;return((e=t.plugin(nO))===null||e===void 0?void 0:e.gutter)||ke.RangeSet.empty}}));function ZU(t,e){return t.field(Zo,!1)!=e.field(Zo,!1)}function JU(t,e){return t.facet(Jn)!=e.facet(Jn)}var LM=Ie.Decoration.line({class:"cm-changedLine"}),QU=Ie.Decoration.mark({class:"cm-changedText"}),eG=Ie.Decoration.mark({tagName:"ins",class:"cm-insertedLine"}),tG=Ie.Decoration.mark({tagName:"del",class:"cm-deletedLine"}),jM=new class extends Ie.GutterMarker{constructor(){super(...arguments),this.elementClass="cm-changedLineGutter"}};function rG(t,e,r,n,i,a){let s=r?t.fromA:t.fromB,o=r?t.toA:t.toB,l=0;if(s!=o){i.add(s,s,LM),i.add(s,o,r?tG:eG),a&&a.add(s,s,jM);for(let c=e.iterRange(s,o-1),u=s;!c.next().done;){if(c.lineBreak){u++,i.add(u,u,LM),a&&a.add(u,u,jM);continue}let f=u+c.value.length;if(n)for(;l=u)break;(s?f.toA:f.toB)>c&&(!a||!a(t.state,f,o,l))&&rG(f,t.state.doc,s,n,o,l)}return{deco:o.finish(),gutter:l&&l.finish()}}var Yo=class extends Ie.WidgetType{constructor(e){super(),this.height=e}eq(e){return this.height==e.height}toDOM(){let e=document.createElement("div");return e.className="cm-mergeSpacer",e.style.height=this.height+"px",e}updateDOM(e){return e.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}},Ph=ke.StateEffect.define({map:(t,e)=>t.map(e)}),Kc=ke.StateField.define({create:()=>Ie.Decoration.none,update:(t,e)=>{for(let r of e.effects)if(r.is(Ph))return r.value;return t.map(e.changes)},provide:t=>Ie.EditorView.decorations.from(t)}),kh=.01;function BM(t,e){if(t.size!=e.size)return!1;let r=t.iter(),n=e.iter();for(;r.value;){if(r.from!=n.from||Math.abs(r.value.spec.widget.height-n.value.spec.widget.height)>1)return!1;r.next(),n.next()}return!0}function nG(t,e,r){let n=new ke.RangeSetBuilder,i=new ke.RangeSetBuilder,a=t.state.field(Kc).iter(),s=e.state.field(Kc).iter(),o=0,l=0,c=0,u=0,f=t.viewport,d=e.viewport;for(let v=0;;v++){let y=vkh&&(u+=k,i.add(l,l,Ie.Decoration.widget({widget:new Yo(k),block:!0,side:-1})))}if(b>o+1e3&&of.from&&ld.from){let S=Math.min(f.from-o,d.from-l);o+=S,l+=S,v--}else if(y)o=y.toA,l=y.toB;else break;for(;a.value&&a.fromkh&&i.add(e.state.doc.length,e.state.doc.length,Ie.Decoration.widget({widget:new Yo(h),block:!0,side:1}));let p=n.finish(),g=i.finish();BM(p,t.state.field(Kc))||t.dispatch({effects:Ph.of(p)}),BM(g,e.state.field(Kc))||e.dispatch({effects:Ph.of(g)})}var i1=ke.StateEffect.define({map:(t,e)=>e.mapPos(t)}),a1=class extends Ie.WidgetType{constructor(e){super(),this.lines=e}eq(e){return this.lines==e.lines}toDOM(e){let r=document.createElement("div");return r.className="cm-collapsedLines",r.textContent=e.state.phrase("$ unchanged lines",this.lines),r.addEventListener("click",n=>{let i=e.posAtDOM(n.target);e.dispatch({effects:i1.of(i)});let{side:a,sibling:s}=e.state.facet(Jn);s&&s().dispatch({effects:i1.of(iG(i,e.state.field(Zo),a=="a"))})}),r}ignoreEvent(e){return e instanceof MouseEvent}get estimatedHeight(){return 27}get type(){return"collapsed-unchanged-code"}};function iG(t,e,r){let n=0,i=0;for(let a=0;;a++){let s=a=t)return i+(t-n);[n,i]=r?[s.toA,s.toB]:[s.toB,s.toA]}}var aG=ke.StateField.define({create(t){return Ie.Decoration.none},update(t,e){t=t.map(e.changes);for(let r of e.effects)r.is(i1)&&(t=t.update({filter:n=>n!=r.value}));return t},provide:t=>Ie.EditorView.decorations.from(t)});function HM({margin:t=3,minSize:e=4}){return aG.init(r=>sG(r,t,e))}function sG(t,e,r){let n=new ke.RangeSetBuilder,i=t.facet(Jn).side=="a",a=t.field(Zo),s=1;for(let o=0;;o++){let l=o=r&&n.add(t.doc.line(c).from,t.doc.line(u).to,Ie.Decoration.replace({widget:new a1(f),block:!0})),!l)break;s=t.doc.lineAt(Math.min(t.doc.length,i?l.toA:l.toB)).number}return n.finish()}var oG=Ie.EditorView.styleModule.of(new Sh({".cm-mergeView":{overflowY:"auto"},".cm-mergeViewEditors":{display:"flex",alignItems:"stretch"},".cm-mergeViewEditor":{flexGrow:1,flexBasis:0,overflow:"hidden"},".cm-merge-revert":{width:"1.6em",flexGrow:0,flexShrink:0,position:"relative"},".cm-merge-revert button":{position:"absolute",display:"block",width:"100%",boxSizing:"border-box",textAlign:"center",background:"none",border:"none",font:"inherit",cursor:"pointer"}})),lG=Ie.EditorView.baseTheme({".cm-mergeView & .cm-scroller, .cm-mergeView &":{height:"auto !important",overflowY:"visible !important"},"&.cm-merge-a .cm-changedLine, .cm-deletedChunk":{backgroundColor:"rgba(160, 128, 100, .08)"},"&.cm-merge-b .cm-changedLine, .cm-inlineChangedLine":{backgroundColor:"rgba(100, 160, 128, .08)"},"&light.cm-merge-a .cm-changedText, &light .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ee443366, #ee443366) bottom/100% 2px no-repeat"},"&dark.cm-merge-a .cm-changedText, &dark .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ffaa9966, #ffaa9966) bottom/100% 2px no-repeat"},"&light.cm-merge-b .cm-changedText":{background:"linear-gradient(#22bb22aa, #22bb22aa) bottom/100% 2px no-repeat"},"&dark.cm-merge-b .cm-changedText":{background:"linear-gradient(#88ff88aa, #88ff88aa) bottom/100% 2px no-repeat"},"&.cm-merge-b .cm-deletedText":{background:"#ff000033"},".cm-insertedLine, .cm-deletedLine, .cm-deletedLine del":{textDecoration:"none"},".cm-deletedChunk":{paddingLeft:"6px","& .cm-chunkButtons":{position:"absolute",insetInlineEnd:"5px"},"& button":{border:"none",cursor:"pointer",color:"white",margin:"0 2px",borderRadius:"3px","&[name=accept]":{background:"#2a2"},"&[name=reject]":{background:"#d43"}}},".cm-collapsedLines":{padding:"5px 5px 5px 10px",cursor:"pointer","&:before":{content:'"\u299A"',marginInlineEnd:"7px"},"&:after":{content:'"\u299A"',marginInlineStart:"7px"}},"&light .cm-collapsedLines":{color:"#444",background:"linear-gradient(to bottom, transparent 0, #f3f3f3 30%, #f3f3f3 70%, transparent 100%)"},"&dark .cm-collapsedLines":{color:"#ddd",background:"linear-gradient(to bottom, transparent 0, #222 30%, #222 70%, transparent 100%)"},".cm-changeGutter":{width:"3px",paddingLeft:"1px"},"&light.cm-merge-a .cm-changedLineGutter, &light .cm-deletedLineGutter":{background:"#e43"},"&dark.cm-merge-a .cm-changedLineGutter, &dark .cm-deletedLineGutter":{background:"#fa9"},"&light.cm-merge-b .cm-changedLineGutter":{background:"#2b2"},"&dark.cm-merge-b .cm-changedLineGutter":{background:"#8f8"},".cm-inlineChangedLineGutter":{background:"#75d"}}),UM=new ke.Compartment,Th=new ke.Compartment,Rh=class{constructor(e){this.revertDOM=null,this.revertToA=!1,this.revertToLeft=!1,this.measuring=-1,this.diffConf=e.diffConfig||KU;let r=[ke.Prec.low(nO),lG,oG,Kc,Ie.EditorView.updateListener.of(f=>{this.measuring<0&&(f.heightChanged||f.viewportChanged)&&!f.transactions.some(d=>d.effects.some(h=>h.is(Ph)))&&this.measure()})],n=[Jn.of({side:"a",sibling:()=>this.b,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&n.push(Ah);let i=ke.EditorState.create({doc:e.a.doc,selection:e.a.selection,extensions:[e.a.extensions||[],Ie.EditorView.editorAttributes.of({class:"cm-merge-a"}),Th.of(n),r]}),a=[Jn.of({side:"b",sibling:()=>this.a,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&a.push(Ah);let s=ke.EditorState.create({doc:e.b.doc,selection:e.b.selection,extensions:[e.b.extensions||[],Ie.EditorView.editorAttributes.of({class:"cm-merge-b"}),Th.of(a),r]});this.chunks=Xo.build(i.doc,s.doc,this.diffConf);let o=[Zo.init(()=>this.chunks),UM.of(e.collapseUnchanged?HM(e.collapseUnchanged):[])];i=i.update({effects:ke.StateEffect.appendConfig.of(o)}).state,s=s.update({effects:ke.StateEffect.appendConfig.of(o)}).state,this.dom=document.createElement("div"),this.dom.className="cm-mergeView",this.editorDOM=this.dom.appendChild(document.createElement("div")),this.editorDOM.className="cm-mergeViewEditors";let l=e.orientation||"a-b",c=document.createElement("div");c.className="cm-mergeViewEditor";let u=document.createElement("div");u.className="cm-mergeViewEditor",this.editorDOM.appendChild(l=="a-b"?c:u),this.editorDOM.appendChild(l=="a-b"?u:c),this.a=new Ie.EditorView({state:i,parent:c,root:e.root,dispatchTransactions:f=>this.dispatch(f,this.a)}),this.b=new Ie.EditorView({state:s,parent:u,root:e.root,dispatchTransactions:f=>this.dispatch(f,this.b)}),this.setupRevertControls(!!e.revertControls,e.revertControls=="b-to-a",e.renderRevertControl),e.parent&&e.parent.appendChild(this.dom),this.scheduleMeasure()}dispatch(e,r){if(e.some(n=>n.docChanged)){let n=e[e.length-1],i=e.reduce((s,o)=>s.compose(o.changes),ke.ChangeSet.empty(e[0].startState.doc.length));this.chunks=r==this.a?Xo.updateA(this.chunks,n.newDoc,this.b.state.doc,i,this.diffConf):Xo.updateB(this.chunks,this.a.state.doc,n.newDoc,i,this.diffConf),r.update([...e,n.state.update({effects:n1.of(this.chunks)})]);let a=r==this.a?this.b:this.a;a.update([a.state.update({effects:n1.of(this.chunks)})]),this.scheduleMeasure()}else r.update(e)}reconfigure(e){if("diffConfig"in e&&(this.diffConf=e.diffConfig),"orientation"in e){let a=e.orientation!="b-a";if(a!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let s=this.a.dom.parentNode,o=this.b.dom.parentNode;s.remove(),o.remove(),this.editorDOM.insertBefore(a?s:o,this.editorDOM.firstChild),this.editorDOM.appendChild(a?o:s),this.revertToLeft=!this.revertToLeft,this.revertDOM&&(this.revertDOM.textContent="")}}if("revertControls"in e||"renderRevertControl"in e){let a=!!this.revertDOM,s=this.revertToA,o=this.renderRevert;"revertControls"in e&&(a=!!e.revertControls,s=e.revertControls=="b-to-a"),"renderRevertControl"in e&&(o=e.renderRevertControl),this.setupRevertControls(a,s,o)}let r="highlightChanges"in e,n="gutter"in e,i="collapseUnchanged"in e;if(r||n||i){let a=[],s=[];if(r||n){let o=this.a.state.facet(Jn),l=n?e.gutter!==!1:o.markGutter,c=r?e.highlightChanges!==!1:o.highlightChanges;a.push(Th.reconfigure([Jn.of({side:"a",sibling:()=>this.b,highlightChanges:c,markGutter:l}),l?Ah:[]])),s.push(Th.reconfigure([Jn.of({side:"b",sibling:()=>this.a,highlightChanges:c,markGutter:l}),l?Ah:[]]))}if(i){let o=UM.reconfigure(e.collapseUnchanged?HM(e.collapseUnchanged):[]);a.push(o),s.push(o)}this.a.dispatch({effects:a}),this.b.dispatch({effects:s})}this.scheduleMeasure()}setupRevertControls(e,r,n){this.revertToA=r,this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode),this.renderRevert=n,!e&&this.revertDOM?(this.revertDOM.remove(),this.revertDOM=null):e&&!this.revertDOM?(this.revertDOM=this.editorDOM.insertBefore(document.createElement("div"),this.editorDOM.firstChild.nextSibling),this.revertDOM.addEventListener("mousedown",i=>this.revertClicked(i)),this.revertDOM.className="cm-merge-revert"):this.revertDOM&&(this.revertDOM.textContent="")}scheduleMeasure(){if(this.measuring<0){let e=this.dom.ownerDocument.defaultView||window;this.measuring=e.requestAnimationFrame(()=>{this.measuring=-1,this.measure()})}}measure(){nG(this.a,this.b,this.chunks),this.revertDOM&&this.updateRevertButtons()}updateRevertButtons(){let e=this.revertDOM,r=e.firstChild,n=this.a.viewport,i=this.b.viewport;for(let a=0;an.to||s.fromB>i.to)break;if(s.fromA-1&&(this.dom.ownerDocument.defaultView||window).cancelAnimationFrame(this.measuring),this.dom.remove()}};function GM(t){let e=t.nextSibling;return t.remove(),e}var Mh=require("@codemirror/search"),Jo=require("@codemirror/state"),tn=require("@codemirror/view");var fs=class extends Qo.ItemView{constructor(r,n){super(r);this.plugin=n;this.refreshing=!1;this.ignoreNextModification=!1;this.navigation=!0,this.registerEvent(this.app.workspace.on("obsidian-git:status-changed",()=>{this.mergeView?this.updateRefEditors().catch(console.error):this.createMergeView().catch(console.error)})),this.intervalRef=window.setInterval(()=>{this.mergeView&&this.updateRefEditors().catch(console.error)},30*1e3),this.registerEvent(this.app.vault.on("modify",i=>{this.state.bRef==null&&i.path===this.state.bFile&&(this.ignoreNextModification?this.ignoreNextModification=!1:this.updateModifiableEditor().catch(console.error))})),this.registerEvent(this.app.vault.on("delete",i=>{this.state.bRef==null&&i.path===this.state.bFile&&this.createMergeView().catch(console.error)})),this.registerEvent(this.app.vault.on("create",i=>{this.state.bRef==null&&i.path===this.state.bFile&&this.createMergeView().catch(console.error)})),this.registerEvent(this.app.vault.on("rename",(i,a)=>{this.state.bRef==null&&(i.path===this.state.bFile||a===this.state.bFile)&&this.createMergeView().catch(console.error)})),this.fileSaveDebouncer=(0,Qo.debounce)(i=>{let a=this.state.bFile;a&&(this.ignoreNextModification=!0,this.plugin.app.vault.adapter.write(a,i).catch(s=>this.plugin.displayError(s)))},1e3,!1)}getViewType(){return ca.type}getDisplayText(){var r;if(((r=this.state)==null?void 0:r.bFile)!=null){let n=this.state.bFile.split("/").last();return n!=null&&n.endsWith(".md")&&(n=n.slice(0,-3)),`Diff: ${n}`}return ca.name}getIcon(){return ca.icon}async setState(r,n){this.state=r,Qo.Platform.isMobile&&(this.leaf.view.titleEl.textContent=this.getDisplayText()),await super.setState(r,n),await this.createMergeView()}getState(){return this.state}onClose(){return window.clearInterval(this.intervalRef),super.onClose()}async onOpen(){return await this.createMergeView(),super.onOpen()}async gitShow(r,n){try{return await this.plugin.gitManager.show(r,n,!1)}catch(i){if(i instanceof Ir&&(i.message.includes("does not exist")||i.message.includes("unknown revision or path")||i.message.includes("exists on disk, but not in")||i.message.includes("fatal: bad object")))return i.message.includes("fatal: bad object")&&this.plugin.displayError(i.message),"";throw i}}async bShouldBeEditable(){if(this.state.bRef!=null)return!1;let r=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);return await this.app.vault.adapter.exists(r)}async updateModifiableEditor(){if(!this.mergeView||this.refreshing)return;let r=this.mergeView.b;this.refreshing=!0;let n=await this.app.vault.adapter.read(this.state.bFile);if(n!=r.state.doc.toString()){let i=r.state.update({changes:{from:0,to:r.state.doc.length,insert:n},annotations:[Jo.Transaction.remote.of(!0)]});r.dispatch(i)}this.refreshing=!1}async updateRefEditors(){if(!this.mergeView||this.refreshing)return;let r=this.mergeView.a,n=this.mergeView.b;this.refreshing=!0;let i=await this.gitShow(this.state.aRef,this.state.aFile),a;if(this.state.bRef!=null&&(a=await this.gitShow(this.state.bRef,this.state.bFile)),i!=r.state.doc.toString()){let s=r.state.update({changes:{from:0,to:r.state.doc.length,insert:i}});r.dispatch(s)}if(a!=null&&a!=n.state.doc.toString()){let s=n.state.update({changes:{from:0,to:n.state.doc.length,insert:a}});n.dispatch(s)}this.refreshing=!1}async createMergeView(){var r,n,i;if((r=this.state)!=null&&r.aFile&&((n=this.state)!=null&&n.bFile)&&!this.refreshing&&this.plugin.gitManager){this.refreshing=!0,(i=this.mergeView)==null||i.destroy();let a=this.containerEl.children[1];a.empty(),this.contentEl.addClass("git-split-diff-view"),this.bIsEditable=await this.bShouldBeEditable();let s=await this.gitShow(this.state.aRef,this.state.aFile),o;if(this.state.bRef!=null)o=await this.gitShow(this.state.bRef,this.state.bFile);else{let p=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);await this.app.vault.adapter.exists(p)?o=await this.app.vault.adapter.read(p):o=""}let l=[(0,tn.lineNumbers)(),(0,Mh.highlightSelectionMatches)(),(0,tn.drawSelection)(),tn.keymap.of([...el.standardKeymap,el.indentWithTab]),(0,el.history)(),(0,Mh.search)(),tn.EditorView.lineWrapping],c=this,u=tn.ViewPlugin.define(p=>({update(g){if(g.docChanged&&!g.transactions.some(v=>v.annotation(Jo.Transaction.remote))){let v=p.state.doc.toString();c.fileSaveDebouncer(v)}}})),f={doc:s,extensions:[...l,tn.EditorView.editable.of(!1),Jo.EditorState.readOnly.of(!0)]},d=[...l];this.bIsEditable?d.push(u):d.push(tn.EditorView.editable.of(!1),Jo.EditorState.readOnly.of(!0));let h={doc:o,extensions:d};a.addClasses(["cm-s-obsidian","mod-cm6","markdown-source-view","cm-content"]),this.mergeView=new Rh({b:h,a:f,collapseUnchanged:{minSize:6,margin:4},diffConfig:{scanLimit:this.bIsEditable?1e3:1e4},parent:a}),this.refreshing=!1}}};m();var C5=require("obsidian");m();m();m();var iO="5";var aO,sO,oO;typeof window!="undefined"&&((oO=(sO=(aO=window.__svelte)!=null?aO:window.__svelte={}).v)!=null?oO:sO.v=new Set).add(iO);m();m();m();var tl="[",ya="[!",ds="]",Ci={};var We=Symbol(),rn=Symbol("filename"),lO=Symbol("hmr"),cO="http://www.w3.org/1999/xhtml";m();m();m();m();var Oh=!0;m();var D=!1;m();var nn=Array.isArray,uO=Array.prototype.indexOf,Zc=Array.from,c1=Object.keys,Wt=Object.defineProperty,br=Object.getOwnPropertyDescriptor,u1=Object.getOwnPropertyDescriptors,f1=Object.prototype,fO=Array.prototype,rl=Object.getPrototypeOf,d1=Object.isExtensible;function h1(t){return typeof t=="function"}var ir=()=>{};function Jc(t){for(var e=0;e{t=n,e=i});return{promise:r,resolve:t,reject:e}}m();m();var _r=Symbol("$state"),Qc=Symbol("legacy props"),hO=Symbol(""),Ih=Symbol("proxy path"),nl=new class extends Error{constructor(){super(...arguments);vt(this,"name","StaleReactionError");vt(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};var eu=3,an=8;m();m();function pO(){if(D){let t=new Error("await_outside_boundary\nCannot await outside a `` with a `pending` snippet\nhttps://svelte.dev/e/await_outside_boundary");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/await_outside_boundary")}function tu(t){if(D){let e=new Error(`lifecycle_outside_component +\`${t}(...)\` can only be used during component initialisation +https://svelte.dev/e/lifecycle_outside_component`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function mO(){if(D){let t=new Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/async_derived_orphan")}function p1(){if(D){let t=new Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/bind_invalid_checkbox_value")}function gO(){if(D){let t=new Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/derived_references_self")}function vO(t){if(D){let e=new Error(`effect_in_teardown +\`${t}\` cannot be used inside an effect cleanup function +https://svelte.dev/e/effect_in_teardown`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_in_teardown")}function yO(){if(D){let t=new Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function wO(t){if(D){let e=new Error(`effect_orphan +\`${t}\` can only be used inside an effect (e.g. during component initialisation) +https://svelte.dev/e/effect_orphan`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_orphan")}function bO(){if(D){let t=new Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function _O(){if(D){let t=new Error("flush_sync_in_effect\nCannot use `flushSync` inside an effect\nhttps://svelte.dev/e/flush_sync_in_effect");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/flush_sync_in_effect")}function xO(){if(D){let t=new Error(`hydration_failed +Failed to hydrate the application +https://svelte.dev/e/hydration_failed`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/hydration_failed")}function SO(t){if(D){let e=new Error(`props_invalid_value +Cannot do \`bind:${t}={undefined}\` when \`${t}\` has a fallback value +https://svelte.dev/e/props_invalid_value`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/props_invalid_value")}function EO(t){if(D){let e=new Error(`rune_outside_svelte +The \`${t}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files +https://svelte.dev/e/rune_outside_svelte`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/rune_outside_svelte")}function AO(){if(D){let t=new Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function kO(){if(D){let t=new Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_prototype_fixed")}function TO(){if(D){let t=new Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_unsafe_mutation")}m();m();m();var hs="font-weight: bold",ps="font-weight: normal";function CO(t){D?console.warn(`%c[svelte] await_reactivity_loss +%cDetected reactivity loss when reading \`${t}\`. This happens when state is read in an async function after an earlier \`await\` +https://svelte.dev/e/await_reactivity_loss`,hs,ps):console.warn("https://svelte.dev/e/await_reactivity_loss")}function PO(t,e){D?console.warn(`%c[svelte] await_waterfall +%cAn async derived, \`${t}\` (${e}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app +https://svelte.dev/e/await_waterfall`,hs,ps):console.warn("https://svelte.dev/e/await_waterfall")}function RO(t,e,r){D?console.warn(`%c[svelte] hydration_attribute_changed +%cThe \`${t}\` attribute on \`${e}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value +https://svelte.dev/e/hydration_attribute_changed`,hs,ps):console.warn("https://svelte.dev/e/hydration_attribute_changed")}function ms(t){D?console.warn(`%c[svelte] hydration_mismatch +%c${t?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${t}`:"Hydration failed because the initial UI does not match what was rendered on the server"} +https://svelte.dev/e/hydration_mismatch`,hs,ps):console.warn("https://svelte.dev/e/hydration_mismatch")}function MO(){D?console.warn(`%c[svelte] lifecycle_double_unmount +%cTried to unmount a component that was not mounted +https://svelte.dev/e/lifecycle_double_unmount`,hs,ps):console.warn("https://svelte.dev/e/lifecycle_double_unmount")}function $h(t){D?console.warn(`%c[svelte] state_proxy_equality_mismatch +%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${t}\` will produce unexpected results +https://svelte.dev/e/state_proxy_equality_mismatch`,hs,ps):console.warn("https://svelte.dev/e/state_proxy_equality_mismatch")}function OO(t){D?console.warn(`%c[svelte] transition_slide_display +%cThe \`slide\` transition does not work correctly for elements with \`display: ${t}\` +https://svelte.dev/e/transition_slide_display`,hs,ps):console.warn("https://svelte.dev/e/transition_slide_display")}var se=!1;function Yt(t){se=t}var ge;function et(t){if(t===null)throw ms(),Ci;return ge=t}function Xt(){return et(jt(ge))}function H(t){if(se){if(jt(ge)!==null)throw ms(),Ci;ge=t}}function il(t=1){if(se){for(var e=t,r=ge;e--;)r=jt(r);ge=r}}function gs(){for(var t=0,e=ge;;){if(e.nodeType===an){var r=e.data;if(r===ds){if(t===0)return e;t-=1}else(r===tl||r===ya)&&(t+=1)}var n=jt(e);e.remove(),e=n}}function Fh(t){if(!t||t.nodeType!==an)throw ms(),Ci;return t.data}m();m();m();m();function Dh(t){return t===this.v}function Lh(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function jh(t){return!Lh(t,this.v)}m();var _n=!1,Pi=!1,Qn=!1;m();m();m();var ru=null;function ei(t){let e=Error(),r=e.stack;if(!r)return null;let n=r.split(` +`),i=[` +`];for(let a=0;a"}`,a=e.ctx;a!==null;)i+=` +${n}in ${(o=a.function)==null?void 0:o[rn].split("/").pop()}`,a=a.p;return{message:t.message+` +${i} +`,stack:(l=t.stack)==null?void 0:l.split(` +`).filter(c=>!c.includes("svelte/src/internal")).join(` +`)}}}function FO(t){let e=v1.get(t);e&&(Wt(t,"message",{value:e.message}),Wt(t,"stack",{value:e.stack}))}m();var au=[],w1=[];function DO(){var t=au;au=[],Jc(t)}function fG(){var t=w1;w1=[],Jc(t)}function Lr(t){au.length===0&&queueMicrotask(DO),au.push(t)}function LO(){au.length>0&&DO(),w1.length>0&&fG()}m();var sne=589952;function Uh(){for(var t=ee.b;t!==null&&!t.has_pending_snippet();)t=t.parent;return t===null&&pO(),t}m();m();var Ii=null;function S1(t){Ii=t}var ou=new Set;function vs(t){var e=2050,r=oe!==null&&oe.f&2?oe:null;ee===null||r!==null&&r.f&256?e|=256:ee.f|=524288;let n={ctx:ye,deps:null,effects:null,equals:Dh,f:e,fn:t,reactions:null,rv:0,v:We,wv:0,parent:r!=null?r:ee,ac:null};return D&&Qn&&(n.created=ei("CreatedAt")),n}function E1(t,e){let r=ee;r===null&&mO();var n=r.b,i=void 0,a=jr(We),s=null,o=!oe;return jO(()=>{var h;D&&(Ii=ee);try{var l=t()}catch(p){l=Promise.reject(p)}D&&(Ii=null);var c=()=>l;i=(h=s==null?void 0:s.then(c,c))!=null?h:Promise.resolve(l),s=i;var u=xe,f=n.pending;o&&(n.update_pending_count(1),f||u.increment());let d=(p,g=void 0)=>{s=null,Ii=null,f||u.activate(),g?g!==nl&&(a.f|=8388608,ri(a,g)):(a.f&8388608&&(a.f^=8388608),ri(a,p),D&&e!==void 0&&(ou.add(a),setTimeout(()=>{ou.has(a)&&(PO(a.label,e),ou.delete(a))}))),o&&(n.update_pending_count(-1),f||u.decrement()),Vh()};if(i.then(d,p=>d(null,p||"unknown")),u)return()=>{queueMicrotask(()=>u.neuter())}}),D&&(a.f|=4194304),new Promise(l=>{function c(u){function f(){u===i?l(a):c(i)}u.then(f,f)}c(i)})}function Ct(t){let e=vs(t);return Wh(e),e}function ys(t){let e=vs(t);return e.equals=jh,e}function Gh(t){var e=t.effects;if(e!==null){t.effects=null;for(var r=0;rE1(l))).then(l=>{i==null||i.activate(),s();try{r([...t.map(n),...l])}catch(c){a.f&16384||al(c,a)}i==null||i.deactivate(),Vh()}).catch(l=>{o.error(l)})}function hG(){var t=ee,e=oe,r=ye;return function(){Nt(t),kt(e),ba(r),D&&S1(null)}}function Vh(){Nt(null),kt(null),ba(null),D&&S1(null)}var uu=new Set,xe=null,fu=null,_a=null,b1=new Set,Kh=[];function BO(){let t=Kh.shift();Kh.length>0&&queueMicrotask(BO),t()}var _s=[],Qh=null,k1=!1,Yh=!1,ol,ll,xa,du,hu,bs,cl,Sa,Ea,ul,pu,mu,An,HO,Xh,T1,Zh=class Zh{constructor(){yt(this,An);vt(this,"current",new Map);yt(this,ol,new Map);yt(this,ll,new Set);yt(this,xa,0);yt(this,du,null);yt(this,hu,!1);yt(this,bs,[]);yt(this,cl,[]);yt(this,Sa,[]);yt(this,Ea,[]);yt(this,ul,[]);yt(this,pu,[]);yt(this,mu,[]);vt(this,"skipped_effects",new Set)}process(e){var a;_s=[],fu=null;var r=null;if(uu.size>1){r=new Map,_a=new Map;for(let[s,o]of this.current)r.set(s,{v:s.v,wv:s.wv}),s.v=o;for(let s of uu)if(s!==this)for(let[o,l]of ue(s,ol))r.has(o)||(r.set(o,{v:o.v,wv:o.wv}),o.v=l)}for(let s of e)di(this,An,HO).call(this,s);if(ue(this,bs).length===0&&ue(this,xa)===0){di(this,An,T1).call(this);var n=ue(this,Sa),i=ue(this,Ea);It(this,Sa,[]),It(this,Ea,[]),It(this,ul,[]),fu=xe,xe=null,NO(n),NO(i),xe===null?xe=this:uu.delete(this),(a=ue(this,du))==null||a.resolve()}else di(this,An,Xh).call(this,ue(this,Sa)),di(this,An,Xh).call(this,ue(this,Ea)),di(this,An,Xh).call(this,ue(this,ul));if(r){for(let[s,{v:o,wv:l}]of r)s.wv<=l&&(s.v=o);_a=null}for(let s of ue(this,bs))Fi(s);for(let s of ue(this,cl))Fi(s);It(this,bs,[]),It(this,cl,[])}capture(e,r){ue(this,ol).has(e)||ue(this,ol).set(e,r),this.current.set(e,e.v)}activate(){xe=this}deactivate(){xe=null,fu=null;for(let e of b1)if(b1.delete(e),e(),xe!==null)break}neuter(){It(this,hu,!0)}flush(){_s.length>0?C1():di(this,An,T1).call(this),xe===this&&(ue(this,xa)===0&&uu.delete(this),this.deactivate())}increment(){It(this,xa,ue(this,xa)+1)}decrement(){if(It(this,xa,ue(this,xa)-1),ue(this,xa)===0){for(let e of ue(this,pu))mt(e,2048),ii(e);for(let e of ue(this,mu))mt(e,4096),ii(e);It(this,Sa,[]),It(this,Ea,[]),this.flush()}else this.deactivate()}add_callback(e){ue(this,ll).add(e)}settled(){var e;return((e=ue(this,du))!=null?e:It(this,du,dO())).promise}static ensure(){if(xe===null){let e=xe=new Zh;uu.add(xe),Yh||Zh.enqueue(()=>{xe===e&&e.flush()})}return xe}static enqueue(e){Kh.length===0&&queueMicrotask(BO),Kh.unshift(e)}};ol=new WeakMap,ll=new WeakMap,xa=new WeakMap,du=new WeakMap,hu=new WeakMap,bs=new WeakMap,cl=new WeakMap,Sa=new WeakMap,Ea=new WeakMap,ul=new WeakMap,pu=new WeakMap,mu=new WeakMap,An=new WeakSet,HO=function(e){var u;e.f^=1024;for(var r=e.first;r!==null;){var n=r.f,i=(n&96)!==0,a=i&&(n&1024)!==0,s=a||(n&8192)!==0||this.skipped_effects.has(r);if(!s&&r.fn!==null){if(i)r.f^=1024;else if(!(n&1024))if(n&4)ue(this,Ea).push(r);else if(_n&&n&8)ue(this,Sa).push(r);else if(n&4194304){var o=(u=r.b)!=null&&u.pending?ue(this,cl):ue(this,bs);o.push(r)}else Aa(r)&&(r.f&16&&ue(this,ul).push(r),Fi(r));var l=r.first;if(l!==null){r=l;continue}}var c=r.parent;for(r=r.next;r===null&&c!==null;)r=c.next,c=c.parent}},Xh=function(e){for(let r of e)(r.f&2048?ue(this,pu):ue(this,mu)).push(r),mt(r,1024);e.length=0},T1=function(){if(!ue(this,hu))for(let e of ue(this,ll))e();ue(this,ll).clear()};var ti=Zh;function fl(t){_n&&ee!==null&&_O();var e=Yh;Yh=!0;try{var r;for(t&&(C1(),r=t());;){if(LO(),_s.length===0&&(xe==null||xe.flush(),_s.length===0))return Qh=null,r;C1()}}finally{Yh=e}}function C1(){var a;var t=xs;k1=!0;try{var e=0;for(P1(!0);_s.length>0;){var r=ti.ensure();if(e++>1e3){if(D){var n=new Map;for(let s of r.current.keys())for(let[o,l]of(a=s.updated)!=null?a:[]){var i=n.get(o);i||(i={error:l.error,count:0},n.set(o,i)),i.count+=l.count}for(let s of n.values())console.error(s.error)}pG()}r.process(_s),Di.clear()}}finally{k1=!1,P1(t),Qh=null}}function pG(){try{bO()}catch(t){D&&Wt(t,"stack",{value:""}),al(t,Qh)}}function NO(t){var e=t.length;if(e!==0){for(var r=0;ri&&n.f&1048576)break}}for(;r0&&!O1&&I1()}return e}function I1(){O1=!1;let t=Array.from(ws);for(let e of t)e.f&1024&&mt(e,4096),Aa(e)&&Fi(e);ws.clear()}function su(t){ie(t,t.v+1)}function GO(t,e){var r=t.reactions;if(r!==null)for(var n=on(),i=r.length,a=0;a{if(ka===s)return u();var f=oe,d=ka;kt(null),$1(s);var h=u();return kt(f),$1(d),h};n&&(r.set("length",Pe(t.length,a)),D&&(t=vG(t)));var l="";function c(u){l=u,sn(i,`${l} version`);for(let[f,d]of r)sn(d,Es(l,f))}return new Proxy(t,{defineProperty(u,f,d){(!("value"in d)||d.configurable===!1||d.enumerable===!1||d.writable===!1)&&AO();var h=r.get(f);return h===void 0?h=o(()=>{var p=Pe(d.value,a);return r.set(f,p),D&&typeof f=="string"&&sn(p,Es(l,f)),p}):ie(h,d.value,!0),!0},deleteProperty(u,f){var d=r.get(f);if(d===void 0){if(f in u){let h=o(()=>Pe(We,a));r.set(f,h),su(i),D&&sn(h,Es(l,f))}}else ie(d,We),su(i);return!0},get(u,f,d){var v;if(f===_r)return t;if(D&&f===Ih)return c;var h=r.get(f),p=f in u;if(h===void 0&&(!p||(v=br(u,f))!=null&&v.writable)&&(h=o(()=>{var y=Ne(p?u[f]:We),b=Pe(y,a);return D&&sn(b,Es(l,f)),b}),r.set(f,h)),h!==void 0){var g=R(h);return g===We?void 0:g}return Reflect.get(u,f,d)},getOwnPropertyDescriptor(u,f){var d=Reflect.getOwnPropertyDescriptor(u,f);if(d&&"value"in d){var h=r.get(f);h&&(d.value=R(h))}else if(d===void 0){var p=r.get(f),g=p==null?void 0:p.v;if(p!==void 0&&g!==We)return{enumerable:!0,configurable:!0,value:g,writable:!0}}return d},has(u,f){var g;if(f===_r)return!0;var d=r.get(f),h=d!==void 0&&d.v!==We||Reflect.has(u,f);if(d!==void 0||ee!==null&&(!h||(g=br(u,f))!=null&&g.writable)){d===void 0&&(d=o(()=>{var v=h?Ne(u[f]):We,y=Pe(v,a);return D&&sn(y,Es(l,f)),y}),r.set(f,d));var p=R(d);if(p===We)return!1}return h},set(u,f,d,h){var k;var p=r.get(f),g=f in u;if(n&&f==="length")for(var v=d;vPe(We,a)),r.set(v+"",y),D&&sn(y,Es(l,v)))}if(p===void 0)(!g||(k=br(u,f))!=null&&k.writable)&&(p=o(()=>Pe(void 0,a)),ie(p,Ne(d)),r.set(f,p),D&&sn(p,Es(l,f)));else{g=p.v!==We;var b=o(()=>Ne(d));ie(p,b)}var E=Reflect.getOwnPropertyDescriptor(u,f);if(E!=null&&E.set&&E.set.call(h,d),!g){if(n&&typeof f=="string"){var S=r.get("length"),A=Number(f);Number.isInteger(A)&&A>=S.v&&ie(S,A+1)}su(i)}return!0},ownKeys(u){R(i);var f=Reflect.ownKeys(u).filter(p=>{var g=r.get(p);return g===void 0||g.v!==We});for(var[d,h]of r)h.v!==We&&!(d in u)&&f.push(d);return f},setPrototypeOf(){kO()}})}function Es(t,e){var r;return typeof e=="symbol"?`${t}[Symbol(${(r=e.description)!=null?r:""})]`:mG.test(e)?`${t}.${e}`:/^\d+$/.test(e)?`${t}[${e}]`:`${t}['${e}']`}function ep(t){try{if(t!==null&&typeof t=="object"&&_r in t)return t[_r]}catch(e){}return t}var gG=new Set(["copyWithin","fill","pop","push","reverse","shift","sort","splice","unshift"]);function vG(t){return new Proxy(t,{get(e,r,n){var i=Reflect.get(e,r,n);return gG.has(r)?function(...a){UO();var s=i.apply(this,a);return I1(),s}:i}})}function VO(){let t=Array.prototype,e=Array.__svelte_cleanup;e&&e();let{indexOf:r,lastIndexOf:n,includes:i}=t;t.indexOf=function(a,s){let o=r.call(this,a,s);if(o===-1){for(let l=s!=null?s:0;l{t.indexOf=r,t.lastIndexOf=n,t.includes=i}}var F1,WO,iu,qO,YO;function tp(){if(F1===void 0){F1=window,WO=document,iu=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,r=Text.prototype;qO=br(e,"firstChild").get,YO=br(e,"nextSibling").get,d1(t)&&(t.__click=void 0,t.__className=void 0,t.__attributes=null,t.__style=void 0,t.__e=void 0),d1(r)&&(r.__t=void 0),D&&(t.__svelte_meta=null,VO())}}function Bt(t=""){return document.createTextNode(t)}function Ht(t){return qO.call(t)}function jt(t){return YO.call(t)}function G(t,e){if(!se)return Ht(t);var r=Ht(ge);if(r===null)r=ge.appendChild(Bt());else if(e&&r.nodeType!==eu){var n=Bt();return r==null||r.before(n),et(n),n}return et(r),r}function Ar(t,e){var i,a;if(!se){var r=Ht(t);return r instanceof Comment&&r.data===""?jt(r):r}if(e&&((i=ge)==null?void 0:i.nodeType)!==eu){var n=Bt();return(a=ge)==null||a.before(n),et(n),n}return ge}function te(t,e=1,r=!1){let n=se?ge:t;for(var i;e--;)i=n,n=jt(n);if(!se)return n;if(r&&(n==null?void 0:n.nodeType)!==eu){var a=Bt();return n===null?i==null||i.after(a):n.before(a),et(a),a}return et(n),n}function dl(t){t.textContent=""}function hl(){if(!_n)return!1;var t=ee.f;return(t&32768)!==0}function KO(t){ee===null&&oe===null&&wO(t),oe!==null&&oe.f&256&&ee===null&&yO(),Sn&&vO(t)}function yG(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function si(t,e,r,n=!0){var l;var i=ee;if(D)for(;i!==null&&i.f&131072;)i=i.parent;i!==null&&i.f&8192&&(t|=8192);var a={ctx:ye,deps:null,nodes_start:null,nodes_end:null,f:t|2048,first:null,fn:e,last:null,next:null,parent:i,b:i&&i.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(D&&(a.component_function=xn),r)try{Fi(a),a.f|=32768}catch(c){throw At(a),c}else e!==null&&ii(a);var s=r&&a.deps===null&&a.first===null&&a.nodes_start===null&&a.teardown===null&&(a.f&524288)===0;if(!s&&n&&(i!==null&&yG(a,i),oe!==null&&oe.f&2&&!(t&64))){var o=oe;((l=o.effects)!=null?l:o.effects=[]).push(a)}return a}function Hr(t){let e=si(8,null,!1);return mt(e,1024),e.teardown=t,e}function Zt(t){var i;KO("$effect"),D&&Wt(t,"name",{value:"$effect"});var e=ee.f,r=!oe&&(e&32)!==0&&(e&32768)===0;if(r){var n=ye;((i=n.e)!=null?i:n.e=[]).push(t)}else return g1(t)}function g1(t){return si(1048580,t,!1)}function L1(t){ti.ensure();let e=si(64,t,!0);return()=>{At(e)}}function ZO(t){ti.ensure();let e=si(64,t,!0);return(r={})=>new Promise(n=>{r.outro?ni(e,()=>{At(e),n(void 0)}):(At(e),n(void 0))})}function kr(t){return si(4,t,!1)}function jO(t){return si(4718592,t,!0)}function Kt(t,e=0){return si(8|e,t,!0)}function $e(t,e=[],r=[]){qh(e,r,n=>{si(8,()=>t(...n.map(R)),!0)})}function xr(t,e=0){var r=si(16|e,t,!0);return D&&(r.dev_stack=Mi),r}function Et(t,e=!0){return si(32,t,!0,e)}function j1(t){var e=t.teardown;if(e!==null){let r=Sn,n=oe;D1(!0),kt(null);try{e.call(null)}finally{D1(r),kt(n)}}}function N1(t,e=!1){var i;var r=t.first;for(t.first=t.last=null;r!==null;){(i=r.ac)==null||i.abort(nl);var n=r.next;r.f&64?r.parent=null:At(r,e),r=n}}function JO(t){for(var e=t.first;e!==null;){var r=e.next;e.f&32||At(e),e=r}}function At(t,e=!0){var r=!1;(e||t.f&262144)&&t.nodes_start!==null&&t.nodes_end!==null&&(QO(t.nodes_start,t.nodes_end),r=!0),N1(t,e&&!r),yu(t,0),mt(t,16384);var n=t.transitions;if(n!==null)for(let a of n)a.stop();j1(t);var i=t.parent;i!==null&&i.first!==null&&M1(t),D&&(t.component_function=null),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes_start=t.nodes_end=t.ac=null}function QO(t,e){for(;t!==null;){var r=t===e?null:jt(t);t.remove(),t=r}}function M1(t){var e=t.parent,r=t.prev,n=t.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=r))}function ni(t,e){var r=[];rp(t,r,!0),B1(r,()=>{At(t),e&&e()})}function B1(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function rp(t,e,r){if(!(t.f&8192)){if(t.f^=8192,t.transitions!==null)for(let s of t.transitions)(s.is_global||r)&&e.push(s);for(var n=t.first;n!==null;){var i=n.next,a=(n.f&65536)!==0||(n.f&32)!==0;rp(n,e,a?r:!1),n=i}}}function As(t){e5(t,!0)}function e5(t,e){if(t.f&8192){t.f^=8192,t.f&1024||(mt(t,2048),ii(t));for(var r=t.first;r!==null;){var n=r.next,i=(r.f&65536)!==0||(r.f&32)!==0;e5(r,i?e:!1),r=n}if(t.transitions!==null)for(let a of t.transitions)(a.is_global||e)&&a.in()}}m();var t5=null;var xs=!1;function P1(t){xs=t}var Sn=!1;function D1(t){Sn=t}var oe=null,Sr=!1;function kt(t){oe=t}var ee=null;function Nt(t){ee=t}var Er=null;function Wh(t){oe!==null&&(!_n||oe.f&2)&&(Er===null?Er=[t]:Er.push(t))}var or=null,Ur=0,Br=null;function zO(t){Br=t}var r5=1,wu=0,ka=wu;function $1(t){ka=t}var $i=!1;function cu(){return++r5}function Aa(t){var f,d;var e=t.f;if(e&2048)return!0;if(e&4096){var r=t.deps,n=(e&256)!==0;if(r!==null){var i,a,s=(e&512)!==0,o=n&&ee!==null&&!$i,l=r.length;if((s||o)&&(ee===null||!(ee.f&16384))){var c=t,u=c.parent;for(i=0;it.wv)return!0}(!n||ee!==null&&!$i)&&mt(t,1024)}return!1}function n5(t,e,r=!0){var n=t.reactions;if(n!==null&&!(!_n&&(Er!=null&&Er.includes(t))))for(var i=0;i0)for(d.length=Ur+or.length,h=0;h{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(let r of t.target.elements)(e=r.__on_r)==null||e.call(r)})},{capture:!0}))}function ks(t){var e=oe,r=ee;kt(null),Nt(null);try{return t()}finally{kt(e),Nt(r)}}function G1(t,e,r,n=r){t.addEventListener(e,()=>ks(r));let i=t.__on_r;i?t.__on_r=()=>{i(),n(!0)}:t.__on_r=()=>n(!0),U1()}var z1=new Set,ap=new Set;function s5(t,e,r,n={}){function i(a){if(n.capture||pl.call(e,a),!a.cancelBubble)return ks(()=>r==null?void 0:r.call(this,a))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Lr(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function Gr(t,e,r,n,i){var a={capture:n,passive:i},s=s5(t,e,r,a);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&Hr(()=>{e.removeEventListener(t,s,a)})}function gt(t){for(var e=0;e{throw E});throw d}}finally{t.__root=e,delete t.currentTarget,kt(u),Nt(f)}}}m();var _G;function o5(){_G=void 0}m();m();function sp(t){var e=document.createElement("template");return e.innerHTML=t.replaceAll("",""),e.content}function oi(t,e){var r=ee;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function fe(t,e){var r=(e&1)!==0,n=(e&2)!==0,i,a=!t.startsWith("");return()=>{if(se)return oi(ge,null),ge;i===void 0&&(i=sp(a?t:""+t),r||(i=Ht(i)));var s=n||iu?document.importNode(i,!0):i.cloneNode(!0);if(r){var o=Ht(s),l=s.lastChild;oi(o,l)}else oi(s,s);return s}}function Li(){if(se)return oi(ge,null),ge;var t=document.createDocumentFragment(),e=document.createComment(""),r=Bt();return t.append(e,r),oi(e,r),t}function ae(t,e){if(se){ee.nodes_end=ge,Xt();return}t!==null&&t.before(e)}m();var AG=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","webkitdirectory","defer","disablepictureinpicture","disableremoteplayback"];var Xae=[...AG,"formNoValidate","isMap","noModule","playsInline","readOnly","value","volume","defaultValue","defaultChecked","srcObject","noValidate","allowFullscreen","disablePictureInPicture","disableRemotePlayback"];var kG=["touchstart","touchmove"];function c5(t){return kG.includes(t)}var TG=["$state","$state.raw","$derived","$derived.by"],Kae=[...TG,"$state.snapshot","$props","$props.id","$bindable","$effect","$effect.pre","$effect.tracking","$effect.root","$effect.pending","$inspect","$inspect().with","$inspect.trace","$host"];var op=!0;function Be(t,e){var n;var r=e==null?"":typeof e=="object"?e+"":e;r!==((n=t.__t)!=null?n:t.__t=t.nodeValue)&&(t.__t=r,t.nodeValue=r+"")}function Ta(t,e){return u5(t,e)}function W1(t,e){var s;tp(),e.intro=(s=e.intro)!=null?s:!1;let r=e.target,n=se,i=ge;try{for(var a=Ht(r);a&&(a.nodeType!==an||a.data!==tl);)a=jt(a);if(!a)throw Ci;Yt(!0),et(a),Xt();let o=u5(t,{...e,anchor:a});if(ge===null||ge.nodeType!==an||ge.data!==ds)throw ms(),Ci;return Yt(!1),o}catch(o){if(o===Ci)return e.recover===!1&&xO(),tp(),dl(r),Yt(!1),Ta(t,e);throw o}finally{Yt(n),et(i),o5()}}var ml=new Map;function u5(t,{target:e,anchor:r,props:n={},events:i,context:a,intro:s=!0}){tp();var o=new Set,l=f=>{for(var d=0;d{var f=r!=null?r:e.appendChild(Bt());return Et(()=>{if(a){tt({});var d=ye;d.c=a}i&&(n.$$events=i),se&&oi(f,null),op=s,c=t(f,n)||{},op=!0,se&&(ee.nodes_end=ge),a&&rt()}),()=>{var p;for(var d of o){e.removeEventListener(d,pl);var h=ml.get(d);--h===0?(document.removeEventListener(d,pl),ml.delete(d)):ml.set(d,h)}ap.delete(l),f!==r&&((p=f.parentNode)==null||p.removeChild(f))}});return V1.set(c,u),c}var V1=new WeakMap;function ji(t,e){let r=V1.get(t);return r?(V1.delete(t),r(e)):(D&&MO(),Promise.resolve())}m();m();if(D){let t=function(e){if(!(e in globalThis)){let r;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(r!==void 0)return r;EO(e)},set:n=>{r=n}})}};t("$state"),t("$effect"),t("$derived"),t("$inspect"),t("$props"),t("$bindable")}function q1(t){ye===null&&tu("onMount"),Pi&&ye.l!==null?MG(ye).m.push(t):Zt(()=>{let e=Ue(t);if(typeof e=="function")return e})}function d5(t){ye===null&&tu("onDestroy"),q1(()=>()=>Ue(t))}function MG(t){var r;var e=t.l;return(r=e.u)!=null?r:e.u={a:[],b:[],m:[]}}m();m();var p5=new Map;function m5(t,e){var r=p5.get(t);r||(r=new Set,p5.set(t,r)),r.add(e)}m();m();m();m();m();m();m();m();m();function be(t,e,r=!1){se&&Xt();var n=t,i=null,a=null,s=We,o=r?65536:0,l=!1;let c=(h,p=!0)=>{l=!0,d(p,h)};var u=null;function f(){u!==null&&(u.lastChild.remove(),n.before(u),u=null);var h=s?i:a,p=s?a:i;h&&As(h),p&&ni(p,()=>{s?a=null:i=null})}let d=(h,p)=>{if(s===(s=h))return;let g=!1;if(se){let A=Fh(n)===ya;!!s===A&&(n=gs(),et(n),Yt(!1),g=!0)}var v=hl(),y=n;if(v&&(u=document.createDocumentFragment(),u.append(y=Bt())),s?i!=null||(i=p&&Et(()=>p(y))):a!=null||(a=p&&Et(()=>p(y))),v){var b=xe,E=s?i:a,S=s?a:i;E&&b.skipped_effects.delete(E),S&&b.skipped_effects.add(S),b.add_callback(f)}else f();g&&Yt(!0)};xr(()=>{l=!1,e(c),l||d(null,null)},o),se&&(n=ge)}m();m();m();var bu=null;function zr(t,e){return e}function DG(t,e,r){for(var n=t.items,i=[],a=e.length,s=0;s0&&i.length===0&&r!==null;if(o){var l=r.parentNode;dl(l),l.append(r),n.clear(),li(t,e[0].prev,e[a-1].next)}B1(i,()=>{for(var c=0;c{var y=r();return nn(y)?y:y==null?[]:Zc(y)}),p,g;function v(){LG(g,p,o,d,s,i,e,n,r),a!==null&&(p.length===0?u?As(u):u=Et(()=>a(s)):u!==null&&ni(u,()=>{u=null}))}xr(()=>{var I;g!=null||(g=ee),p=R(h);var y=p.length;if(f&&y===0)return;f=y===0;let b=!1;if(se){var E=Fh(s)===ya;E!==(y===0)&&(s=gs(),et(s),Yt(!1),b=!0)}if(se){for(var S=null,A,k=0;k0&&et(gs())}if(se)y===0&&a&&(u=Et(()=>a(s)));else if(hl()){var _=new Set,T=xe;for(k=0;k0){var le=s&4&&f===0?i:null;if(c){for(w=0;w{var B;if(y!==void 0)for(k of y)(B=k.a)==null||B.apply()}),t.first=r.first&&r.first.e,t.last=v&&v.e;for(var ce of n.values())At(ce.e);n.clear()}function v5(t,e,r,n){n&1&&ri(t.v,e),n&2?ri(t.i,r):t.i=r}function X1(t,e,r,n,i,a,s,o,l,c,u){var f=bu,d=(l&1)!==0,h=(l&16)===0,p=d?h?Ss(i,!1,!1):jr(i):i,g=l&2?jr(s):s;D&&d&&(p.trace=()=>{var b=typeof g=="number"?s:g.v;c()[b]});var v={i:g,v:p,k:a,a:null,e:null,prev:r,next:n};bu=v;try{if(t===null){var y=document.createDocumentFragment();y.append(t=Bt())}return v.e=Et(()=>o(t,p,g,c),se),v.e.prev=r&&r.e,v.e.next=n&&n.e,r===null?u||(e.first=v):(r.next=v,r.e.next=v.e),n!==null&&(n.prev=v,n.e.prev=v.e),v}finally{bu=f}}function Y1(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,a=t.e.nodes_start;a!==null&&a!==n;){var s=jt(a);i.before(a),a=s}}function li(t,e,r){e===null?t.first=r:(e.next=r,e.e.next=r&&r.e),r!==null&&(r.prev=e,r.e.prev=e&&e.e)}m();m();m();m();m();function Tn(t,e){kr(()=>{var i;var r=t.getRootNode(),n=r.host?r:(i=r.head)!=null?i:r.ownerDocument.head;if(!n.querySelector("#"+e.hash)){let a=document.createElement("style");a.id=e.hash,a.textContent=e.code,n.appendChild(a),D&&m5(e.hash,a)}})}m();m();m();m();m();m();var w5=[...` +\r\f\xA0\v\uFEFF`];function b5(t,e,r){var n=t==null?"":""+t;if(e&&(n=n?n+" "+e:e),r){for(var i in r)if(r[i])n=n?n+" "+i:i;else if(n.length)for(var a=i.length,s=0;(s=n.indexOf(i,s))>=0;){var o=s+a;(s===0||w5.includes(n[s-1]))&&(o===n.length||w5.includes(n[o]))?n=(s===0?"":n.substring(0,s))+n.substring(o+1):s=o}}return n===""?null:n}m();function ot(t,e,r,n,i,a){var s=t.__className;if(se||s!==r||s===void 0){var o=b5(r,n,a);(!se||o!==t.getAttribute("class"))&&(o==null?t.removeAttribute("class"):e?t.className=o:t.setAttribute("class",o)),t.__className=r}else if(a&&i!==a)for(var l in a){var c=!!a[l];(i==null||c!==!!i[l])&&t.classList.toggle(l,c)}return a}m();m();var VG=Symbol("class"),WG=Symbol("style"),qG=Symbol("is custom element"),YG=Symbol("is html");function ve(t,e,r,n){var i=XG(t);if(se&&(i[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName==="LINK")){n||ZG(t,e,r!=null?r:"");return}i[e]!==(i[e]=r)&&(e==="loading"&&(t[hO]=r),r==null?t.removeAttribute(e):typeof r!="string"&&KG(t).includes(e)?t[e]=r:t.setAttribute(e,r))}function XG(t){var e;return(e=t.__attributes)!=null?e:t.__attributes={[qG]:t.nodeName.includes("-"),[YG]:t.namespaceURI===cO}}var _5=new Map;function KG(t){var e=_5.get(t.nodeName);if(e)return e;_5.set(t.nodeName,e=[]);for(var r,n=t,i=Element.prototype;i!==n;){r=u1(n);for(var a in r)r[a].set&&e.push(a);n=rl(n)}return e}function ZG(t,e,r){var n;D&&(e==="srcset"&&JG(t,r)||K1((n=t.getAttribute(e))!=null?n:"",r)||RO(e,t.outerHTML.replace(t.innerHTML,t.innerHTML&&"..."),String(r)))}function K1(t,e){return t===e?!0:new URL(t,document.baseURI).href===new URL(e,document.baseURI).href}function x5(t){return t.split(",").map(e=>e.trim().split(" ").filter(Boolean))}function JG(t,e){var r=x5(t.srcset),n=x5(e);return n.length===r.length&&n.every(([i,a],s)=>a===r[s][1]&&(K1(r[s][0],i)||K1(i,r[s][0])))}m();m();m();var QG=Oh?()=>performance.now():()=>Date.now(),Cn={tick:t=>(Oh?requestAnimationFrame:ir)(t),now:()=>QG(),tasks:new Set};function S5(){let t=Cn.now();Cn.tasks.forEach(e=>{e.c(t)||(Cn.tasks.delete(e),e.f())}),Cn.tasks.size!==0&&Cn.tick(S5)}function E5(t){let e;return Cn.tasks.size===0&&Cn.tick(S5),{promise:new Promise(r=>{Cn.tasks.add(e={c:t,f:r})}),abort(){Cn.tasks.delete(e)}}}function up(t,e){ks(()=>{t.dispatchEvent(new CustomEvent(e))})}function nz(t){if(t==="float")return"cssFloat";if(t==="offset")return"cssOffset";if(t.startsWith("--"))return t;let e=t.split("-");return e.length===1?e[0]:e[0]+e.slice(1).map(r=>r[0].toUpperCase()+r.slice(1)).join("")}function A5(t){let e={},r=t.split(";");for(let n of r){let[i,a]=n.split(":");if(!i||a===void 0)break;let s=nz(i.trim());e[s]=a.trim()}return e}var iz=t=>t;function Pn(t,e,r,n){var E;var i=(t&1)!==0,a=(t&2)!==0,s=i&&a,o=(t&4)!==0,l=s?"both":i?"in":"out",c,u=e.inert,f=e.style.overflow,d,h;function p(){return ks(()=>{var S;return c!=null?c:c=r()(e,(S=n==null?void 0:n())!=null?S:{},{direction:l})})}var g={is_global:o,in(){var S;if(e.inert=u,!i){h==null||h.abort(),(S=h==null?void 0:h.reset)==null||S.call(h);return}a||d==null||d.abort(),up(e,"introstart"),d=Z1(e,p(),h,1,()=>{up(e,"introend"),d==null||d.abort(),d=c=void 0,e.style.overflow=f})},out(S){if(!a){S==null||S(),c=void 0;return}e.inert=!0,up(e,"outrostart"),h=Z1(e,p(),d,0,()=>{up(e,"outroend"),S==null||S()})},stop:()=>{d==null||d.abort(),h==null||h.abort()}},v=ee;if(((E=v.transitions)!=null?E:v.transitions=[]).push(g),i&&op){var y=o;if(!y){for(var b=v.parent;b&&b.f&65536;)for(;(b=b.parent)&&!(b.f&16););y=!b||(b.f&32768)!==0}y&&kr(()=>{Ue(()=>g.in())})}}function Z1(t,e,r,n,i){var a=n===1;if(h1(e)){var s,o=!1;return Lr(()=>{if(!o){var v=e({direction:a?"in":"out"});s=Z1(t,v,r,n,i)}}),{abort:()=>{o=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration))return i(),{abort:ir,deactivate:ir,reset:ir,t:()=>n};let{delay:l=0,css:c,tick:u,easing:f=iz}=e;var d=[];if(a&&r===void 0&&(u&&u(0,1),c)){var h=A5(c(0,1));d.push(h,h)}var p=()=>1-n,g=t.animate(d,{duration:l,fill:"forwards"});return g.onfinish=()=>{var _;g.cancel();var v=(_=r==null?void 0:r.t())!=null?_:1-n;r==null||r.abort();var y=n-v,b=e.duration*Math.abs(y),E=[];if(b>0){var S=!1;if(c)for(var A=Math.ceil(b/16.666666666666668),k=0;k<=A;k+=1){var w=v+y*f(k/A),x=A5(c(w,1-w));E.push(x),S||(S=x.overflow==="hidden")}S&&(t.style.overflow="hidden"),p=()=>{var T=g.currentTime;return v+y*f(T/b)},u&&E5(()=>{if(g.playState!=="running")return!1;var T=p();return u(T,1-T),!0})}g=t.animate(E,{duration:b,fill:"forwards"}),g.onfinish=()=>{p=()=>n,u==null||u(n,1-n),i()}},{abort:()=>{g&&(g.cancel(),g.effect=null,g.onfinish=ir)},deactivate:()=>{i=ir},reset:()=>{n===0&&(u==null||u(1,0))},t:()=>p()}}m();m();function ey(t,e,r=e){var n=on(),i=new WeakSet;G1(t,"input",a=>{D&&t.type==="checkbox"&&p1();var s=a?t.defaultValue:t.value;if(s=J1(t)?Q1(s):s,r(s),xe!==null&&i.add(xe),n&&s!==(s=e())){var o=t.selectionStart,l=t.selectionEnd;t.value=s!=null?s:"",l!==null&&(t.selectionStart=o,t.selectionEnd=Math.min(l,t.value.length))}}),(se&&t.defaultValue!==t.value||Ue(e)==null&&t.value)&&(r(J1(t)?Q1(t.value):t.value),xe!==null&&i.add(xe)),Kt(()=>{var o;D&&t.type==="checkbox"&&p1();var a=e();if(t===document.activeElement){var s=(o=fu)!=null?o:xe;if(i.has(s))return}J1(t)&&a===Q1(t.value)||t.type==="date"&&!a&&!t.value||a!==t.value&&(t.value=a!=null?a:"")})}function J1(t){var e=t.type;return e==="number"||e==="range"}function Q1(t){return t===""?null:+t}m();m();m();m();m();function k5(t,e){return t===e||(t==null?void 0:t[_r])===e}function Ze(t={},e,r,n){return kr(()=>{var i,a;return Kt(()=>{i=a,a=(n==null?void 0:n())||[],Ue(()=>{t!==r(...a)&&(e(t,...a),i&&k5(r(...i),t)&&e(null,...i))})}),()=>{Lr(()=>{a&&k5(r(...a),t)&&e(null,...a)})}}),t}m();m();m();m();m();m();m();m();m();var dp=!1,Yde=Symbol();function ry(t){var e=dp;try{return dp=!1,[t(),dp]}finally{dp=e}}function cn(t,e,r,n){var E,S;var i=!Pi||(r&2)!==0,a=(r&8)!==0,s=(r&16)!==0,o=n,l=!0,c=()=>(l&&(l=!1,o=s?Ue(n):n),o),u;if(a){var f=_r in t||Qc in t;u=(S=(E=br(t,e))==null?void 0:E.set)!=null?S:f&&e in t?A=>t[e]=A:void 0}var d,h=!1;a?[d,h]=ry(()=>t[e]):d=t[e],d===void 0&&n!==void 0&&(d=c(),u&&(i&&SO(e),u(d)));var p;if(i?p=()=>{var A=t[e];return A===void 0?c():(l=!0,A)}:p=()=>{var A=t[e];return A!==void 0&&(o=void 0),A===void 0?o:A},i&&!(r&4))return p;if(u){var g=t.$$legacy;return function(A,k){return arguments.length>0?((!i||!k||g||h)&&u(k?p():A),A):p()}}var v=!1,y=(r&1?vs:ys)(()=>(v=!1,p()));D&&(y.label=e),a&&R(y);var b=ee;return function(A,k){if(arguments.length>0){let w=k?R(y):i&&a?Ne(A):A;return ie(y,w),v=!0,o!==void 0&&(o=w),A}return Sn&&v||b.f&16384?y.v:R(y)}}m();m();m();function T5(t){return new ny(t)}var Ni,un,ny=class{constructor(e){yt(this,Ni);yt(this,un);var a,s;var r=new Map,n=(o,l)=>{var c=Ss(l,!1,!1);return r.set(o,c),c};let i=new Proxy({...e.props||{},$$events:{}},{get(o,l){var c;return R((c=r.get(l))!=null?c:n(l,Reflect.get(o,l)))},has(o,l){var c;return l===Qc?!0:(R((c=r.get(l))!=null?c:n(l,Reflect.get(o,l))),Reflect.has(o,l))},set(o,l,c){var u;return ie((u=r.get(l))!=null?u:n(l,c),c),Reflect.set(o,l,c)}});It(this,un,(e.hydrate?W1:Ta)(e.component,{target:e.target,anchor:e.anchor,props:i,context:e.context,intro:(a=e.intro)!=null?a:!1,recover:e.recover})),!_n&&(!((s=e==null?void 0:e.props)!=null&&s.$$host)||e.sync===!1)&&fl(),It(this,Ni,i.$$events);for(let o of Object.keys(ue(this,un)))o==="$set"||o==="$destroy"||o==="$on"||Wt(this,o,{get(){return ue(this,un)[o]},set(l){ue(this,un)[o]=l},enumerable:!0});ue(this,un).$set=o=>{Object.assign(i,o)},ue(this,un).$destroy=()=>{ji(ue(this,un))}}$set(e){ue(this,un).$set(e)}$on(e,r){ue(this,Ni)[e]=ue(this,Ni)[e]||[];let n=(...i)=>r.call(this,...i);return ue(this,Ni)[e].push(n),()=>{ue(this,Ni)[e]=ue(this,Ni)[e].filter(i=>i!==n)}}$destroy(){ue(this,un).$destroy()}};Ni=new WeakMap,un=new WeakMap;var yz;typeof HTMLElement=="function"&&(yz=class extends HTMLElement{constructor(e,r,n){super();vt(this,"$$ctor");vt(this,"$$s");vt(this,"$$c");vt(this,"$$cn",!1);vt(this,"$$d",{});vt(this,"$$r",!1);vt(this,"$$p_d",{});vt(this,"$$l",{});vt(this,"$$l_u",new Map);vt(this,"$$me");this.$$ctor=e,this.$$s=r,n&&this.attachShadow({mode:"open"})}addEventListener(e,r,n){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(r),this.$$c){let i=this.$$c.$on(e,r);this.$$l_u.set(r,i)}super.addEventListener(e,r,n)}removeEventListener(e,r,n){if(super.removeEventListener(e,r,n),this.$$c){let i=this.$$l_u.get(r);i&&(i(),this.$$l_u.delete(r))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(i){return a=>{let s=document.createElement("slot");i!=="default"&&(s.name=i),ae(a,s)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let r={},n=wz(this);for(let i of this.$$s)i in n&&(i==="default"&&!this.$$d.children?(this.$$d.children=e(i),r.default=!0):r[i]=e(i));for(let i of this.attributes){let a=this.$$g_p(i.name);a in this.$$d||(this.$$d[a]=iy(a,i.value,this.$$p_d,"toProp"))}for(let i in this.$$p_d)!(i in this.$$d)&&this[i]!==void 0&&(this.$$d[i]=this[i],delete this[i]);this.$$c=T5({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:r,$$host:this}}),this.$$me=L1(()=>{Kt(()=>{var i;this.$$r=!0;for(let a of c1(this.$$c)){if(!((i=this.$$p_d[a])!=null&&i.reflect))continue;this.$$d[a]=this.$$c[a];let s=iy(a,this.$$d[a],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[a].attribute||a):this.setAttribute(this.$$p_d[a].attribute||a,s)}this.$$r=!1})});for(let i in this.$$l)for(let a of this.$$l[i]){let s=this.$$c.$on(i,a);this.$$l_u.set(a,s)}this.$$l={}}}attributeChangedCallback(e,r,n){var i;this.$$r||(e=this.$$g_p(e),this.$$d[e]=iy(e,n,this.$$p_d,"toProp"),(i=this.$$c)==null||i.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(e){return c1(this.$$p_d).find(r=>this.$$p_d[r].attribute===e||!this.$$p_d[r].attribute&&r.toLowerCase()===e)||e}});function iy(t,e,r,n){var a;let i=(a=r[t])==null?void 0:a.type;if(e=i==="Boolean"&&typeof e!="boolean"?e!=null:e,!n||!r[t])return e;if(n==="toAttribute")switch(i){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e==null?null:e;default:return e}else switch(i){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function wz(t){let e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}m();m();function Ts(t,e,r,n){function i(a){return a instanceof r?a:new r(function(s){s(a)})}return new(r||(r=Promise))(function(a,s){function o(u){try{c(n.next(u))}catch(f){s(f)}}function l(u){try{c(n.throw(u))}catch(f){s(f)}}function c(u){u.done?a(u.value):i(u.value).then(o,l)}c((n=n.apply(t,e||[])).next())})}var ly=require("obsidian");m();var sy=require("obsidian");m();function bz(t){let e=t-1;return e*e*e+1}var ay=!1;function ui(t,{delay:e=0,duration:r=400,easing:n=bz,axis:i="y"}={}){let a=getComputedStyle(t);D&&!ay&&/(contents|inline|table)/.test(a.display)&&(ay=!0,Promise.resolve().then(()=>ay=!1),OO(a.display));let s=+a.opacity,o=i==="y"?"height":"width",l=parseFloat(a[o]),c=i==="y"?["top","bottom"]:["left","right"],u=c.map(y=>`${y[0].toUpperCase()}${y.slice(1)}`),f=parseFloat(a[`padding${u[0]}`]),d=parseFloat(a[`padding${u[1]}`]),h=parseFloat(a[`margin${u[0]}`]),p=parseFloat(a[`margin${u[1]}`]),g=parseFloat(a[`border${u[0]}Width`]),v=parseFloat(a[`border${u[1]}Width`]);return{delay:e,duration:r,easing:n,css:y=>`overflow: hidden;opacity: ${Math.min(y*20,1)*s};${o}: ${y*l}px;padding-${c[0]}: ${y*f}px;padding-${c[1]}: ${y*d}px;margin-${c[0]}: ${y*h}px;margin-${c[1]}: ${y*p}px;border-${c[0]}-width: ${y*g}px;border-${c[1]}-width: ${y*v}px;min-${o}: 0`}}m();var hp=require("obsidian");var _z=fe('
'),xz=fe('
'),Sz={hash:"svelte-1wbh8tp",code:"main.svelte-1wbh8tp .nav-file-title:where(.svelte-1wbh8tp) {align-items:center;}"};function _u(t,e){tt(e,!0),Tn(t,Sz);let r=Ne([]),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");Zt(()=>{for(let y of r)y&&(0,hp.setIcon)(y,y.getAttr("data-icon"))});function i(y){y.stopPropagation(),Io(e.diff.path)?a(y):s(y)}function a(y){var b;y.stopPropagation();let E=e.view.app.vault.getAbstractFileByPath(e.diff.vaultPath);E instanceof hp.TFile&&((b=vn(e.view.app,y))===null||b===void 0||b.openFile(E).catch(S=>e.view.plugin.displayError(S)))}function s(y){var b;e.view.plugin.tools.openDiff({event:y,aFile:(b=e.diff.fromPath)!==null&&b!==void 0?b:e.diff.path,aRef:`${e.diff.hash}^`,bFile:e.diff.path,bRef:e.diff.hash})}var o=xz();o.__click=i;var l=G(o),c=G(l),u=G(c,!0);H(c);var f=te(c,2),d=G(f),h=G(d);{var p=y=>{var b=_z();b.__click=a,Ze(b,E=>r[0]=E,()=>r==null?void 0:r[0]),Gr("auxclick",b,a),ae(y,b)};be(h,y=>{$o(e.diff.vaultPath,e.view.app)&&y(p)})}H(d);var g=te(d,2),v=G(g,!0);H(g),H(f),H(l),H(o),$e(y=>{ve(l,"data-path",e.diff.vaultPath),ve(l,"data-tooltip-position",R(n)),ve(l,"aria-label",e.diff.vaultPath),Be(u,y),ve(g,"data-type",e.diff.status),Be(v,e.diff.status)},[()=>Kn(e.diff.vaultPath)]),Gr("auxclick",o,y=>{y.stopPropagation(),y.button==2?Xn(e.view.app,y,e.diff.vaultPath,e.view.leaf,"git-history"):i(y)}),ae(t,o),rt()}gt(["click"]);m();var Ez=fe("
"),Az=(t,e,r)=>e(t,R(r)),kz=fe(''),Tz=fe('
'),Cz=fe("
"),Pz={hash:"svelte-1lnl15d",code:"main.svelte-1lnl15d .nav-folder-title-content:where(.svelte-1lnl15d) {display:flex;align-items:center;}"};function xu(t,e){tt(e,!0),Tn(t,Pz);let r=cn(e,"topLevel",3,!1),n=cn(e,"closed",15),i=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function a(l,c){l.stopPropagation(),n(n()[c.path]=!n()[c.path],!0)}var s=Cz();let o;Vr(s,21,()=>e.hierarchy.children,zr,(l,c)=>{var u=Li(),f=Ar(u);{var d=p=>{var g=Ez(),v=G(g);_u(v,{get diff(){return R(c).data},get view(){return e.view}}),H(g),ae(p,g)},h=p=>{var g=Tz();let v;var y=G(g);y.__click=[Az,a,c];var b=te(G(y),2);let E;var S=te(b,2),A=G(S,!0);H(S),H(y);var k=te(y,2);{var w=x=>{var _=kz(),T=G(_);xu(T,{get hierarchy(){return R(c)},get plugin(){return e.plugin},get view(){return e.view},get closed(){return n()},set closed(C){n(C)}}),H(_),Pn(3,_,()=>ui,()=>({duration:150})),ae(x,_)};be(k,x=>{n()[R(c).path]||x(w)})}H(g),$e((x,_)=>{v=ot(g,1,"tree-item nav-folder",null,v,x),ve(y,"data-tooltip-position",R(i)),ve(y,"aria-label",R(c).vaultPath),E=ot(b,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,E,_),Be(A,R(c).title)},[()=>({"is-collapsed":n()[R(c).path]}),()=>({"is-collapsed":n()[R(c).path]})]),ae(p,g)};be(f,p=>{R(c).data?p(d):p(h,!1)})}ae(l,u)}),H(s),$e(l=>o=ot(s,1,"svelte-1lnl15d",null,o,l),[()=>({topLevel:r()})]),ae(t,s),rt()}gt(["click"]);var Rz=(t,e)=>ie(e,!R(e)),Mz=fe('
'),Oz=fe('
'),Iz=fe('
'),$z=fe(''),Fz=fe('
'),Dz={hash:"svelte-45h",code:""};function oy(t,e){tt(e,!0),Tn(t,Dz);let r=Ct(()=>({title:"",path:"",vaultPath:"",children:e.plugin.gitManager.getTreeStructure(e.log.diff.files)})),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left"),i=Pe(!0),a=Pe(Ne({}));function s(x){let _=x.author.name;if(e.plugin.settings.authorInHistoryView=="full")return _;if(e.plugin.settings.authorInHistoryView=="initials")return _.split(" ").filter(C=>C.length>0).map(C=>C[0].toUpperCase()).join("")}var o=Fz(),l=G(o);let c;var u=G(l);u.__click=[Rz,i];var f=G(u);let d;var h=te(f,2),p=G(h);{var g=x=>{var _=Mz(),T=G(_,!0);H(_),$e(C=>Be(T,C),[()=>e.log.refs.join(", ")]),ae(x,_)};be(p,x=>{e.log.refs.length>0&&x(g)})}var v=te(p,2);{var y=x=>{var _=Oz(),T=G(_,!0);H(_),$e(C=>Be(T,C),[()=>s(e.log)]),ae(x,_)};be(v,x=>{var _;e.plugin.settings.authorInHistoryView!="hide"&&((_=e.log.author)!=null&&_.name)&&x(y)})}var b=te(v,2);{var E=x=>{var _=Iz(),T=G(_,!0);H(_),$e(C=>Be(T,C),[()=>(0,sy.moment)(e.log.date).format(e.plugin.settings.commitDateFormat)]),ae(x,_)};be(b,x=>{e.plugin.settings.dateInHistoryView&&x(E)})}var S=te(b,2),A=G(S,!0);H(S),H(h),H(u);var k=te(u,2);{var w=x=>{var _=$z(),T=G(_);{var C=L=>{xu(L,{get hierarchy(){return R(r)},get plugin(){return e.plugin},get view(){return e.view},topLevel:!0,get closed(){return R(a)},set closed(F){ie(a,F,!0)}})},I=L=>{var F=Li(),J=Ar(F);Vr(J,17,()=>e.log.diff.files,zr,(de,le)=>{_u(de,{get view(){return e.view},get diff(){return R(le)}})}),ae(L,F)};be(T,L=>{e.showTree?L(C):L(I,!1)})}H(_),Pn(3,_,()=>ui,()=>({duration:150})),ae(x,_)};be(k,x=>{R(i)||x(w)})}H(l),H(o),$e((x,_,T)=>{c=ot(l,1,"tree-item nav-folder",null,c,x),ve(u,"aria-label",_),ve(u,"data-tooltip-position",R(n)),d=ot(f,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,d,T),Be(A,e.log.message)},[()=>({"is-collapsed":R(i)}),()=>{var x;return`${e.log.refs.length>0?e.log.refs.join(", ")+` +`:""}${(x=e.log.author)==null?void 0:x.name} +${(0,sy.moment)(e.log.date).format(e.plugin.settings.commitDateFormat)} +${e.log.message}`},()=>({"is-collapsed":R(i)})]),ae(t,o),rt()}gt(["click"]);function Lz(t,e){e().catch(console.error)}var jz=(t,e,r,n)=>{ie(e,!R(e)),(0,ly.setIcon)(r[0],R(e)?"list":"folder"),n(n().settings.treeStructure=R(e),!0),n().saveSettings()},Nz=fe(''),Bz=fe('
'),Hz={hash:"svelte-45h",code:""};function cy(t,e){tt(e,!0),Tn(t,Hz);let r=cn(e,"plugin",15),n=Pe(!1),i=Ne([]),a=Pe(void 0),s=Pe(Ne(r().settings.treeStructure)),o,l;Zt(()=>{l&&l.empty()}),o=e.view.app.workspace.on("obsidian-git:head-change",()=>void c().catch(console.error)),Zt(()=>{i.forEach(S=>(0,ly.setIcon)(S,S.getAttr("data-icon")))}),d5(()=>{e.view.app.workspace.offref(o)}),q1(()=>{let S=new IntersectionObserver(k=>{k[0].isIntersecting&&!R(n)&&u().catch(console.error)}),A=document.querySelector("#sentinel");return A&&S.observe(A),()=>{S.disconnect()}}),c().catch(console.error);function c(){return Ts(this,void 0,void 0,function*(){var S;if(!r().gitReady){ie(a,void 0);return}ie(n,!0);let A=r().gitManager instanceof Ce,k;((S=R(a)===null||R(a)===void 0?void 0:R(a).length)!==null&&S!==void 0?S:0)==0?k=A?50:10:k=R(a).length,ie(a,yield r().gitManager.log(void 0,!1,k),!0),ie(n,!1)})}function u(){return Ts(this,void 0,void 0,function*(){var S;if(!r().gitReady||R(a)===void 0)return;ie(n,!0);let k=r().gitManager instanceof Ce?50:10,w=yield r().gitManager.log(void 0,!1,k,(S=R(a).last())===null||S===void 0?void 0:S.hash);R(a).push(...w.slice(1)),ie(n,!1)})}var f=Bz(),d=G(f),h=G(d),p=G(h);p.__click=[jz,s,i,r],Ze(p,S=>i[0]=S,()=>i==null?void 0:i[0]);var g=te(p,2);let v;g.__click=[Lz,c],Ze(g,S=>i[1]=S,()=>i==null?void 0:i[1]),H(h),H(d);var y=te(d,2),b=G(y);{var E=S=>{var A=Nz();Vr(A,21,()=>R(a),zr,(k,w)=>{oy(k,{get view(){return e.view},get showTree(){return R(s)},get log(){return R(w)},get plugin(){return r()}})}),H(A),ae(S,A)};be(b,S=>{R(a)&&S(E)})}il(4),H(y),H(f),$e(S=>{ve(p,"data-icon",R(s)?"list":"folder"),v=ot(g,1,"clickable-icon nav-action-button",null,v,S)},[()=>({loading:R(n)})]),ae(t,f),rt()}gt(["click"]);var Su=class extends C5.ItemView{constructor(e,r){super(e),this.plugin=r,this.hoverPopover=null}getViewType(){return Zr.type}getDisplayText(){return Zr.name}getIcon(){return Zr.icon}onClose(){return this._view&&ji(this._view),super.onClose()}reload(){this._view&&ji(this._view),this._view=Ta(cy,{target:this.contentEl,props:{plugin:this.plugin,view:this}})}onOpen(){return this.reload(),super.onOpen()}};m();var P5=require("obsidian"),pp=class extends P5.FuzzySuggestModal{constructor(r,n){super(r.app);this.branches=n;this.setPlaceholder("Select branch to checkout")}getItems(){return this.branches}getItemText(r){return r}onChooseItem(r,n){this.resolve(r)}openAndGetReslt(){return new Promise(r=>{this.resolve=r,this.open()})}onClose(){new Promise(r=>setTimeout(r,10)).then(()=>{this.resolve&&this.resolve(void 0)})}};m();var F5=require("obsidian");m();var Ms=require("obsidian");m();var Au=require("obsidian");m();m();var Uz=Ot(R5()),Ca=require("obsidian");function Cs(t,e,r){let n=t.target;app.workspace.trigger("hover-link",{event:t,source:e.getViewType(),hoverParent:e,targetEl:n,linktext:r})}m();var M5=require("obsidian");var gl=class extends M5.Modal{constructor({app:r,path:n,filesToDeleteCount:i,filesToDiscardCount:a}){super(r);this.resolve=null;this.path=n,this.deleteCount=i,this.discardCount=a}openAndGetResult(){return this.open(),new Promise(r=>{this.resolve=r})}onOpen(){let r=this.deleteCount+this.discardCount,{contentEl:n,titleEl:i}=this,a="";this.path!=""&&(r>1?a=`files in "${this.path}"`:a=`"${this.path}"`),i.setText(`${this.discardCount==0?"Delete":"Discard"} ${a}`),this.deleteCount>0&&n.createEl("p").setText(`Are you sure you want to DELETE the ${Ic(this.deleteCount,"untracked file")}? They are deleted according to your Obsidian trash settting.`),this.discardCount>0&&n.createEl("p").setText(`Are you sure you want to discard ALL changes in ${Ic(this.discardCount,"tracked file")}?`);let s=n.createDiv({cls:"modal-button-container"});if(this.deleteCount>0){let l=s.createEl("button",{cls:"mod-warning",text:`${this.discardCount>0?"Discard":"Delete"} all ${Ic(r,"file")}`});l.addEventListener("click",()=>{this.resolve&&this.resolve("delete"),this.close()}),l.addEventListener("keypress",()=>{this.resolve&&this.resolve("delete"),this.close()})}if(this.discardCount>0){let l=s.createEl("button",{cls:"mod-warning",text:`Discard all ${Ic(this.discardCount,"tracked file")}`});l.addEventListener("click",()=>{this.resolve&&this.resolve("discard"),this.close()}),l.addEventListener("keypress",()=>{this.resolve&&this.resolve("discard"),this.close()})}let o=s.createEl("button",{text:"Cancel"});o.addEventListener("click",()=>(this.resolve&&this.resolve(!1),this.close())),o.addEventListener("keypress",()=>(this.resolve&&this.resolve(!1),this.close()))}onClose(){let{contentEl:r}=this;r.empty()}};function Gz(t,e){e.view.app.vault.getAbstractFileByPath(e.change.vaultPath)&&Cs(t,e.view,e.change.vaultPath)}function zz(t,e){t.stopPropagation(),e.manager.stage(e.change.path,!1).catch(r=>e.view.plugin.displayError(r)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function Vz(t,e){t.stopPropagation();let r=e.change.workingDir=="U";new gl({app:e.view.app,filesToDeleteCount:r?1:0,filesToDiscardCount:r?0:1,path:e.change.vaultPath}).openAndGetResult().then(n=>Ts(this,void 0,void 0,function*(){if(n=="delete"){let i=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);i instanceof Au.TFile?yield e.view.app.fileManager.trashFile(i):yield e.view.app.vault.adapter.remove(e.change.vaultPath)}else n=="discard"&&(yield e.manager.discard(e.change.path).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")}));e.view.app.workspace.trigger("obsidian-git:refresh")}),n=>e.view.plugin.displayError(n))}var Wz=fe('
'),qz=fe('
');function ku(t,e){tt(e,!0);let r=Ne([]),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");Zt(()=>{for(let E of r)E&&(0,Au.setIcon)(E,E.getAttr("data-icon"))});function i(E){E.stopPropagation(),Io(e.change.path)?a(E):s(E)}function a(E){var S;E.stopPropagation();let A=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);A instanceof Au.TFile&&((S=vn(e.view.app,E))===null||S===void 0||S.openFile(A).catch(k=>e.view.plugin.displayError(k)))}function s(E){E.stopPropagation(),e.view.plugin.tools.openDiff({aFile:e.change.path,aRef:"",event:E})}var o=qz();o.__mouseover=[Gz,e],o.__click=i;var l=G(o),c=G(l),u=G(c,!0);H(c);var f=te(c,2),d=G(f),h=G(d);{var p=E=>{var S=Wz();S.__click=a,Ze(S,A=>r[0]=A,()=>r==null?void 0:r[0]),Gr("auxclick",S,a),ae(E,S)};be(h,E=>{$o(e.change.vaultPath,e.view.app)&&E(p)})}var g=te(h,2);g.__click=[Vz,e],Ze(g,E=>r[1]=E,()=>r==null?void 0:r[1]);var v=te(g,2);v.__click=[zz,e],Ze(v,E=>r[2]=E,()=>r==null?void 0:r[2]),H(d);var y=te(d,2),b=G(y,!0);H(y),H(f),H(l),H(o),$e(E=>{ve(l,"data-path",e.change.vaultPath),ve(l,"data-tooltip-position",R(n)),ve(l,"aria-label",e.change.vaultPath),Be(u,E),ve(y,"data-type",e.change.workingDir),Be(b,e.change.workingDir)},[()=>Kn(e.change.vaultPath)]),Gr("auxclick",o,E=>{E.stopPropagation(),E.button==2?Xn(e.view.app,E,e.change.vaultPath,e.view.leaf,"git-source-control"):i(E)}),ae(t,o),rt()}gt(["mouseover","click"]);m();var O5=require("obsidian");function Yz(t,e){e.view.app.vault.getAbstractFileByPath(e.change.vaultPath)&&Cs(t,e.view,e.change.vaultPath)}var Xz=fe('
');function Tu(t,e){tt(e,!0);let r=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function n(f){var d;f.stopPropagation();let h=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);h instanceof O5.TFile&&((d=vn(e.view.app,f))===null||d===void 0||d.openFile(h).catch(p=>e.view.plugin.displayError(p)))}var i=Xz();i.__mouseover=[Yz,e],i.__click=n;var a=G(i),s=G(a),o=G(s,!0);H(s);var l=te(s,2),c=G(l),u=G(c,!0);H(c),H(l),H(a),H(i),$e(f=>{ve(a,"data-path",e.change.vaultPath),ve(a,"data-tooltip-position",R(r)),ve(a,"aria-label",e.change.vaultPath),Be(o,f),ve(c,"data-type",e.change.workingDir),Be(u,e.change.workingDir)},[()=>Kn(e.change.vaultPath)]),Gr("auxclick",i,f=>{f.stopPropagation(),f.button==2?Xn(e.view.app,f,e.change.vaultPath,e.view.leaf,"git-source-control"):n(f)}),ae(t,i),rt()}gt(["mouseover","click"]);m();var mp=require("obsidian");function Kz(t,e){e.view.app.vault.getFileByPath(e.change.vaultPath)&&Cs(t,e.view,e.change.vaultPath)}function Zz(t,e){t.stopPropagation(),e.manager.unstage(e.change.path,!1).catch(r=>e.view.plugin.displayError(r)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}var Jz=fe('
'),Qz=fe('
');function Cu(t,e){tt(e,!0);let r=Ne([]),n=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");Zt(()=>{for(let b of r)b&&(0,mp.setIcon)(b,b.getAttr("data-icon"))});function i(b){b.stopPropagation(),Io(e.change.path)?a(b):s(b)}function a(b){var E;b.stopPropagation();let S=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);S instanceof mp.TFile&&((E=vn(e.view.app,b))===null||E===void 0||E.openFile(S).catch(A=>e.view.plugin.displayError(A)))}function s(b){var E;b.stopPropagation(),e.view.plugin.tools.openDiff({aFile:(E=e.change.from)!==null&&E!==void 0?E:e.change.path,bFile:e.change.path,aRef:"HEAD",bRef:"",event:b})}var o=Qz();o.__mouseover=[Kz,e],o.__click=i;var l=G(o),c=G(l),u=G(c,!0);H(c);var f=te(c,2),d=G(f),h=G(d);{var p=b=>{var E=Jz();E.__click=a,Ze(E,S=>r[0]=S,()=>r==null?void 0:r[0]),ae(b,E)};be(h,b=>{$o(e.change.vaultPath,e.view.app)&&b(p)})}var g=te(h,2);g.__click=[Zz,e],Ze(g,b=>r[1]=b,()=>r==null?void 0:r[1]),H(d);var v=te(d,2),y=G(v,!0);H(v),H(f),H(l),H(o),$e(b=>{ve(l,"data-path",e.change.vaultPath),ve(l,"data-tooltip-position",R(n)),ve(l,"aria-label",e.change.vaultPath),Be(u,b),ve(v,"data-type",e.change.index),Be(y,e.change.index)},[()=>Kn(e.change.vaultPath)]),Gr("auxclick",o,b=>{b.stopPropagation(),b.button==2?Xn(e.view.app,b,e.change.vaultPath,e.view.leaf,"git-source-control"):i(b)}),ae(t,o),rt()}gt(["mouseover","click"]);m();m();var eV=fe(''),tV=fe("
");function Ps(t,e){tt(e,!0);var r=tV(),n=G(r);{var i=a=>{var s=eV(),o=G(s),l=G(o),c=G(l,!0);H(l),H(o),H(s),$e(()=>{ve(o,"aria-label","And "+(e.files.length-500)+" more files"),Be(c,"And "+(e.files.length-500)+" more files")}),ae(a,s)};be(n,a=>{e.files.length>500&&a(i)})}H(r),ae(t,r),rt()}var nV=fe("
"),iV=(t,e,r)=>e(t,R(r)),aV=(t,e,r)=>e(t,R(r).path),sV=fe('
'),oV=(t,e,r)=>e(t,R(r)),lV=(t,e,r)=>e(t,R(r).path),cV=fe('
',1),uV=fe(''),fV=fe('
'),dV=fe("
");function Rs(t,e){tt(e,!0);var r,n;let i=cn(e,"topLevel",3,!1),a=cn(e,"closed",15);for(let g of e.hierarchy.children)((n=(r=g.children)===null||r===void 0?void 0:r.length)!==null&&n!==void 0?n:0)>100&&a(a()[g.title]=!0,!0);let s=Ct(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function o(g,v){g.stopPropagation(),e.plugin.gitManager.stageAll({dir:v}).catch(y=>e.plugin.displayError(y)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function l(g,v){g.stopPropagation(),e.plugin.gitManager.unstageAll({dir:v}).catch(y=>e.plugin.displayError(y)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function c(g,v){g.stopPropagation(),e.plugin.discardAll(v.vaultPath)}function u(g,v){g.stopPropagation(),a(a()[v.path]=!a()[v.path],!0)}var f=dV();let d;var h=G(f);Vr(h,17,()=>$c(e.hierarchy.children,500),zr,(g,v)=>{var y=Li(),b=Ar(y);{var E=A=>{var k=nV(),w=G(k);{var x=T=>{Cu(T,{get change(){return R(v).data},get manager(){return e.plugin.gitManager},get view(){return e.view}})},_=T=>{var C=Li(),I=Ar(C);{var L=J=>{ku(J,{get change(){return R(v).data},get manager(){return e.plugin.gitManager},get view(){return e.view}})},F=J=>{var de=Li(),le=Ar(de);{var ce=Te=>{Tu(Te,{get change(){return R(v).data},get view(){return e.view}})};be(le,Te=>{e.fileType==2&&Te(ce)},!0)}ae(J,de)};be(I,J=>{e.fileType==1?J(L):J(F,!1)},!0)}ae(T,C)};be(w,T=>{e.fileType==0?T(x):T(_,!1)})}H(k),ae(A,k)},S=A=>{var k=fV();k.__click=[iV,u,v];let w;var x=G(k),_=te(G(x),2);let T;var C=te(_,2),I=G(C,!0);H(C);var L=te(C,2),F=G(L),J=G(F);{var de=ne=>{var N=sV();N.__click=[aV,l,v],ae(ne,N)},le=ne=>{var N=cV(),q=Ar(N);q.__click=[oV,c,v];var B=te(q,2);B.__click=[lV,o,v],ae(ne,N)};be(J,ne=>{e.fileType==0?ne(de):ne(le,!1)})}il(2),H(F),H(L),H(x);var ce=te(x,2);{var Te=ne=>{var N=uV(),q=G(N);Rs(q,{get hierarchy(){return R(v)},get plugin(){return e.plugin},get view(){return e.view},get fileType(){return e.fileType},get closed(){return a()},set closed(B){a(B)}}),H(N),Pn(3,N,()=>ui,()=>({duration:150})),ae(ne,N)};be(ce,ne=>{a()[R(v).path]||ne(Te)})}H(k),$e((ne,N)=>{w=ot(k,1,"tree-item nav-folder",null,w,ne),ve(x,"data-tooltip-position",R(s)),ve(x,"aria-label",R(v).vaultPath),T=ot(_,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,T,N),Be(I,R(v).title)},[()=>({"is-collapsed":a()[R(v).path]}),()=>({"is-collapsed":a()[R(v).path]})]),Gr("auxclick",k,ne=>Xn(e.view.app,ne,R(v).vaultPath,e.view.leaf,"git-source-control")),ae(A,k)};be(b,A=>{R(v).data?A(E):A(S,!1)})}ae(g,y)});var p=te(h,2);Ps(p,{get files(){return e.hierarchy.children}}),H(f),$e(g=>d=ot(f,1,"",null,d,g),[()=>({topLevel:i()})]),ae(t,f),rt()}gt(["click"]);function hV(t,e,r,n,i,a){if(ie(e,!0),R(r)){let s=R(r).staged.length>0;n().promiseQueue.addTask(()=>n().commit({fromAuto:!1,commitMessage:R(i),onlyStaged:s}).then(()=>ie(i,n().settings.commitMessage,!0)).finally(a))}}function I5(t,e,r,n,i){ie(e,!0),r().promiseQueue.addTask(()=>r().gitManager.stageAll({status:R(n)}).finally(i))}function $5(t,e,r,n,i){ie(e,!0),r().promiseQueue.addTask(()=>r().gitManager.unstageAll({status:R(n)}).finally(i))}function pV(t,e,r,n){ie(e,!0),r().promiseQueue.addTask(()=>r().push().finally(n))}function mV(t,e,r,n){ie(e,!0),r().promiseQueue.addTask(()=>r().pullChangesFromRemote().finally(n))}function gV(t,e){t.stopPropagation(),e().discardAll()}var vV=(t,e,r,n)=>{ie(e,!R(e)),(0,Ms.setIcon)(r[6],R(e)?"list":"folder"),n().settings.treeStructure=R(e),n().saveSettings()},yV=(t,e)=>ie(e,""),wV=fe('
'),bV=(t,e)=>ie(e,!R(e)),_V=fe(" ",1),xV=fe(''),SV=(t,e)=>ie(e,!R(e)),EV=fe(" ",1),AV=fe(''),kV=(t,e)=>ie(e,!R(e)),TV=fe(" ",1),CV=fe(''),PV=fe('
'),RV=fe(''),MV=fe('
'),OV={hash:"svelte-11adhly",code:`.commit-msg-input.svelte-11adhly {width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field);}.git-commit-msg.svelte-11adhly {position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto;}main.svelte-11adhly .git-tools:where(.svelte-11adhly) .files-count:where(.svelte-11adhly) {padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center;}.nav-folder-title.svelte-11adhly {align-items:center;}.git-commit-msg-clear-button.svelte-11adhly {position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out;}.git-commit-msg-clear-button.svelte-11adhly:after {content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat;}`};function fy(t,e){tt(e,!0),Tn(t,OV);let r=cn(e,"plugin",7),n=cn(e,"view",7),i=Pe(!1),a=Pe(void 0),s=Pe(Ne([])),o=Pe(Ne(r().settings.commitMessage)),l=Ne([]),c=Pe(void 0),u=Pe(void 0),f=Pe(void 0),d=Pe(!0),h=Pe(!0),p=Pe(!0),g=Pe(0),v=Pe(Ne({})),y=Pe(Ne({})),b=Pe(Ne({})),E=Pe(Ne(r().settings.treeStructure));n().registerEvent(n().app.workspace.on("obsidian-git:loading-status",()=>ie(i,!0))),n().registerEvent(n().app.workspace.on("obsidian-git:status-changed",()=>void A().catch(console.error))),n().plugin.cachedStatus==null?n().plugin.refresh().catch(console.error):A().catch(console.error),Zt(()=>{l.forEach(X=>(0,Ms.setIcon)(X,X.getAttr("data-icon")))}),Zt(()=>{l.forEach(X=>{var Oe,De;!X||X.id!="push"||(Ms.Platform.isMobile?(X.removeClass("button-border"),R(g)>0&&X.addClass("button-border")):((Oe=X.firstElementChild)===null||Oe===void 0||Oe.removeAttribute("color"),R(g)>0&&((De=X.firstElementChild)===null||De===void 0||De.setAttr("color","var(--text-accent)"))))})}),n().scope=new Ms.Scope(r().app.scope),n().scope.register(["Ctrl"],"Enter",X=>S());function S(){if(ie(i,!0),R(a)){let X=R(a).staged.length>0;r().promiseQueue.addTask(()=>r().commitAndSync({fromAutoBackup:!1,commitMessage:R(o),onlyStaged:X}).then(()=>{ie(o,r().settings.commitMessage,!0)}).finally(k))}}function A(){return Ts(this,void 0,void 0,function*(){if(!r().gitReady){ie(a,void 0);return}if(ie(g,yield r().gitManager.getUnpushedCommits(),!0),ie(a,r().cachedStatus,!0),ie(i,!1),r().lastPulledFiles&&r().lastPulledFiles!=R(s)&&(ie(s,r().lastPulledFiles,!0),ie(f,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure(R(s))},!0)),R(a)){let X=(Oe,De)=>Oe.vaultPath.split("/").last().localeCompare(Kn(De.vaultPath));R(a).changed.sort(X),R(a).staged.sort(X),ie(c,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure(R(a).changed)},!0),ie(u,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure(R(a).staged)},!0)}else ie(c,void 0),ie(u,void 0)})}function k(){n().app.workspace.trigger("obsidian-git:refresh")}let w=Ct(()=>(R(o).match(/\n/g)||[]).length+1||1);var x=MV(),_=G(x),T=G(_),C=G(T);C.__click=S,Ze(C,X=>l[0]=X,()=>l==null?void 0:l[0]);var I=te(C,2);I.__click=[hV,i,a,r,o,k],Ze(I,X=>l[1]=X,()=>l==null?void 0:l[1]);var L=te(I,2);L.__click=[I5,i,r,a,k],Ze(L,X=>l[2]=X,()=>l==null?void 0:l[2]);var F=te(L,2);F.__click=[$5,i,r,a,k],Ze(F,X=>l[3]=X,()=>l==null?void 0:l[3]);var J=te(F,2);J.__click=[pV,i,r,k],Ze(J,X=>l[4]=X,()=>l==null?void 0:l[4]);var de=te(J,2);de.__click=[mV,i,r,k],Ze(de,X=>l[5]=X,()=>l==null?void 0:l[5]);var le=te(de,2);le.__click=[vV,E,l,r],Ze(le,X=>l[6]=X,()=>l==null?void 0:l[6]);var ce=te(le,2);let Te;ce.__click=k,Ze(ce,X=>l[7]=X,()=>l==null?void 0:l[7]),H(T),H(_);var ne=te(_,2),N=G(ne);H1(N);var q=te(N,2);{var B=X=>{var Oe=wV();Oe.__click=[yV,o],ve(Oe,"aria-label","Clear"),ae(X,Oe)};be(q,X=>{R(o)&&X(B)})}H(ne);var Fe=te(ne,2),lr=G(Fe);{var Ut=X=>{var Oe=RV(),De=G(Oe);let Pt;var Le=G(De);Le.__click=[bV,h];var U=G(Le);let Je;var j=te(U,4),Z=G(j),Se=G(Z);Se.__click=[$5,i,r,a,k],Ze(Se,Mt=>l[8]=Mt,()=>l==null?void 0:l[8]),H(Z);var qe=te(Z,2),Rt=G(qe,!0);H(qe),H(j),H(Le);var vl=te(Le,2);{var j5=Mt=>{var Gt=xV(),Bi=G(Gt);{var Rn=Jt=>{Rs(Jt,{get hierarchy(){return R(u)},get plugin(){return r()},get view(){return n()},get fileType(){return 0},topLevel:!0,get closed(){return R(v)},set closed(fn){ie(v,fn,!0)}})},Os=Jt=>{var fn=_V(),Pa=Ar(fn);Vr(Pa,17,()=>$c(R(a).staged,500),zr,(Hi,yl)=>{Cu(Hi,{get change(){return R(yl)},get view(){return n()},get manager(){return r().gitManager}})});var fi=te(Pa,2);Ps(fi,{get files(){return R(a).staged}}),ae(Jt,fn)};be(Bi,Jt=>{R(E)?Jt(Rn):Jt(Os,!1)})}H(Gt),Pn(3,Gt,()=>ui,()=>({duration:150})),ae(Mt,Gt)};be(vl,Mt=>{R(h)&&Mt(j5)})}H(De);var Ru=te(De,2);let dy;var Mu=G(Ru);Mu.__click=[SV,d];var hy=G(Mu);let py;var my=te(hy,4),yp=G(my),gy=G(yp);gy.__click=[gV,r];var vy=te(gy,2);vy.__click=[I5,i,r,a,k],Ze(vy,Mt=>l[9]=Mt,()=>l==null?void 0:l[9]),H(yp);var yy=te(yp,2),N5=G(yy,!0);H(yy),H(my),H(Mu);var B5=te(Mu,2);{var H5=Mt=>{var Gt=AV(),Bi=G(Gt);{var Rn=Jt=>{Rs(Jt,{get hierarchy(){return R(c)},get plugin(){return r()},get view(){return n()},get fileType(){return 1},topLevel:!0,get closed(){return R(y)},set closed(fn){ie(y,fn,!0)}})},Os=Jt=>{var fn=EV(),Pa=Ar(fn);Vr(Pa,17,()=>$c(R(a).changed,500),zr,(Hi,yl)=>{ku(Hi,{get change(){return R(yl)},get view(){return n()},get manager(){return r().gitManager}})});var fi=te(Pa,2);Ps(fi,{get files(){return R(a).changed}}),ae(Jt,fn)};be(Bi,Jt=>{R(E)?Jt(Rn):Jt(Os,!1)})}H(Gt),Pn(3,Gt,()=>ui,()=>({duration:150})),ae(Mt,Gt)};be(B5,Mt=>{R(d)&&Mt(H5)})}H(Ru);var U5=te(Ru,2);{var G5=Mt=>{var Gt=PV();let Bi;var Rn=G(Gt);Rn.__click=[kV,p];var Os=te(G(Rn),4),Jt=G(Os,!0);H(Os),H(Rn);var fn=te(Rn,2);{var Pa=fi=>{var Hi=CV(),yl=G(Hi);{var z5=Is=>{Rs(Is,{get hierarchy(){return R(f)},get plugin(){return r()},get view(){return n()},get fileType(){return 2},topLevel:!0,get closed(){return R(b)},set closed(Ou){ie(b,Ou,!0)}})},V5=Is=>{var Ou=TV(),wy=Ar(Ou);Vr(wy,17,()=>R(s),zr,(q5,Y5)=>{Tu(q5,{get change(){return R(Y5)},get view(){return n()}})});var W5=te(wy,2);Ps(W5,{get files(){return R(s)}}),ae(Is,Ou)};be(yl,Is=>{R(E)?Is(z5):Is(V5,!1)})}H(Hi),Pn(3,Hi,()=>ui,()=>({duration:150})),ae(fi,Hi)};be(fn,fi=>{R(p)&&fi(Pa)})}H(Gt),$e(fi=>{Bi=ot(Gt,1,"pulled nav-folder",null,Bi,fi),Be(Jt,R(s).length)},[()=>({"is-collapsed":!R(p)})]),ae(Mt,Gt)};be(U5,Mt=>{R(s).length>0&&R(f)&&Mt(G5)})}H(Oe),$e((Mt,Gt,Bi,Rn)=>{Pt=ot(De,1,"staged tree-item nav-folder",null,Pt,Mt),Je=ot(U,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,Je,Gt),Be(Rt,R(a).staged.length),dy=ot(Ru,1,"changes tree-item nav-folder",null,dy,Bi),py=ot(hy,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,py,Rn),Be(N5,R(a).changed.length)},[()=>({"is-collapsed":!R(h)}),()=>({"is-collapsed":!R(h)}),()=>({"is-collapsed":!R(d)}),()=>({"is-collapsed":!R(d)})]),ae(X,Oe)};be(lr,X=>{R(a)&&R(u)&&R(c)&&X(Ut)})}H(Fe),H(x),$e(X=>{ve(x,"data-type",Ft.type),ve(le,"data-icon",R(E)?"list":"folder"),Te=ot(ce,1,"clickable-icon nav-action-button",null,Te,X),ve(N,"rows",R(w))},[()=>({loading:R(i)})]),ey(N,()=>R(o),X=>ie(o,X)),ae(t,x),rt()}gt(["click"]);var Pu=class extends F5.ItemView{constructor(e,r){super(e),this.plugin=r,this.hoverPopover=null}getViewType(){return Ft.type}getDisplayText(){return Ft.name}getIcon(){return Ft.icon}onClose(){return this._view&&ji(this._view),super.onClose()}reload(){this._view&&ji(this._view),this._view=Ta(fy,{target:this.contentEl,props:{plugin:this.plugin,view:this}})}onOpen(){return this.reload(),super.onOpen()}};m();var gp=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;this.statusBarEl.addClass("mod-clickable"),this.statusBarEl.onClickEvent(n=>{this.plugin.switchBranch().catch(i=>r.displayError(i))})}async display(){if(this.plugin.gitReady){let e=await this.plugin.gitManager.branchInfo();e.current!=null?this.statusBarEl.setText(e.current):this.statusBarEl.empty()}else this.statusBarEl.empty()}remove(){this.statusBarEl.remove()}};var vp=class extends _e.Plugin{constructor(){super(...arguments);this.automaticsManager=new Bc(this);this.tools=new Uc(this);this.localStorage=new vh(this);this.state={gitAction:0,offlineMode:!1};this.gitReady=!1;this.promiseQueue=new fh(this);this.intervalsToClear=[];this.lineAuthoringFeature=new uh(this)}setPluginState(r){var n;this.state=Object.assign(this.state,r),(n=this.statusBar)==null||n.display()}async updateCachedStatus(){var r,n;return this.app.workspace.trigger("obsidian-git:loading-status"),this.cachedStatus=await this.gitManager.status(),this.cachedStatus.conflicted.length>0?(this.localStorage.setConflict(!0),await((r=this.branchBar)==null?void 0:r.display())):(this.localStorage.setConflict(!1),await((n=this.branchBar)==null?void 0:n.display())),this.app.workspace.trigger("obsidian-git:status-changed",this.cachedStatus),this.cachedStatus}async refresh(){if(!this.gitReady)return;let r=this.app.workspace.getLeavesOfType(Ft.type),n=this.app.workspace.getLeavesOfType(Zr.type);(this.settings.changedFilesInStatusBar||r.some(i=>{var a;return!((a=i.isDeferred)!=null&&a)})||n.some(i=>{var a;return!((a=i.isDeferred)!=null&&a)}))&&await this.updateCachedStatus().catch(i=>this.displayError(i)),this.app.workspace.trigger("obsidian-git:refreshed")}refreshUpdatedHead(){this.lineAuthoringFeature.refreshLineAuthorViews()}async onload(){console.log("loading "+this.manifest.name+" plugin: v"+this.manifest.version),Nc.plugin=this,this.localStorage.migrate(),await this.loadSettings(),await this.migrateSettings(),this.settingsTab=new Kd(this.app,this),this.addSettingTab(this.settingsTab),this.localStorage.getPluginDisabled()||(this.registerStuff(),this.app.workspace.onLayoutReady(()=>this.init({fromReload:!1}).catch(r=>this.displayError(r))))}onExternalSettingsChange(){this.reloadSettings().catch(r=>this.displayError(r))}async reloadSettings(){let r=JSON.stringify(this.settings);await this.loadSettings();let n=JSON.stringify(this.settings);r!==n&&(this.log("Reloading settings"),this.unloadPlugin(),await this.init({fromReload:!0}),this.app.workspace.getLeavesOfType(Ft.type).forEach(i=>{var a;if(!((a=i.isDeferred)!=null&&a))return i.view.reload()}),this.app.workspace.getLeavesOfType(Zr.type).forEach(i=>{var a;if(!((a=i.isDeferred)!=null&&a))return i.view.reload()}))}registerStuff(){this.registerEvent(this.app.workspace.on("obsidian-git:refresh",()=>{this.refresh().catch(r=>this.displayError(r))})),this.registerEvent(this.app.workspace.on("obsidian-git:head-change",()=>{this.refreshUpdatedHead()})),this.registerEvent(this.app.workspace.on("file-menu",(r,n,i)=>{this.handleFileMenu(r,n,i,"file-manu")})),this.registerEvent(this.app.workspace.on("obsidian-git:menu",(r,n,i)=>{this.handleFileMenu(r,n,i,"obsidian-git:menu")})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>{this.onActiveLeafChange(r)})),this.registerEvent(this.app.vault.on("modify",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("delete",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("create",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("rename",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerView(Ft.type,r=>new Pu(r,this)),this.registerView(Zr.type,r=>new Su(r,this)),this.registerView(ua.type,r=>new ls(r,this)),this.registerView(ca.type,r=>new fs(r,this)),this.addRibbonIcon("git-pull-request","Open Git source control",async()=>{var i;let r=this.app.workspace.getLeavesOfType(Ft.type),n;r.length===0?(n=(i=this.app.workspace.getRightLeaf(!1))!=null?i:this.app.workspace.getLeaf(),await n.setViewState({type:Ft.type})):n=r.first(),await this.app.workspace.revealLeaf(n)}),this.registerHoverLinkSource(Ft.type,{display:"Git View",defaultMod:!0}),this.lineAuthoringFeature.onLoadPlugin(),this.setRefreshDebouncer(),oM(this)}setRefreshDebouncer(){var r;(r=this.debRefresh)==null||r.cancel(),this.debRefresh=(0,_e.debounce)(()=>{this.settings.refreshSourceControl&&this.refresh().catch(console.error)},this.settings.refreshSourceControlTimer,!0)}async addFileToGitignore(r,n){let i=this.gitManager.getRelativeRepoPath(r,!0),a=u3({isFolder:n,gitRelativePath:i});return await this.app.vault.adapter.append(this.gitManager.getRelativeVaultPath(".gitignore"),` +`+a),this.refresh()}handleFileMenu(r,n,i,a){if(!this.gitReady||!this.settings.showFileMenu||!n)return;let s;if(typeof n=="string"?s=n:s=n.path,i=="file-explorer-context-menu"&&(r.addItem(o=>{o.setTitle("Git: Stage").setIcon("plus-circle").setSection("action").onClick(l=>{this.promiseQueue.addTask(async()=>{n instanceof _e.TFile?await this.gitManager.stage(n.path,!0):await this.gitManager.stageAll({dir:this.gitManager.getRelativeRepoPath(s,!0)}),this.displayMessage(`Staged ${s}`)})})}),r.addItem(o=>{o.setTitle("Git: Unstage").setIcon("minus-circle").setSection("action").onClick(l=>{this.promiseQueue.addTask(async()=>{n instanceof _e.TFile?await this.gitManager.unstage(n.path,!0):await this.gitManager.unstageAll({dir:this.gitManager.getRelativeRepoPath(s,!0)}),this.displayMessage(`Unstaged ${s}`)})})}),r.addItem(o=>{o.setTitle("Git: Add to .gitignore").setIcon("file-x").setSection("action").onClick(l=>{this.addFileToGitignore(s,n instanceof _e.TFolder).catch(c=>this.displayError(c))})})),i=="git-source-control"){r.addItem(l=>{l.setTitle("Git: Add to .gitignore").setIcon("file-x").setSection("action").onClick(c=>{this.addFileToGitignore(s,n instanceof _e.TFolder).catch(u=>this.displayError(u))})});let o=this.app.vault.adapter;a==="obsidian-git:menu"&&o instanceof _e.FileSystemAdapter&&(r.addItem(l=>{l.setTitle("Open in default app").setIcon("arrow-up-right").setSection("action").onClick(c=>{this.app.openWithDefaultApp(s)})}),r.addItem(l=>{l.setTitle("Show in system explorer").setIcon("arrow-up-right").setSection("action").onClick(c=>{window.electron.shell.showItemInFolder(L5.join(o.getBasePath(),s))})}))}}async migrateSettings(){this.settings.mergeOnPull!=null&&(this.settings.syncMethod=this.settings.mergeOnPull?"merge":"rebase",this.settings.mergeOnPull=void 0,await this.saveSettings()),this.settings.autoCommitMessage===void 0&&(this.settings.autoCommitMessage=this.settings.commitMessage,await this.saveSettings()),this.settings.gitPath!=null&&(this.localStorage.setGitPath(this.settings.gitPath),this.settings.gitPath=void 0,await this.saveSettings()),this.settings.username!=null&&(this.localStorage.setPassword(this.settings.username),this.settings.username=void 0,await this.saveSettings())}unloadPlugin(){var r,n;this.gitReady=!1,this.lineAuthoringFeature.deactivateFeature(),this.automaticsManager.unload(),(r=this.branchBar)==null||r.remove(),(n=this.statusBar)==null||n.remove(),this.statusBar=void 0,this.branchBar=void 0,this.gitManager.unload(),this.promiseQueue.clear();for(let i of this.intervalsToClear)window.clearInterval(i);this.intervalsToClear=[],this.debRefresh.cancel()}onunload(){this.unloadPlugin(),console.log("unloading "+this.manifest.name+" plugin")}async loadSettings(){let r=await this.loadData();r==null&&(r={showedMobileNotice:!0}),this.settings=gT(Xe,r)}async saveSettings(){var r;(r=this.settingsTab)==null||r.beforeSaveSettings(),await this.saveData(this.settings)}get useSimpleGit(){return _e.Platform.isDesktopApp}async init({fromReload:r=!1}){var n;if(this.settings.showStatusBar&&!this.statusBar){let i=this.addStatusBarItem();this.statusBar=new dh(i,this),this.intervalsToClear.push(window.setInterval(()=>{var a;return(a=this.statusBar)==null?void 0:a.display()},1e3))}try{this.useSimpleGit?(this.gitManager=new Ce(this),await this.gitManager.setGitInstance()):this.gitManager=new wn(this);let i=await this.gitManager.checkRequirements(),a=this.localStorage.getPausedAutomatics();switch(i){case"missing-git":this.displayError(`Cannot run git command. Trying to run: '${this.localStorage.getGitPath()||"git"}' .`);break;case"missing-repo":new _e.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo.",1e4);break;case"valid":if(this.gitReady=!0,this.setPluginState({gitAction:0}),_e.Platform.isDesktop&&this.settings.showBranchStatusBar&&!this.branchBar){let s=this.addStatusBarItem();this.branchBar=new gp(s,this),this.intervalsToClear.push(window.setInterval(()=>{var o;return void((o=this.branchBar)==null?void 0:o.display().catch(console.error))},6e4))}await((n=this.branchBar)==null?void 0:n.display()),this.lineAuthoringFeature.conditionallyActivateBySettings(),this.app.workspace.trigger("obsidian-git:refresh"),this.app.workspace.trigger("obsidian-git:head-change"),!r&&this.settings.autoPullOnBoot&&!a&&this.promiseQueue.addTask(()=>this.pullChangesFromRemote()),a||await this.automaticsManager.init(),a&&new _e.Notice("Automatic routines are currently paused.");break;default:this.log("Something weird happened. The 'checkRequirements' result is "+i)}}catch(i){this.displayError(i),console.error(i)}}async createNewRepo(){try{await this.gitManager.init(),new _e.Notice("Initialized new repo"),await this.init({fromReload:!0})}catch(r){this.displayError(r)}}async cloneNewRepo(){let n=await new ze(this,{placeholder:"Enter remote URL"}).openAndGetResult();if(n){let i="Vault Root",a=await new ze(this,{options:this.gitManager instanceof wn?[i]:[],placeholder:"Enter directory for clone. It needs to be empty or not existent.",allowEmpty:this.gitManager instanceof wn}).openAndGetResult();if(a==null)return;if(a===i&&(a="."),a=(0,_e.normalizePath)(a),a==="/"&&(a="."),a==="."){let f=await new ze(this,{options:["NO","YES"],placeholder:`Does your remote repo contain a ${this.app.vault.configDir} directory at the root?`,onlySelection:!0}).openAndGetResult();if(f===void 0){new _e.Notice("Aborted clone");return}else if(f==="YES"){let d="DELETE ALL YOUR LOCAL CONFIG AND PLUGINS";if(await new ze(this,{options:["Abort clone",d],placeholder:`To avoid conflicts, the local ${this.app.vault.configDir} directory needs to be deleted.`,onlySelection:!0}).openAndGetResult()===d)await this.app.vault.adapter.rmdir(this.app.vault.configDir,!0);else{new _e.Notice("Aborted clone");return}}}let s=await new ze(this,{placeholder:"Specify depth of clone. Leave empty for full clone.",allowEmpty:!0}).openAndGetResult(),o;if(s!==""&&(o=parseInt(s),isNaN(o))){new _e.Notice("Invalid depth. Aborting clone.");return}new _e.Notice(`Cloning new repo into "${a}"`);let l=this.settings.basePath,c=a&&a!==".";c&&(this.settings.basePath=a);try{await this.gitManager.clone(vv(n),a,o),new _e.Notice("Cloned new repo."),new _e.Notice("Please restart Obsidian"),c&&await this.saveSettings()}catch(u){this.displayError(u),this.settings.basePath=l,await this.saveSettings()}}}async isAllInitialized(){return this.gitReady||await this.init({fromReload:!0}),this.gitReady}async pullChangesFromRemote(){if(!await this.isAllInitialized())return;let r=await this.pull();if(r!==!1){if(r||this.displayMessage("Pull: Everything is up-to-date"),this.gitManager instanceof Ce){let n=await this.updateCachedStatus();n.conflicted.length>0&&(this.displayError(`You have conflicts in ${n.conflicted.length} ${n.conflicted.length==1?"file":"files"}`),await this.handleConflict(n.conflicted))}this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0})}}async commitAndSync({fromAutoBackup:r,requestCustomMessage:n=!1,commitMessage:i,onlyStaged:a=!1}){!await this.isAllInitialized()||(this.settings.syncMethod=="reset"&&this.settings.pullBeforePush&&await this.pull(),!await this.commit({fromAuto:r,requestCustomMessage:n,commitMessage:i,onlyStaged:a}))||(this.settings.syncMethod!="reset"&&this.settings.pullBeforePush&&await this.pull(),this.settings.disablePush||(await this.remotesAreSet()&&await this.gitManager.canPush()?await this.push():this.displayMessage("No commits to push")),this.setPluginState({gitAction:0}))}async commit({fromAuto:r,requestCustomMessage:n=!1,onlyStaged:i=!1,commitMessage:a,amend:s=!1}){if(!await this.isAllInitialized())return!1;try{let o=this.localStorage.getConflict(),l,c,u;if(this.gitManager instanceof Ce){if(await this.mayDeleteConflictFile(),c=await this.updateCachedStatus(),c.conflicted.length==0&&(o=!1),r&&c.conflicted.length>0)return this.displayError(`Did not commit, because you have conflicts in ${c.conflicted.length} ${c.conflicted.length==1?"file":"files"}. Please resolve them and commit per command.`),await this.handleConflict(c.conflicted),!1;l=[...c.changed,...c.staged]}else{if(r&&o)return this.displayError("Did not commit, because you have conflicts. Please resolve them and commit per command."),!1;if(o)await this.mayDeleteConflictFile(),c=await this.updateCachedStatus(),l=[...c.changed,...c.staged];else{let f=this.gitManager;i?l=await f.getStagedFiles():(u=await f.getUnstagedFiles(),l=u.map(({path:d})=>({vaultPath:this.gitManager.getRelativeVaultPath(d),path:d})))}}if(await this.tools.hasTooBigFiles(l))return this.setPluginState({gitAction:0}),!1;if(l.length!==0||o){let f=a!=null?a:a=r?this.settings.autoCommitMessage:this.settings.commitMessage;if(r&&this.settings.customMessageOnAutoBackup||n){!this.settings.disablePopups&&r&&new _e.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort");let p=await new hh(this).openAndGetResult();if(p!=null&&p!=""&&p!="...")f=p;else return this.setPluginState({gitAction:0}),!1}else if(this.gitManager instanceof Ce&&this.settings.commitMessageScript){let p=this.settings.commitMessageScript,g=this.localStorage.getHostname()||"",v=p.replace("{{hostname}}",g);v=v.replace("{{date}}",(0,_e.moment)().format(this.settings.commitDateFormat));let y=await Fc("sh",["-c",v],{cwd:this.gitManager.absoluteRepoPath});y.code!=0?this.displayError(y.stderr):y.stdout.trim().length==0?this.displayMessage("Stdout from commit message script is empty. Using default message."):f=y.stdout}let d;i?d=await this.gitManager.commit({message:f,amend:s}):d=await this.gitManager.commitAll({message:f,status:c,unstagedFiles:u,amend:s}),this.gitManager instanceof Ce&&await this.updateCachedStatus();let h=!1;d===void 0&&(h=!0,d=l.length),this.displayMessage(`Committed${h?" approx.":""} ${d} ${d==1?"file":"files"}`)}else this.displayMessage("No changes to commit");return this.app.workspace.trigger("obsidian-git:refresh"),!0}catch(o){return this.displayError(o),!1}}async push(){if(!await this.isAllInitialized()||!await this.remotesAreSet())return!1;let r=this.localStorage.getConflict();try{this.gitManager instanceof Ce&&await this.mayDeleteConflictFile();let n;if(this.gitManager instanceof Ce&&(n=await this.updateCachedStatus()).conflicted.length>0)return this.displayError(`Cannot push. You have conflicts in ${n.conflicted.length} ${n.conflicted.length==1?"file":"files"}`),await this.handleConflict(n.conflicted),!1;if(this.gitManager instanceof wn&&r)return this.displayError("Cannot push. You have conflicts"),!1;this.log("Pushing....");let i=await this.gitManager.push();return i!==void 0&&(i>0?this.displayMessage(`Pushed ${i} ${i==1?"file":"files"} to remote`):this.displayMessage("No commits to push")),this.setPluginState({offlineMode:!1}),this.app.workspace.trigger("obsidian-git:refresh"),!0}catch(n){return n instanceof Co?this.handleNoNetworkError(n):this.displayError(n),!1}}async pull(){if(!await this.remotesAreSet())return!1;try{this.log("Pulling....");let r=await this.gitManager.pull()||[];return this.setPluginState({offlineMode:!1}),r.length>0&&(this.displayMessage(`Pulled ${r.length} ${r.length==1?"file":"files"} from remote`),this.lastPulledFiles=r),r.length}catch(r){return this.displayError(r),!1}}async fetch(){if(await this.remotesAreSet())try{await this.gitManager.fetch(),this.displayMessage("Fetched from remote"),this.setPluginState({offlineMode:!1}),this.app.workspace.trigger("obsidian-git:refresh")}catch(r){this.displayError(r)}}async mayDeleteConflictFile(){let r=this.app.vault.getAbstractFileByPath(To);r&&(this.app.workspace.iterateAllLeaves(n=>{var i;n.view instanceof _e.MarkdownView&&((i=n.view.file)==null?void 0:i.path)==r.path&&n.detach()}),await this.app.vault.delete(r))}async stageFile(r){return await this.isAllInitialized()?(await this.gitManager.stage(r.path,!0),this.displayMessage(`Staged ${r.path}`),this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0}),!0):!1}async unstageFile(r){return await this.isAllInitialized()?(await this.gitManager.unstage(r.path,!0),this.displayMessage(`Unstaged ${r.path}`),this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0}),!0):!1}async switchBranch(){var i;if(!await this.isAllInitialized())return;let r=await this.gitManager.branchInfo(),n=await new pp(this,r.branches).openAndGetReslt();if(n!=null)return await this.gitManager.checkout(n),this.displayMessage(`Switched to ${n}`),this.app.workspace.trigger("obsidian-git:refresh"),await((i=this.branchBar)==null?void 0:i.display()),n}async switchRemoteBranch(){var a;if(!await this.isAllInitialized())return;let r=await this.selectRemoteBranch()||"",[n,i]=ki(r);if(i!=null&&n!=null)return await this.gitManager.checkout(i,n),this.displayMessage(`Switched to ${r}`),await((a=this.branchBar)==null?void 0:a.display()),r}async createBranch(){var n;if(!await this.isAllInitialized())return;let r=await new ze(this,{placeholder:"Create new branch"}).openAndGetResult();if(r!=null)return await this.gitManager.createBranch(r),this.displayMessage(`Created new branch ${r}`),await((n=this.branchBar)==null?void 0:n.display()),r}async deleteBranch(){var i;if(!await this.isAllInitialized())return;let r=await this.gitManager.branchInfo();r.current&&r.branches.remove(r.current);let n=await new ze(this,{options:r.branches,placeholder:"Delete branch",onlySelection:!0}).openAndGetResult();if(n!=null){let a=!1;if(!await this.gitManager.branchIsMerged(n)){let o=await new ze(this,{options:["YES","NO"],placeholder:"This branch isn't merged into HEAD. Force delete?",onlySelection:!0}).openAndGetResult();if(o!=="YES")return;a=o==="YES"}return await this.gitManager.deleteBranch(n,a),this.displayMessage(`Deleted branch ${n}`),await((i=this.branchBar)==null?void 0:i.display()),n}}async remotesAreSet(){return this.settings.updateSubmodules||(await this.gitManager.branchInfo()).tracking?!0:(new _e.Notice("No upstream branch is set. Please select one."),await this.setUpstreamBranch())}async setUpstreamBranch(){let r=await this.selectRemoteBranch();return r==null?(this.displayError("Aborted. No upstream-branch is set!",1e4),this.setPluginState({gitAction:0}),!1):(await this.gitManager.updateUpstreamBranch(r),this.displayMessage(`Set upstream branch to ${r}`),this.setPluginState({gitAction:0}),!0)}async discardAll(r){if(!await this.isAllInitialized())return!1;let n=await this.gitManager.status({path:r}),i=0,a=0;for(let o of n.changed)o.workingDir=="U"?i++:a++;if(i+a==0)return!1;let s=await new gl({app:this.app,filesToDeleteCount:i,filesToDiscardCount:a,path:r!=null?r:""}).openAndGetResult();switch(s){case!1:return s;case"discard":await this.gitManager.discardAll({dir:r,status:this.cachedStatus});break;case"delete":{await this.gitManager.discardAll({dir:r,status:this.cachedStatus});let o=await this.gitManager.getUntrackedPaths({path:r,status:this.cachedStatus});for(let l of o){let c=this.gitManager.getRelativeVaultPath(l),u=this.app.vault.getAbstractFileByPath(c);u?await this.app.fileManager.trashFile(u):l.endsWith("/")?await this.app.vault.adapter.rmdir(c,!0):await this.app.vault.adapter.remove(c)}break}default:Ud(s)}return this.app.workspace.trigger("obsidian-git:refresh"),s}async handleConflict(r){this.localStorage.setConflict(!0);let n;r!==void 0&&(n=["# Conflicts","Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`","(This file will automatically be deleted before commit)","[[#Additional Instructions]] available below file list","",...r.map(i=>{let a=this.app.vault.getAbstractFileByPath(i);return a instanceof _e.TFile?`- [[${this.app.metadataCache.fileToLinktext(a,"/")}]]`:`- Not a file: ${i}`}),` +# Additional Instructions +I strongly recommend to use "Source mode" for viewing the conflicted files. For simple conflicts, in each file listed above replace every occurrence of the following text blocks with the desired text. + +\`\`\`diff +<<<<<<< HEAD + File changes in local repository +======= + File changes in remote repository +>>>>>>> origin/main +\`\`\``]),await this.tools.writeAndOpenFile(n==null?void 0:n.join(` +`))}async editRemotes(){if(!await this.isAllInitialized())return;let r=await this.gitManager.getRemotes(),i=await new ze(this,{options:r,placeholder:"Select or create a new remote by typing its name and selecting it"}).openAndGetResult();if(i){let a=await this.gitManager.getRemoteUrl(i),o=await new ze(this,{initialValue:a}).openAndGetResult();if(o)return await this.gitManager.setRemote(i,vv(o)),i}}async selectRemoteBranch(){let r=await this.gitManager.getRemotes(),n;r.length===0&&(n=await this.editRemotes(),n==null&&(r=await this.gitManager.getRemotes()));let i=new ze(this,{options:r,placeholder:"Select or create a new remote by typing its name and selecting it"}),a=n!=null?n:await i.openAndGetResult();if(a){this.displayMessage("Fetching remote branches"),await this.gitManager.fetch(a);let s=await this.gitManager.getRemoteBranches(a),l=await new ze(this,{options:s,placeholder:"Select or create a new remote branch by typing its name and selecting it"}).openAndGetResult();return l.startsWith(a+"/")?l:`${a}/${l}`}}async removeRemote(){if(!await this.isAllInitialized())return;let r=await this.gitManager.getRemotes(),i=await new ze(this,{options:r,placeholder:"Select a remote"}).openAndGetResult();i&&await this.gitManager.removeRemote(i)}onActiveLeafChange(r){var s,o;let n=r==null?void 0:r.view;if(!(n!=null&&n.getState().file)&&!(n instanceof ls||n instanceof fs))return;let i=this.app.workspace.getLeavesOfType(Ft.type).first(),a=this.app.workspace.getLeavesOfType(Zr.type).first();if((s=i==null?void 0:i.view.containerEl.querySelector("div.tree-item-self.is-active"))==null||s.removeClass("is-active"),(o=a==null?void 0:a.view.containerEl.querySelector("div.tree-item-self.is-active"))==null||o.removeClass("is-active"),(r==null?void 0:r.view)instanceof ls||(r==null?void 0:r.view)instanceof fs){let l=r.view.state.bFile;this.lastDiffViewState=r.view.getState();let c;i&&r.view.state.aRef=="HEAD"?c=i.view.containerEl.querySelector(`div.staged div.tree-item-self[data-path='${l}']`):i&&r.view.state.aRef==""?c=i.view.containerEl.querySelector(`div.changes div.tree-item-self[data-path='${l}']`):a&&(c=a.view.containerEl.querySelector(`div.tree-item-self[data-path='${l}']`)),c==null||c.addClass("is-active")}else this.lastDiffViewState=void 0}handleNoNetworkError(r){this.state.offlineMode?this.log("Encountered network error, but already in offline mode"):this.displayError("Git: Going into offline mode. Future network errors will no longer be displayed.",2e3),this.setPluginState({gitAction:0,offlineMode:!0})}displayMessage(r,n=4*1e3){var i;(i=this.statusBar)==null||i.displayMessage(r.toLowerCase(),n),this.settings.disablePopups||(!this.settings.disablePopupsForNoChanges||!r.startsWith("No changes"))&&new _e.Notice(r,5*1e3),this.log(r)}displayError(r,n=10*1e3){var a;if(r instanceof D5.Errors.UserCanceledError){new _e.Notice("Aborted");return}let i;r instanceof Error?i=r:i=new Error(String(r)),this.setPluginState({gitAction:0}),this.settings.showErrorNotices&&new _e.Notice(i.message,n),console.error(`${this.manifest.id}:`,i.stack),(a=this.statusBar)==null||a.displayMessage(i.message.toLowerCase(),n)}log(...r){console.log(`${this.manifest.id}:`,...r)}}; +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +crc-32/crc32.js: + (*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com *) + +js-sha256/src/sha256.js: + (** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + *) + +feather-icons/dist/feather.js: + (*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json new file mode 100644 index 0000000..ce557ad --- /dev/null +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -0,0 +1,10 @@ +{ + "author": "Vinzent", + "authorUrl": "https://github.com/Vinzent03", + "id": "obsidian-git", + "name": "Git", + "description": "Integrate Git version control with automatic backup and other advanced features.", + "isDesktopOnly": false, + "fundingUrl": "https://ko-fi.com/vinzent", + "version": "2.35.0" +} diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css new file mode 100644 index 0000000..98e9099 --- /dev/null +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -0,0 +1,621 @@ +@keyframes loading { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +.workspace-leaf-content[data-type="git-view"] .button-border { + border: 2px solid var(--interactive-accent); + border-radius: var(--radius-s); +} + +.workspace-leaf-content[data-type="git-view"] .view-content { + padding: 0; +} + +.workspace-leaf-content[data-type="git-history-view"] .view-content { + padding: 0; +} + +.loading > svg { + animation: 2s linear infinite loading; + transform-origin: 50% 50%; + display: inline-block; +} + +.obsidian-git-center { + margin: auto; + text-align: center; + width: 50%; +} + +.obsidian-git-textarea { + display: block; + margin-left: auto; + margin-right: auto; +} + +.obsidian-git-disabled { + opacity: 0.5; +} + +.obsidian-git-center-button { + display: block; + margin: 20px auto; +} + +.tooltip.mod-left { + overflow-wrap: break-word; +} + +.tooltip.mod-right { + overflow-wrap: break-word; +} + +/* Limits the scrollbar to the view body */ +.git-view { + display: flex; + flex-direction: column; + position: relative; + height: 100%; +} + +.git-tools { + display: flex; + margin-left: auto; +} +.git-tools .type { + padding-left: var(--size-2-1); + display: flex; + align-items: center; + justify-content: center; + width: 11px; +} + +.git-tools .type[data-type="M"] { + color: orange; +} +.git-tools .type[data-type="D"] { + color: red; +} +.git-tools .buttons { + display: flex; +} +.git-tools .buttons > * { + padding: 0 0; + height: auto; +} + +.workspace-leaf-content[data-type="git-view"] .tree-item-self, +.workspace-leaf-content[data-type="git-history-view"] .tree-item-self { + align-items: center; +} + +.workspace-leaf-content[data-type="git-view"] + .tree-item-self:hover + .clickable-icon, +.workspace-leaf-content[data-type="git-history-view"] + .tree-item-self:hover + .clickable-icon { + color: var(--icon-color-hover); +} + +/* Highlight an item as active if it's diff is currently opened */ +.is-active .git-tools .buttons > * { + color: var(--nav-item-color-active); +} + +.git-author { + color: var(--text-accent); +} + +.git-date { + color: var(--text-accent); +} + +.git-ref { + color: var(--text-accent); +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-d-none { + display: none; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-wrapper { + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-header { + background-color: var(--background-primary); + border-bottom: 1px solid var(--interactive-accent); + font-family: var(--font-monospace); + height: 35px; + padding: 5px 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-header, +.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-stats { + font-size: 14px; + margin-left: auto; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-lines-added { + border: 1px solid #b4e2b4; + border-radius: 5px 0 0 5px; + color: #399839; + padding: 2px; + text-align: right; + vertical-align: middle; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted { + border: 1px solid #e9aeae; + border-radius: 0 5px 5px 0; + color: #c33; + margin-left: 1px; + padding: 2px; + text-align: left; + vertical-align: middle; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 15px; + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-name { + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper { + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + margin-bottom: 1em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse { + -webkit-box-pack: end; + -ms-flex-pack: end; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border: 1px solid var(--background-modifier-border); + border-radius: 3px; + cursor: pointer; + display: none; + font-size: 12px; + justify-content: flex-end; + padding: 4px 8px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected { + background-color: #c8e1ff; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input { + margin: 0 4px 0 0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-diff-table { + border-collapse: collapse; + font-family: Menlo, Consolas, monospace; + font-size: 13px; + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-files-diff { + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-diff { + overflow-y: hidden; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff { + display: inline-block; + margin-bottom: -8px; + margin-right: -4px; + overflow-x: scroll; + overflow-y: hidden; + width: 50%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line { + padding: 0 8em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; + width: 100%; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line { + padding: 0 4.5em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn { + word-wrap: normal; + background: none; + display: inline-block; + padding: 0; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + vertical-align: middle; + white-space: pre; + width: 100%; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { + background-color: #ffb6ba; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { + background-color: #8d232881; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { + border-radius: 0.2em; + display: inline-block; + margin-top: -1px; + text-decoration: none; + vertical-align: middle; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { + background-color: #97f295; + text-align: left; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { + background-color: #1d921996; + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix { + word-wrap: normal; + background: none; + display: inline; + padding: 0; + white-space: pre; +} + +.workspace-leaf-content[data-type="diff-view"] .line-num1 { + float: left; +} + +.workspace-leaf-content[data-type="diff-view"] .line-num1, +.workspace-leaf-content[data-type="diff-view"] .line-num2 { + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + padding: 0 0.5em; + text-overflow: ellipsis; + width: 3.5em; +} + +.workspace-leaf-content[data-type="diff-view"] .line-num2 { + float: right; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber { + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-muted); + cursor: pointer; + display: inline-block; + position: absolute; + text-align: right; + width: 7.5em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after { + content: "\200b"; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-muted); + cursor: pointer; + display: inline-block; + overflow: hidden; + padding: 0 0.5em; + position: absolute; + text-align: right; + text-overflow: ellipsis; + width: 4em; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr { + position: relative; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after { + content: "\200b"; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder, +.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { + background-color: var(--background-primary); + border-color: var(--background-modifier-border); +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber, +.workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber, +.workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber { + direction: rtl; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del { + background-color: #fee8e9; + border-color: #e9aeae; +} + +.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins { + background-color: #dfd; + border-color: #b4e2b4; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del { + background-color: #521b1d83; + border-color: #691d1d73; +} + +.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins { + background-color: rgba(30, 71, 30, 0.5); + border-color: #13501381; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-info { + background-color: var(--background-primary); + border-color: var(--background-modifier-border); + color: var(--text-normal); +} + +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { + background-color: #fdf2d0; +} + +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { + background-color: #55492480; +} + +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { + background-color: #ded; +} + +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { + background-color: rgba(37, 78, 37, 0.418); +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper { + margin-bottom: 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a { + color: #3572b0; + text-decoration: none; +} + +.workspace-leaf-content[data-type="diff-view"] + .d2h-file-list-wrapper + a:visited { + color: #3572b0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header { + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title { + font-weight: 700; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + text-align: left; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list { + display: block; + list-style: none; + margin: 0; + padding: 0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li { + border-bottom: 1px solid var(--background-modifier-border); + margin: 0; + padding: 5px 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child { + border-bottom: none; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-file-switch { + cursor: pointer; + display: none; + font-size: 10px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-icon { + fill: currentColor; + margin-right: 10px; + vertical-align: middle; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-deleted { + color: #c33; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-added { + color: #399839; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-changed { + color: #d0b44c; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-moved { + color: #3572b0; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-tag { + background-color: var(--background-primary); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 10px; + margin-left: 5px; + padding: 0 2px; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag { + border: 2px solid #c33; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-added-tag { + border: 1px solid #399839; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag { + border: 1px solid #d0b44c; +} + +.workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag { + border: 1px solid #3572b0; +} + +/* ====================== Line Authoring Information ====================== */ + +.cm-gutterElement.obs-git-blame-gutter { + /* Add background color to spacing inbetween and around the gutter for better aesthetics */ + border-width: 0px 2px 0.2px 2px; + border-style: solid; + border-color: var(--background-secondary); + background-color: var(--background-secondary); +} + +.cm-gutterElement.obs-git-blame-gutter > div, +.line-author-settings-preview { + /* delegate text color to settings */ + color: var(--obs-git-gutter-text); + font-family: monospace; + height: 100%; /* ensure, that age-based background color occupies entire parent */ + text-align: right; + padding: 0px 6px 0px 6px; + white-space: pre; /* Keep spaces and do not collapse them. */ +} + +@media (max-width: 800px) { + /* hide git blame gutter not to superpose text */ + .cm-gutterElement.obs-git-blame-gutter { + display: none; + } +} + +.git-unified-diff-view, +.git-split-diff-view .cm-deletedLine .cm-changedText { + background-color: #ee443330; +} + +.git-unified-diff-view, +.git-split-diff-view .cm-insertedLine .cm-changedText { + background-color: #22bb2230; +} + +.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after { + -webkit-mask-image: url('data:image/svg+xml,'); +} + +.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after { + -webkit-mask-image: url('data:image/svg+xml,'); +} + +/* Override styling of Codemirror merge view "collapsed lines" indicator */ +.git-split-diff-view .ͼ2 .cm-collapsedLines { + background: var(--interactive-normal); + border-radius: var(--radius-m); + color: var(--text-accent); + font-size: var(--font-small); + padding: var(--size-4-1) var(--size-4-1); +} +.git-split-diff-view .ͼ2 .cm-collapsedLines:hover { + background: var(--interactive-hover); + color: var(--text-accent-hover); +} diff --git a/.obsidian/plugins/obsidian-local-rest-api/data.json b/.obsidian/plugins/obsidian-local-rest-api/data.json new file mode 100644 index 0000000..a05a26c --- /dev/null +++ b/.obsidian/plugins/obsidian-local-rest-api/data.json @@ -0,0 +1,11 @@ +{ + "port": 27124, + "insecurePort": 27123, + "enableInsecureServer": true, + "apiKey": "2cc79cbf5c8323626f034d30ac69b970f51ce7bed72adb9a61bd940ad78a324a", + "crypto": { + "cert": "-----BEGIN CERTIFICATE-----\r\nMIIDRTCCAi2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDExdPYnNp\r\nZGlhbiBMb2NhbCBSRVNUIEFQSTAeFw0yNTA5MDgwMDUzMzFaFw0yNjA5MDgwMDUz\r\nMzFaMCIxIDAeBgNVBAMTF09ic2lkaWFuIExvY2FsIFJFU1QgQVBJMIIBIjANBgkq\r\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwL+sejWIgg5UEFLAA/QoyzDFDVcBtfv\r\nqQbsTXkAA20DI/nABtjOYhvJ32lwsOEFVFNncGm5PX4xjOTX688iRn+o2LEoPkU3\r\n4Sp5L/1Oho2YZ+R23PnlruF6W0fQ4xIzaoA5HT3rvko68+mpuGPWblC1cBuxFIX6\r\njM88Kam0I+77MJVWeqCHH65KOmQfATLPDZgLCSdvCtEfCG2REyAfv+MNvUYTPuDP\r\n7d3wNmudE7kGH5D1zXIddEKCaPNPAJAWpwpLFg/kZ7N2xcyUexTbsCEBTVmiXdEE\r\nogyNdq2+rfcVZ65WL2PsNN+yBx6zE2AIMh7aNPGSV/kHS6deG7cMpwIDAQABo4GF\r\nMIGCMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLEMDsGA1UdJQQ0MDIG\r\nCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcD\r\nCDARBglghkgBhvhCAQEEBAMCAPcwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0B\r\nAQsFAAOCAQEAUhU6uAf4fRBCQiDLyL3OAzcJC+5sm/keCeITaKzcKiQ1yHZMTvoe\r\nX2ulgBkagfpROpAyCo5LaKtfyR2SKWC0cU6H2eMZ0wtSKv1vjUAscdCaB3a6zhpG\r\nO0QE+2/tzJFykFLFCXRZsItn3BncTjRQOtY1UgdE8fJsnVxnhFTycFnq3JbEj6uy\r\nq1BbFlDtDpVExxhQUBFF6GFpf7PSBZbUellNmla5bbglYKLu4GU6yi31pgimQxE4\r\nbpR+l5c1zLjfYuUuBk9Qc8TUjd0RPdnVbALJvy98bKC5T5MeuWXGRCR2mjtojjBE\r\nxDzKmYXisFScd7tsWxT0+zd3bL3B6TqcIA==\r\n-----END CERTIFICATE-----\r\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCAQEArwL+sejWIgg5UEFLAA/QoyzDFDVcBtfvqQbsTXkAA20DI/nA\r\nBtjOYhvJ32lwsOEFVFNncGm5PX4xjOTX688iRn+o2LEoPkU34Sp5L/1Oho2YZ+R2\r\n3PnlruF6W0fQ4xIzaoA5HT3rvko68+mpuGPWblC1cBuxFIX6jM88Kam0I+77MJVW\r\neqCHH65KOmQfATLPDZgLCSdvCtEfCG2REyAfv+MNvUYTPuDP7d3wNmudE7kGH5D1\r\nzXIddEKCaPNPAJAWpwpLFg/kZ7N2xcyUexTbsCEBTVmiXdEEogyNdq2+rfcVZ65W\r\nL2PsNN+yBx6zE2AIMh7aNPGSV/kHS6deG7cMpwIDAQABAoIBAD4A1yBLx9V9yWRk\r\nBYDLmZS97o0xzF1GUou1PrHB3R3ZmMO9n2ktlYzPoIksz3Zy+lLiS6LZaf3dwAtV\r\nJiROmauVXcoLlaDeIAp/ZDj6yr/D2YtxNyVZyaRYEOPXASv5jkq8i7+O6P7dSJ6S\r\nmYUQpe8mW+mQff+x6c7KOtvd2kriMLlsjM/aRnvzONE7Up7Y1yjlPDrWPPJgMNWb\r\nstusNh438j21tBph7SxkkQMxgP0YIaiz7zM1FJr24OkLw7TSayPgmA5fiFv8tB5l\r\nJEiWMheggrpCV+C7LaJbJ/vsRmM15FFjuxTgR+y+73ZUt+5+KcYYtcsBD834cDcp\r\nrjWSJi0CgYEA63n5BZgxBU1RX33HJiHe0KNaqGhblczQRSYix+b31ype7LqyBFen\r\nw/N6lgWpswipvBCc24LYU10Lhh9ejD97VyoSehT4cW0KJskeslDDbyZmOz9wtEad\r\nmebFG389lBFKS2zvL6U1IJUUhchZXYkGDAgvJaqNzdjYpiMwIw6JndMCgYEAvkPp\r\nr6bCEFOIO+LozCZ6MTaYu1LP2nLBFOrvl7wWAVeiPCuOUke/NlimS7ugOSVcNQ0A\r\nPjj6hRX9uZadnJJA6W03Gsh1CFrgWf3jobkff2eouH7KRYdvree7QVp5O04Y6BZo\r\n27lJO1Br1j9UxoYcb8mRBJAMKNdOqc+M2nxXDV0CgYEApQnnBAnICcxIBSKVqt9A\r\nWIC1cKU704EqU9zHsc3q1Q5oW4j6bdq1xbvnpjAv4UBoHlySY7OQRNVI12czEB8K\r\nJmxhaNk7y9u9qrN5ZUb/wu5p5oqvRlrb6Nr6OSx0D0wTA0xFU+J5mu2B5cYnBEye\r\nRV6TFNY17xlVtxOgkGGHCGsCgYBkcyZk/f1m8TLzqxCM96N7Z/+qpkXmZr9Zc8+a\r\npEpZ2xJkAfrZpddlsdfaE+y7PuY3e+2s7BgXO00BNmtvxidPFcIJ+dsP1iqsWEZd\r\nk4b1lJyXCxlvK9niTn2mO0XV8Z1kqrAhkOkAz6yfKEBxr0xEGH7fkc1ZopJ9RH5w\r\nu0SaYQKBgEEw+Qoj4JiGf9KCqIpAcEgOZ9l5SFbqeZ+17v6vflB4geVzNoBRwJLi\r\nf4v9fnj/OkYrMqF814/UmqbTUXAYgHISOuLeQuFyeEunh+v1V8UZp6kEPL8Xn3D1\r\n3BAjpPU77bqBOp70GrTUd2Nt+w1yp7d/weTWD0h6BljjaR694O8l\r\n-----END RSA PRIVATE KEY-----\r\n", + "publicKey": "-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwL+sejWIgg5UEFLAA/Q\r\noyzDFDVcBtfvqQbsTXkAA20DI/nABtjOYhvJ32lwsOEFVFNncGm5PX4xjOTX688i\r\nRn+o2LEoPkU34Sp5L/1Oho2YZ+R23PnlruF6W0fQ4xIzaoA5HT3rvko68+mpuGPW\r\nblC1cBuxFIX6jM88Kam0I+77MJVWeqCHH65KOmQfATLPDZgLCSdvCtEfCG2REyAf\r\nv+MNvUYTPuDP7d3wNmudE7kGH5D1zXIddEKCaPNPAJAWpwpLFg/kZ7N2xcyUexTb\r\nsCEBTVmiXdEEogyNdq2+rfcVZ65WL2PsNN+yBx6zE2AIMh7aNPGSV/kHS6deG7cM\r\npwIDAQAB\r\n-----END PUBLIC KEY-----\r\n" + } +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-local-rest-api/main.js b/.obsidian/plugins/obsidian-local-rest-api/main.js new file mode 100644 index 0000000..34f6f2a --- /dev/null +++ b/.obsidian/plugins/obsidian-local-rest-api/main.js @@ -0,0 +1,59311 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __pow = Math.pow; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// node_modules/node-forge/lib/forge.js +var require_forge = __commonJS({ + "node_modules/node-forge/lib/forge.js"(exports, module2) { + module2.exports = { + options: { + usePureJavaScript: false + } + }; + } +}); + +// node_modules/node-forge/lib/baseN.js +var require_baseN = __commonJS({ + "node_modules/node-forge/lib/baseN.js"(exports, module2) { + var api = {}; + module2.exports = api; + var _reverseAlphabets = {}; + api.encode = function(input, alphabet, maxline) { + if (typeof alphabet !== "string") { + throw new TypeError('"alphabet" must be a string.'); + } + if (maxline !== void 0 && typeof maxline !== "number") { + throw new TypeError('"maxline" must be a number.'); + } + var output = ""; + if (!(input instanceof Uint8Array)) { + output = _encodeWithByteBuffer(input, alphabet); + } else { + var i = 0; + var base = alphabet.length; + var first = alphabet.charAt(0); + var digits = [0]; + for (i = 0; i < input.length; ++i) { + for (var j = 0, carry = input[i]; j < digits.length; ++j) { + carry += digits[j] << 8; + digits[j] = carry % base; + carry = carry / base | 0; + } + while (carry > 0) { + digits.push(carry % base); + carry = carry / base | 0; + } + } + for (i = 0; input[i] === 0 && i < input.length - 1; ++i) { + output += first; + } + for (i = digits.length - 1; i >= 0; --i) { + output += alphabet[digits[i]]; + } + } + if (maxline) { + var regex = new RegExp(".{1," + maxline + "}", "g"); + output = output.match(regex).join("\r\n"); + } + return output; + }; + api.decode = function(input, alphabet) { + if (typeof input !== "string") { + throw new TypeError('"input" must be a string.'); + } + if (typeof alphabet !== "string") { + throw new TypeError('"alphabet" must be a string.'); + } + var table = _reverseAlphabets[alphabet]; + if (!table) { + table = _reverseAlphabets[alphabet] = []; + for (var i = 0; i < alphabet.length; ++i) { + table[alphabet.charCodeAt(i)] = i; + } + } + input = input.replace(/\s/g, ""); + var base = alphabet.length; + var first = alphabet.charAt(0); + var bytes = [0]; + for (var i = 0; i < input.length; i++) { + var value = table[input.charCodeAt(i)]; + if (value === void 0) { + return; + } + for (var j = 0, carry = value; j < bytes.length; ++j) { + carry += bytes[j] * base; + bytes[j] = carry & 255; + carry >>= 8; + } + while (carry > 0) { + bytes.push(carry & 255); + carry >>= 8; + } + } + for (var k = 0; input[k] === first && k < input.length - 1; ++k) { + bytes.push(0); + } + if (typeof Buffer !== "undefined") { + return Buffer.from(bytes.reverse()); + } + return new Uint8Array(bytes.reverse()); + }; + function _encodeWithByteBuffer(input, alphabet) { + var i = 0; + var base = alphabet.length; + var first = alphabet.charAt(0); + var digits = [0]; + for (i = 0; i < input.length(); ++i) { + for (var j = 0, carry = input.at(i); j < digits.length; ++j) { + carry += digits[j] << 8; + digits[j] = carry % base; + carry = carry / base | 0; + } + while (carry > 0) { + digits.push(carry % base); + carry = carry / base | 0; + } + } + var output = ""; + for (i = 0; input.at(i) === 0 && i < input.length() - 1; ++i) { + output += first; + } + for (i = digits.length - 1; i >= 0; --i) { + output += alphabet[digits[i]]; + } + return output; + } + } +}); + +// node_modules/node-forge/lib/util.js +var require_util = __commonJS({ + "node_modules/node-forge/lib/util.js"(exports, module2) { + var forge3 = require_forge(); + var baseN = require_baseN(); + var util = module2.exports = forge3.util = forge3.util || {}; + (function() { + if (typeof process !== "undefined" && process.nextTick && !process.browser) { + util.nextTick = process.nextTick; + if (typeof setImmediate === "function") { + util.setImmediate = setImmediate; + } else { + util.setImmediate = util.nextTick; + } + return; + } + if (typeof setImmediate === "function") { + util.setImmediate = function() { + return setImmediate.apply(void 0, arguments); + }; + util.nextTick = function(callback) { + return setImmediate(callback); + }; + return; + } + util.setImmediate = function(callback) { + setTimeout(callback, 0); + }; + if (typeof window !== "undefined" && typeof window.postMessage === "function") { + let handler2 = function(event) { + if (event.source === window && event.data === msg) { + event.stopPropagation(); + var copy = callbacks.slice(); + callbacks.length = 0; + copy.forEach(function(callback) { + callback(); + }); + } + }; + var handler = handler2; + var msg = "forge.setImmediate"; + var callbacks = []; + util.setImmediate = function(callback) { + callbacks.push(callback); + if (callbacks.length === 1) { + window.postMessage(msg, "*"); + } + }; + window.addEventListener("message", handler2, true); + } + if (typeof MutationObserver !== "undefined") { + var now = Date.now(); + var attr = true; + var div = document.createElement("div"); + var callbacks = []; + new MutationObserver(function() { + var copy = callbacks.slice(); + callbacks.length = 0; + copy.forEach(function(callback) { + callback(); + }); + }).observe(div, { attributes: true }); + var oldSetImmediate = util.setImmediate; + util.setImmediate = function(callback) { + if (Date.now() - now > 15) { + now = Date.now(); + oldSetImmediate(callback); + } else { + callbacks.push(callback); + if (callbacks.length === 1) { + div.setAttribute("a", attr = !attr); + } + } + }; + } + util.nextTick = util.setImmediate; + })(); + util.isNodejs = typeof process !== "undefined" && process.versions && process.versions.node; + util.globalScope = function() { + if (util.isNodejs) { + return global; + } + return typeof self === "undefined" ? window : self; + }(); + util.isArray = Array.isArray || function(x) { + return Object.prototype.toString.call(x) === "[object Array]"; + }; + util.isArrayBuffer = function(x) { + return typeof ArrayBuffer !== "undefined" && x instanceof ArrayBuffer; + }; + util.isArrayBufferView = function(x) { + return x && util.isArrayBuffer(x.buffer) && x.byteLength !== void 0; + }; + function _checkBitsParam(n) { + if (!(n === 8 || n === 16 || n === 24 || n === 32)) { + throw new Error("Only 8, 16, 24, or 32 bits supported: " + n); + } + } + util.ByteBuffer = ByteStringBuffer; + function ByteStringBuffer(b) { + this.data = ""; + this.read = 0; + if (typeof b === "string") { + this.data = b; + } else if (util.isArrayBuffer(b) || util.isArrayBufferView(b)) { + if (typeof Buffer !== "undefined" && b instanceof Buffer) { + this.data = b.toString("binary"); + } else { + var arr = new Uint8Array(b); + try { + this.data = String.fromCharCode.apply(null, arr); + } catch (e) { + for (var i = 0; i < arr.length; ++i) { + this.putByte(arr[i]); + } + } + } + } else if (b instanceof ByteStringBuffer || typeof b === "object" && typeof b.data === "string" && typeof b.read === "number") { + this.data = b.data; + this.read = b.read; + } + this._constructedStringLength = 0; + } + util.ByteStringBuffer = ByteStringBuffer; + var _MAX_CONSTRUCTED_STRING_LENGTH = 4096; + util.ByteStringBuffer.prototype._optimizeConstructedString = function(x) { + this._constructedStringLength += x; + if (this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) { + this.data.substr(0, 1); + this._constructedStringLength = 0; + } + }; + util.ByteStringBuffer.prototype.length = function() { + return this.data.length - this.read; + }; + util.ByteStringBuffer.prototype.isEmpty = function() { + return this.length() <= 0; + }; + util.ByteStringBuffer.prototype.putByte = function(b) { + return this.putBytes(String.fromCharCode(b)); + }; + util.ByteStringBuffer.prototype.fillWithByte = function(b, n) { + b = String.fromCharCode(b); + var d = this.data; + while (n > 0) { + if (n & 1) { + d += b; + } + n >>>= 1; + if (n > 0) { + b += b; + } + } + this.data = d; + this._optimizeConstructedString(n); + return this; + }; + util.ByteStringBuffer.prototype.putBytes = function(bytes) { + this.data += bytes; + this._optimizeConstructedString(bytes.length); + return this; + }; + util.ByteStringBuffer.prototype.putString = function(str) { + return this.putBytes(util.encodeUtf8(str)); + }; + util.ByteStringBuffer.prototype.putInt16 = function(i) { + return this.putBytes(String.fromCharCode(i >> 8 & 255) + String.fromCharCode(i & 255)); + }; + util.ByteStringBuffer.prototype.putInt24 = function(i) { + return this.putBytes(String.fromCharCode(i >> 16 & 255) + String.fromCharCode(i >> 8 & 255) + String.fromCharCode(i & 255)); + }; + util.ByteStringBuffer.prototype.putInt32 = function(i) { + return this.putBytes(String.fromCharCode(i >> 24 & 255) + String.fromCharCode(i >> 16 & 255) + String.fromCharCode(i >> 8 & 255) + String.fromCharCode(i & 255)); + }; + util.ByteStringBuffer.prototype.putInt16Le = function(i) { + return this.putBytes(String.fromCharCode(i & 255) + String.fromCharCode(i >> 8 & 255)); + }; + util.ByteStringBuffer.prototype.putInt24Le = function(i) { + return this.putBytes(String.fromCharCode(i & 255) + String.fromCharCode(i >> 8 & 255) + String.fromCharCode(i >> 16 & 255)); + }; + util.ByteStringBuffer.prototype.putInt32Le = function(i) { + return this.putBytes(String.fromCharCode(i & 255) + String.fromCharCode(i >> 8 & 255) + String.fromCharCode(i >> 16 & 255) + String.fromCharCode(i >> 24 & 255)); + }; + util.ByteStringBuffer.prototype.putInt = function(i, n) { + _checkBitsParam(n); + var bytes = ""; + do { + n -= 8; + bytes += String.fromCharCode(i >> n & 255); + } while (n > 0); + return this.putBytes(bytes); + }; + util.ByteStringBuffer.prototype.putSignedInt = function(i, n) { + if (i < 0) { + i += 2 << n - 1; + } + return this.putInt(i, n); + }; + util.ByteStringBuffer.prototype.putBuffer = function(buffer) { + return this.putBytes(buffer.getBytes()); + }; + util.ByteStringBuffer.prototype.getByte = function() { + return this.data.charCodeAt(this.read++); + }; + util.ByteStringBuffer.prototype.getInt16 = function() { + var rval = this.data.charCodeAt(this.read) << 8 ^ this.data.charCodeAt(this.read + 1); + this.read += 2; + return rval; + }; + util.ByteStringBuffer.prototype.getInt24 = function() { + var rval = this.data.charCodeAt(this.read) << 16 ^ this.data.charCodeAt(this.read + 1) << 8 ^ this.data.charCodeAt(this.read + 2); + this.read += 3; + return rval; + }; + util.ByteStringBuffer.prototype.getInt32 = function() { + var rval = this.data.charCodeAt(this.read) << 24 ^ this.data.charCodeAt(this.read + 1) << 16 ^ this.data.charCodeAt(this.read + 2) << 8 ^ this.data.charCodeAt(this.read + 3); + this.read += 4; + return rval; + }; + util.ByteStringBuffer.prototype.getInt16Le = function() { + var rval = this.data.charCodeAt(this.read) ^ this.data.charCodeAt(this.read + 1) << 8; + this.read += 2; + return rval; + }; + util.ByteStringBuffer.prototype.getInt24Le = function() { + var rval = this.data.charCodeAt(this.read) ^ this.data.charCodeAt(this.read + 1) << 8 ^ this.data.charCodeAt(this.read + 2) << 16; + this.read += 3; + return rval; + }; + util.ByteStringBuffer.prototype.getInt32Le = function() { + var rval = this.data.charCodeAt(this.read) ^ this.data.charCodeAt(this.read + 1) << 8 ^ this.data.charCodeAt(this.read + 2) << 16 ^ this.data.charCodeAt(this.read + 3) << 24; + this.read += 4; + return rval; + }; + util.ByteStringBuffer.prototype.getInt = function(n) { + _checkBitsParam(n); + var rval = 0; + do { + rval = (rval << 8) + this.data.charCodeAt(this.read++); + n -= 8; + } while (n > 0); + return rval; + }; + util.ByteStringBuffer.prototype.getSignedInt = function(n) { + var x = this.getInt(n); + var max = 2 << n - 2; + if (x >= max) { + x -= max << 1; + } + return x; + }; + util.ByteStringBuffer.prototype.getBytes = function(count) { + var rval; + if (count) { + count = Math.min(this.length(), count); + rval = this.data.slice(this.read, this.read + count); + this.read += count; + } else if (count === 0) { + rval = ""; + } else { + rval = this.read === 0 ? this.data : this.data.slice(this.read); + this.clear(); + } + return rval; + }; + util.ByteStringBuffer.prototype.bytes = function(count) { + return typeof count === "undefined" ? this.data.slice(this.read) : this.data.slice(this.read, this.read + count); + }; + util.ByteStringBuffer.prototype.at = function(i) { + return this.data.charCodeAt(this.read + i); + }; + util.ByteStringBuffer.prototype.setAt = function(i, b) { + this.data = this.data.substr(0, this.read + i) + String.fromCharCode(b) + this.data.substr(this.read + i + 1); + return this; + }; + util.ByteStringBuffer.prototype.last = function() { + return this.data.charCodeAt(this.data.length - 1); + }; + util.ByteStringBuffer.prototype.copy = function() { + var c = util.createBuffer(this.data); + c.read = this.read; + return c; + }; + util.ByteStringBuffer.prototype.compact = function() { + if (this.read > 0) { + this.data = this.data.slice(this.read); + this.read = 0; + } + return this; + }; + util.ByteStringBuffer.prototype.clear = function() { + this.data = ""; + this.read = 0; + return this; + }; + util.ByteStringBuffer.prototype.truncate = function(count) { + var len = Math.max(0, this.length() - count); + this.data = this.data.substr(this.read, len); + this.read = 0; + return this; + }; + util.ByteStringBuffer.prototype.toHex = function() { + var rval = ""; + for (var i = this.read; i < this.data.length; ++i) { + var b = this.data.charCodeAt(i); + if (b < 16) { + rval += "0"; + } + rval += b.toString(16); + } + return rval; + }; + util.ByteStringBuffer.prototype.toString = function() { + return util.decodeUtf8(this.bytes()); + }; + function DataBuffer(b, options) { + options = options || {}; + this.read = options.readOffset || 0; + this.growSize = options.growSize || 1024; + var isArrayBuffer = util.isArrayBuffer(b); + var isArrayBufferView = util.isArrayBufferView(b); + if (isArrayBuffer || isArrayBufferView) { + if (isArrayBuffer) { + this.data = new DataView(b); + } else { + this.data = new DataView(b.buffer, b.byteOffset, b.byteLength); + } + this.write = "writeOffset" in options ? options.writeOffset : this.data.byteLength; + return; + } + this.data = new DataView(new ArrayBuffer(0)); + this.write = 0; + if (b !== null && b !== void 0) { + this.putBytes(b); + } + if ("writeOffset" in options) { + this.write = options.writeOffset; + } + } + util.DataBuffer = DataBuffer; + util.DataBuffer.prototype.length = function() { + return this.write - this.read; + }; + util.DataBuffer.prototype.isEmpty = function() { + return this.length() <= 0; + }; + util.DataBuffer.prototype.accommodate = function(amount, growSize) { + if (this.length() >= amount) { + return this; + } + growSize = Math.max(growSize || this.growSize, amount); + var src = new Uint8Array(this.data.buffer, this.data.byteOffset, this.data.byteLength); + var dst = new Uint8Array(this.length() + growSize); + dst.set(src); + this.data = new DataView(dst.buffer); + return this; + }; + util.DataBuffer.prototype.putByte = function(b) { + this.accommodate(1); + this.data.setUint8(this.write++, b); + return this; + }; + util.DataBuffer.prototype.fillWithByte = function(b, n) { + this.accommodate(n); + for (var i = 0; i < n; ++i) { + this.data.setUint8(b); + } + return this; + }; + util.DataBuffer.prototype.putBytes = function(bytes, encoding) { + if (util.isArrayBufferView(bytes)) { + var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength); + var len = src.byteLength - src.byteOffset; + this.accommodate(len); + var dst = new Uint8Array(this.data.buffer, this.write); + dst.set(src); + this.write += len; + return this; + } + if (util.isArrayBuffer(bytes)) { + var src = new Uint8Array(bytes); + this.accommodate(src.byteLength); + var dst = new Uint8Array(this.data.buffer); + dst.set(src, this.write); + this.write += src.byteLength; + return this; + } + if (bytes instanceof util.DataBuffer || typeof bytes === "object" && typeof bytes.read === "number" && typeof bytes.write === "number" && util.isArrayBufferView(bytes.data)) { + var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length()); + this.accommodate(src.byteLength); + var dst = new Uint8Array(bytes.data.byteLength, this.write); + dst.set(src); + this.write += src.byteLength; + return this; + } + if (bytes instanceof util.ByteStringBuffer) { + bytes = bytes.data; + encoding = "binary"; + } + encoding = encoding || "binary"; + if (typeof bytes === "string") { + var view; + if (encoding === "hex") { + this.accommodate(Math.ceil(bytes.length / 2)); + view = new Uint8Array(this.data.buffer, this.write); + this.write += util.binary.hex.decode(bytes, view, this.write); + return this; + } + if (encoding === "base64") { + this.accommodate(Math.ceil(bytes.length / 4) * 3); + view = new Uint8Array(this.data.buffer, this.write); + this.write += util.binary.base64.decode(bytes, view, this.write); + return this; + } + if (encoding === "utf8") { + bytes = util.encodeUtf8(bytes); + encoding = "binary"; + } + if (encoding === "binary" || encoding === "raw") { + this.accommodate(bytes.length); + view = new Uint8Array(this.data.buffer, this.write); + this.write += util.binary.raw.decode(view); + return this; + } + if (encoding === "utf16") { + this.accommodate(bytes.length * 2); + view = new Uint16Array(this.data.buffer, this.write); + this.write += util.text.utf16.encode(view); + return this; + } + throw new Error("Invalid encoding: " + encoding); + } + throw Error("Invalid parameter: " + bytes); + }; + util.DataBuffer.prototype.putBuffer = function(buffer) { + this.putBytes(buffer); + buffer.clear(); + return this; + }; + util.DataBuffer.prototype.putString = function(str) { + return this.putBytes(str, "utf16"); + }; + util.DataBuffer.prototype.putInt16 = function(i) { + this.accommodate(2); + this.data.setInt16(this.write, i); + this.write += 2; + return this; + }; + util.DataBuffer.prototype.putInt24 = function(i) { + this.accommodate(3); + this.data.setInt16(this.write, i >> 8 & 65535); + this.data.setInt8(this.write, i >> 16 & 255); + this.write += 3; + return this; + }; + util.DataBuffer.prototype.putInt32 = function(i) { + this.accommodate(4); + this.data.setInt32(this.write, i); + this.write += 4; + return this; + }; + util.DataBuffer.prototype.putInt16Le = function(i) { + this.accommodate(2); + this.data.setInt16(this.write, i, true); + this.write += 2; + return this; + }; + util.DataBuffer.prototype.putInt24Le = function(i) { + this.accommodate(3); + this.data.setInt8(this.write, i >> 16 & 255); + this.data.setInt16(this.write, i >> 8 & 65535, true); + this.write += 3; + return this; + }; + util.DataBuffer.prototype.putInt32Le = function(i) { + this.accommodate(4); + this.data.setInt32(this.write, i, true); + this.write += 4; + return this; + }; + util.DataBuffer.prototype.putInt = function(i, n) { + _checkBitsParam(n); + this.accommodate(n / 8); + do { + n -= 8; + this.data.setInt8(this.write++, i >> n & 255); + } while (n > 0); + return this; + }; + util.DataBuffer.prototype.putSignedInt = function(i, n) { + _checkBitsParam(n); + this.accommodate(n / 8); + if (i < 0) { + i += 2 << n - 1; + } + return this.putInt(i, n); + }; + util.DataBuffer.prototype.getByte = function() { + return this.data.getInt8(this.read++); + }; + util.DataBuffer.prototype.getInt16 = function() { + var rval = this.data.getInt16(this.read); + this.read += 2; + return rval; + }; + util.DataBuffer.prototype.getInt24 = function() { + var rval = this.data.getInt16(this.read) << 8 ^ this.data.getInt8(this.read + 2); + this.read += 3; + return rval; + }; + util.DataBuffer.prototype.getInt32 = function() { + var rval = this.data.getInt32(this.read); + this.read += 4; + return rval; + }; + util.DataBuffer.prototype.getInt16Le = function() { + var rval = this.data.getInt16(this.read, true); + this.read += 2; + return rval; + }; + util.DataBuffer.prototype.getInt24Le = function() { + var rval = this.data.getInt8(this.read) ^ this.data.getInt16(this.read + 1, true) << 8; + this.read += 3; + return rval; + }; + util.DataBuffer.prototype.getInt32Le = function() { + var rval = this.data.getInt32(this.read, true); + this.read += 4; + return rval; + }; + util.DataBuffer.prototype.getInt = function(n) { + _checkBitsParam(n); + var rval = 0; + do { + rval = (rval << 8) + this.data.getInt8(this.read++); + n -= 8; + } while (n > 0); + return rval; + }; + util.DataBuffer.prototype.getSignedInt = function(n) { + var x = this.getInt(n); + var max = 2 << n - 2; + if (x >= max) { + x -= max << 1; + } + return x; + }; + util.DataBuffer.prototype.getBytes = function(count) { + var rval; + if (count) { + count = Math.min(this.length(), count); + rval = this.data.slice(this.read, this.read + count); + this.read += count; + } else if (count === 0) { + rval = ""; + } else { + rval = this.read === 0 ? this.data : this.data.slice(this.read); + this.clear(); + } + return rval; + }; + util.DataBuffer.prototype.bytes = function(count) { + return typeof count === "undefined" ? this.data.slice(this.read) : this.data.slice(this.read, this.read + count); + }; + util.DataBuffer.prototype.at = function(i) { + return this.data.getUint8(this.read + i); + }; + util.DataBuffer.prototype.setAt = function(i, b) { + this.data.setUint8(i, b); + return this; + }; + util.DataBuffer.prototype.last = function() { + return this.data.getUint8(this.write - 1); + }; + util.DataBuffer.prototype.copy = function() { + return new util.DataBuffer(this); + }; + util.DataBuffer.prototype.compact = function() { + if (this.read > 0) { + var src = new Uint8Array(this.data.buffer, this.read); + var dst = new Uint8Array(src.byteLength); + dst.set(src); + this.data = new DataView(dst); + this.write -= this.read; + this.read = 0; + } + return this; + }; + util.DataBuffer.prototype.clear = function() { + this.data = new DataView(new ArrayBuffer(0)); + this.read = this.write = 0; + return this; + }; + util.DataBuffer.prototype.truncate = function(count) { + this.write = Math.max(0, this.length() - count); + this.read = Math.min(this.read, this.write); + return this; + }; + util.DataBuffer.prototype.toHex = function() { + var rval = ""; + for (var i = this.read; i < this.data.byteLength; ++i) { + var b = this.data.getUint8(i); + if (b < 16) { + rval += "0"; + } + rval += b.toString(16); + } + return rval; + }; + util.DataBuffer.prototype.toString = function(encoding) { + var view = new Uint8Array(this.data, this.read, this.length()); + encoding = encoding || "utf8"; + if (encoding === "binary" || encoding === "raw") { + return util.binary.raw.encode(view); + } + if (encoding === "hex") { + return util.binary.hex.encode(view); + } + if (encoding === "base64") { + return util.binary.base64.encode(view); + } + if (encoding === "utf8") { + return util.text.utf8.decode(view); + } + if (encoding === "utf16") { + return util.text.utf16.decode(view); + } + throw new Error("Invalid encoding: " + encoding); + }; + util.createBuffer = function(input, encoding) { + encoding = encoding || "raw"; + if (input !== void 0 && encoding === "utf8") { + input = util.encodeUtf8(input); + } + return new util.ByteBuffer(input); + }; + util.fillString = function(c, n) { + var s = ""; + while (n > 0) { + if (n & 1) { + s += c; + } + n >>>= 1; + if (n > 0) { + c += c; + } + } + return s; + }; + util.xorBytes = function(s1, s2, n) { + var s3 = ""; + var b = ""; + var t = ""; + var i = 0; + var c = 0; + for (; n > 0; --n, ++i) { + b = s1.charCodeAt(i) ^ s2.charCodeAt(i); + if (c >= 10) { + s3 += t; + t = ""; + c = 0; + } + t += String.fromCharCode(b); + ++c; + } + s3 += t; + return s3; + }; + util.hexToBytes = function(hex) { + var rval = ""; + var i = 0; + if (hex.length & true) { + i = 1; + rval += String.fromCharCode(parseInt(hex[0], 16)); + } + for (; i < hex.length; i += 2) { + rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + } + return rval; + }; + util.bytesToHex = function(bytes) { + return util.createBuffer(bytes).toHex(); + }; + util.int32ToBytes = function(i) { + return String.fromCharCode(i >> 24 & 255) + String.fromCharCode(i >> 16 & 255) + String.fromCharCode(i >> 8 & 255) + String.fromCharCode(i & 255); + }; + var _base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var _base64Idx = [ + 62, + -1, + -1, + -1, + 63, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + -1, + -1, + -1, + 64, + -1, + -1, + -1, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + -1, + -1, + -1, + -1, + -1, + -1, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ]; + var _base58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + util.encode64 = function(input, maxline) { + var line = ""; + var output = ""; + var chr1, chr2, chr3; + var i = 0; + while (i < input.length) { + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + line += _base64.charAt(chr1 >> 2); + line += _base64.charAt((chr1 & 3) << 4 | chr2 >> 4); + if (isNaN(chr2)) { + line += "=="; + } else { + line += _base64.charAt((chr2 & 15) << 2 | chr3 >> 6); + line += isNaN(chr3) ? "=" : _base64.charAt(chr3 & 63); + } + if (maxline && line.length > maxline) { + output += line.substr(0, maxline) + "\r\n"; + line = line.substr(maxline); + } + } + output += line; + return output; + }; + util.decode64 = function(input) { + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + var output = ""; + var enc1, enc2, enc3, enc4; + var i = 0; + while (i < input.length) { + enc1 = _base64Idx[input.charCodeAt(i++) - 43]; + enc2 = _base64Idx[input.charCodeAt(i++) - 43]; + enc3 = _base64Idx[input.charCodeAt(i++) - 43]; + enc4 = _base64Idx[input.charCodeAt(i++) - 43]; + output += String.fromCharCode(enc1 << 2 | enc2 >> 4); + if (enc3 !== 64) { + output += String.fromCharCode((enc2 & 15) << 4 | enc3 >> 2); + if (enc4 !== 64) { + output += String.fromCharCode((enc3 & 3) << 6 | enc4); + } + } + } + return output; + }; + util.encodeUtf8 = function(str) { + return unescape(encodeURIComponent(str)); + }; + util.decodeUtf8 = function(str) { + return decodeURIComponent(escape(str)); + }; + util.binary = { + raw: {}, + hex: {}, + base64: {}, + base58: {}, + baseN: { + encode: baseN.encode, + decode: baseN.decode + } + }; + util.binary.raw.encode = function(bytes) { + return String.fromCharCode.apply(null, bytes); + }; + util.binary.raw.decode = function(str, output, offset) { + var out = output; + if (!out) { + out = new Uint8Array(str.length); + } + offset = offset || 0; + var j = offset; + for (var i = 0; i < str.length; ++i) { + out[j++] = str.charCodeAt(i); + } + return output ? j - offset : out; + }; + util.binary.hex.encode = util.bytesToHex; + util.binary.hex.decode = function(hex, output, offset) { + var out = output; + if (!out) { + out = new Uint8Array(Math.ceil(hex.length / 2)); + } + offset = offset || 0; + var i = 0, j = offset; + if (hex.length & 1) { + i = 1; + out[j++] = parseInt(hex[0], 16); + } + for (; i < hex.length; i += 2) { + out[j++] = parseInt(hex.substr(i, 2), 16); + } + return output ? j - offset : out; + }; + util.binary.base64.encode = function(input, maxline) { + var line = ""; + var output = ""; + var chr1, chr2, chr3; + var i = 0; + while (i < input.byteLength) { + chr1 = input[i++]; + chr2 = input[i++]; + chr3 = input[i++]; + line += _base64.charAt(chr1 >> 2); + line += _base64.charAt((chr1 & 3) << 4 | chr2 >> 4); + if (isNaN(chr2)) { + line += "=="; + } else { + line += _base64.charAt((chr2 & 15) << 2 | chr3 >> 6); + line += isNaN(chr3) ? "=" : _base64.charAt(chr3 & 63); + } + if (maxline && line.length > maxline) { + output += line.substr(0, maxline) + "\r\n"; + line = line.substr(maxline); + } + } + output += line; + return output; + }; + util.binary.base64.decode = function(input, output, offset) { + var out = output; + if (!out) { + out = new Uint8Array(Math.ceil(input.length / 4) * 3); + } + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + offset = offset || 0; + var enc1, enc2, enc3, enc4; + var i = 0, j = offset; + while (i < input.length) { + enc1 = _base64Idx[input.charCodeAt(i++) - 43]; + enc2 = _base64Idx[input.charCodeAt(i++) - 43]; + enc3 = _base64Idx[input.charCodeAt(i++) - 43]; + enc4 = _base64Idx[input.charCodeAt(i++) - 43]; + out[j++] = enc1 << 2 | enc2 >> 4; + if (enc3 !== 64) { + out[j++] = (enc2 & 15) << 4 | enc3 >> 2; + if (enc4 !== 64) { + out[j++] = (enc3 & 3) << 6 | enc4; + } + } + } + return output ? j - offset : out.subarray(0, j); + }; + util.binary.base58.encode = function(input, maxline) { + return util.binary.baseN.encode(input, _base58, maxline); + }; + util.binary.base58.decode = function(input, maxline) { + return util.binary.baseN.decode(input, _base58, maxline); + }; + util.text = { + utf8: {}, + utf16: {} + }; + util.text.utf8.encode = function(str, output, offset) { + str = util.encodeUtf8(str); + var out = output; + if (!out) { + out = new Uint8Array(str.length); + } + offset = offset || 0; + var j = offset; + for (var i = 0; i < str.length; ++i) { + out[j++] = str.charCodeAt(i); + } + return output ? j - offset : out; + }; + util.text.utf8.decode = function(bytes) { + return util.decodeUtf8(String.fromCharCode.apply(null, bytes)); + }; + util.text.utf16.encode = function(str, output, offset) { + var out = output; + if (!out) { + out = new Uint8Array(str.length * 2); + } + var view = new Uint16Array(out.buffer); + offset = offset || 0; + var j = offset; + var k = offset; + for (var i = 0; i < str.length; ++i) { + view[k++] = str.charCodeAt(i); + j += 2; + } + return output ? j - offset : out; + }; + util.text.utf16.decode = function(bytes) { + return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer)); + }; + util.deflate = function(api, bytes, raw) { + bytes = util.decode64(api.deflate(util.encode64(bytes)).rval); + if (raw) { + var start = 2; + var flg = bytes.charCodeAt(1); + if (flg & 32) { + start = 6; + } + bytes = bytes.substring(start, bytes.length - 4); + } + return bytes; + }; + util.inflate = function(api, bytes, raw) { + var rval = api.inflate(util.encode64(bytes)).rval; + return rval === null ? null : util.decode64(rval); + }; + var _setStorageObject = function(api, id, obj) { + if (!api) { + throw new Error("WebStorage not available."); + } + var rval; + if (obj === null) { + rval = api.removeItem(id); + } else { + obj = util.encode64(JSON.stringify(obj)); + rval = api.setItem(id, obj); + } + if (typeof rval !== "undefined" && rval.rval !== true) { + var error = new Error(rval.error.message); + error.id = rval.error.id; + error.name = rval.error.name; + throw error; + } + }; + var _getStorageObject = function(api, id) { + if (!api) { + throw new Error("WebStorage not available."); + } + var rval = api.getItem(id); + if (api.init) { + if (rval.rval === null) { + if (rval.error) { + var error = new Error(rval.error.message); + error.id = rval.error.id; + error.name = rval.error.name; + throw error; + } + rval = null; + } else { + rval = rval.rval; + } + } + if (rval !== null) { + rval = JSON.parse(util.decode64(rval)); + } + return rval; + }; + var _setItem = function(api, id, key, data) { + var obj = _getStorageObject(api, id); + if (obj === null) { + obj = {}; + } + obj[key] = data; + _setStorageObject(api, id, obj); + }; + var _getItem = function(api, id, key) { + var rval = _getStorageObject(api, id); + if (rval !== null) { + rval = key in rval ? rval[key] : null; + } + return rval; + }; + var _removeItem = function(api, id, key) { + var obj = _getStorageObject(api, id); + if (obj !== null && key in obj) { + delete obj[key]; + var empty = true; + for (var prop in obj) { + empty = false; + break; + } + if (empty) { + obj = null; + } + _setStorageObject(api, id, obj); + } + }; + var _clearItems = function(api, id) { + _setStorageObject(api, id, null); + }; + var _callStorageFunction = function(func, args, location) { + var rval = null; + if (typeof location === "undefined") { + location = ["web", "flash"]; + } + var type; + var done = false; + var exception = null; + for (var idx in location) { + type = location[idx]; + try { + if (type === "flash" || type === "both") { + if (args[0] === null) { + throw new Error("Flash local storage not available."); + } + rval = func.apply(this, args); + done = type === "flash"; + } + if (type === "web" || type === "both") { + args[0] = localStorage; + rval = func.apply(this, args); + done = true; + } + } catch (ex) { + exception = ex; + } + if (done) { + break; + } + } + if (!done) { + throw exception; + } + return rval; + }; + util.setItem = function(api, id, key, data, location) { + _callStorageFunction(_setItem, arguments, location); + }; + util.getItem = function(api, id, key, location) { + return _callStorageFunction(_getItem, arguments, location); + }; + util.removeItem = function(api, id, key, location) { + _callStorageFunction(_removeItem, arguments, location); + }; + util.clearItems = function(api, id, location) { + _callStorageFunction(_clearItems, arguments, location); + }; + util.isEmpty = function(obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + return false; + } + } + return true; + }; + util.format = function(format) { + var re = /%./g; + var match; + var part; + var argi = 0; + var parts = []; + var last = 0; + while (match = re.exec(format)) { + part = format.substring(last, re.lastIndex - 2); + if (part.length > 0) { + parts.push(part); + } + last = re.lastIndex; + var code = match[0][1]; + switch (code) { + case "s": + case "o": + if (argi < arguments.length) { + parts.push(arguments[argi++ + 1]); + } else { + parts.push(""); + } + break; + case "%": + parts.push("%"); + break; + default: + parts.push("<%" + code + "?>"); + } + } + parts.push(format.substring(last)); + return parts.join(""); + }; + util.formatNumber = function(number, decimals, dec_point, thousands_sep) { + var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals; + var d = dec_point === void 0 ? "," : dec_point; + var t = thousands_sep === void 0 ? "." : thousands_sep, s = n < 0 ? "-" : ""; + var i = parseInt(n = Math.abs(+n || 0).toFixed(c), 10) + ""; + var j = i.length > 3 ? i.length % 3 : 0; + return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); + }; + util.formatSize = function(size) { + if (size >= 1073741824) { + size = util.formatNumber(size / 1073741824, 2, ".", "") + " GiB"; + } else if (size >= 1048576) { + size = util.formatNumber(size / 1048576, 2, ".", "") + " MiB"; + } else if (size >= 1024) { + size = util.formatNumber(size / 1024, 0) + " KiB"; + } else { + size = util.formatNumber(size, 0) + " bytes"; + } + return size; + }; + util.bytesFromIP = function(ip) { + if (ip.indexOf(".") !== -1) { + return util.bytesFromIPv4(ip); + } + if (ip.indexOf(":") !== -1) { + return util.bytesFromIPv6(ip); + } + return null; + }; + util.bytesFromIPv4 = function(ip) { + ip = ip.split("."); + if (ip.length !== 4) { + return null; + } + var b = util.createBuffer(); + for (var i = 0; i < ip.length; ++i) { + var num = parseInt(ip[i], 10); + if (isNaN(num)) { + return null; + } + b.putByte(num); + } + return b.getBytes(); + }; + util.bytesFromIPv6 = function(ip) { + var blanks = 0; + ip = ip.split(":").filter(function(e) { + if (e.length === 0) + ++blanks; + return true; + }); + var zeros = (8 - ip.length + blanks) * 2; + var b = util.createBuffer(); + for (var i = 0; i < 8; ++i) { + if (!ip[i] || ip[i].length === 0) { + b.fillWithByte(0, zeros); + zeros = 0; + continue; + } + var bytes = util.hexToBytes(ip[i]); + if (bytes.length < 2) { + b.putByte(0); + } + b.putBytes(bytes); + } + return b.getBytes(); + }; + util.bytesToIP = function(bytes) { + if (bytes.length === 4) { + return util.bytesToIPv4(bytes); + } + if (bytes.length === 16) { + return util.bytesToIPv6(bytes); + } + return null; + }; + util.bytesToIPv4 = function(bytes) { + if (bytes.length !== 4) { + return null; + } + var ip = []; + for (var i = 0; i < bytes.length; ++i) { + ip.push(bytes.charCodeAt(i)); + } + return ip.join("."); + }; + util.bytesToIPv6 = function(bytes) { + if (bytes.length !== 16) { + return null; + } + var ip = []; + var zeroGroups = []; + var zeroMaxGroup = 0; + for (var i = 0; i < bytes.length; i += 2) { + var hex = util.bytesToHex(bytes[i] + bytes[i + 1]); + while (hex[0] === "0" && hex !== "0") { + hex = hex.substr(1); + } + if (hex === "0") { + var last = zeroGroups[zeroGroups.length - 1]; + var idx = ip.length; + if (!last || idx !== last.end + 1) { + zeroGroups.push({ start: idx, end: idx }); + } else { + last.end = idx; + if (last.end - last.start > zeroGroups[zeroMaxGroup].end - zeroGroups[zeroMaxGroup].start) { + zeroMaxGroup = zeroGroups.length - 1; + } + } + } + ip.push(hex); + } + if (zeroGroups.length > 0) { + var group = zeroGroups[zeroMaxGroup]; + if (group.end - group.start > 0) { + ip.splice(group.start, group.end - group.start + 1, ""); + if (group.start === 0) { + ip.unshift(""); + } + if (group.end === 7) { + ip.push(""); + } + } + } + return ip.join(":"); + }; + util.estimateCores = function(options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options = options || {}; + if ("cores" in util && !options.update) { + return callback(null, util.cores); + } + if (typeof navigator !== "undefined" && "hardwareConcurrency" in navigator && navigator.hardwareConcurrency > 0) { + util.cores = navigator.hardwareConcurrency; + return callback(null, util.cores); + } + if (typeof Worker === "undefined") { + util.cores = 1; + return callback(null, util.cores); + } + if (typeof Blob === "undefined") { + util.cores = 2; + return callback(null, util.cores); + } + var blobUrl = URL.createObjectURL(new Blob([ + "(", + function() { + self.addEventListener("message", function(e) { + var st = Date.now(); + var et = st + 4; + while (Date.now() < et) + ; + self.postMessage({ st, et }); + }); + }.toString(), + ")()" + ], { type: "application/javascript" })); + sample([], 5, 16); + function sample(max, samples, numWorkers) { + if (samples === 0) { + var avg = Math.floor(max.reduce(function(avg2, x) { + return avg2 + x; + }, 0) / max.length); + util.cores = Math.max(1, avg); + URL.revokeObjectURL(blobUrl); + return callback(null, util.cores); + } + map(numWorkers, function(err, results) { + max.push(reduce(numWorkers, results)); + sample(max, samples - 1, numWorkers); + }); + } + function map(numWorkers, callback2) { + var workers = []; + var results = []; + for (var i = 0; i < numWorkers; ++i) { + var worker = new Worker(blobUrl); + worker.addEventListener("message", function(e) { + results.push(e.data); + if (results.length === numWorkers) { + for (var i2 = 0; i2 < numWorkers; ++i2) { + workers[i2].terminate(); + } + callback2(null, results); + } + }); + workers.push(worker); + } + for (var i = 0; i < numWorkers; ++i) { + workers[i].postMessage(i); + } + } + function reduce(numWorkers, results) { + var overlaps = []; + for (var n = 0; n < numWorkers; ++n) { + var r1 = results[n]; + var overlap = overlaps[n] = []; + for (var i = 0; i < numWorkers; ++i) { + if (n === i) { + continue; + } + var r2 = results[i]; + if (r1.st > r2.st && r1.st < r2.et || r2.st > r1.st && r2.st < r1.et) { + overlap.push(i); + } + } + } + return overlaps.reduce(function(max, overlap2) { + return Math.max(max, overlap2.length); + }, 0); + } + }; + } +}); + +// node_modules/node-forge/lib/cipher.js +var require_cipher = __commonJS({ + "node_modules/node-forge/lib/cipher.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + module2.exports = forge3.cipher = forge3.cipher || {}; + forge3.cipher.algorithms = forge3.cipher.algorithms || {}; + forge3.cipher.createCipher = function(algorithm, key) { + var api = algorithm; + if (typeof api === "string") { + api = forge3.cipher.getAlgorithm(api); + if (api) { + api = api(); + } + } + if (!api) { + throw new Error("Unsupported algorithm: " + algorithm); + } + return new forge3.cipher.BlockCipher({ + algorithm: api, + key, + decrypt: false + }); + }; + forge3.cipher.createDecipher = function(algorithm, key) { + var api = algorithm; + if (typeof api === "string") { + api = forge3.cipher.getAlgorithm(api); + if (api) { + api = api(); + } + } + if (!api) { + throw new Error("Unsupported algorithm: " + algorithm); + } + return new forge3.cipher.BlockCipher({ + algorithm: api, + key, + decrypt: true + }); + }; + forge3.cipher.registerAlgorithm = function(name, algorithm) { + name = name.toUpperCase(); + forge3.cipher.algorithms[name] = algorithm; + }; + forge3.cipher.getAlgorithm = function(name) { + name = name.toUpperCase(); + if (name in forge3.cipher.algorithms) { + return forge3.cipher.algorithms[name]; + } + return null; + }; + var BlockCipher = forge3.cipher.BlockCipher = function(options) { + this.algorithm = options.algorithm; + this.mode = this.algorithm.mode; + this.blockSize = this.mode.blockSize; + this._finish = false; + this._input = null; + this.output = null; + this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt; + this._decrypt = options.decrypt; + this.algorithm.initialize(options); + }; + BlockCipher.prototype.start = function(options) { + options = options || {}; + var opts = {}; + for (var key in options) { + opts[key] = options[key]; + } + opts.decrypt = this._decrypt; + this._finish = false; + this._input = forge3.util.createBuffer(); + this.output = options.output || forge3.util.createBuffer(); + this.mode.start(opts); + }; + BlockCipher.prototype.update = function(input) { + if (input) { + this._input.putBuffer(input); + } + while (!this._op.call(this.mode, this._input, this.output, this._finish) && !this._finish) { + } + this._input.compact(); + }; + BlockCipher.prototype.finish = function(pad) { + if (pad && (this.mode.name === "ECB" || this.mode.name === "CBC")) { + this.mode.pad = function(input) { + return pad(this.blockSize, input, false); + }; + this.mode.unpad = function(output) { + return pad(this.blockSize, output, true); + }; + } + var options = {}; + options.decrypt = this._decrypt; + options.overflow = this._input.length() % this.blockSize; + if (!this._decrypt && this.mode.pad) { + if (!this.mode.pad(this._input, options)) { + return false; + } + } + this._finish = true; + this.update(); + if (this._decrypt && this.mode.unpad) { + if (!this.mode.unpad(this.output, options)) { + return false; + } + } + if (this.mode.afterFinish) { + if (!this.mode.afterFinish(this.output, options)) { + return false; + } + } + return true; + }; + } +}); + +// node_modules/node-forge/lib/cipherModes.js +var require_cipherModes = __commonJS({ + "node_modules/node-forge/lib/cipherModes.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + forge3.cipher = forge3.cipher || {}; + var modes = module2.exports = forge3.cipher.modes = forge3.cipher.modes || {}; + modes.ecb = function(options) { + options = options || {}; + this.name = "ECB"; + this.cipher = options.cipher; + this.blockSize = options.blockSize || 16; + this._ints = this.blockSize / 4; + this._inBlock = new Array(this._ints); + this._outBlock = new Array(this._ints); + }; + modes.ecb.prototype.start = function(options) { + }; + modes.ecb.prototype.encrypt = function(input, output, finish) { + if (input.length() < this.blockSize && !(finish && input.length() > 0)) { + return true; + } + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = input.getInt32(); + } + this.cipher.encrypt(this._inBlock, this._outBlock); + for (var i = 0; i < this._ints; ++i) { + output.putInt32(this._outBlock[i]); + } + }; + modes.ecb.prototype.decrypt = function(input, output, finish) { + if (input.length() < this.blockSize && !(finish && input.length() > 0)) { + return true; + } + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = input.getInt32(); + } + this.cipher.decrypt(this._inBlock, this._outBlock); + for (var i = 0; i < this._ints; ++i) { + output.putInt32(this._outBlock[i]); + } + }; + modes.ecb.prototype.pad = function(input, options) { + var padding = input.length() === this.blockSize ? this.blockSize : this.blockSize - input.length(); + input.fillWithByte(padding, padding); + return true; + }; + modes.ecb.prototype.unpad = function(output, options) { + if (options.overflow > 0) { + return false; + } + var len = output.length(); + var count = output.at(len - 1); + if (count > this.blockSize << 2) { + return false; + } + output.truncate(count); + return true; + }; + modes.cbc = function(options) { + options = options || {}; + this.name = "CBC"; + this.cipher = options.cipher; + this.blockSize = options.blockSize || 16; + this._ints = this.blockSize / 4; + this._inBlock = new Array(this._ints); + this._outBlock = new Array(this._ints); + }; + modes.cbc.prototype.start = function(options) { + if (options.iv === null) { + if (!this._prev) { + throw new Error("Invalid IV parameter."); + } + this._iv = this._prev.slice(0); + } else if (!("iv" in options)) { + throw new Error("Invalid IV parameter."); + } else { + this._iv = transformIV(options.iv, this.blockSize); + this._prev = this._iv.slice(0); + } + }; + modes.cbc.prototype.encrypt = function(input, output, finish) { + if (input.length() < this.blockSize && !(finish && input.length() > 0)) { + return true; + } + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = this._prev[i] ^ input.getInt32(); + } + this.cipher.encrypt(this._inBlock, this._outBlock); + for (var i = 0; i < this._ints; ++i) { + output.putInt32(this._outBlock[i]); + } + this._prev = this._outBlock; + }; + modes.cbc.prototype.decrypt = function(input, output, finish) { + if (input.length() < this.blockSize && !(finish && input.length() > 0)) { + return true; + } + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = input.getInt32(); + } + this.cipher.decrypt(this._inBlock, this._outBlock); + for (var i = 0; i < this._ints; ++i) { + output.putInt32(this._prev[i] ^ this._outBlock[i]); + } + this._prev = this._inBlock.slice(0); + }; + modes.cbc.prototype.pad = function(input, options) { + var padding = input.length() === this.blockSize ? this.blockSize : this.blockSize - input.length(); + input.fillWithByte(padding, padding); + return true; + }; + modes.cbc.prototype.unpad = function(output, options) { + if (options.overflow > 0) { + return false; + } + var len = output.length(); + var count = output.at(len - 1); + if (count > this.blockSize << 2) { + return false; + } + output.truncate(count); + return true; + }; + modes.cfb = function(options) { + options = options || {}; + this.name = "CFB"; + this.cipher = options.cipher; + this.blockSize = options.blockSize || 16; + this._ints = this.blockSize / 4; + this._inBlock = null; + this._outBlock = new Array(this._ints); + this._partialBlock = new Array(this._ints); + this._partialOutput = forge3.util.createBuffer(); + this._partialBytes = 0; + }; + modes.cfb.prototype.start = function(options) { + if (!("iv" in options)) { + throw new Error("Invalid IV parameter."); + } + this._iv = transformIV(options.iv, this.blockSize); + this._inBlock = this._iv.slice(0); + this._partialBytes = 0; + }; + modes.cfb.prototype.encrypt = function(input, output, finish) { + var inputLength = input.length(); + if (inputLength === 0) { + return true; + } + this.cipher.encrypt(this._inBlock, this._outBlock); + if (this._partialBytes === 0 && inputLength >= this.blockSize) { + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = input.getInt32() ^ this._outBlock[i]; + output.putInt32(this._inBlock[i]); + } + return; + } + var partialBytes = (this.blockSize - inputLength) % this.blockSize; + if (partialBytes > 0) { + partialBytes = this.blockSize - partialBytes; + } + this._partialOutput.clear(); + for (var i = 0; i < this._ints; ++i) { + this._partialBlock[i] = input.getInt32() ^ this._outBlock[i]; + this._partialOutput.putInt32(this._partialBlock[i]); + } + if (partialBytes > 0) { + input.read -= this.blockSize; + } else { + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = this._partialBlock[i]; + } + } + if (this._partialBytes > 0) { + this._partialOutput.getBytes(this._partialBytes); + } + if (partialBytes > 0 && !finish) { + output.putBytes(this._partialOutput.getBytes(partialBytes - this._partialBytes)); + this._partialBytes = partialBytes; + return true; + } + output.putBytes(this._partialOutput.getBytes(inputLength - this._partialBytes)); + this._partialBytes = 0; + }; + modes.cfb.prototype.decrypt = function(input, output, finish) { + var inputLength = input.length(); + if (inputLength === 0) { + return true; + } + this.cipher.encrypt(this._inBlock, this._outBlock); + if (this._partialBytes === 0 && inputLength >= this.blockSize) { + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = input.getInt32(); + output.putInt32(this._inBlock[i] ^ this._outBlock[i]); + } + return; + } + var partialBytes = (this.blockSize - inputLength) % this.blockSize; + if (partialBytes > 0) { + partialBytes = this.blockSize - partialBytes; + } + this._partialOutput.clear(); + for (var i = 0; i < this._ints; ++i) { + this._partialBlock[i] = input.getInt32(); + this._partialOutput.putInt32(this._partialBlock[i] ^ this._outBlock[i]); + } + if (partialBytes > 0) { + input.read -= this.blockSize; + } else { + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = this._partialBlock[i]; + } + } + if (this._partialBytes > 0) { + this._partialOutput.getBytes(this._partialBytes); + } + if (partialBytes > 0 && !finish) { + output.putBytes(this._partialOutput.getBytes(partialBytes - this._partialBytes)); + this._partialBytes = partialBytes; + return true; + } + output.putBytes(this._partialOutput.getBytes(inputLength - this._partialBytes)); + this._partialBytes = 0; + }; + modes.ofb = function(options) { + options = options || {}; + this.name = "OFB"; + this.cipher = options.cipher; + this.blockSize = options.blockSize || 16; + this._ints = this.blockSize / 4; + this._inBlock = null; + this._outBlock = new Array(this._ints); + this._partialOutput = forge3.util.createBuffer(); + this._partialBytes = 0; + }; + modes.ofb.prototype.start = function(options) { + if (!("iv" in options)) { + throw new Error("Invalid IV parameter."); + } + this._iv = transformIV(options.iv, this.blockSize); + this._inBlock = this._iv.slice(0); + this._partialBytes = 0; + }; + modes.ofb.prototype.encrypt = function(input, output, finish) { + var inputLength = input.length(); + if (input.length() === 0) { + return true; + } + this.cipher.encrypt(this._inBlock, this._outBlock); + if (this._partialBytes === 0 && inputLength >= this.blockSize) { + for (var i = 0; i < this._ints; ++i) { + output.putInt32(input.getInt32() ^ this._outBlock[i]); + this._inBlock[i] = this._outBlock[i]; + } + return; + } + var partialBytes = (this.blockSize - inputLength) % this.blockSize; + if (partialBytes > 0) { + partialBytes = this.blockSize - partialBytes; + } + this._partialOutput.clear(); + for (var i = 0; i < this._ints; ++i) { + this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]); + } + if (partialBytes > 0) { + input.read -= this.blockSize; + } else { + for (var i = 0; i < this._ints; ++i) { + this._inBlock[i] = this._outBlock[i]; + } + } + if (this._partialBytes > 0) { + this._partialOutput.getBytes(this._partialBytes); + } + if (partialBytes > 0 && !finish) { + output.putBytes(this._partialOutput.getBytes(partialBytes - this._partialBytes)); + this._partialBytes = partialBytes; + return true; + } + output.putBytes(this._partialOutput.getBytes(inputLength - this._partialBytes)); + this._partialBytes = 0; + }; + modes.ofb.prototype.decrypt = modes.ofb.prototype.encrypt; + modes.ctr = function(options) { + options = options || {}; + this.name = "CTR"; + this.cipher = options.cipher; + this.blockSize = options.blockSize || 16; + this._ints = this.blockSize / 4; + this._inBlock = null; + this._outBlock = new Array(this._ints); + this._partialOutput = forge3.util.createBuffer(); + this._partialBytes = 0; + }; + modes.ctr.prototype.start = function(options) { + if (!("iv" in options)) { + throw new Error("Invalid IV parameter."); + } + this._iv = transformIV(options.iv, this.blockSize); + this._inBlock = this._iv.slice(0); + this._partialBytes = 0; + }; + modes.ctr.prototype.encrypt = function(input, output, finish) { + var inputLength = input.length(); + if (inputLength === 0) { + return true; + } + this.cipher.encrypt(this._inBlock, this._outBlock); + if (this._partialBytes === 0 && inputLength >= this.blockSize) { + for (var i = 0; i < this._ints; ++i) { + output.putInt32(input.getInt32() ^ this._outBlock[i]); + } + } else { + var partialBytes = (this.blockSize - inputLength) % this.blockSize; + if (partialBytes > 0) { + partialBytes = this.blockSize - partialBytes; + } + this._partialOutput.clear(); + for (var i = 0; i < this._ints; ++i) { + this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]); + } + if (partialBytes > 0) { + input.read -= this.blockSize; + } + if (this._partialBytes > 0) { + this._partialOutput.getBytes(this._partialBytes); + } + if (partialBytes > 0 && !finish) { + output.putBytes(this._partialOutput.getBytes(partialBytes - this._partialBytes)); + this._partialBytes = partialBytes; + return true; + } + output.putBytes(this._partialOutput.getBytes(inputLength - this._partialBytes)); + this._partialBytes = 0; + } + inc32(this._inBlock); + }; + modes.ctr.prototype.decrypt = modes.ctr.prototype.encrypt; + modes.gcm = function(options) { + options = options || {}; + this.name = "GCM"; + this.cipher = options.cipher; + this.blockSize = options.blockSize || 16; + this._ints = this.blockSize / 4; + this._inBlock = new Array(this._ints); + this._outBlock = new Array(this._ints); + this._partialOutput = forge3.util.createBuffer(); + this._partialBytes = 0; + this._R = 3774873600; + }; + modes.gcm.prototype.start = function(options) { + if (!("iv" in options)) { + throw new Error("Invalid IV parameter."); + } + var iv = forge3.util.createBuffer(options.iv); + this._cipherLength = 0; + var additionalData; + if ("additionalData" in options) { + additionalData = forge3.util.createBuffer(options.additionalData); + } else { + additionalData = forge3.util.createBuffer(); + } + if ("tagLength" in options) { + this._tagLength = options.tagLength; + } else { + this._tagLength = 128; + } + this._tag = null; + if (options.decrypt) { + this._tag = forge3.util.createBuffer(options.tag).getBytes(); + if (this._tag.length !== this._tagLength / 8) { + throw new Error("Authentication tag does not match tag length."); + } + } + this._hashBlock = new Array(this._ints); + this.tag = null; + this._hashSubkey = new Array(this._ints); + this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey); + this.componentBits = 4; + this._m = this.generateHashTable(this._hashSubkey, this.componentBits); + var ivLength = iv.length(); + if (ivLength === 12) { + this._j0 = [iv.getInt32(), iv.getInt32(), iv.getInt32(), 1]; + } else { + this._j0 = [0, 0, 0, 0]; + while (iv.length() > 0) { + this._j0 = this.ghash(this._hashSubkey, this._j0, [iv.getInt32(), iv.getInt32(), iv.getInt32(), iv.getInt32()]); + } + this._j0 = this.ghash(this._hashSubkey, this._j0, [0, 0].concat(from64To32(ivLength * 8))); + } + this._inBlock = this._j0.slice(0); + inc32(this._inBlock); + this._partialBytes = 0; + additionalData = forge3.util.createBuffer(additionalData); + this._aDataLength = from64To32(additionalData.length() * 8); + var overflow = additionalData.length() % this.blockSize; + if (overflow) { + additionalData.fillWithByte(0, this.blockSize - overflow); + } + this._s = [0, 0, 0, 0]; + while (additionalData.length() > 0) { + this._s = this.ghash(this._hashSubkey, this._s, [ + additionalData.getInt32(), + additionalData.getInt32(), + additionalData.getInt32(), + additionalData.getInt32() + ]); + } + }; + modes.gcm.prototype.encrypt = function(input, output, finish) { + var inputLength = input.length(); + if (inputLength === 0) { + return true; + } + this.cipher.encrypt(this._inBlock, this._outBlock); + if (this._partialBytes === 0 && inputLength >= this.blockSize) { + for (var i = 0; i < this._ints; ++i) { + output.putInt32(this._outBlock[i] ^= input.getInt32()); + } + this._cipherLength += this.blockSize; + } else { + var partialBytes = (this.blockSize - inputLength) % this.blockSize; + if (partialBytes > 0) { + partialBytes = this.blockSize - partialBytes; + } + this._partialOutput.clear(); + for (var i = 0; i < this._ints; ++i) { + this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]); + } + if (partialBytes <= 0 || finish) { + if (finish) { + var overflow = inputLength % this.blockSize; + this._cipherLength += overflow; + this._partialOutput.truncate(this.blockSize - overflow); + } else { + this._cipherLength += this.blockSize; + } + for (var i = 0; i < this._ints; ++i) { + this._outBlock[i] = this._partialOutput.getInt32(); + } + this._partialOutput.read -= this.blockSize; + } + if (this._partialBytes > 0) { + this._partialOutput.getBytes(this._partialBytes); + } + if (partialBytes > 0 && !finish) { + input.read -= this.blockSize; + output.putBytes(this._partialOutput.getBytes(partialBytes - this._partialBytes)); + this._partialBytes = partialBytes; + return true; + } + output.putBytes(this._partialOutput.getBytes(inputLength - this._partialBytes)); + this._partialBytes = 0; + } + this._s = this.ghash(this._hashSubkey, this._s, this._outBlock); + inc32(this._inBlock); + }; + modes.gcm.prototype.decrypt = function(input, output, finish) { + var inputLength = input.length(); + if (inputLength < this.blockSize && !(finish && inputLength > 0)) { + return true; + } + this.cipher.encrypt(this._inBlock, this._outBlock); + inc32(this._inBlock); + this._hashBlock[0] = input.getInt32(); + this._hashBlock[1] = input.getInt32(); + this._hashBlock[2] = input.getInt32(); + this._hashBlock[3] = input.getInt32(); + this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock); + for (var i = 0; i < this._ints; ++i) { + output.putInt32(this._outBlock[i] ^ this._hashBlock[i]); + } + if (inputLength < this.blockSize) { + this._cipherLength += inputLength % this.blockSize; + } else { + this._cipherLength += this.blockSize; + } + }; + modes.gcm.prototype.afterFinish = function(output, options) { + var rval = true; + if (options.decrypt && options.overflow) { + output.truncate(this.blockSize - options.overflow); + } + this.tag = forge3.util.createBuffer(); + var lengths = this._aDataLength.concat(from64To32(this._cipherLength * 8)); + this._s = this.ghash(this._hashSubkey, this._s, lengths); + var tag = []; + this.cipher.encrypt(this._j0, tag); + for (var i = 0; i < this._ints; ++i) { + this.tag.putInt32(this._s[i] ^ tag[i]); + } + this.tag.truncate(this.tag.length() % (this._tagLength / 8)); + if (options.decrypt && this.tag.bytes() !== this._tag) { + rval = false; + } + return rval; + }; + modes.gcm.prototype.multiply = function(x, y) { + var z_i = [0, 0, 0, 0]; + var v_i = y.slice(0); + for (var i = 0; i < 128; ++i) { + var x_i = x[i / 32 | 0] & 1 << 31 - i % 32; + if (x_i) { + z_i[0] ^= v_i[0]; + z_i[1] ^= v_i[1]; + z_i[2] ^= v_i[2]; + z_i[3] ^= v_i[3]; + } + this.pow(v_i, v_i); + } + return z_i; + }; + modes.gcm.prototype.pow = function(x, out) { + var lsb = x[3] & 1; + for (var i = 3; i > 0; --i) { + out[i] = x[i] >>> 1 | (x[i - 1] & 1) << 31; + } + out[0] = x[0] >>> 1; + if (lsb) { + out[0] ^= this._R; + } + }; + modes.gcm.prototype.tableMultiply = function(x) { + var z = [0, 0, 0, 0]; + for (var i = 0; i < 32; ++i) { + var idx = i / 8 | 0; + var x_i = x[idx] >>> (7 - i % 8) * 4 & 15; + var ah = this._m[i][x_i]; + z[0] ^= ah[0]; + z[1] ^= ah[1]; + z[2] ^= ah[2]; + z[3] ^= ah[3]; + } + return z; + }; + modes.gcm.prototype.ghash = function(h, y, x) { + y[0] ^= x[0]; + y[1] ^= x[1]; + y[2] ^= x[2]; + y[3] ^= x[3]; + return this.tableMultiply(y); + }; + modes.gcm.prototype.generateHashTable = function(h, bits) { + var multiplier = 8 / bits; + var perInt = 4 * multiplier; + var size = 16 * multiplier; + var m = new Array(size); + for (var i = 0; i < size; ++i) { + var tmp = [0, 0, 0, 0]; + var idx = i / perInt | 0; + var shft = (perInt - 1 - i % perInt) * bits; + tmp[idx] = 1 << bits - 1 << shft; + m[i] = this.generateSubHashTable(this.multiply(tmp, h), bits); + } + return m; + }; + modes.gcm.prototype.generateSubHashTable = function(mid, bits) { + var size = 1 << bits; + var half = size >>> 1; + var m = new Array(size); + m[half] = mid.slice(0); + var i = half >>> 1; + while (i > 0) { + this.pow(m[2 * i], m[i] = []); + i >>= 1; + } + i = 2; + while (i < half) { + for (var j = 1; j < i; ++j) { + var m_i = m[i]; + var m_j = m[j]; + m[i + j] = [ + m_i[0] ^ m_j[0], + m_i[1] ^ m_j[1], + m_i[2] ^ m_j[2], + m_i[3] ^ m_j[3] + ]; + } + i *= 2; + } + m[0] = [0, 0, 0, 0]; + for (i = half + 1; i < size; ++i) { + var c = m[i ^ half]; + m[i] = [mid[0] ^ c[0], mid[1] ^ c[1], mid[2] ^ c[2], mid[3] ^ c[3]]; + } + return m; + }; + function transformIV(iv, blockSize) { + if (typeof iv === "string") { + iv = forge3.util.createBuffer(iv); + } + if (forge3.util.isArray(iv) && iv.length > 4) { + var tmp = iv; + iv = forge3.util.createBuffer(); + for (var i = 0; i < tmp.length; ++i) { + iv.putByte(tmp[i]); + } + } + if (iv.length() < blockSize) { + throw new Error("Invalid IV length; got " + iv.length() + " bytes and expected " + blockSize + " bytes."); + } + if (!forge3.util.isArray(iv)) { + var ints = []; + var blocks = blockSize / 4; + for (var i = 0; i < blocks; ++i) { + ints.push(iv.getInt32()); + } + iv = ints; + } + return iv; + } + function inc32(block) { + block[block.length - 1] = block[block.length - 1] + 1 & 4294967295; + } + function from64To32(num) { + return [num / 4294967296 | 0, num & 4294967295]; + } + } +}); + +// node_modules/node-forge/lib/aes.js +var require_aes = __commonJS({ + "node_modules/node-forge/lib/aes.js"(exports, module2) { + var forge3 = require_forge(); + require_cipher(); + require_cipherModes(); + require_util(); + module2.exports = forge3.aes = forge3.aes || {}; + forge3.aes.startEncrypting = function(key, iv, output, mode) { + var cipher = _createCipher({ + key, + output, + decrypt: false, + mode + }); + cipher.start(iv); + return cipher; + }; + forge3.aes.createEncryptionCipher = function(key, mode) { + return _createCipher({ + key, + output: null, + decrypt: false, + mode + }); + }; + forge3.aes.startDecrypting = function(key, iv, output, mode) { + var cipher = _createCipher({ + key, + output, + decrypt: true, + mode + }); + cipher.start(iv); + return cipher; + }; + forge3.aes.createDecryptionCipher = function(key, mode) { + return _createCipher({ + key, + output: null, + decrypt: true, + mode + }); + }; + forge3.aes.Algorithm = function(name, mode) { + if (!init) { + initialize(); + } + var self2 = this; + self2.name = name; + self2.mode = new mode({ + blockSize: 16, + cipher: { + encrypt: function(inBlock, outBlock) { + return _updateBlock(self2._w, inBlock, outBlock, false); + }, + decrypt: function(inBlock, outBlock) { + return _updateBlock(self2._w, inBlock, outBlock, true); + } + } + }); + self2._init = false; + }; + forge3.aes.Algorithm.prototype.initialize = function(options) { + if (this._init) { + return; + } + var key = options.key; + var tmp; + if (typeof key === "string" && (key.length === 16 || key.length === 24 || key.length === 32)) { + key = forge3.util.createBuffer(key); + } else if (forge3.util.isArray(key) && (key.length === 16 || key.length === 24 || key.length === 32)) { + tmp = key; + key = forge3.util.createBuffer(); + for (var i = 0; i < tmp.length; ++i) { + key.putByte(tmp[i]); + } + } + if (!forge3.util.isArray(key)) { + tmp = key; + key = []; + var len = tmp.length(); + if (len === 16 || len === 24 || len === 32) { + len = len >>> 2; + for (var i = 0; i < len; ++i) { + key.push(tmp.getInt32()); + } + } + } + if (!forge3.util.isArray(key) || !(key.length === 4 || key.length === 6 || key.length === 8)) { + throw new Error("Invalid key parameter."); + } + var mode = this.mode.name; + var encryptOp = ["CFB", "OFB", "CTR", "GCM"].indexOf(mode) !== -1; + this._w = _expandKey(key, options.decrypt && !encryptOp); + this._init = true; + }; + forge3.aes._expandKey = function(key, decrypt) { + if (!init) { + initialize(); + } + return _expandKey(key, decrypt); + }; + forge3.aes._updateBlock = _updateBlock; + registerAlgorithm("AES-ECB", forge3.cipher.modes.ecb); + registerAlgorithm("AES-CBC", forge3.cipher.modes.cbc); + registerAlgorithm("AES-CFB", forge3.cipher.modes.cfb); + registerAlgorithm("AES-OFB", forge3.cipher.modes.ofb); + registerAlgorithm("AES-CTR", forge3.cipher.modes.ctr); + registerAlgorithm("AES-GCM", forge3.cipher.modes.gcm); + function registerAlgorithm(name, mode) { + var factory = function() { + return new forge3.aes.Algorithm(name, mode); + }; + forge3.cipher.registerAlgorithm(name, factory); + } + var init = false; + var Nb = 4; + var sbox; + var isbox; + var rcon; + var mix; + var imix; + function initialize() { + init = true; + rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; + var xtime = new Array(256); + for (var i = 0; i < 128; ++i) { + xtime[i] = i << 1; + xtime[i + 128] = i + 128 << 1 ^ 283; + } + sbox = new Array(256); + isbox = new Array(256); + mix = new Array(4); + imix = new Array(4); + for (var i = 0; i < 4; ++i) { + mix[i] = new Array(256); + imix[i] = new Array(256); + } + var e = 0, ei = 0, e2, e4, e8, sx, sx2, me, ime; + for (var i = 0; i < 256; ++i) { + sx = ei ^ ei << 1 ^ ei << 2 ^ ei << 3 ^ ei << 4; + sx = sx >> 8 ^ sx & 255 ^ 99; + sbox[e] = sx; + isbox[sx] = e; + sx2 = xtime[sx]; + e2 = xtime[e]; + e4 = xtime[e2]; + e8 = xtime[e4]; + me = sx2 << 24 ^ sx << 16 ^ sx << 8 ^ (sx ^ sx2); + ime = (e2 ^ e4 ^ e8) << 24 ^ (e ^ e8) << 16 ^ (e ^ e4 ^ e8) << 8 ^ (e ^ e2 ^ e8); + for (var n = 0; n < 4; ++n) { + mix[n][e] = me; + imix[n][sx] = ime; + me = me << 24 | me >>> 8; + ime = ime << 24 | ime >>> 8; + } + if (e === 0) { + e = ei = 1; + } else { + e = e2 ^ xtime[xtime[xtime[e2 ^ e8]]]; + ei ^= xtime[xtime[ei]]; + } + } + } + function _expandKey(key, decrypt) { + var w = key.slice(0); + var temp, iNk = 1; + var Nk = w.length; + var Nr1 = Nk + 6 + 1; + var end = Nb * Nr1; + for (var i = Nk; i < end; ++i) { + temp = w[i - 1]; + if (i % Nk === 0) { + temp = sbox[temp >>> 16 & 255] << 24 ^ sbox[temp >>> 8 & 255] << 16 ^ sbox[temp & 255] << 8 ^ sbox[temp >>> 24] ^ rcon[iNk] << 24; + iNk++; + } else if (Nk > 6 && i % Nk === 4) { + temp = sbox[temp >>> 24] << 24 ^ sbox[temp >>> 16 & 255] << 16 ^ sbox[temp >>> 8 & 255] << 8 ^ sbox[temp & 255]; + } + w[i] = w[i - Nk] ^ temp; + } + if (decrypt) { + var tmp; + var m0 = imix[0]; + var m1 = imix[1]; + var m2 = imix[2]; + var m3 = imix[3]; + var wnew = w.slice(0); + end = w.length; + for (var i = 0, wi = end - Nb; i < end; i += Nb, wi -= Nb) { + if (i === 0 || i === end - Nb) { + wnew[i] = w[wi]; + wnew[i + 1] = w[wi + 3]; + wnew[i + 2] = w[wi + 2]; + wnew[i + 3] = w[wi + 1]; + } else { + for (var n = 0; n < Nb; ++n) { + tmp = w[wi + n]; + wnew[i + (3 & -n)] = m0[sbox[tmp >>> 24]] ^ m1[sbox[tmp >>> 16 & 255]] ^ m2[sbox[tmp >>> 8 & 255]] ^ m3[sbox[tmp & 255]]; + } + } + } + w = wnew; + } + return w; + } + function _updateBlock(w, input, output, decrypt) { + var Nr = w.length / 4 - 1; + var m0, m1, m2, m3, sub; + if (decrypt) { + m0 = imix[0]; + m1 = imix[1]; + m2 = imix[2]; + m3 = imix[3]; + sub = isbox; + } else { + m0 = mix[0]; + m1 = mix[1]; + m2 = mix[2]; + m3 = mix[3]; + sub = sbox; + } + var a, b, c, d, a2, b2, c2; + a = input[0] ^ w[0]; + b = input[decrypt ? 3 : 1] ^ w[1]; + c = input[2] ^ w[2]; + d = input[decrypt ? 1 : 3] ^ w[3]; + var i = 3; + for (var round = 1; round < Nr; ++round) { + a2 = m0[a >>> 24] ^ m1[b >>> 16 & 255] ^ m2[c >>> 8 & 255] ^ m3[d & 255] ^ w[++i]; + b2 = m0[b >>> 24] ^ m1[c >>> 16 & 255] ^ m2[d >>> 8 & 255] ^ m3[a & 255] ^ w[++i]; + c2 = m0[c >>> 24] ^ m1[d >>> 16 & 255] ^ m2[a >>> 8 & 255] ^ m3[b & 255] ^ w[++i]; + d = m0[d >>> 24] ^ m1[a >>> 16 & 255] ^ m2[b >>> 8 & 255] ^ m3[c & 255] ^ w[++i]; + a = a2; + b = b2; + c = c2; + } + output[0] = sub[a >>> 24] << 24 ^ sub[b >>> 16 & 255] << 16 ^ sub[c >>> 8 & 255] << 8 ^ sub[d & 255] ^ w[++i]; + output[decrypt ? 3 : 1] = sub[b >>> 24] << 24 ^ sub[c >>> 16 & 255] << 16 ^ sub[d >>> 8 & 255] << 8 ^ sub[a & 255] ^ w[++i]; + output[2] = sub[c >>> 24] << 24 ^ sub[d >>> 16 & 255] << 16 ^ sub[a >>> 8 & 255] << 8 ^ sub[b & 255] ^ w[++i]; + output[decrypt ? 1 : 3] = sub[d >>> 24] << 24 ^ sub[a >>> 16 & 255] << 16 ^ sub[b >>> 8 & 255] << 8 ^ sub[c & 255] ^ w[++i]; + } + function _createCipher(options) { + options = options || {}; + var mode = (options.mode || "CBC").toUpperCase(); + var algorithm = "AES-" + mode; + var cipher; + if (options.decrypt) { + cipher = forge3.cipher.createDecipher(algorithm, options.key); + } else { + cipher = forge3.cipher.createCipher(algorithm, options.key); + } + var start = cipher.start; + cipher.start = function(iv, options2) { + var output = null; + if (options2 instanceof forge3.util.ByteBuffer) { + output = options2; + options2 = {}; + } + options2 = options2 || {}; + options2.output = output; + options2.iv = iv; + start.call(cipher, options2); + }; + return cipher; + } + } +}); + +// node_modules/node-forge/lib/oids.js +var require_oids = __commonJS({ + "node_modules/node-forge/lib/oids.js"(exports, module2) { + var forge3 = require_forge(); + forge3.pki = forge3.pki || {}; + var oids = module2.exports = forge3.pki.oids = forge3.oids = forge3.oids || {}; + function _IN(id, name) { + oids[id] = name; + oids[name] = id; + } + function _I_(id, name) { + oids[id] = name; + } + _IN("1.2.840.113549.1.1.1", "rsaEncryption"); + _IN("1.2.840.113549.1.1.4", "md5WithRSAEncryption"); + _IN("1.2.840.113549.1.1.5", "sha1WithRSAEncryption"); + _IN("1.2.840.113549.1.1.7", "RSAES-OAEP"); + _IN("1.2.840.113549.1.1.8", "mgf1"); + _IN("1.2.840.113549.1.1.9", "pSpecified"); + _IN("1.2.840.113549.1.1.10", "RSASSA-PSS"); + _IN("1.2.840.113549.1.1.11", "sha256WithRSAEncryption"); + _IN("1.2.840.113549.1.1.12", "sha384WithRSAEncryption"); + _IN("1.2.840.113549.1.1.13", "sha512WithRSAEncryption"); + _IN("1.3.101.112", "EdDSA25519"); + _IN("1.2.840.10040.4.3", "dsa-with-sha1"); + _IN("1.3.14.3.2.7", "desCBC"); + _IN("1.3.14.3.2.26", "sha1"); + _IN("1.3.14.3.2.29", "sha1WithRSASignature"); + _IN("2.16.840.1.101.3.4.2.1", "sha256"); + _IN("2.16.840.1.101.3.4.2.2", "sha384"); + _IN("2.16.840.1.101.3.4.2.3", "sha512"); + _IN("2.16.840.1.101.3.4.2.4", "sha224"); + _IN("2.16.840.1.101.3.4.2.5", "sha512-224"); + _IN("2.16.840.1.101.3.4.2.6", "sha512-256"); + _IN("1.2.840.113549.2.2", "md2"); + _IN("1.2.840.113549.2.5", "md5"); + _IN("1.2.840.113549.1.7.1", "data"); + _IN("1.2.840.113549.1.7.2", "signedData"); + _IN("1.2.840.113549.1.7.3", "envelopedData"); + _IN("1.2.840.113549.1.7.4", "signedAndEnvelopedData"); + _IN("1.2.840.113549.1.7.5", "digestedData"); + _IN("1.2.840.113549.1.7.6", "encryptedData"); + _IN("1.2.840.113549.1.9.1", "emailAddress"); + _IN("1.2.840.113549.1.9.2", "unstructuredName"); + _IN("1.2.840.113549.1.9.3", "contentType"); + _IN("1.2.840.113549.1.9.4", "messageDigest"); + _IN("1.2.840.113549.1.9.5", "signingTime"); + _IN("1.2.840.113549.1.9.6", "counterSignature"); + _IN("1.2.840.113549.1.9.7", "challengePassword"); + _IN("1.2.840.113549.1.9.8", "unstructuredAddress"); + _IN("1.2.840.113549.1.9.14", "extensionRequest"); + _IN("1.2.840.113549.1.9.20", "friendlyName"); + _IN("1.2.840.113549.1.9.21", "localKeyId"); + _IN("1.2.840.113549.1.9.22.1", "x509Certificate"); + _IN("1.2.840.113549.1.12.10.1.1", "keyBag"); + _IN("1.2.840.113549.1.12.10.1.2", "pkcs8ShroudedKeyBag"); + _IN("1.2.840.113549.1.12.10.1.3", "certBag"); + _IN("1.2.840.113549.1.12.10.1.4", "crlBag"); + _IN("1.2.840.113549.1.12.10.1.5", "secretBag"); + _IN("1.2.840.113549.1.12.10.1.6", "safeContentsBag"); + _IN("1.2.840.113549.1.5.13", "pkcs5PBES2"); + _IN("1.2.840.113549.1.5.12", "pkcs5PBKDF2"); + _IN("1.2.840.113549.1.12.1.1", "pbeWithSHAAnd128BitRC4"); + _IN("1.2.840.113549.1.12.1.2", "pbeWithSHAAnd40BitRC4"); + _IN("1.2.840.113549.1.12.1.3", "pbeWithSHAAnd3-KeyTripleDES-CBC"); + _IN("1.2.840.113549.1.12.1.4", "pbeWithSHAAnd2-KeyTripleDES-CBC"); + _IN("1.2.840.113549.1.12.1.5", "pbeWithSHAAnd128BitRC2-CBC"); + _IN("1.2.840.113549.1.12.1.6", "pbewithSHAAnd40BitRC2-CBC"); + _IN("1.2.840.113549.2.7", "hmacWithSHA1"); + _IN("1.2.840.113549.2.8", "hmacWithSHA224"); + _IN("1.2.840.113549.2.9", "hmacWithSHA256"); + _IN("1.2.840.113549.2.10", "hmacWithSHA384"); + _IN("1.2.840.113549.2.11", "hmacWithSHA512"); + _IN("1.2.840.113549.3.7", "des-EDE3-CBC"); + _IN("2.16.840.1.101.3.4.1.2", "aes128-CBC"); + _IN("2.16.840.1.101.3.4.1.22", "aes192-CBC"); + _IN("2.16.840.1.101.3.4.1.42", "aes256-CBC"); + _IN("2.5.4.3", "commonName"); + _IN("2.5.4.4", "surname"); + _IN("2.5.4.5", "serialNumber"); + _IN("2.5.4.6", "countryName"); + _IN("2.5.4.7", "localityName"); + _IN("2.5.4.8", "stateOrProvinceName"); + _IN("2.5.4.9", "streetAddress"); + _IN("2.5.4.10", "organizationName"); + _IN("2.5.4.11", "organizationalUnitName"); + _IN("2.5.4.12", "title"); + _IN("2.5.4.13", "description"); + _IN("2.5.4.15", "businessCategory"); + _IN("2.5.4.17", "postalCode"); + _IN("2.5.4.42", "givenName"); + _IN("1.3.6.1.4.1.311.60.2.1.2", "jurisdictionOfIncorporationStateOrProvinceName"); + _IN("1.3.6.1.4.1.311.60.2.1.3", "jurisdictionOfIncorporationCountryName"); + _IN("2.16.840.1.113730.1.1", "nsCertType"); + _IN("2.16.840.1.113730.1.13", "nsComment"); + _I_("2.5.29.1", "authorityKeyIdentifier"); + _I_("2.5.29.2", "keyAttributes"); + _I_("2.5.29.3", "certificatePolicies"); + _I_("2.5.29.4", "keyUsageRestriction"); + _I_("2.5.29.5", "policyMapping"); + _I_("2.5.29.6", "subtreesConstraint"); + _I_("2.5.29.7", "subjectAltName"); + _I_("2.5.29.8", "issuerAltName"); + _I_("2.5.29.9", "subjectDirectoryAttributes"); + _I_("2.5.29.10", "basicConstraints"); + _I_("2.5.29.11", "nameConstraints"); + _I_("2.5.29.12", "policyConstraints"); + _I_("2.5.29.13", "basicConstraints"); + _IN("2.5.29.14", "subjectKeyIdentifier"); + _IN("2.5.29.15", "keyUsage"); + _I_("2.5.29.16", "privateKeyUsagePeriod"); + _IN("2.5.29.17", "subjectAltName"); + _IN("2.5.29.18", "issuerAltName"); + _IN("2.5.29.19", "basicConstraints"); + _I_("2.5.29.20", "cRLNumber"); + _I_("2.5.29.21", "cRLReason"); + _I_("2.5.29.22", "expirationDate"); + _I_("2.5.29.23", "instructionCode"); + _I_("2.5.29.24", "invalidityDate"); + _I_("2.5.29.25", "cRLDistributionPoints"); + _I_("2.5.29.26", "issuingDistributionPoint"); + _I_("2.5.29.27", "deltaCRLIndicator"); + _I_("2.5.29.28", "issuingDistributionPoint"); + _I_("2.5.29.29", "certificateIssuer"); + _I_("2.5.29.30", "nameConstraints"); + _IN("2.5.29.31", "cRLDistributionPoints"); + _IN("2.5.29.32", "certificatePolicies"); + _I_("2.5.29.33", "policyMappings"); + _I_("2.5.29.34", "policyConstraints"); + _IN("2.5.29.35", "authorityKeyIdentifier"); + _I_("2.5.29.36", "policyConstraints"); + _IN("2.5.29.37", "extKeyUsage"); + _I_("2.5.29.46", "freshestCRL"); + _I_("2.5.29.54", "inhibitAnyPolicy"); + _IN("1.3.6.1.4.1.11129.2.4.2", "timestampList"); + _IN("1.3.6.1.5.5.7.1.1", "authorityInfoAccess"); + _IN("1.3.6.1.5.5.7.3.1", "serverAuth"); + _IN("1.3.6.1.5.5.7.3.2", "clientAuth"); + _IN("1.3.6.1.5.5.7.3.3", "codeSigning"); + _IN("1.3.6.1.5.5.7.3.4", "emailProtection"); + _IN("1.3.6.1.5.5.7.3.8", "timeStamping"); + } +}); + +// node_modules/node-forge/lib/asn1.js +var require_asn1 = __commonJS({ + "node_modules/node-forge/lib/asn1.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + require_oids(); + var asn1 = module2.exports = forge3.asn1 = forge3.asn1 || {}; + asn1.Class = { + UNIVERSAL: 0, + APPLICATION: 64, + CONTEXT_SPECIFIC: 128, + PRIVATE: 192 + }; + asn1.Type = { + NONE: 0, + BOOLEAN: 1, + INTEGER: 2, + BITSTRING: 3, + OCTETSTRING: 4, + NULL: 5, + OID: 6, + ODESC: 7, + EXTERNAL: 8, + REAL: 9, + ENUMERATED: 10, + EMBEDDED: 11, + UTF8: 12, + ROID: 13, + SEQUENCE: 16, + SET: 17, + PRINTABLESTRING: 19, + IA5STRING: 22, + UTCTIME: 23, + GENERALIZEDTIME: 24, + BMPSTRING: 30 + }; + asn1.create = function(tagClass, type, constructed, value, options) { + if (forge3.util.isArray(value)) { + var tmp = []; + for (var i = 0; i < value.length; ++i) { + if (value[i] !== void 0) { + tmp.push(value[i]); + } + } + value = tmp; + } + var obj = { + tagClass, + type, + constructed, + composed: constructed || forge3.util.isArray(value), + value + }; + if (options && "bitStringContents" in options) { + obj.bitStringContents = options.bitStringContents; + obj.original = asn1.copy(obj); + } + return obj; + }; + asn1.copy = function(obj, options) { + var copy; + if (forge3.util.isArray(obj)) { + copy = []; + for (var i = 0; i < obj.length; ++i) { + copy.push(asn1.copy(obj[i], options)); + } + return copy; + } + if (typeof obj === "string") { + return obj; + } + copy = { + tagClass: obj.tagClass, + type: obj.type, + constructed: obj.constructed, + composed: obj.composed, + value: asn1.copy(obj.value, options) + }; + if (options && !options.excludeBitStringContents) { + copy.bitStringContents = obj.bitStringContents; + } + return copy; + }; + asn1.equals = function(obj1, obj2, options) { + if (forge3.util.isArray(obj1)) { + if (!forge3.util.isArray(obj2)) { + return false; + } + if (obj1.length !== obj2.length) { + return false; + } + for (var i = 0; i < obj1.length; ++i) { + if (!asn1.equals(obj1[i], obj2[i])) { + return false; + } + } + return true; + } + if (typeof obj1 !== typeof obj2) { + return false; + } + if (typeof obj1 === "string") { + return obj1 === obj2; + } + var equal = obj1.tagClass === obj2.tagClass && obj1.type === obj2.type && obj1.constructed === obj2.constructed && obj1.composed === obj2.composed && asn1.equals(obj1.value, obj2.value); + if (options && options.includeBitStringContents) { + equal = equal && obj1.bitStringContents === obj2.bitStringContents; + } + return equal; + }; + asn1.getBerValueLength = function(b) { + var b2 = b.getByte(); + if (b2 === 128) { + return void 0; + } + var length; + var longForm = b2 & 128; + if (!longForm) { + length = b2; + } else { + length = b.getInt((b2 & 127) << 3); + } + return length; + }; + function _checkBufferLength(bytes, remaining, n) { + if (n > remaining) { + var error = new Error("Too few bytes to parse DER."); + error.available = bytes.length(); + error.remaining = remaining; + error.requested = n; + throw error; + } + } + var _getValueLength = function(bytes, remaining) { + var b2 = bytes.getByte(); + remaining--; + if (b2 === 128) { + return void 0; + } + var length; + var longForm = b2 & 128; + if (!longForm) { + length = b2; + } else { + var longFormBytes = b2 & 127; + _checkBufferLength(bytes, remaining, longFormBytes); + length = bytes.getInt(longFormBytes << 3); + } + if (length < 0) { + throw new Error("Negative length: " + length); + } + return length; + }; + asn1.fromDer = function(bytes, options) { + if (options === void 0) { + options = { + strict: true, + parseAllBytes: true, + decodeBitStrings: true + }; + } + if (typeof options === "boolean") { + options = { + strict: options, + parseAllBytes: true, + decodeBitStrings: true + }; + } + if (!("strict" in options)) { + options.strict = true; + } + if (!("parseAllBytes" in options)) { + options.parseAllBytes = true; + } + if (!("decodeBitStrings" in options)) { + options.decodeBitStrings = true; + } + if (typeof bytes === "string") { + bytes = forge3.util.createBuffer(bytes); + } + var byteCount = bytes.length(); + var value = _fromDer(bytes, bytes.length(), 0, options); + if (options.parseAllBytes && bytes.length() !== 0) { + var error = new Error("Unparsed DER bytes remain after ASN.1 parsing."); + error.byteCount = byteCount; + error.remaining = bytes.length(); + throw error; + } + return value; + }; + function _fromDer(bytes, remaining, depth, options) { + var start; + _checkBufferLength(bytes, remaining, 2); + var b1 = bytes.getByte(); + remaining--; + var tagClass = b1 & 192; + var type = b1 & 31; + start = bytes.length(); + var length = _getValueLength(bytes, remaining); + remaining -= start - bytes.length(); + if (length !== void 0 && length > remaining) { + if (options.strict) { + var error = new Error("Too few bytes to read ASN.1 value."); + error.available = bytes.length(); + error.remaining = remaining; + error.requested = length; + throw error; + } + length = remaining; + } + var value; + var bitStringContents; + var constructed = (b1 & 32) === 32; + if (constructed) { + value = []; + if (length === void 0) { + for (; ; ) { + _checkBufferLength(bytes, remaining, 2); + if (bytes.bytes(2) === String.fromCharCode(0, 0)) { + bytes.getBytes(2); + remaining -= 2; + break; + } + start = bytes.length(); + value.push(_fromDer(bytes, remaining, depth + 1, options)); + remaining -= start - bytes.length(); + } + } else { + while (length > 0) { + start = bytes.length(); + value.push(_fromDer(bytes, length, depth + 1, options)); + remaining -= start - bytes.length(); + length -= start - bytes.length(); + } + } + } + if (value === void 0 && tagClass === asn1.Class.UNIVERSAL && type === asn1.Type.BITSTRING) { + bitStringContents = bytes.bytes(length); + } + if (value === void 0 && options.decodeBitStrings && tagClass === asn1.Class.UNIVERSAL && type === asn1.Type.BITSTRING && length > 1) { + var savedRead = bytes.read; + var savedRemaining = remaining; + var unused = 0; + if (type === asn1.Type.BITSTRING) { + _checkBufferLength(bytes, remaining, 1); + unused = bytes.getByte(); + remaining--; + } + if (unused === 0) { + try { + start = bytes.length(); + var subOptions = { + strict: true, + decodeBitStrings: true + }; + var composed = _fromDer(bytes, remaining, depth + 1, subOptions); + var used = start - bytes.length(); + remaining -= used; + if (type == asn1.Type.BITSTRING) { + used++; + } + var tc = composed.tagClass; + if (used === length && (tc === asn1.Class.UNIVERSAL || tc === asn1.Class.CONTEXT_SPECIFIC)) { + value = [composed]; + } + } catch (ex) { + } + } + if (value === void 0) { + bytes.read = savedRead; + remaining = savedRemaining; + } + } + if (value === void 0) { + if (length === void 0) { + if (options.strict) { + throw new Error("Non-constructed ASN.1 object of indefinite length."); + } + length = remaining; + } + if (type === asn1.Type.BMPSTRING) { + value = ""; + for (; length > 0; length -= 2) { + _checkBufferLength(bytes, remaining, 2); + value += String.fromCharCode(bytes.getInt16()); + remaining -= 2; + } + } else { + value = bytes.getBytes(length); + remaining -= length; + } + } + var asn1Options = bitStringContents === void 0 ? null : { + bitStringContents + }; + return asn1.create(tagClass, type, constructed, value, asn1Options); + } + asn1.toDer = function(obj) { + var bytes = forge3.util.createBuffer(); + var b1 = obj.tagClass | obj.type; + var value = forge3.util.createBuffer(); + var useBitStringContents = false; + if ("bitStringContents" in obj) { + useBitStringContents = true; + if (obj.original) { + useBitStringContents = asn1.equals(obj, obj.original); + } + } + if (useBitStringContents) { + value.putBytes(obj.bitStringContents); + } else if (obj.composed) { + if (obj.constructed) { + b1 |= 32; + } else { + value.putByte(0); + } + for (var i = 0; i < obj.value.length; ++i) { + if (obj.value[i] !== void 0) { + value.putBuffer(asn1.toDer(obj.value[i])); + } + } + } else { + if (obj.type === asn1.Type.BMPSTRING) { + for (var i = 0; i < obj.value.length; ++i) { + value.putInt16(obj.value.charCodeAt(i)); + } + } else { + if (obj.type === asn1.Type.INTEGER && obj.value.length > 1 && (obj.value.charCodeAt(0) === 0 && (obj.value.charCodeAt(1) & 128) === 0 || obj.value.charCodeAt(0) === 255 && (obj.value.charCodeAt(1) & 128) === 128)) { + value.putBytes(obj.value.substr(1)); + } else { + value.putBytes(obj.value); + } + } + } + bytes.putByte(b1); + if (value.length() <= 127) { + bytes.putByte(value.length() & 127); + } else { + var len = value.length(); + var lenBytes = ""; + do { + lenBytes += String.fromCharCode(len & 255); + len = len >>> 8; + } while (len > 0); + bytes.putByte(lenBytes.length | 128); + for (var i = lenBytes.length - 1; i >= 0; --i) { + bytes.putByte(lenBytes.charCodeAt(i)); + } + } + bytes.putBuffer(value); + return bytes; + }; + asn1.oidToDer = function(oid) { + var values = oid.split("."); + var bytes = forge3.util.createBuffer(); + bytes.putByte(40 * parseInt(values[0], 10) + parseInt(values[1], 10)); + var last, valueBytes, value, b; + for (var i = 2; i < values.length; ++i) { + last = true; + valueBytes = []; + value = parseInt(values[i], 10); + do { + b = value & 127; + value = value >>> 7; + if (!last) { + b |= 128; + } + valueBytes.push(b); + last = false; + } while (value > 0); + for (var n = valueBytes.length - 1; n >= 0; --n) { + bytes.putByte(valueBytes[n]); + } + } + return bytes; + }; + asn1.derToOid = function(bytes) { + var oid; + if (typeof bytes === "string") { + bytes = forge3.util.createBuffer(bytes); + } + var b = bytes.getByte(); + oid = Math.floor(b / 40) + "." + b % 40; + var value = 0; + while (bytes.length() > 0) { + b = bytes.getByte(); + value = value << 7; + if (b & 128) { + value += b & 127; + } else { + oid += "." + (value + b); + value = 0; + } + } + return oid; + }; + asn1.utcTimeToDate = function(utc) { + var date = new Date(); + var year = parseInt(utc.substr(0, 2), 10); + year = year >= 50 ? 1900 + year : 2e3 + year; + var MM = parseInt(utc.substr(2, 2), 10) - 1; + var DD = parseInt(utc.substr(4, 2), 10); + var hh = parseInt(utc.substr(6, 2), 10); + var mm = parseInt(utc.substr(8, 2), 10); + var ss = 0; + if (utc.length > 11) { + var c = utc.charAt(10); + var end = 10; + if (c !== "+" && c !== "-") { + ss = parseInt(utc.substr(10, 2), 10); + end += 2; + } + } + date.setUTCFullYear(year, MM, DD); + date.setUTCHours(hh, mm, ss, 0); + if (end) { + c = utc.charAt(end); + if (c === "+" || c === "-") { + var hhoffset = parseInt(utc.substr(end + 1, 2), 10); + var mmoffset = parseInt(utc.substr(end + 4, 2), 10); + var offset = hhoffset * 60 + mmoffset; + offset *= 6e4; + if (c === "+") { + date.setTime(+date - offset); + } else { + date.setTime(+date + offset); + } + } + } + return date; + }; + asn1.generalizedTimeToDate = function(gentime) { + var date = new Date(); + var YYYY = parseInt(gentime.substr(0, 4), 10); + var MM = parseInt(gentime.substr(4, 2), 10) - 1; + var DD = parseInt(gentime.substr(6, 2), 10); + var hh = parseInt(gentime.substr(8, 2), 10); + var mm = parseInt(gentime.substr(10, 2), 10); + var ss = parseInt(gentime.substr(12, 2), 10); + var fff = 0; + var offset = 0; + var isUTC = false; + if (gentime.charAt(gentime.length - 1) === "Z") { + isUTC = true; + } + var end = gentime.length - 5, c = gentime.charAt(end); + if (c === "+" || c === "-") { + var hhoffset = parseInt(gentime.substr(end + 1, 2), 10); + var mmoffset = parseInt(gentime.substr(end + 4, 2), 10); + offset = hhoffset * 60 + mmoffset; + offset *= 6e4; + if (c === "+") { + offset *= -1; + } + isUTC = true; + } + if (gentime.charAt(14) === ".") { + fff = parseFloat(gentime.substr(14), 10) * 1e3; + } + if (isUTC) { + date.setUTCFullYear(YYYY, MM, DD); + date.setUTCHours(hh, mm, ss, fff); + date.setTime(+date + offset); + } else { + date.setFullYear(YYYY, MM, DD); + date.setHours(hh, mm, ss, fff); + } + return date; + }; + asn1.dateToUtcTime = function(date) { + if (typeof date === "string") { + return date; + } + var rval = ""; + var format = []; + format.push(("" + date.getUTCFullYear()).substr(2)); + format.push("" + (date.getUTCMonth() + 1)); + format.push("" + date.getUTCDate()); + format.push("" + date.getUTCHours()); + format.push("" + date.getUTCMinutes()); + format.push("" + date.getUTCSeconds()); + for (var i = 0; i < format.length; ++i) { + if (format[i].length < 2) { + rval += "0"; + } + rval += format[i]; + } + rval += "Z"; + return rval; + }; + asn1.dateToGeneralizedTime = function(date) { + if (typeof date === "string") { + return date; + } + var rval = ""; + var format = []; + format.push("" + date.getUTCFullYear()); + format.push("" + (date.getUTCMonth() + 1)); + format.push("" + date.getUTCDate()); + format.push("" + date.getUTCHours()); + format.push("" + date.getUTCMinutes()); + format.push("" + date.getUTCSeconds()); + for (var i = 0; i < format.length; ++i) { + if (format[i].length < 2) { + rval += "0"; + } + rval += format[i]; + } + rval += "Z"; + return rval; + }; + asn1.integerToDer = function(x) { + var rval = forge3.util.createBuffer(); + if (x >= -128 && x < 128) { + return rval.putSignedInt(x, 8); + } + if (x >= -32768 && x < 32768) { + return rval.putSignedInt(x, 16); + } + if (x >= -8388608 && x < 8388608) { + return rval.putSignedInt(x, 24); + } + if (x >= -2147483648 && x < 2147483648) { + return rval.putSignedInt(x, 32); + } + var error = new Error("Integer too large; max is 32-bits."); + error.integer = x; + throw error; + }; + asn1.derToInteger = function(bytes) { + if (typeof bytes === "string") { + bytes = forge3.util.createBuffer(bytes); + } + var n = bytes.length() * 8; + if (n > 32) { + throw new Error("Integer too large; max is 32-bits."); + } + return bytes.getSignedInt(n); + }; + asn1.validate = function(obj, v, capture, errors) { + var rval = false; + if ((obj.tagClass === v.tagClass || typeof v.tagClass === "undefined") && (obj.type === v.type || typeof v.type === "undefined")) { + if (obj.constructed === v.constructed || typeof v.constructed === "undefined") { + rval = true; + if (v.value && forge3.util.isArray(v.value)) { + var j = 0; + for (var i = 0; rval && i < v.value.length; ++i) { + rval = v.value[i].optional || false; + if (obj.value[j]) { + rval = asn1.validate(obj.value[j], v.value[i], capture, errors); + if (rval) { + ++j; + } else if (v.value[i].optional) { + rval = true; + } + } + if (!rval && errors) { + errors.push("[" + v.name + '] Tag class "' + v.tagClass + '", type "' + v.type + '" expected value length "' + v.value.length + '", got "' + obj.value.length + '"'); + } + } + } + if (rval && capture) { + if (v.capture) { + capture[v.capture] = obj.value; + } + if (v.captureAsn1) { + capture[v.captureAsn1] = obj; + } + if (v.captureBitStringContents && "bitStringContents" in obj) { + capture[v.captureBitStringContents] = obj.bitStringContents; + } + if (v.captureBitStringValue && "bitStringContents" in obj) { + var value; + if (obj.bitStringContents.length < 2) { + capture[v.captureBitStringValue] = ""; + } else { + var unused = obj.bitStringContents.charCodeAt(0); + if (unused !== 0) { + throw new Error("captureBitStringValue only supported for zero unused bits"); + } + capture[v.captureBitStringValue] = obj.bitStringContents.slice(1); + } + } + } + } else if (errors) { + errors.push("[" + v.name + '] Expected constructed "' + v.constructed + '", got "' + obj.constructed + '"'); + } + } else if (errors) { + if (obj.tagClass !== v.tagClass) { + errors.push("[" + v.name + '] Expected tag class "' + v.tagClass + '", got "' + obj.tagClass + '"'); + } + if (obj.type !== v.type) { + errors.push("[" + v.name + '] Expected type "' + v.type + '", got "' + obj.type + '"'); + } + } + return rval; + }; + var _nonLatinRegex = /[^\\u0000-\\u00ff]/; + asn1.prettyPrint = function(obj, level, indentation) { + var rval = ""; + level = level || 0; + indentation = indentation || 2; + if (level > 0) { + rval += "\n"; + } + var indent = ""; + for (var i = 0; i < level * indentation; ++i) { + indent += " "; + } + rval += indent + "Tag: "; + switch (obj.tagClass) { + case asn1.Class.UNIVERSAL: + rval += "Universal:"; + break; + case asn1.Class.APPLICATION: + rval += "Application:"; + break; + case asn1.Class.CONTEXT_SPECIFIC: + rval += "Context-Specific:"; + break; + case asn1.Class.PRIVATE: + rval += "Private:"; + break; + } + if (obj.tagClass === asn1.Class.UNIVERSAL) { + rval += obj.type; + switch (obj.type) { + case asn1.Type.NONE: + rval += " (None)"; + break; + case asn1.Type.BOOLEAN: + rval += " (Boolean)"; + break; + case asn1.Type.INTEGER: + rval += " (Integer)"; + break; + case asn1.Type.BITSTRING: + rval += " (Bit string)"; + break; + case asn1.Type.OCTETSTRING: + rval += " (Octet string)"; + break; + case asn1.Type.NULL: + rval += " (Null)"; + break; + case asn1.Type.OID: + rval += " (Object Identifier)"; + break; + case asn1.Type.ODESC: + rval += " (Object Descriptor)"; + break; + case asn1.Type.EXTERNAL: + rval += " (External or Instance of)"; + break; + case asn1.Type.REAL: + rval += " (Real)"; + break; + case asn1.Type.ENUMERATED: + rval += " (Enumerated)"; + break; + case asn1.Type.EMBEDDED: + rval += " (Embedded PDV)"; + break; + case asn1.Type.UTF8: + rval += " (UTF8)"; + break; + case asn1.Type.ROID: + rval += " (Relative Object Identifier)"; + break; + case asn1.Type.SEQUENCE: + rval += " (Sequence)"; + break; + case asn1.Type.SET: + rval += " (Set)"; + break; + case asn1.Type.PRINTABLESTRING: + rval += " (Printable String)"; + break; + case asn1.Type.IA5String: + rval += " (IA5String (ASCII))"; + break; + case asn1.Type.UTCTIME: + rval += " (UTC time)"; + break; + case asn1.Type.GENERALIZEDTIME: + rval += " (Generalized time)"; + break; + case asn1.Type.BMPSTRING: + rval += " (BMP String)"; + break; + } + } else { + rval += obj.type; + } + rval += "\n"; + rval += indent + "Constructed: " + obj.constructed + "\n"; + if (obj.composed) { + var subvalues = 0; + var sub = ""; + for (var i = 0; i < obj.value.length; ++i) { + if (obj.value[i] !== void 0) { + subvalues += 1; + sub += asn1.prettyPrint(obj.value[i], level + 1, indentation); + if (i + 1 < obj.value.length) { + sub += ","; + } + } + } + rval += indent + "Sub values: " + subvalues + sub; + } else { + rval += indent + "Value: "; + if (obj.type === asn1.Type.OID) { + var oid = asn1.derToOid(obj.value); + rval += oid; + if (forge3.pki && forge3.pki.oids) { + if (oid in forge3.pki.oids) { + rval += " (" + forge3.pki.oids[oid] + ") "; + } + } + } + if (obj.type === asn1.Type.INTEGER) { + try { + rval += asn1.derToInteger(obj.value); + } catch (ex) { + rval += "0x" + forge3.util.bytesToHex(obj.value); + } + } else if (obj.type === asn1.Type.BITSTRING) { + if (obj.value.length > 1) { + rval += "0x" + forge3.util.bytesToHex(obj.value.slice(1)); + } else { + rval += "(none)"; + } + if (obj.value.length > 0) { + var unused = obj.value.charCodeAt(0); + if (unused == 1) { + rval += " (1 unused bit shown)"; + } else if (unused > 1) { + rval += " (" + unused + " unused bits shown)"; + } + } + } else if (obj.type === asn1.Type.OCTETSTRING) { + if (!_nonLatinRegex.test(obj.value)) { + rval += "(" + obj.value + ") "; + } + rval += "0x" + forge3.util.bytesToHex(obj.value); + } else if (obj.type === asn1.Type.UTF8) { + try { + rval += forge3.util.decodeUtf8(obj.value); + } catch (e) { + if (e.message === "URI malformed") { + rval += "0x" + forge3.util.bytesToHex(obj.value) + " (malformed UTF8)"; + } else { + throw e; + } + } + } else if (obj.type === asn1.Type.PRINTABLESTRING || obj.type === asn1.Type.IA5String) { + rval += obj.value; + } else if (_nonLatinRegex.test(obj.value)) { + rval += "0x" + forge3.util.bytesToHex(obj.value); + } else if (obj.value.length === 0) { + rval += "[null]"; + } else { + rval += obj.value; + } + } + return rval; + }; + } +}); + +// node_modules/node-forge/lib/md.js +var require_md = __commonJS({ + "node_modules/node-forge/lib/md.js"(exports, module2) { + var forge3 = require_forge(); + module2.exports = forge3.md = forge3.md || {}; + forge3.md.algorithms = forge3.md.algorithms || {}; + } +}); + +// node_modules/node-forge/lib/hmac.js +var require_hmac = __commonJS({ + "node_modules/node-forge/lib/hmac.js"(exports, module2) { + var forge3 = require_forge(); + require_md(); + require_util(); + var hmac = module2.exports = forge3.hmac = forge3.hmac || {}; + hmac.create = function() { + var _key = null; + var _md = null; + var _ipadding = null; + var _opadding = null; + var ctx = {}; + ctx.start = function(md, key) { + if (md !== null) { + if (typeof md === "string") { + md = md.toLowerCase(); + if (md in forge3.md.algorithms) { + _md = forge3.md.algorithms[md].create(); + } else { + throw new Error('Unknown hash algorithm "' + md + '"'); + } + } else { + _md = md; + } + } + if (key === null) { + key = _key; + } else { + if (typeof key === "string") { + key = forge3.util.createBuffer(key); + } else if (forge3.util.isArray(key)) { + var tmp = key; + key = forge3.util.createBuffer(); + for (var i = 0; i < tmp.length; ++i) { + key.putByte(tmp[i]); + } + } + var keylen = key.length(); + if (keylen > _md.blockLength) { + _md.start(); + _md.update(key.bytes()); + key = _md.digest(); + } + _ipadding = forge3.util.createBuffer(); + _opadding = forge3.util.createBuffer(); + keylen = key.length(); + for (var i = 0; i < keylen; ++i) { + var tmp = key.at(i); + _ipadding.putByte(54 ^ tmp); + _opadding.putByte(92 ^ tmp); + } + if (keylen < _md.blockLength) { + var tmp = _md.blockLength - keylen; + for (var i = 0; i < tmp; ++i) { + _ipadding.putByte(54); + _opadding.putByte(92); + } + } + _key = key; + _ipadding = _ipadding.bytes(); + _opadding = _opadding.bytes(); + } + _md.start(); + _md.update(_ipadding); + }; + ctx.update = function(bytes) { + _md.update(bytes); + }; + ctx.getMac = function() { + var inner = _md.digest().bytes(); + _md.start(); + _md.update(_opadding); + _md.update(inner); + return _md.digest(); + }; + ctx.digest = ctx.getMac; + return ctx; + }; + } +}); + +// node_modules/node-forge/lib/md5.js +var require_md5 = __commonJS({ + "node_modules/node-forge/lib/md5.js"(exports, module2) { + var forge3 = require_forge(); + require_md(); + require_util(); + var md5 = module2.exports = forge3.md5 = forge3.md5 || {}; + forge3.md.md5 = forge3.md.algorithms.md5 = md5; + md5.create = function() { + if (!_initialized) { + _init(); + } + var _state = null; + var _input = forge3.util.createBuffer(); + var _w = new Array(16); + var md = { + algorithm: "md5", + blockLength: 64, + digestLength: 16, + messageLength: 0, + fullMessageLength: null, + messageLengthSize: 8 + }; + md.start = function() { + md.messageLength = 0; + md.fullMessageLength = md.messageLength64 = []; + var int32s = md.messageLengthSize / 4; + for (var i = 0; i < int32s; ++i) { + md.fullMessageLength.push(0); + } + _input = forge3.util.createBuffer(); + _state = { + h0: 1732584193, + h1: 4023233417, + h2: 2562383102, + h3: 271733878 + }; + return md; + }; + md.start(); + md.update = function(msg, encoding) { + if (encoding === "utf8") { + msg = forge3.util.encodeUtf8(msg); + } + var len = msg.length; + md.messageLength += len; + len = [len / 4294967296 >>> 0, len >>> 0]; + for (var i = md.fullMessageLength.length - 1; i >= 0; --i) { + md.fullMessageLength[i] += len[1]; + len[1] = len[0] + (md.fullMessageLength[i] / 4294967296 >>> 0); + md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0; + len[0] = len[1] / 4294967296 >>> 0; + } + _input.putBytes(msg); + _update(_state, _w, _input); + if (_input.read > 2048 || _input.length() === 0) { + _input.compact(); + } + return md; + }; + md.digest = function() { + var finalBlock = forge3.util.createBuffer(); + finalBlock.putBytes(_input.bytes()); + var remaining = md.fullMessageLength[md.fullMessageLength.length - 1] + md.messageLengthSize; + var overflow = remaining & md.blockLength - 1; + finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow)); + var bits, carry = 0; + for (var i = md.fullMessageLength.length - 1; i >= 0; --i) { + bits = md.fullMessageLength[i] * 8 + carry; + carry = bits / 4294967296 >>> 0; + finalBlock.putInt32Le(bits >>> 0); + } + var s2 = { + h0: _state.h0, + h1: _state.h1, + h2: _state.h2, + h3: _state.h3 + }; + _update(s2, _w, finalBlock); + var rval = forge3.util.createBuffer(); + rval.putInt32Le(s2.h0); + rval.putInt32Le(s2.h1); + rval.putInt32Le(s2.h2); + rval.putInt32Le(s2.h3); + return rval; + }; + return md; + }; + var _padding = null; + var _g = null; + var _r = null; + var _k = null; + var _initialized = false; + function _init() { + _padding = String.fromCharCode(128); + _padding += forge3.util.fillString(String.fromCharCode(0), 64); + _g = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 1, + 6, + 11, + 0, + 5, + 10, + 15, + 4, + 9, + 14, + 3, + 8, + 13, + 2, + 7, + 12, + 5, + 8, + 11, + 14, + 1, + 4, + 7, + 10, + 13, + 0, + 3, + 6, + 9, + 12, + 15, + 2, + 0, + 7, + 14, + 5, + 12, + 3, + 10, + 1, + 8, + 15, + 6, + 13, + 4, + 11, + 2, + 9 + ]; + _r = [ + 7, + 12, + 17, + 22, + 7, + 12, + 17, + 22, + 7, + 12, + 17, + 22, + 7, + 12, + 17, + 22, + 5, + 9, + 14, + 20, + 5, + 9, + 14, + 20, + 5, + 9, + 14, + 20, + 5, + 9, + 14, + 20, + 4, + 11, + 16, + 23, + 4, + 11, + 16, + 23, + 4, + 11, + 16, + 23, + 4, + 11, + 16, + 23, + 6, + 10, + 15, + 21, + 6, + 10, + 15, + 21, + 6, + 10, + 15, + 21, + 6, + 10, + 15, + 21 + ]; + _k = new Array(64); + for (var i = 0; i < 64; ++i) { + _k[i] = Math.floor(Math.abs(Math.sin(i + 1)) * 4294967296); + } + _initialized = true; + } + function _update(s, w, bytes) { + var t, a, b, c, d, f, r, i; + var len = bytes.length(); + while (len >= 64) { + a = s.h0; + b = s.h1; + c = s.h2; + d = s.h3; + for (i = 0; i < 16; ++i) { + w[i] = bytes.getInt32Le(); + f = d ^ b & (c ^ d); + t = a + f + _k[i] + w[i]; + r = _r[i]; + a = d; + d = c; + c = b; + b += t << r | t >>> 32 - r; + } + for (; i < 32; ++i) { + f = c ^ d & (b ^ c); + t = a + f + _k[i] + w[_g[i]]; + r = _r[i]; + a = d; + d = c; + c = b; + b += t << r | t >>> 32 - r; + } + for (; i < 48; ++i) { + f = b ^ c ^ d; + t = a + f + _k[i] + w[_g[i]]; + r = _r[i]; + a = d; + d = c; + c = b; + b += t << r | t >>> 32 - r; + } + for (; i < 64; ++i) { + f = c ^ (b | ~d); + t = a + f + _k[i] + w[_g[i]]; + r = _r[i]; + a = d; + d = c; + c = b; + b += t << r | t >>> 32 - r; + } + s.h0 = s.h0 + a | 0; + s.h1 = s.h1 + b | 0; + s.h2 = s.h2 + c | 0; + s.h3 = s.h3 + d | 0; + len -= 64; + } + } + } +}); + +// node_modules/node-forge/lib/pem.js +var require_pem = __commonJS({ + "node_modules/node-forge/lib/pem.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + var pem = module2.exports = forge3.pem = forge3.pem || {}; + pem.encode = function(msg, options) { + options = options || {}; + var rval = "-----BEGIN " + msg.type + "-----\r\n"; + var header; + if (msg.procType) { + header = { + name: "Proc-Type", + values: [String(msg.procType.version), msg.procType.type] + }; + rval += foldHeader(header); + } + if (msg.contentDomain) { + header = { name: "Content-Domain", values: [msg.contentDomain] }; + rval += foldHeader(header); + } + if (msg.dekInfo) { + header = { name: "DEK-Info", values: [msg.dekInfo.algorithm] }; + if (msg.dekInfo.parameters) { + header.values.push(msg.dekInfo.parameters); + } + rval += foldHeader(header); + } + if (msg.headers) { + for (var i = 0; i < msg.headers.length; ++i) { + rval += foldHeader(msg.headers[i]); + } + } + if (msg.procType) { + rval += "\r\n"; + } + rval += forge3.util.encode64(msg.body, options.maxline || 64) + "\r\n"; + rval += "-----END " + msg.type + "-----\r\n"; + return rval; + }; + pem.decode = function(str) { + var rval = []; + var rMessage = /\s*-----BEGIN ([A-Z0-9- ]+)-----\r?\n?([\x21-\x7e\s]+?(?:\r?\n\r?\n))?([:A-Za-z0-9+\/=\s]+?)-----END \1-----/g; + var rHeader = /([\x21-\x7e]+):\s*([\x21-\x7e\s^:]+)/; + var rCRLF = /\r?\n/; + var match; + while (true) { + match = rMessage.exec(str); + if (!match) { + break; + } + var type = match[1]; + if (type === "NEW CERTIFICATE REQUEST") { + type = "CERTIFICATE REQUEST"; + } + var msg = { + type, + procType: null, + contentDomain: null, + dekInfo: null, + headers: [], + body: forge3.util.decode64(match[3]) + }; + rval.push(msg); + if (!match[2]) { + continue; + } + var lines = match[2].split(rCRLF); + var li = 0; + while (match && li < lines.length) { + var line = lines[li].replace(/\s+$/, ""); + for (var nl = li + 1; nl < lines.length; ++nl) { + var next = lines[nl]; + if (!/\s/.test(next[0])) { + break; + } + line += next; + li = nl; + } + match = line.match(rHeader); + if (match) { + var header = { name: match[1], values: [] }; + var values = match[2].split(","); + for (var vi = 0; vi < values.length; ++vi) { + header.values.push(ltrim(values[vi])); + } + if (!msg.procType) { + if (header.name !== "Proc-Type") { + throw new Error('Invalid PEM formatted message. The first encapsulated header must be "Proc-Type".'); + } else if (header.values.length !== 2) { + throw new Error('Invalid PEM formatted message. The "Proc-Type" header must have two subfields.'); + } + msg.procType = { version: values[0], type: values[1] }; + } else if (!msg.contentDomain && header.name === "Content-Domain") { + msg.contentDomain = values[0] || ""; + } else if (!msg.dekInfo && header.name === "DEK-Info") { + if (header.values.length === 0) { + throw new Error('Invalid PEM formatted message. The "DEK-Info" header must have at least one subfield.'); + } + msg.dekInfo = { algorithm: values[0], parameters: values[1] || null }; + } else { + msg.headers.push(header); + } + } + ++li; + } + if (msg.procType === "ENCRYPTED" && !msg.dekInfo) { + throw new Error('Invalid PEM formatted message. The "DEK-Info" header must be present if "Proc-Type" is "ENCRYPTED".'); + } + } + if (rval.length === 0) { + throw new Error("Invalid PEM formatted message."); + } + return rval; + }; + function foldHeader(header) { + var rval = header.name + ": "; + var values = []; + var insertSpace = function(match, $1) { + return " " + $1; + }; + for (var i = 0; i < header.values.length; ++i) { + values.push(header.values[i].replace(/^(\S+\r\n)/, insertSpace)); + } + rval += values.join(",") + "\r\n"; + var length = 0; + var candidate = -1; + for (var i = 0; i < rval.length; ++i, ++length) { + if (length > 65 && candidate !== -1) { + var insert = rval[candidate]; + if (insert === ",") { + ++candidate; + rval = rval.substr(0, candidate) + "\r\n " + rval.substr(candidate); + } else { + rval = rval.substr(0, candidate) + "\r\n" + insert + rval.substr(candidate + 1); + } + length = i - candidate - 1; + candidate = -1; + ++i; + } else if (rval[i] === " " || rval[i] === " " || rval[i] === ",") { + candidate = i; + } + } + return rval; + } + function ltrim(str) { + return str.replace(/^\s+/, ""); + } + } +}); + +// node_modules/node-forge/lib/des.js +var require_des = __commonJS({ + "node_modules/node-forge/lib/des.js"(exports, module2) { + var forge3 = require_forge(); + require_cipher(); + require_cipherModes(); + require_util(); + module2.exports = forge3.des = forge3.des || {}; + forge3.des.startEncrypting = function(key, iv, output, mode) { + var cipher = _createCipher({ + key, + output, + decrypt: false, + mode: mode || (iv === null ? "ECB" : "CBC") + }); + cipher.start(iv); + return cipher; + }; + forge3.des.createEncryptionCipher = function(key, mode) { + return _createCipher({ + key, + output: null, + decrypt: false, + mode + }); + }; + forge3.des.startDecrypting = function(key, iv, output, mode) { + var cipher = _createCipher({ + key, + output, + decrypt: true, + mode: mode || (iv === null ? "ECB" : "CBC") + }); + cipher.start(iv); + return cipher; + }; + forge3.des.createDecryptionCipher = function(key, mode) { + return _createCipher({ + key, + output: null, + decrypt: true, + mode + }); + }; + forge3.des.Algorithm = function(name, mode) { + var self2 = this; + self2.name = name; + self2.mode = new mode({ + blockSize: 8, + cipher: { + encrypt: function(inBlock, outBlock) { + return _updateBlock(self2._keys, inBlock, outBlock, false); + }, + decrypt: function(inBlock, outBlock) { + return _updateBlock(self2._keys, inBlock, outBlock, true); + } + } + }); + self2._init = false; + }; + forge3.des.Algorithm.prototype.initialize = function(options) { + if (this._init) { + return; + } + var key = forge3.util.createBuffer(options.key); + if (this.name.indexOf("3DES") === 0) { + if (key.length() !== 24) { + throw new Error("Invalid Triple-DES key size: " + key.length() * 8); + } + } + this._keys = _createKeys(key); + this._init = true; + }; + registerAlgorithm("DES-ECB", forge3.cipher.modes.ecb); + registerAlgorithm("DES-CBC", forge3.cipher.modes.cbc); + registerAlgorithm("DES-CFB", forge3.cipher.modes.cfb); + registerAlgorithm("DES-OFB", forge3.cipher.modes.ofb); + registerAlgorithm("DES-CTR", forge3.cipher.modes.ctr); + registerAlgorithm("3DES-ECB", forge3.cipher.modes.ecb); + registerAlgorithm("3DES-CBC", forge3.cipher.modes.cbc); + registerAlgorithm("3DES-CFB", forge3.cipher.modes.cfb); + registerAlgorithm("3DES-OFB", forge3.cipher.modes.ofb); + registerAlgorithm("3DES-CTR", forge3.cipher.modes.ctr); + function registerAlgorithm(name, mode) { + var factory = function() { + return new forge3.des.Algorithm(name, mode); + }; + forge3.cipher.registerAlgorithm(name, factory); + } + var spfunction1 = [16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756]; + var spfunction2 = [-2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344]; + var spfunction3 = [520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584]; + var spfunction4 = [8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928]; + var spfunction5 = [256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080]; + var spfunction6 = [536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312]; + var spfunction7 = [2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154]; + var spfunction8 = [268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696]; + function _createKeys(key) { + var pc2bytes0 = [0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964], pc2bytes1 = [0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697], pc2bytes2 = [0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272], pc2bytes3 = [0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144], pc2bytes4 = [0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256], pc2bytes5 = [0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488], pc2bytes6 = [0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746], pc2bytes7 = [0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568], pc2bytes8 = [0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578], pc2bytes9 = [0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488], pc2bytes10 = [0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800], pc2bytes11 = [0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744], pc2bytes12 = [0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128], pc2bytes13 = [0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261]; + var iterations = key.length() > 8 ? 3 : 1; + var keys = []; + var shifts = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0]; + var n = 0, tmp; + for (var j = 0; j < iterations; j++) { + var left = key.getInt32(); + var right = key.getInt32(); + tmp = (left >>> 4 ^ right) & 252645135; + right ^= tmp; + left ^= tmp << 4; + tmp = (right >>> -16 ^ left) & 65535; + left ^= tmp; + right ^= tmp << -16; + tmp = (left >>> 2 ^ right) & 858993459; + right ^= tmp; + left ^= tmp << 2; + tmp = (right >>> -16 ^ left) & 65535; + left ^= tmp; + right ^= tmp << -16; + tmp = (left >>> 1 ^ right) & 1431655765; + right ^= tmp; + left ^= tmp << 1; + tmp = (right >>> 8 ^ left) & 16711935; + left ^= tmp; + right ^= tmp << 8; + tmp = (left >>> 1 ^ right) & 1431655765; + right ^= tmp; + left ^= tmp << 1; + tmp = left << 8 | right >>> 20 & 240; + left = right << 24 | right << 8 & 16711680 | right >>> 8 & 65280 | right >>> 24 & 240; + right = tmp; + for (var i = 0; i < shifts.length; ++i) { + if (shifts[i]) { + left = left << 2 | left >>> 26; + right = right << 2 | right >>> 26; + } else { + left = left << 1 | left >>> 27; + right = right << 1 | right >>> 27; + } + left &= -15; + right &= -15; + var lefttmp = pc2bytes0[left >>> 28] | pc2bytes1[left >>> 24 & 15] | pc2bytes2[left >>> 20 & 15] | pc2bytes3[left >>> 16 & 15] | pc2bytes4[left >>> 12 & 15] | pc2bytes5[left >>> 8 & 15] | pc2bytes6[left >>> 4 & 15]; + var righttmp = pc2bytes7[right >>> 28] | pc2bytes8[right >>> 24 & 15] | pc2bytes9[right >>> 20 & 15] | pc2bytes10[right >>> 16 & 15] | pc2bytes11[right >>> 12 & 15] | pc2bytes12[right >>> 8 & 15] | pc2bytes13[right >>> 4 & 15]; + tmp = (righttmp >>> 16 ^ lefttmp) & 65535; + keys[n++] = lefttmp ^ tmp; + keys[n++] = righttmp ^ tmp << 16; + } + } + return keys; + } + function _updateBlock(keys, input, output, decrypt) { + var iterations = keys.length === 32 ? 3 : 9; + var looping; + if (iterations === 3) { + looping = decrypt ? [30, -2, -2] : [0, 32, 2]; + } else { + looping = decrypt ? [94, 62, -2, 32, 64, 2, 30, -2, -2] : [0, 32, 2, 62, 30, -2, 64, 96, 2]; + } + var tmp; + var left = input[0]; + var right = input[1]; + tmp = (left >>> 4 ^ right) & 252645135; + right ^= tmp; + left ^= tmp << 4; + tmp = (left >>> 16 ^ right) & 65535; + right ^= tmp; + left ^= tmp << 16; + tmp = (right >>> 2 ^ left) & 858993459; + left ^= tmp; + right ^= tmp << 2; + tmp = (right >>> 8 ^ left) & 16711935; + left ^= tmp; + right ^= tmp << 8; + tmp = (left >>> 1 ^ right) & 1431655765; + right ^= tmp; + left ^= tmp << 1; + left = left << 1 | left >>> 31; + right = right << 1 | right >>> 31; + for (var j = 0; j < iterations; j += 3) { + var endloop = looping[j + 1]; + var loopinc = looping[j + 2]; + for (var i = looping[j]; i != endloop; i += loopinc) { + var right1 = right ^ keys[i]; + var right2 = (right >>> 4 | right << 28) ^ keys[i + 1]; + tmp = left; + left = right; + right = tmp ^ (spfunction2[right1 >>> 24 & 63] | spfunction4[right1 >>> 16 & 63] | spfunction6[right1 >>> 8 & 63] | spfunction8[right1 & 63] | spfunction1[right2 >>> 24 & 63] | spfunction3[right2 >>> 16 & 63] | spfunction5[right2 >>> 8 & 63] | spfunction7[right2 & 63]); + } + tmp = left; + left = right; + right = tmp; + } + left = left >>> 1 | left << 31; + right = right >>> 1 | right << 31; + tmp = (left >>> 1 ^ right) & 1431655765; + right ^= tmp; + left ^= tmp << 1; + tmp = (right >>> 8 ^ left) & 16711935; + left ^= tmp; + right ^= tmp << 8; + tmp = (right >>> 2 ^ left) & 858993459; + left ^= tmp; + right ^= tmp << 2; + tmp = (left >>> 16 ^ right) & 65535; + right ^= tmp; + left ^= tmp << 16; + tmp = (left >>> 4 ^ right) & 252645135; + right ^= tmp; + left ^= tmp << 4; + output[0] = left; + output[1] = right; + } + function _createCipher(options) { + options = options || {}; + var mode = (options.mode || "CBC").toUpperCase(); + var algorithm = "DES-" + mode; + var cipher; + if (options.decrypt) { + cipher = forge3.cipher.createDecipher(algorithm, options.key); + } else { + cipher = forge3.cipher.createCipher(algorithm, options.key); + } + var start = cipher.start; + cipher.start = function(iv, options2) { + var output = null; + if (options2 instanceof forge3.util.ByteBuffer) { + output = options2; + options2 = {}; + } + options2 = options2 || {}; + options2.output = output; + options2.iv = iv; + start.call(cipher, options2); + }; + return cipher; + } + } +}); + +// node_modules/node-forge/lib/pbkdf2.js +var require_pbkdf2 = __commonJS({ + "node_modules/node-forge/lib/pbkdf2.js"(exports, module2) { + var forge3 = require_forge(); + require_hmac(); + require_md(); + require_util(); + var pkcs5 = forge3.pkcs5 = forge3.pkcs5 || {}; + var crypto; + if (forge3.util.isNodejs && !forge3.options.usePureJavaScript) { + crypto = require("crypto"); + } + module2.exports = forge3.pbkdf2 = pkcs5.pbkdf2 = function(p, s, c, dkLen, md, callback) { + if (typeof md === "function") { + callback = md; + md = null; + } + if (forge3.util.isNodejs && !forge3.options.usePureJavaScript && crypto.pbkdf2 && (md === null || typeof md !== "object") && (crypto.pbkdf2Sync.length > 4 || (!md || md === "sha1"))) { + if (typeof md !== "string") { + md = "sha1"; + } + p = Buffer.from(p, "binary"); + s = Buffer.from(s, "binary"); + if (!callback) { + if (crypto.pbkdf2Sync.length === 4) { + return crypto.pbkdf2Sync(p, s, c, dkLen).toString("binary"); + } + return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString("binary"); + } + if (crypto.pbkdf2Sync.length === 4) { + return crypto.pbkdf2(p, s, c, dkLen, function(err2, key) { + if (err2) { + return callback(err2); + } + callback(null, key.toString("binary")); + }); + } + return crypto.pbkdf2(p, s, c, dkLen, md, function(err2, key) { + if (err2) { + return callback(err2); + } + callback(null, key.toString("binary")); + }); + } + if (typeof md === "undefined" || md === null) { + md = "sha1"; + } + if (typeof md === "string") { + if (!(md in forge3.md.algorithms)) { + throw new Error("Unknown hash algorithm: " + md); + } + md = forge3.md[md].create(); + } + var hLen = md.digestLength; + if (dkLen > 4294967295 * hLen) { + var err = new Error("Derived key is too long."); + if (callback) { + return callback(err); + } + throw err; + } + var len = Math.ceil(dkLen / hLen); + var r = dkLen - (len - 1) * hLen; + var prf = forge3.hmac.create(); + prf.start(md, p); + var dk = ""; + var xor, u_c, u_c1; + if (!callback) { + for (var i = 1; i <= len; ++i) { + prf.start(null, null); + prf.update(s); + prf.update(forge3.util.int32ToBytes(i)); + xor = u_c1 = prf.digest().getBytes(); + for (var j = 2; j <= c; ++j) { + prf.start(null, null); + prf.update(u_c1); + u_c = prf.digest().getBytes(); + xor = forge3.util.xorBytes(xor, u_c, hLen); + u_c1 = u_c; + } + dk += i < len ? xor : xor.substr(0, r); + } + return dk; + } + var i = 1, j; + function outer() { + if (i > len) { + return callback(null, dk); + } + prf.start(null, null); + prf.update(s); + prf.update(forge3.util.int32ToBytes(i)); + xor = u_c1 = prf.digest().getBytes(); + j = 2; + inner(); + } + function inner() { + if (j <= c) { + prf.start(null, null); + prf.update(u_c1); + u_c = prf.digest().getBytes(); + xor = forge3.util.xorBytes(xor, u_c, hLen); + u_c1 = u_c; + ++j; + return forge3.util.setImmediate(inner); + } + dk += i < len ? xor : xor.substr(0, r); + ++i; + outer(); + } + outer(); + }; + } +}); + +// node_modules/node-forge/lib/sha256.js +var require_sha256 = __commonJS({ + "node_modules/node-forge/lib/sha256.js"(exports, module2) { + var forge3 = require_forge(); + require_md(); + require_util(); + var sha256 = module2.exports = forge3.sha256 = forge3.sha256 || {}; + forge3.md.sha256 = forge3.md.algorithms.sha256 = sha256; + sha256.create = function() { + if (!_initialized) { + _init(); + } + var _state = null; + var _input = forge3.util.createBuffer(); + var _w = new Array(64); + var md = { + algorithm: "sha256", + blockLength: 64, + digestLength: 32, + messageLength: 0, + fullMessageLength: null, + messageLengthSize: 8 + }; + md.start = function() { + md.messageLength = 0; + md.fullMessageLength = md.messageLength64 = []; + var int32s = md.messageLengthSize / 4; + for (var i = 0; i < int32s; ++i) { + md.fullMessageLength.push(0); + } + _input = forge3.util.createBuffer(); + _state = { + h0: 1779033703, + h1: 3144134277, + h2: 1013904242, + h3: 2773480762, + h4: 1359893119, + h5: 2600822924, + h6: 528734635, + h7: 1541459225 + }; + return md; + }; + md.start(); + md.update = function(msg, encoding) { + if (encoding === "utf8") { + msg = forge3.util.encodeUtf8(msg); + } + var len = msg.length; + md.messageLength += len; + len = [len / 4294967296 >>> 0, len >>> 0]; + for (var i = md.fullMessageLength.length - 1; i >= 0; --i) { + md.fullMessageLength[i] += len[1]; + len[1] = len[0] + (md.fullMessageLength[i] / 4294967296 >>> 0); + md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0; + len[0] = len[1] / 4294967296 >>> 0; + } + _input.putBytes(msg); + _update(_state, _w, _input); + if (_input.read > 2048 || _input.length() === 0) { + _input.compact(); + } + return md; + }; + md.digest = function() { + var finalBlock = forge3.util.createBuffer(); + finalBlock.putBytes(_input.bytes()); + var remaining = md.fullMessageLength[md.fullMessageLength.length - 1] + md.messageLengthSize; + var overflow = remaining & md.blockLength - 1; + finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow)); + var next, carry; + var bits = md.fullMessageLength[0] * 8; + for (var i = 0; i < md.fullMessageLength.length - 1; ++i) { + next = md.fullMessageLength[i + 1] * 8; + carry = next / 4294967296 >>> 0; + bits += carry; + finalBlock.putInt32(bits >>> 0); + bits = next >>> 0; + } + finalBlock.putInt32(bits); + var s2 = { + h0: _state.h0, + h1: _state.h1, + h2: _state.h2, + h3: _state.h3, + h4: _state.h4, + h5: _state.h5, + h6: _state.h6, + h7: _state.h7 + }; + _update(s2, _w, finalBlock); + var rval = forge3.util.createBuffer(); + rval.putInt32(s2.h0); + rval.putInt32(s2.h1); + rval.putInt32(s2.h2); + rval.putInt32(s2.h3); + rval.putInt32(s2.h4); + rval.putInt32(s2.h5); + rval.putInt32(s2.h6); + rval.putInt32(s2.h7); + return rval; + }; + return md; + }; + var _padding = null; + var _initialized = false; + var _k = null; + function _init() { + _padding = String.fromCharCode(128); + _padding += forge3.util.fillString(String.fromCharCode(0), 64); + _k = [ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]; + _initialized = true; + } + function _update(s, w, bytes) { + var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h; + var len = bytes.length(); + while (len >= 64) { + for (i = 0; i < 16; ++i) { + w[i] = bytes.getInt32(); + } + for (; i < 64; ++i) { + t1 = w[i - 2]; + t1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10; + t2 = w[i - 15]; + t2 = (t2 >>> 7 | t2 << 25) ^ (t2 >>> 18 | t2 << 14) ^ t2 >>> 3; + w[i] = t1 + w[i - 7] + t2 + w[i - 16] | 0; + } + a = s.h0; + b = s.h1; + c = s.h2; + d = s.h3; + e = s.h4; + f = s.h5; + g = s.h6; + h = s.h7; + for (i = 0; i < 64; ++i) { + s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7); + ch = g ^ e & (f ^ g); + s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10); + maj = a & b | c & (a ^ b); + t1 = h + s1 + ch + _k[i] + w[i]; + t2 = s0 + maj; + h = g; + g = f; + f = e; + e = d + t1 >>> 0; + d = c; + c = b; + b = a; + a = t1 + t2 >>> 0; + } + s.h0 = s.h0 + a | 0; + s.h1 = s.h1 + b | 0; + s.h2 = s.h2 + c | 0; + s.h3 = s.h3 + d | 0; + s.h4 = s.h4 + e | 0; + s.h5 = s.h5 + f | 0; + s.h6 = s.h6 + g | 0; + s.h7 = s.h7 + h | 0; + len -= 64; + } + } + } +}); + +// node_modules/node-forge/lib/prng.js +var require_prng = __commonJS({ + "node_modules/node-forge/lib/prng.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + var _crypto = null; + if (forge3.util.isNodejs && !forge3.options.usePureJavaScript && !process.versions["node-webkit"]) { + _crypto = require("crypto"); + } + var prng = module2.exports = forge3.prng = forge3.prng || {}; + prng.create = function(plugin) { + var ctx = { + plugin, + key: null, + seed: null, + time: null, + reseeds: 0, + generated: 0, + keyBytes: "" + }; + var md = plugin.md; + var pools = new Array(32); + for (var i = 0; i < 32; ++i) { + pools[i] = md.create(); + } + ctx.pools = pools; + ctx.pool = 0; + ctx.generate = function(count, callback) { + if (!callback) { + return ctx.generateSync(count); + } + var cipher = ctx.plugin.cipher; + var increment = ctx.plugin.increment; + var formatKey = ctx.plugin.formatKey; + var formatSeed = ctx.plugin.formatSeed; + var b = forge3.util.createBuffer(); + ctx.key = null; + generate(); + function generate(err) { + if (err) { + return callback(err); + } + if (b.length() >= count) { + return callback(null, b.getBytes(count)); + } + if (ctx.generated > 1048575) { + ctx.key = null; + } + if (ctx.key === null) { + return forge3.util.nextTick(function() { + _reseed(generate); + }); + } + var bytes = cipher(ctx.key, ctx.seed); + ctx.generated += bytes.length; + b.putBytes(bytes); + ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed))); + ctx.seed = formatSeed(cipher(ctx.key, ctx.seed)); + forge3.util.setImmediate(generate); + } + }; + ctx.generateSync = function(count) { + var cipher = ctx.plugin.cipher; + var increment = ctx.plugin.increment; + var formatKey = ctx.plugin.formatKey; + var formatSeed = ctx.plugin.formatSeed; + ctx.key = null; + var b = forge3.util.createBuffer(); + while (b.length() < count) { + if (ctx.generated > 1048575) { + ctx.key = null; + } + if (ctx.key === null) { + _reseedSync(); + } + var bytes = cipher(ctx.key, ctx.seed); + ctx.generated += bytes.length; + b.putBytes(bytes); + ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed))); + ctx.seed = formatSeed(cipher(ctx.key, ctx.seed)); + } + return b.getBytes(count); + }; + function _reseed(callback) { + if (ctx.pools[0].messageLength >= 32) { + _seed(); + return callback(); + } + var needed = 32 - ctx.pools[0].messageLength << 5; + ctx.seedFile(needed, function(err, bytes) { + if (err) { + return callback(err); + } + ctx.collect(bytes); + _seed(); + callback(); + }); + } + function _reseedSync() { + if (ctx.pools[0].messageLength >= 32) { + return _seed(); + } + var needed = 32 - ctx.pools[0].messageLength << 5; + ctx.collect(ctx.seedFileSync(needed)); + _seed(); + } + function _seed() { + ctx.reseeds = ctx.reseeds === 4294967295 ? 0 : ctx.reseeds + 1; + var md2 = ctx.plugin.md.create(); + md2.update(ctx.keyBytes); + var _2powK = 1; + for (var k = 0; k < 32; ++k) { + if (ctx.reseeds % _2powK === 0) { + md2.update(ctx.pools[k].digest().getBytes()); + ctx.pools[k].start(); + } + _2powK = _2powK << 1; + } + ctx.keyBytes = md2.digest().getBytes(); + md2.start(); + md2.update(ctx.keyBytes); + var seedBytes = md2.digest().getBytes(); + ctx.key = ctx.plugin.formatKey(ctx.keyBytes); + ctx.seed = ctx.plugin.formatSeed(seedBytes); + ctx.generated = 0; + } + function defaultSeedFile(needed) { + var getRandomValues = null; + var globalScope = forge3.util.globalScope; + var _crypto2 = globalScope.crypto || globalScope.msCrypto; + if (_crypto2 && _crypto2.getRandomValues) { + getRandomValues = function(arr) { + return _crypto2.getRandomValues(arr); + }; + } + var b = forge3.util.createBuffer(); + if (getRandomValues) { + while (b.length() < needed) { + var count = Math.max(1, Math.min(needed - b.length(), 65536) / 4); + var entropy = new Uint32Array(Math.floor(count)); + try { + getRandomValues(entropy); + for (var i2 = 0; i2 < entropy.length; ++i2) { + b.putInt32(entropy[i2]); + } + } catch (e) { + if (!(typeof QuotaExceededError !== "undefined" && e instanceof QuotaExceededError)) { + throw e; + } + } + } + } + if (b.length() < needed) { + var hi, lo, next; + var seed = Math.floor(Math.random() * 65536); + while (b.length() < needed) { + lo = 16807 * (seed & 65535); + hi = 16807 * (seed >> 16); + lo += (hi & 32767) << 16; + lo += hi >> 15; + lo = (lo & 2147483647) + (lo >> 31); + seed = lo & 4294967295; + for (var i2 = 0; i2 < 3; ++i2) { + next = seed >>> (i2 << 3); + next ^= Math.floor(Math.random() * 256); + b.putByte(next & 255); + } + } + } + return b.getBytes(needed); + } + if (_crypto) { + ctx.seedFile = function(needed, callback) { + _crypto.randomBytes(needed, function(err, bytes) { + if (err) { + return callback(err); + } + callback(null, bytes.toString()); + }); + }; + ctx.seedFileSync = function(needed) { + return _crypto.randomBytes(needed).toString(); + }; + } else { + ctx.seedFile = function(needed, callback) { + try { + callback(null, defaultSeedFile(needed)); + } catch (e) { + callback(e); + } + }; + ctx.seedFileSync = defaultSeedFile; + } + ctx.collect = function(bytes) { + var count = bytes.length; + for (var i2 = 0; i2 < count; ++i2) { + ctx.pools[ctx.pool].update(bytes.substr(i2, 1)); + ctx.pool = ctx.pool === 31 ? 0 : ctx.pool + 1; + } + }; + ctx.collectInt = function(i2, n) { + var bytes = ""; + for (var x = 0; x < n; x += 8) { + bytes += String.fromCharCode(i2 >> x & 255); + } + ctx.collect(bytes); + }; + ctx.registerWorker = function(worker) { + if (worker === self) { + ctx.seedFile = function(needed, callback) { + function listener2(e) { + var data = e.data; + if (data.forge && data.forge.prng) { + self.removeEventListener("message", listener2); + callback(data.forge.prng.err, data.forge.prng.bytes); + } + } + self.addEventListener("message", listener2); + self.postMessage({ forge: { prng: { needed } } }); + }; + } else { + var listener = function(e) { + var data = e.data; + if (data.forge && data.forge.prng) { + ctx.seedFile(data.forge.prng.needed, function(err, bytes) { + worker.postMessage({ forge: { prng: { err, bytes } } }); + }); + } + }; + worker.addEventListener("message", listener); + } + }; + return ctx; + }; + } +}); + +// node_modules/node-forge/lib/random.js +var require_random = __commonJS({ + "node_modules/node-forge/lib/random.js"(exports, module2) { + var forge3 = require_forge(); + require_aes(); + require_sha256(); + require_prng(); + require_util(); + (function() { + if (forge3.random && forge3.random.getBytes) { + module2.exports = forge3.random; + return; + } + (function(jQuery2) { + var prng_aes = {}; + var _prng_aes_output = new Array(4); + var _prng_aes_buffer = forge3.util.createBuffer(); + prng_aes.formatKey = function(key2) { + var tmp = forge3.util.createBuffer(key2); + key2 = new Array(4); + key2[0] = tmp.getInt32(); + key2[1] = tmp.getInt32(); + key2[2] = tmp.getInt32(); + key2[3] = tmp.getInt32(); + return forge3.aes._expandKey(key2, false); + }; + prng_aes.formatSeed = function(seed) { + var tmp = forge3.util.createBuffer(seed); + seed = new Array(4); + seed[0] = tmp.getInt32(); + seed[1] = tmp.getInt32(); + seed[2] = tmp.getInt32(); + seed[3] = tmp.getInt32(); + return seed; + }; + prng_aes.cipher = function(key2, seed) { + forge3.aes._updateBlock(key2, seed, _prng_aes_output, false); + _prng_aes_buffer.putInt32(_prng_aes_output[0]); + _prng_aes_buffer.putInt32(_prng_aes_output[1]); + _prng_aes_buffer.putInt32(_prng_aes_output[2]); + _prng_aes_buffer.putInt32(_prng_aes_output[3]); + return _prng_aes_buffer.getBytes(); + }; + prng_aes.increment = function(seed) { + ++seed[3]; + return seed; + }; + prng_aes.md = forge3.md.sha256; + function spawnPrng() { + var ctx = forge3.prng.create(prng_aes); + ctx.getBytes = function(count, callback) { + return ctx.generate(count, callback); + }; + ctx.getBytesSync = function(count) { + return ctx.generate(count); + }; + return ctx; + } + var _ctx = spawnPrng(); + var getRandomValues = null; + var globalScope = forge3.util.globalScope; + var _crypto = globalScope.crypto || globalScope.msCrypto; + if (_crypto && _crypto.getRandomValues) { + getRandomValues = function(arr) { + return _crypto.getRandomValues(arr); + }; + } + if (forge3.options.usePureJavaScript || !forge3.util.isNodejs && !getRandomValues) { + if (typeof window === "undefined" || window.document === void 0) { + } + _ctx.collectInt(+new Date(), 32); + if (typeof navigator !== "undefined") { + var _navBytes = ""; + for (var key in navigator) { + try { + if (typeof navigator[key] == "string") { + _navBytes += navigator[key]; + } + } catch (e) { + } + } + _ctx.collect(_navBytes); + _navBytes = null; + } + if (jQuery2) { + jQuery2().mousemove(function(e) { + _ctx.collectInt(e.clientX, 16); + _ctx.collectInt(e.clientY, 16); + }); + jQuery2().keypress(function(e) { + _ctx.collectInt(e.charCode, 8); + }); + } + } + if (!forge3.random) { + forge3.random = _ctx; + } else { + for (var key in _ctx) { + forge3.random[key] = _ctx[key]; + } + } + forge3.random.createInstance = spawnPrng; + module2.exports = forge3.random; + })(typeof jQuery !== "undefined" ? jQuery : null); + })(); + } +}); + +// node_modules/node-forge/lib/rc2.js +var require_rc2 = __commonJS({ + "node_modules/node-forge/lib/rc2.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + var piTable = [ + 217, + 120, + 249, + 196, + 25, + 221, + 181, + 237, + 40, + 233, + 253, + 121, + 74, + 160, + 216, + 157, + 198, + 126, + 55, + 131, + 43, + 118, + 83, + 142, + 98, + 76, + 100, + 136, + 68, + 139, + 251, + 162, + 23, + 154, + 89, + 245, + 135, + 179, + 79, + 19, + 97, + 69, + 109, + 141, + 9, + 129, + 125, + 50, + 189, + 143, + 64, + 235, + 134, + 183, + 123, + 11, + 240, + 149, + 33, + 34, + 92, + 107, + 78, + 130, + 84, + 214, + 101, + 147, + 206, + 96, + 178, + 28, + 115, + 86, + 192, + 20, + 167, + 140, + 241, + 220, + 18, + 117, + 202, + 31, + 59, + 190, + 228, + 209, + 66, + 61, + 212, + 48, + 163, + 60, + 182, + 38, + 111, + 191, + 14, + 218, + 70, + 105, + 7, + 87, + 39, + 242, + 29, + 155, + 188, + 148, + 67, + 3, + 248, + 17, + 199, + 246, + 144, + 239, + 62, + 231, + 6, + 195, + 213, + 47, + 200, + 102, + 30, + 215, + 8, + 232, + 234, + 222, + 128, + 82, + 238, + 247, + 132, + 170, + 114, + 172, + 53, + 77, + 106, + 42, + 150, + 26, + 210, + 113, + 90, + 21, + 73, + 116, + 75, + 159, + 208, + 94, + 4, + 24, + 164, + 236, + 194, + 224, + 65, + 110, + 15, + 81, + 203, + 204, + 36, + 145, + 175, + 80, + 161, + 244, + 112, + 57, + 153, + 124, + 58, + 133, + 35, + 184, + 180, + 122, + 252, + 2, + 54, + 91, + 37, + 85, + 151, + 49, + 45, + 93, + 250, + 152, + 227, + 138, + 146, + 174, + 5, + 223, + 41, + 16, + 103, + 108, + 186, + 201, + 211, + 0, + 230, + 207, + 225, + 158, + 168, + 44, + 99, + 22, + 1, + 63, + 88, + 226, + 137, + 169, + 13, + 56, + 52, + 27, + 171, + 51, + 255, + 176, + 187, + 72, + 12, + 95, + 185, + 177, + 205, + 46, + 197, + 243, + 219, + 71, + 229, + 165, + 156, + 119, + 10, + 166, + 32, + 104, + 254, + 127, + 193, + 173 + ]; + var s = [1, 2, 3, 5]; + var rol = function(word, bits) { + return word << bits & 65535 | (word & 65535) >> 16 - bits; + }; + var ror = function(word, bits) { + return (word & 65535) >> bits | word << 16 - bits & 65535; + }; + module2.exports = forge3.rc2 = forge3.rc2 || {}; + forge3.rc2.expandKey = function(key, effKeyBits) { + if (typeof key === "string") { + key = forge3.util.createBuffer(key); + } + effKeyBits = effKeyBits || 128; + var L = key; + var T = key.length(); + var T1 = effKeyBits; + var T8 = Math.ceil(T1 / 8); + var TM = 255 >> (T1 & 7); + var i; + for (i = T; i < 128; i++) { + L.putByte(piTable[L.at(i - 1) + L.at(i - T) & 255]); + } + L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]); + for (i = 127 - T8; i >= 0; i--) { + L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]); + } + return L; + }; + var createCipher = function(key, bits, encrypt) { + var _finish = false, _input = null, _output = null, _iv = null; + var mixRound, mashRound; + var i, j, K = []; + key = forge3.rc2.expandKey(key, bits); + for (i = 0; i < 64; i++) { + K.push(key.getInt16Le()); + } + if (encrypt) { + mixRound = function(R) { + for (i = 0; i < 4; i++) { + R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) + (~R[(i + 3) % 4] & R[(i + 1) % 4]); + R[i] = rol(R[i], s[i]); + j++; + } + }; + mashRound = function(R) { + for (i = 0; i < 4; i++) { + R[i] += K[R[(i + 3) % 4] & 63]; + } + }; + } else { + mixRound = function(R) { + for (i = 3; i >= 0; i--) { + R[i] = ror(R[i], s[i]); + R[i] -= K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) + (~R[(i + 3) % 4] & R[(i + 1) % 4]); + j--; + } + }; + mashRound = function(R) { + for (i = 3; i >= 0; i--) { + R[i] -= K[R[(i + 3) % 4] & 63]; + } + }; + } + var runPlan = function(plan) { + var R = []; + for (i = 0; i < 4; i++) { + var val = _input.getInt16Le(); + if (_iv !== null) { + if (encrypt) { + val ^= _iv.getInt16Le(); + } else { + _iv.putInt16Le(val); + } + } + R.push(val & 65535); + } + j = encrypt ? 0 : 63; + for (var ptr = 0; ptr < plan.length; ptr++) { + for (var ctr = 0; ctr < plan[ptr][0]; ctr++) { + plan[ptr][1](R); + } + } + for (i = 0; i < 4; i++) { + if (_iv !== null) { + if (encrypt) { + _iv.putInt16Le(R[i]); + } else { + R[i] ^= _iv.getInt16Le(); + } + } + _output.putInt16Le(R[i]); + } + }; + var cipher = null; + cipher = { + start: function(iv, output) { + if (iv) { + if (typeof iv === "string") { + iv = forge3.util.createBuffer(iv); + } + } + _finish = false; + _input = forge3.util.createBuffer(); + _output = output || new forge3.util.createBuffer(); + _iv = iv; + cipher.output = _output; + }, + update: function(input) { + if (!_finish) { + _input.putBuffer(input); + } + while (_input.length() >= 8) { + runPlan([ + [5, mixRound], + [1, mashRound], + [6, mixRound], + [1, mashRound], + [5, mixRound] + ]); + } + }, + finish: function(pad) { + var rval = true; + if (encrypt) { + if (pad) { + rval = pad(8, _input, !encrypt); + } else { + var padding = _input.length() === 8 ? 8 : 8 - _input.length(); + _input.fillWithByte(padding, padding); + } + } + if (rval) { + _finish = true; + cipher.update(); + } + if (!encrypt) { + rval = _input.length() === 0; + if (rval) { + if (pad) { + rval = pad(8, _output, !encrypt); + } else { + var len = _output.length(); + var count = _output.at(len - 1); + if (count > len) { + rval = false; + } else { + _output.truncate(count); + } + } + } + } + return rval; + } + }; + return cipher; + }; + forge3.rc2.startEncrypting = function(key, iv, output) { + var cipher = forge3.rc2.createEncryptionCipher(key, 128); + cipher.start(iv, output); + return cipher; + }; + forge3.rc2.createEncryptionCipher = function(key, bits) { + return createCipher(key, bits, true); + }; + forge3.rc2.startDecrypting = function(key, iv, output) { + var cipher = forge3.rc2.createDecryptionCipher(key, 128); + cipher.start(iv, output); + return cipher; + }; + forge3.rc2.createDecryptionCipher = function(key, bits) { + return createCipher(key, bits, false); + }; + } +}); + +// node_modules/node-forge/lib/jsbn.js +var require_jsbn = __commonJS({ + "node_modules/node-forge/lib/jsbn.js"(exports, module2) { + var forge3 = require_forge(); + module2.exports = forge3.jsbn = forge3.jsbn || {}; + var dbits; + var canary = 244837814094590; + var j_lm = (canary & 16777215) == 15715070; + function BigInteger(a, b, c) { + this.data = []; + if (a != null) + if (typeof a == "number") + this.fromNumber(a, b, c); + else if (b == null && typeof a != "string") + this.fromString(a, 256); + else + this.fromString(a, b); + } + forge3.jsbn.BigInteger = BigInteger; + function nbi() { + return new BigInteger(null); + } + function am1(i, x, w, j, c, n) { + while (--n >= 0) { + var v = x * this.data[i++] + w.data[j] + c; + c = Math.floor(v / 67108864); + w.data[j++] = v & 67108863; + } + return c; + } + function am2(i, x, w, j, c, n) { + var xl = x & 32767, xh = x >> 15; + while (--n >= 0) { + var l = this.data[i] & 32767; + var h = this.data[i++] >> 15; + var m = xh * l + h * xl; + l = xl * l + ((m & 32767) << 15) + w.data[j] + (c & 1073741823); + c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30); + w.data[j++] = l & 1073741823; + } + return c; + } + function am3(i, x, w, j, c, n) { + var xl = x & 16383, xh = x >> 14; + while (--n >= 0) { + var l = this.data[i] & 16383; + var h = this.data[i++] >> 14; + var m = xh * l + h * xl; + l = xl * l + ((m & 16383) << 14) + w.data[j] + c; + c = (l >> 28) + (m >> 14) + xh * h; + w.data[j++] = l & 268435455; + } + return c; + } + if (typeof navigator === "undefined") { + BigInteger.prototype.am = am3; + dbits = 28; + } else if (j_lm && navigator.appName == "Microsoft Internet Explorer") { + BigInteger.prototype.am = am2; + dbits = 30; + } else if (j_lm && navigator.appName != "Netscape") { + BigInteger.prototype.am = am1; + dbits = 26; + } else { + BigInteger.prototype.am = am3; + dbits = 28; + } + BigInteger.prototype.DB = dbits; + BigInteger.prototype.DM = (1 << dbits) - 1; + BigInteger.prototype.DV = 1 << dbits; + var BI_FP = 52; + BigInteger.prototype.FV = Math.pow(2, BI_FP); + BigInteger.prototype.F1 = BI_FP - dbits; + BigInteger.prototype.F2 = 2 * dbits - BI_FP; + var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"; + var BI_RC = new Array(); + var rr; + var vv; + rr = "0".charCodeAt(0); + for (vv = 0; vv <= 9; ++vv) + BI_RC[rr++] = vv; + rr = "a".charCodeAt(0); + for (vv = 10; vv < 36; ++vv) + BI_RC[rr++] = vv; + rr = "A".charCodeAt(0); + for (vv = 10; vv < 36; ++vv) + BI_RC[rr++] = vv; + function int2char(n) { + return BI_RM.charAt(n); + } + function intAt(s, i) { + var c = BI_RC[s.charCodeAt(i)]; + return c == null ? -1 : c; + } + function bnpCopyTo(r) { + for (var i = this.t - 1; i >= 0; --i) + r.data[i] = this.data[i]; + r.t = this.t; + r.s = this.s; + } + function bnpFromInt(x) { + this.t = 1; + this.s = x < 0 ? -1 : 0; + if (x > 0) + this.data[0] = x; + else if (x < -1) + this.data[0] = x + this.DV; + else + this.t = 0; + } + function nbv(i) { + var r = nbi(); + r.fromInt(i); + return r; + } + function bnpFromString(s, b) { + var k; + if (b == 16) + k = 4; + else if (b == 8) + k = 3; + else if (b == 256) + k = 8; + else if (b == 2) + k = 1; + else if (b == 32) + k = 5; + else if (b == 4) + k = 2; + else { + this.fromRadix(s, b); + return; + } + this.t = 0; + this.s = 0; + var i = s.length, mi = false, sh = 0; + while (--i >= 0) { + var x = k == 8 ? s[i] & 255 : intAt(s, i); + if (x < 0) { + if (s.charAt(i) == "-") + mi = true; + continue; + } + mi = false; + if (sh == 0) + this.data[this.t++] = x; + else if (sh + k > this.DB) { + this.data[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh; + this.data[this.t++] = x >> this.DB - sh; + } else + this.data[this.t - 1] |= x << sh; + sh += k; + if (sh >= this.DB) + sh -= this.DB; + } + if (k == 8 && (s[0] & 128) != 0) { + this.s = -1; + if (sh > 0) + this.data[this.t - 1] |= (1 << this.DB - sh) - 1 << sh; + } + this.clamp(); + if (mi) + BigInteger.ZERO.subTo(this, this); + } + function bnpClamp() { + var c = this.s & this.DM; + while (this.t > 0 && this.data[this.t - 1] == c) + --this.t; + } + function bnToString(b) { + if (this.s < 0) + return "-" + this.negate().toString(b); + var k; + if (b == 16) + k = 4; + else if (b == 8) + k = 3; + else if (b == 2) + k = 1; + else if (b == 32) + k = 5; + else if (b == 4) + k = 2; + else + return this.toRadix(b); + var km = (1 << k) - 1, d, m = false, r = "", i = this.t; + var p = this.DB - i * this.DB % k; + if (i-- > 0) { + if (p < this.DB && (d = this.data[i] >> p) > 0) { + m = true; + r = int2char(d); + } + while (i >= 0) { + if (p < k) { + d = (this.data[i] & (1 << p) - 1) << k - p; + d |= this.data[--i] >> (p += this.DB - k); + } else { + d = this.data[i] >> (p -= k) & km; + if (p <= 0) { + p += this.DB; + --i; + } + } + if (d > 0) + m = true; + if (m) + r += int2char(d); + } + } + return m ? r : "0"; + } + function bnNegate() { + var r = nbi(); + BigInteger.ZERO.subTo(this, r); + return r; + } + function bnAbs() { + return this.s < 0 ? this.negate() : this; + } + function bnCompareTo(a) { + var r = this.s - a.s; + if (r != 0) + return r; + var i = this.t; + r = i - a.t; + if (r != 0) + return this.s < 0 ? -r : r; + while (--i >= 0) + if ((r = this.data[i] - a.data[i]) != 0) + return r; + return 0; + } + function nbits(x) { + var r = 1, t; + if ((t = x >>> 16) != 0) { + x = t; + r += 16; + } + if ((t = x >> 8) != 0) { + x = t; + r += 8; + } + if ((t = x >> 4) != 0) { + x = t; + r += 4; + } + if ((t = x >> 2) != 0) { + x = t; + r += 2; + } + if ((t = x >> 1) != 0) { + x = t; + r += 1; + } + return r; + } + function bnBitLength() { + if (this.t <= 0) + return 0; + return this.DB * (this.t - 1) + nbits(this.data[this.t - 1] ^ this.s & this.DM); + } + function bnpDLShiftTo(n, r) { + var i; + for (i = this.t - 1; i >= 0; --i) + r.data[i + n] = this.data[i]; + for (i = n - 1; i >= 0; --i) + r.data[i] = 0; + r.t = this.t + n; + r.s = this.s; + } + function bnpDRShiftTo(n, r) { + for (var i = n; i < this.t; ++i) + r.data[i - n] = this.data[i]; + r.t = Math.max(this.t - n, 0); + r.s = this.s; + } + function bnpLShiftTo(n, r) { + var bs = n % this.DB; + var cbs = this.DB - bs; + var bm = (1 << cbs) - 1; + var ds = Math.floor(n / this.DB), c = this.s << bs & this.DM, i; + for (i = this.t - 1; i >= 0; --i) { + r.data[i + ds + 1] = this.data[i] >> cbs | c; + c = (this.data[i] & bm) << bs; + } + for (i = ds - 1; i >= 0; --i) + r.data[i] = 0; + r.data[ds] = c; + r.t = this.t + ds + 1; + r.s = this.s; + r.clamp(); + } + function bnpRShiftTo(n, r) { + r.s = this.s; + var ds = Math.floor(n / this.DB); + if (ds >= this.t) { + r.t = 0; + return; + } + var bs = n % this.DB; + var cbs = this.DB - bs; + var bm = (1 << bs) - 1; + r.data[0] = this.data[ds] >> bs; + for (var i = ds + 1; i < this.t; ++i) { + r.data[i - ds - 1] |= (this.data[i] & bm) << cbs; + r.data[i - ds] = this.data[i] >> bs; + } + if (bs > 0) + r.data[this.t - ds - 1] |= (this.s & bm) << cbs; + r.t = this.t - ds; + r.clamp(); + } + function bnpSubTo(a, r) { + var i = 0, c = 0, m = Math.min(a.t, this.t); + while (i < m) { + c += this.data[i] - a.data[i]; + r.data[i++] = c & this.DM; + c >>= this.DB; + } + if (a.t < this.t) { + c -= a.s; + while (i < this.t) { + c += this.data[i]; + r.data[i++] = c & this.DM; + c >>= this.DB; + } + c += this.s; + } else { + c += this.s; + while (i < a.t) { + c -= a.data[i]; + r.data[i++] = c & this.DM; + c >>= this.DB; + } + c -= a.s; + } + r.s = c < 0 ? -1 : 0; + if (c < -1) + r.data[i++] = this.DV + c; + else if (c > 0) + r.data[i++] = c; + r.t = i; + r.clamp(); + } + function bnpMultiplyTo(a, r) { + var x = this.abs(), y = a.abs(); + var i = x.t; + r.t = i + y.t; + while (--i >= 0) + r.data[i] = 0; + for (i = 0; i < y.t; ++i) + r.data[i + x.t] = x.am(0, y.data[i], r, i, 0, x.t); + r.s = 0; + r.clamp(); + if (this.s != a.s) + BigInteger.ZERO.subTo(r, r); + } + function bnpSquareTo(r) { + var x = this.abs(); + var i = r.t = 2 * x.t; + while (--i >= 0) + r.data[i] = 0; + for (i = 0; i < x.t - 1; ++i) { + var c = x.am(i, x.data[i], r, 2 * i, 0, 1); + if ((r.data[i + x.t] += x.am(i + 1, 2 * x.data[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) { + r.data[i + x.t] -= x.DV; + r.data[i + x.t + 1] = 1; + } + } + if (r.t > 0) + r.data[r.t - 1] += x.am(i, x.data[i], r, 2 * i, 0, 1); + r.s = 0; + r.clamp(); + } + function bnpDivRemTo(m, q, r) { + var pm = m.abs(); + if (pm.t <= 0) + return; + var pt = this.abs(); + if (pt.t < pm.t) { + if (q != null) + q.fromInt(0); + if (r != null) + this.copyTo(r); + return; + } + if (r == null) + r = nbi(); + var y = nbi(), ts = this.s, ms = m.s; + var nsh = this.DB - nbits(pm.data[pm.t - 1]); + if (nsh > 0) { + pm.lShiftTo(nsh, y); + pt.lShiftTo(nsh, r); + } else { + pm.copyTo(y); + pt.copyTo(r); + } + var ys = y.t; + var y0 = y.data[ys - 1]; + if (y0 == 0) + return; + var yt = y0 * (1 << this.F1) + (ys > 1 ? y.data[ys - 2] >> this.F2 : 0); + var d1 = this.FV / yt, d2 = (1 << this.F1) / yt, e = 1 << this.F2; + var i = r.t, j = i - ys, t = q == null ? nbi() : q; + y.dlShiftTo(j, t); + if (r.compareTo(t) >= 0) { + r.data[r.t++] = 1; + r.subTo(t, r); + } + BigInteger.ONE.dlShiftTo(ys, t); + t.subTo(y, y); + while (y.t < ys) + y.data[y.t++] = 0; + while (--j >= 0) { + var qd = r.data[--i] == y0 ? this.DM : Math.floor(r.data[i] * d1 + (r.data[i - 1] + e) * d2); + if ((r.data[i] += y.am(0, qd, r, j, 0, ys)) < qd) { + y.dlShiftTo(j, t); + r.subTo(t, r); + while (r.data[i] < --qd) + r.subTo(t, r); + } + } + if (q != null) { + r.drShiftTo(ys, q); + if (ts != ms) + BigInteger.ZERO.subTo(q, q); + } + r.t = ys; + r.clamp(); + if (nsh > 0) + r.rShiftTo(nsh, r); + if (ts < 0) + BigInteger.ZERO.subTo(r, r); + } + function bnMod(a) { + var r = nbi(); + this.abs().divRemTo(a, null, r); + if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) + a.subTo(r, r); + return r; + } + function Classic(m) { + this.m = m; + } + function cConvert(x) { + if (x.s < 0 || x.compareTo(this.m) >= 0) + return x.mod(this.m); + else + return x; + } + function cRevert(x) { + return x; + } + function cReduce(x) { + x.divRemTo(this.m, null, x); + } + function cMulTo(x, y, r) { + x.multiplyTo(y, r); + this.reduce(r); + } + function cSqrTo(x, r) { + x.squareTo(r); + this.reduce(r); + } + Classic.prototype.convert = cConvert; + Classic.prototype.revert = cRevert; + Classic.prototype.reduce = cReduce; + Classic.prototype.mulTo = cMulTo; + Classic.prototype.sqrTo = cSqrTo; + function bnpInvDigit() { + if (this.t < 1) + return 0; + var x = this.data[0]; + if ((x & 1) == 0) + return 0; + var y = x & 3; + y = y * (2 - (x & 15) * y) & 15; + y = y * (2 - (x & 255) * y) & 255; + y = y * (2 - ((x & 65535) * y & 65535)) & 65535; + y = y * (2 - x * y % this.DV) % this.DV; + return y > 0 ? this.DV - y : -y; + } + function Montgomery(m) { + this.m = m; + this.mp = m.invDigit(); + this.mpl = this.mp & 32767; + this.mph = this.mp >> 15; + this.um = (1 << m.DB - 15) - 1; + this.mt2 = 2 * m.t; + } + function montConvert(x) { + var r = nbi(); + x.abs().dlShiftTo(this.m.t, r); + r.divRemTo(this.m, null, r); + if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) + this.m.subTo(r, r); + return r; + } + function montRevert(x) { + var r = nbi(); + x.copyTo(r); + this.reduce(r); + return r; + } + function montReduce(x) { + while (x.t <= this.mt2) + x.data[x.t++] = 0; + for (var i = 0; i < this.m.t; ++i) { + var j = x.data[i] & 32767; + var u0 = j * this.mpl + ((j * this.mph + (x.data[i] >> 15) * this.mpl & this.um) << 15) & x.DM; + j = i + this.m.t; + x.data[j] += this.m.am(0, u0, x, i, 0, this.m.t); + while (x.data[j] >= x.DV) { + x.data[j] -= x.DV; + x.data[++j]++; + } + } + x.clamp(); + x.drShiftTo(this.m.t, x); + if (x.compareTo(this.m) >= 0) + x.subTo(this.m, x); + } + function montSqrTo(x, r) { + x.squareTo(r); + this.reduce(r); + } + function montMulTo(x, y, r) { + x.multiplyTo(y, r); + this.reduce(r); + } + Montgomery.prototype.convert = montConvert; + Montgomery.prototype.revert = montRevert; + Montgomery.prototype.reduce = montReduce; + Montgomery.prototype.mulTo = montMulTo; + Montgomery.prototype.sqrTo = montSqrTo; + function bnpIsEven() { + return (this.t > 0 ? this.data[0] & 1 : this.s) == 0; + } + function bnpExp(e, z) { + if (e > 4294967295 || e < 1) + return BigInteger.ONE; + var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e) - 1; + g.copyTo(r); + while (--i >= 0) { + z.sqrTo(r, r2); + if ((e & 1 << i) > 0) + z.mulTo(r2, g, r); + else { + var t = r; + r = r2; + r2 = t; + } + } + return z.revert(r); + } + function bnModPowInt(e, m) { + var z; + if (e < 256 || m.isEven()) + z = new Classic(m); + else + z = new Montgomery(m); + return this.exp(e, z); + } + BigInteger.prototype.copyTo = bnpCopyTo; + BigInteger.prototype.fromInt = bnpFromInt; + BigInteger.prototype.fromString = bnpFromString; + BigInteger.prototype.clamp = bnpClamp; + BigInteger.prototype.dlShiftTo = bnpDLShiftTo; + BigInteger.prototype.drShiftTo = bnpDRShiftTo; + BigInteger.prototype.lShiftTo = bnpLShiftTo; + BigInteger.prototype.rShiftTo = bnpRShiftTo; + BigInteger.prototype.subTo = bnpSubTo; + BigInteger.prototype.multiplyTo = bnpMultiplyTo; + BigInteger.prototype.squareTo = bnpSquareTo; + BigInteger.prototype.divRemTo = bnpDivRemTo; + BigInteger.prototype.invDigit = bnpInvDigit; + BigInteger.prototype.isEven = bnpIsEven; + BigInteger.prototype.exp = bnpExp; + BigInteger.prototype.toString = bnToString; + BigInteger.prototype.negate = bnNegate; + BigInteger.prototype.abs = bnAbs; + BigInteger.prototype.compareTo = bnCompareTo; + BigInteger.prototype.bitLength = bnBitLength; + BigInteger.prototype.mod = bnMod; + BigInteger.prototype.modPowInt = bnModPowInt; + BigInteger.ZERO = nbv(0); + BigInteger.ONE = nbv(1); + function bnClone() { + var r = nbi(); + this.copyTo(r); + return r; + } + function bnIntValue() { + if (this.s < 0) { + if (this.t == 1) + return this.data[0] - this.DV; + else if (this.t == 0) + return -1; + } else if (this.t == 1) + return this.data[0]; + else if (this.t == 0) + return 0; + return (this.data[1] & (1 << 32 - this.DB) - 1) << this.DB | this.data[0]; + } + function bnByteValue() { + return this.t == 0 ? this.s : this.data[0] << 24 >> 24; + } + function bnShortValue() { + return this.t == 0 ? this.s : this.data[0] << 16 >> 16; + } + function bnpChunkSize(r) { + return Math.floor(Math.LN2 * this.DB / Math.log(r)); + } + function bnSigNum() { + if (this.s < 0) + return -1; + else if (this.t <= 0 || this.t == 1 && this.data[0] <= 0) + return 0; + else + return 1; + } + function bnpToRadix(b) { + if (b == null) + b = 10; + if (this.signum() == 0 || b < 2 || b > 36) + return "0"; + var cs = this.chunkSize(b); + var a = Math.pow(b, cs); + var d = nbv(a), y = nbi(), z = nbi(), r = ""; + this.divRemTo(d, y, z); + while (y.signum() > 0) { + r = (a + z.intValue()).toString(b).substr(1) + r; + y.divRemTo(d, y, z); + } + return z.intValue().toString(b) + r; + } + function bnpFromRadix(s, b) { + this.fromInt(0); + if (b == null) + b = 10; + var cs = this.chunkSize(b); + var d = Math.pow(b, cs), mi = false, j = 0, w = 0; + for (var i = 0; i < s.length; ++i) { + var x = intAt(s, i); + if (x < 0) { + if (s.charAt(i) == "-" && this.signum() == 0) + mi = true; + continue; + } + w = b * w + x; + if (++j >= cs) { + this.dMultiply(d); + this.dAddOffset(w, 0); + j = 0; + w = 0; + } + } + if (j > 0) { + this.dMultiply(Math.pow(b, j)); + this.dAddOffset(w, 0); + } + if (mi) + BigInteger.ZERO.subTo(this, this); + } + function bnpFromNumber(a, b, c) { + if (typeof b == "number") { + if (a < 2) + this.fromInt(1); + else { + this.fromNumber(a, c); + if (!this.testBit(a - 1)) + this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this); + if (this.isEven()) + this.dAddOffset(1, 0); + while (!this.isProbablePrime(b)) { + this.dAddOffset(2, 0); + if (this.bitLength() > a) + this.subTo(BigInteger.ONE.shiftLeft(a - 1), this); + } + } + } else { + var x = new Array(), t = a & 7; + x.length = (a >> 3) + 1; + b.nextBytes(x); + if (t > 0) + x[0] &= (1 << t) - 1; + else + x[0] = 0; + this.fromString(x, 256); + } + } + function bnToByteArray() { + var i = this.t, r = new Array(); + r[0] = this.s; + var p = this.DB - i * this.DB % 8, d, k = 0; + if (i-- > 0) { + if (p < this.DB && (d = this.data[i] >> p) != (this.s & this.DM) >> p) + r[k++] = d | this.s << this.DB - p; + while (i >= 0) { + if (p < 8) { + d = (this.data[i] & (1 << p) - 1) << 8 - p; + d |= this.data[--i] >> (p += this.DB - 8); + } else { + d = this.data[i] >> (p -= 8) & 255; + if (p <= 0) { + p += this.DB; + --i; + } + } + if ((d & 128) != 0) + d |= -256; + if (k == 0 && (this.s & 128) != (d & 128)) + ++k; + if (k > 0 || d != this.s) + r[k++] = d; + } + } + return r; + } + function bnEquals(a) { + return this.compareTo(a) == 0; + } + function bnMin(a) { + return this.compareTo(a) < 0 ? this : a; + } + function bnMax(a) { + return this.compareTo(a) > 0 ? this : a; + } + function bnpBitwiseTo(a, op, r) { + var i, f, m = Math.min(a.t, this.t); + for (i = 0; i < m; ++i) + r.data[i] = op(this.data[i], a.data[i]); + if (a.t < this.t) { + f = a.s & this.DM; + for (i = m; i < this.t; ++i) + r.data[i] = op(this.data[i], f); + r.t = this.t; + } else { + f = this.s & this.DM; + for (i = m; i < a.t; ++i) + r.data[i] = op(f, a.data[i]); + r.t = a.t; + } + r.s = op(this.s, a.s); + r.clamp(); + } + function op_and(x, y) { + return x & y; + } + function bnAnd(a) { + var r = nbi(); + this.bitwiseTo(a, op_and, r); + return r; + } + function op_or(x, y) { + return x | y; + } + function bnOr(a) { + var r = nbi(); + this.bitwiseTo(a, op_or, r); + return r; + } + function op_xor(x, y) { + return x ^ y; + } + function bnXor(a) { + var r = nbi(); + this.bitwiseTo(a, op_xor, r); + return r; + } + function op_andnot(x, y) { + return x & ~y; + } + function bnAndNot(a) { + var r = nbi(); + this.bitwiseTo(a, op_andnot, r); + return r; + } + function bnNot() { + var r = nbi(); + for (var i = 0; i < this.t; ++i) + r.data[i] = this.DM & ~this.data[i]; + r.t = this.t; + r.s = ~this.s; + return r; + } + function bnShiftLeft(n) { + var r = nbi(); + if (n < 0) + this.rShiftTo(-n, r); + else + this.lShiftTo(n, r); + return r; + } + function bnShiftRight(n) { + var r = nbi(); + if (n < 0) + this.lShiftTo(-n, r); + else + this.rShiftTo(n, r); + return r; + } + function lbit(x) { + if (x == 0) + return -1; + var r = 0; + if ((x & 65535) == 0) { + x >>= 16; + r += 16; + } + if ((x & 255) == 0) { + x >>= 8; + r += 8; + } + if ((x & 15) == 0) { + x >>= 4; + r += 4; + } + if ((x & 3) == 0) { + x >>= 2; + r += 2; + } + if ((x & 1) == 0) + ++r; + return r; + } + function bnGetLowestSetBit() { + for (var i = 0; i < this.t; ++i) + if (this.data[i] != 0) + return i * this.DB + lbit(this.data[i]); + if (this.s < 0) + return this.t * this.DB; + return -1; + } + function cbit(x) { + var r = 0; + while (x != 0) { + x &= x - 1; + ++r; + } + return r; + } + function bnBitCount() { + var r = 0, x = this.s & this.DM; + for (var i = 0; i < this.t; ++i) + r += cbit(this.data[i] ^ x); + return r; + } + function bnTestBit(n) { + var j = Math.floor(n / this.DB); + if (j >= this.t) + return this.s != 0; + return (this.data[j] & 1 << n % this.DB) != 0; + } + function bnpChangeBit(n, op) { + var r = BigInteger.ONE.shiftLeft(n); + this.bitwiseTo(r, op, r); + return r; + } + function bnSetBit(n) { + return this.changeBit(n, op_or); + } + function bnClearBit(n) { + return this.changeBit(n, op_andnot); + } + function bnFlipBit(n) { + return this.changeBit(n, op_xor); + } + function bnpAddTo(a, r) { + var i = 0, c = 0, m = Math.min(a.t, this.t); + while (i < m) { + c += this.data[i] + a.data[i]; + r.data[i++] = c & this.DM; + c >>= this.DB; + } + if (a.t < this.t) { + c += a.s; + while (i < this.t) { + c += this.data[i]; + r.data[i++] = c & this.DM; + c >>= this.DB; + } + c += this.s; + } else { + c += this.s; + while (i < a.t) { + c += a.data[i]; + r.data[i++] = c & this.DM; + c >>= this.DB; + } + c += a.s; + } + r.s = c < 0 ? -1 : 0; + if (c > 0) + r.data[i++] = c; + else if (c < -1) + r.data[i++] = this.DV + c; + r.t = i; + r.clamp(); + } + function bnAdd(a) { + var r = nbi(); + this.addTo(a, r); + return r; + } + function bnSubtract(a) { + var r = nbi(); + this.subTo(a, r); + return r; + } + function bnMultiply(a) { + var r = nbi(); + this.multiplyTo(a, r); + return r; + } + function bnDivide(a) { + var r = nbi(); + this.divRemTo(a, r, null); + return r; + } + function bnRemainder(a) { + var r = nbi(); + this.divRemTo(a, null, r); + return r; + } + function bnDivideAndRemainder(a) { + var q = nbi(), r = nbi(); + this.divRemTo(a, q, r); + return new Array(q, r); + } + function bnpDMultiply(n) { + this.data[this.t] = this.am(0, n - 1, this, 0, 0, this.t); + ++this.t; + this.clamp(); + } + function bnpDAddOffset(n, w) { + if (n == 0) + return; + while (this.t <= w) + this.data[this.t++] = 0; + this.data[w] += n; + while (this.data[w] >= this.DV) { + this.data[w] -= this.DV; + if (++w >= this.t) + this.data[this.t++] = 0; + ++this.data[w]; + } + } + function NullExp() { + } + function nNop(x) { + return x; + } + function nMulTo(x, y, r) { + x.multiplyTo(y, r); + } + function nSqrTo(x, r) { + x.squareTo(r); + } + NullExp.prototype.convert = nNop; + NullExp.prototype.revert = nNop; + NullExp.prototype.mulTo = nMulTo; + NullExp.prototype.sqrTo = nSqrTo; + function bnPow(e) { + return this.exp(e, new NullExp()); + } + function bnpMultiplyLowerTo(a, n, r) { + var i = Math.min(this.t + a.t, n); + r.s = 0; + r.t = i; + while (i > 0) + r.data[--i] = 0; + var j; + for (j = r.t - this.t; i < j; ++i) + r.data[i + this.t] = this.am(0, a.data[i], r, i, 0, this.t); + for (j = Math.min(a.t, n); i < j; ++i) + this.am(0, a.data[i], r, i, 0, n - i); + r.clamp(); + } + function bnpMultiplyUpperTo(a, n, r) { + --n; + var i = r.t = this.t + a.t - n; + r.s = 0; + while (--i >= 0) + r.data[i] = 0; + for (i = Math.max(n - this.t, 0); i < a.t; ++i) + r.data[this.t + i - n] = this.am(n - i, a.data[i], r, 0, 0, this.t + i - n); + r.clamp(); + r.drShiftTo(1, r); + } + function Barrett(m) { + this.r2 = nbi(); + this.q3 = nbi(); + BigInteger.ONE.dlShiftTo(2 * m.t, this.r2); + this.mu = this.r2.divide(m); + this.m = m; + } + function barrettConvert(x) { + if (x.s < 0 || x.t > 2 * this.m.t) + return x.mod(this.m); + else if (x.compareTo(this.m) < 0) + return x; + else { + var r = nbi(); + x.copyTo(r); + this.reduce(r); + return r; + } + } + function barrettRevert(x) { + return x; + } + function barrettReduce(x) { + x.drShiftTo(this.m.t - 1, this.r2); + if (x.t > this.m.t + 1) { + x.t = this.m.t + 1; + x.clamp(); + } + this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3); + this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); + while (x.compareTo(this.r2) < 0) + x.dAddOffset(1, this.m.t + 1); + x.subTo(this.r2, x); + while (x.compareTo(this.m) >= 0) + x.subTo(this.m, x); + } + function barrettSqrTo(x, r) { + x.squareTo(r); + this.reduce(r); + } + function barrettMulTo(x, y, r) { + x.multiplyTo(y, r); + this.reduce(r); + } + Barrett.prototype.convert = barrettConvert; + Barrett.prototype.revert = barrettRevert; + Barrett.prototype.reduce = barrettReduce; + Barrett.prototype.mulTo = barrettMulTo; + Barrett.prototype.sqrTo = barrettSqrTo; + function bnModPow(e, m) { + var i = e.bitLength(), k, r = nbv(1), z; + if (i <= 0) + return r; + else if (i < 18) + k = 1; + else if (i < 48) + k = 3; + else if (i < 144) + k = 4; + else if (i < 768) + k = 5; + else + k = 6; + if (i < 8) + z = new Classic(m); + else if (m.isEven()) + z = new Barrett(m); + else + z = new Montgomery(m); + var g = new Array(), n = 3, k1 = k - 1, km = (1 << k) - 1; + g[1] = z.convert(this); + if (k > 1) { + var g2 = nbi(); + z.sqrTo(g[1], g2); + while (n <= km) { + g[n] = nbi(); + z.mulTo(g2, g[n - 2], g[n]); + n += 2; + } + } + var j = e.t - 1, w, is1 = true, r2 = nbi(), t; + i = nbits(e.data[j]) - 1; + while (j >= 0) { + if (i >= k1) + w = e.data[j] >> i - k1 & km; + else { + w = (e.data[j] & (1 << i + 1) - 1) << k1 - i; + if (j > 0) + w |= e.data[j - 1] >> this.DB + i - k1; + } + n = k; + while ((w & 1) == 0) { + w >>= 1; + --n; + } + if ((i -= n) < 0) { + i += this.DB; + --j; + } + if (is1) { + g[w].copyTo(r); + is1 = false; + } else { + while (n > 1) { + z.sqrTo(r, r2); + z.sqrTo(r2, r); + n -= 2; + } + if (n > 0) + z.sqrTo(r, r2); + else { + t = r; + r = r2; + r2 = t; + } + z.mulTo(r2, g[w], r); + } + while (j >= 0 && (e.data[j] & 1 << i) == 0) { + z.sqrTo(r, r2); + t = r; + r = r2; + r2 = t; + if (--i < 0) { + i = this.DB - 1; + --j; + } + } + } + return z.revert(r); + } + function bnGCD(a) { + var x = this.s < 0 ? this.negate() : this.clone(); + var y = a.s < 0 ? a.negate() : a.clone(); + if (x.compareTo(y) < 0) { + var t = x; + x = y; + y = t; + } + var i = x.getLowestSetBit(), g = y.getLowestSetBit(); + if (g < 0) + return x; + if (i < g) + g = i; + if (g > 0) { + x.rShiftTo(g, x); + y.rShiftTo(g, y); + } + while (x.signum() > 0) { + if ((i = x.getLowestSetBit()) > 0) + x.rShiftTo(i, x); + if ((i = y.getLowestSetBit()) > 0) + y.rShiftTo(i, y); + if (x.compareTo(y) >= 0) { + x.subTo(y, x); + x.rShiftTo(1, x); + } else { + y.subTo(x, y); + y.rShiftTo(1, y); + } + } + if (g > 0) + y.lShiftTo(g, y); + return y; + } + function bnpModInt(n) { + if (n <= 0) + return 0; + var d = this.DV % n, r = this.s < 0 ? n - 1 : 0; + if (this.t > 0) + if (d == 0) + r = this.data[0] % n; + else + for (var i = this.t - 1; i >= 0; --i) + r = (d * r + this.data[i]) % n; + return r; + } + function bnModInverse(m) { + var ac = m.isEven(); + if (this.isEven() && ac || m.signum() == 0) + return BigInteger.ZERO; + var u = m.clone(), v = this.clone(); + var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); + while (u.signum() != 0) { + while (u.isEven()) { + u.rShiftTo(1, u); + if (ac) { + if (!a.isEven() || !b.isEven()) { + a.addTo(this, a); + b.subTo(m, b); + } + a.rShiftTo(1, a); + } else if (!b.isEven()) + b.subTo(m, b); + b.rShiftTo(1, b); + } + while (v.isEven()) { + v.rShiftTo(1, v); + if (ac) { + if (!c.isEven() || !d.isEven()) { + c.addTo(this, c); + d.subTo(m, d); + } + c.rShiftTo(1, c); + } else if (!d.isEven()) + d.subTo(m, d); + d.rShiftTo(1, d); + } + if (u.compareTo(v) >= 0) { + u.subTo(v, u); + if (ac) + a.subTo(c, a); + b.subTo(d, b); + } else { + v.subTo(u, v); + if (ac) + c.subTo(a, c); + d.subTo(b, d); + } + } + if (v.compareTo(BigInteger.ONE) != 0) + return BigInteger.ZERO; + if (d.compareTo(m) >= 0) + return d.subtract(m); + if (d.signum() < 0) + d.addTo(m, d); + else + return d; + if (d.signum() < 0) + return d.add(m); + else + return d; + } + var lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509]; + var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]; + function bnIsProbablePrime(t) { + var i, x = this.abs(); + if (x.t == 1 && x.data[0] <= lowprimes[lowprimes.length - 1]) { + for (i = 0; i < lowprimes.length; ++i) + if (x.data[0] == lowprimes[i]) + return true; + return false; + } + if (x.isEven()) + return false; + i = 1; + while (i < lowprimes.length) { + var m = lowprimes[i], j = i + 1; + while (j < lowprimes.length && m < lplim) + m *= lowprimes[j++]; + m = x.modInt(m); + while (i < j) + if (m % lowprimes[i++] == 0) + return false; + } + return x.millerRabin(t); + } + function bnpMillerRabin(t) { + var n1 = this.subtract(BigInteger.ONE); + var k = n1.getLowestSetBit(); + if (k <= 0) + return false; + var r = n1.shiftRight(k); + var prng = bnGetPrng(); + var a; + for (var i = 0; i < t; ++i) { + do { + a = new BigInteger(this.bitLength(), prng); + } while (a.compareTo(BigInteger.ONE) <= 0 || a.compareTo(n1) >= 0); + var y = a.modPow(r, this); + if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { + var j = 1; + while (j++ < k && y.compareTo(n1) != 0) { + y = y.modPowInt(2, this); + if (y.compareTo(BigInteger.ONE) == 0) + return false; + } + if (y.compareTo(n1) != 0) + return false; + } + } + return true; + } + function bnGetPrng() { + return { + nextBytes: function(x) { + for (var i = 0; i < x.length; ++i) { + x[i] = Math.floor(Math.random() * 256); + } + } + }; + } + BigInteger.prototype.chunkSize = bnpChunkSize; + BigInteger.prototype.toRadix = bnpToRadix; + BigInteger.prototype.fromRadix = bnpFromRadix; + BigInteger.prototype.fromNumber = bnpFromNumber; + BigInteger.prototype.bitwiseTo = bnpBitwiseTo; + BigInteger.prototype.changeBit = bnpChangeBit; + BigInteger.prototype.addTo = bnpAddTo; + BigInteger.prototype.dMultiply = bnpDMultiply; + BigInteger.prototype.dAddOffset = bnpDAddOffset; + BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; + BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; + BigInteger.prototype.modInt = bnpModInt; + BigInteger.prototype.millerRabin = bnpMillerRabin; + BigInteger.prototype.clone = bnClone; + BigInteger.prototype.intValue = bnIntValue; + BigInteger.prototype.byteValue = bnByteValue; + BigInteger.prototype.shortValue = bnShortValue; + BigInteger.prototype.signum = bnSigNum; + BigInteger.prototype.toByteArray = bnToByteArray; + BigInteger.prototype.equals = bnEquals; + BigInteger.prototype.min = bnMin; + BigInteger.prototype.max = bnMax; + BigInteger.prototype.and = bnAnd; + BigInteger.prototype.or = bnOr; + BigInteger.prototype.xor = bnXor; + BigInteger.prototype.andNot = bnAndNot; + BigInteger.prototype.not = bnNot; + BigInteger.prototype.shiftLeft = bnShiftLeft; + BigInteger.prototype.shiftRight = bnShiftRight; + BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; + BigInteger.prototype.bitCount = bnBitCount; + BigInteger.prototype.testBit = bnTestBit; + BigInteger.prototype.setBit = bnSetBit; + BigInteger.prototype.clearBit = bnClearBit; + BigInteger.prototype.flipBit = bnFlipBit; + BigInteger.prototype.add = bnAdd; + BigInteger.prototype.subtract = bnSubtract; + BigInteger.prototype.multiply = bnMultiply; + BigInteger.prototype.divide = bnDivide; + BigInteger.prototype.remainder = bnRemainder; + BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; + BigInteger.prototype.modPow = bnModPow; + BigInteger.prototype.modInverse = bnModInverse; + BigInteger.prototype.pow = bnPow; + BigInteger.prototype.gcd = bnGCD; + BigInteger.prototype.isProbablePrime = bnIsProbablePrime; + } +}); + +// node_modules/node-forge/lib/sha1.js +var require_sha1 = __commonJS({ + "node_modules/node-forge/lib/sha1.js"(exports, module2) { + var forge3 = require_forge(); + require_md(); + require_util(); + var sha1 = module2.exports = forge3.sha1 = forge3.sha1 || {}; + forge3.md.sha1 = forge3.md.algorithms.sha1 = sha1; + sha1.create = function() { + if (!_initialized) { + _init(); + } + var _state = null; + var _input = forge3.util.createBuffer(); + var _w = new Array(80); + var md = { + algorithm: "sha1", + blockLength: 64, + digestLength: 20, + messageLength: 0, + fullMessageLength: null, + messageLengthSize: 8 + }; + md.start = function() { + md.messageLength = 0; + md.fullMessageLength = md.messageLength64 = []; + var int32s = md.messageLengthSize / 4; + for (var i = 0; i < int32s; ++i) { + md.fullMessageLength.push(0); + } + _input = forge3.util.createBuffer(); + _state = { + h0: 1732584193, + h1: 4023233417, + h2: 2562383102, + h3: 271733878, + h4: 3285377520 + }; + return md; + }; + md.start(); + md.update = function(msg, encoding) { + if (encoding === "utf8") { + msg = forge3.util.encodeUtf8(msg); + } + var len = msg.length; + md.messageLength += len; + len = [len / 4294967296 >>> 0, len >>> 0]; + for (var i = md.fullMessageLength.length - 1; i >= 0; --i) { + md.fullMessageLength[i] += len[1]; + len[1] = len[0] + (md.fullMessageLength[i] / 4294967296 >>> 0); + md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0; + len[0] = len[1] / 4294967296 >>> 0; + } + _input.putBytes(msg); + _update(_state, _w, _input); + if (_input.read > 2048 || _input.length() === 0) { + _input.compact(); + } + return md; + }; + md.digest = function() { + var finalBlock = forge3.util.createBuffer(); + finalBlock.putBytes(_input.bytes()); + var remaining = md.fullMessageLength[md.fullMessageLength.length - 1] + md.messageLengthSize; + var overflow = remaining & md.blockLength - 1; + finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow)); + var next, carry; + var bits = md.fullMessageLength[0] * 8; + for (var i = 0; i < md.fullMessageLength.length - 1; ++i) { + next = md.fullMessageLength[i + 1] * 8; + carry = next / 4294967296 >>> 0; + bits += carry; + finalBlock.putInt32(bits >>> 0); + bits = next >>> 0; + } + finalBlock.putInt32(bits); + var s2 = { + h0: _state.h0, + h1: _state.h1, + h2: _state.h2, + h3: _state.h3, + h4: _state.h4 + }; + _update(s2, _w, finalBlock); + var rval = forge3.util.createBuffer(); + rval.putInt32(s2.h0); + rval.putInt32(s2.h1); + rval.putInt32(s2.h2); + rval.putInt32(s2.h3); + rval.putInt32(s2.h4); + return rval; + }; + return md; + }; + var _padding = null; + var _initialized = false; + function _init() { + _padding = String.fromCharCode(128); + _padding += forge3.util.fillString(String.fromCharCode(0), 64); + _initialized = true; + } + function _update(s, w, bytes) { + var t, a, b, c, d, e, f, i; + var len = bytes.length(); + while (len >= 64) { + a = s.h0; + b = s.h1; + c = s.h2; + d = s.h3; + e = s.h4; + for (i = 0; i < 16; ++i) { + t = bytes.getInt32(); + w[i] = t; + f = d ^ b & (c ^ d); + t = (a << 5 | a >>> 27) + f + e + 1518500249 + t; + e = d; + d = c; + c = (b << 30 | b >>> 2) >>> 0; + b = a; + a = t; + } + for (; i < 20; ++i) { + t = w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]; + t = t << 1 | t >>> 31; + w[i] = t; + f = d ^ b & (c ^ d); + t = (a << 5 | a >>> 27) + f + e + 1518500249 + t; + e = d; + d = c; + c = (b << 30 | b >>> 2) >>> 0; + b = a; + a = t; + } + for (; i < 32; ++i) { + t = w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]; + t = t << 1 | t >>> 31; + w[i] = t; + f = b ^ c ^ d; + t = (a << 5 | a >>> 27) + f + e + 1859775393 + t; + e = d; + d = c; + c = (b << 30 | b >>> 2) >>> 0; + b = a; + a = t; + } + for (; i < 40; ++i) { + t = w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]; + t = t << 2 | t >>> 30; + w[i] = t; + f = b ^ c ^ d; + t = (a << 5 | a >>> 27) + f + e + 1859775393 + t; + e = d; + d = c; + c = (b << 30 | b >>> 2) >>> 0; + b = a; + a = t; + } + for (; i < 60; ++i) { + t = w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]; + t = t << 2 | t >>> 30; + w[i] = t; + f = b & c | d & (b ^ c); + t = (a << 5 | a >>> 27) + f + e + 2400959708 + t; + e = d; + d = c; + c = (b << 30 | b >>> 2) >>> 0; + b = a; + a = t; + } + for (; i < 80; ++i) { + t = w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]; + t = t << 2 | t >>> 30; + w[i] = t; + f = b ^ c ^ d; + t = (a << 5 | a >>> 27) + f + e + 3395469782 + t; + e = d; + d = c; + c = (b << 30 | b >>> 2) >>> 0; + b = a; + a = t; + } + s.h0 = s.h0 + a | 0; + s.h1 = s.h1 + b | 0; + s.h2 = s.h2 + c | 0; + s.h3 = s.h3 + d | 0; + s.h4 = s.h4 + e | 0; + len -= 64; + } + } + } +}); + +// node_modules/node-forge/lib/pkcs1.js +var require_pkcs1 = __commonJS({ + "node_modules/node-forge/lib/pkcs1.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + require_random(); + require_sha1(); + var pkcs1 = module2.exports = forge3.pkcs1 = forge3.pkcs1 || {}; + pkcs1.encode_rsa_oaep = function(key, message, options) { + var label; + var seed; + var md; + var mgf1Md; + if (typeof options === "string") { + label = options; + seed = arguments[3] || void 0; + md = arguments[4] || void 0; + } else if (options) { + label = options.label || void 0; + seed = options.seed || void 0; + md = options.md || void 0; + if (options.mgf1 && options.mgf1.md) { + mgf1Md = options.mgf1.md; + } + } + if (!md) { + md = forge3.md.sha1.create(); + } else { + md.start(); + } + if (!mgf1Md) { + mgf1Md = md; + } + var keyLength = Math.ceil(key.n.bitLength() / 8); + var maxLength = keyLength - 2 * md.digestLength - 2; + if (message.length > maxLength) { + var error = new Error("RSAES-OAEP input message length is too long."); + error.length = message.length; + error.maxLength = maxLength; + throw error; + } + if (!label) { + label = ""; + } + md.update(label, "raw"); + var lHash = md.digest(); + var PS = ""; + var PS_length = maxLength - message.length; + for (var i = 0; i < PS_length; i++) { + PS += "\0"; + } + var DB = lHash.getBytes() + PS + "" + message; + if (!seed) { + seed = forge3.random.getBytes(md.digestLength); + } else if (seed.length !== md.digestLength) { + var error = new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length."); + error.seedLength = seed.length; + error.digestLength = md.digestLength; + throw error; + } + var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md); + var maskedDB = forge3.util.xorBytes(DB, dbMask, DB.length); + var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md); + var maskedSeed = forge3.util.xorBytes(seed, seedMask, seed.length); + return "\0" + maskedSeed + maskedDB; + }; + pkcs1.decode_rsa_oaep = function(key, em, options) { + var label; + var md; + var mgf1Md; + if (typeof options === "string") { + label = options; + md = arguments[3] || void 0; + } else if (options) { + label = options.label || void 0; + md = options.md || void 0; + if (options.mgf1 && options.mgf1.md) { + mgf1Md = options.mgf1.md; + } + } + var keyLength = Math.ceil(key.n.bitLength() / 8); + if (em.length !== keyLength) { + var error = new Error("RSAES-OAEP encoded message length is invalid."); + error.length = em.length; + error.expectedLength = keyLength; + throw error; + } + if (md === void 0) { + md = forge3.md.sha1.create(); + } else { + md.start(); + } + if (!mgf1Md) { + mgf1Md = md; + } + if (keyLength < 2 * md.digestLength + 2) { + throw new Error("RSAES-OAEP key is too short for the hash function."); + } + if (!label) { + label = ""; + } + md.update(label, "raw"); + var lHash = md.digest().getBytes(); + var y = em.charAt(0); + var maskedSeed = em.substring(1, md.digestLength + 1); + var maskedDB = em.substring(1 + md.digestLength); + var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md); + var seed = forge3.util.xorBytes(maskedSeed, seedMask, maskedSeed.length); + var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md); + var db = forge3.util.xorBytes(maskedDB, dbMask, maskedDB.length); + var lHashPrime = db.substring(0, md.digestLength); + var error = y !== "\0"; + for (var i = 0; i < md.digestLength; ++i) { + error |= lHash.charAt(i) !== lHashPrime.charAt(i); + } + var in_ps = 1; + var index = md.digestLength; + for (var j = md.digestLength; j < db.length; j++) { + var code = db.charCodeAt(j); + var is_0 = code & 1 ^ 1; + var error_mask = in_ps ? 65534 : 0; + error |= code & error_mask; + in_ps = in_ps & is_0; + index += in_ps; + } + if (error || db.charCodeAt(index) !== 1) { + throw new Error("Invalid RSAES-OAEP padding."); + } + return db.substring(index + 1); + }; + function rsa_mgf1(seed, maskLength, hash) { + if (!hash) { + hash = forge3.md.sha1.create(); + } + var t = ""; + var count = Math.ceil(maskLength / hash.digestLength); + for (var i = 0; i < count; ++i) { + var c = String.fromCharCode(i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, i & 255); + hash.start(); + hash.update(seed + c); + t += hash.digest().getBytes(); + } + return t.substring(0, maskLength); + } + } +}); + +// node_modules/node-forge/lib/prime.js +var require_prime = __commonJS({ + "node_modules/node-forge/lib/prime.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + require_jsbn(); + require_random(); + (function() { + if (forge3.prime) { + module2.exports = forge3.prime; + return; + } + var prime = module2.exports = forge3.prime = forge3.prime || {}; + var BigInteger = forge3.jsbn.BigInteger; + var GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2]; + var THIRTY = new BigInteger(null); + THIRTY.fromInt(30); + var op_or = function(x, y) { + return x | y; + }; + prime.generateProbablePrime = function(bits, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options = options || {}; + var algorithm = options.algorithm || "PRIMEINC"; + if (typeof algorithm === "string") { + algorithm = { name: algorithm }; + } + algorithm.options = algorithm.options || {}; + var prng = options.prng || forge3.random; + var rng = { + nextBytes: function(x) { + var b = prng.getBytesSync(x.length); + for (var i = 0; i < x.length; ++i) { + x[i] = b.charCodeAt(i); + } + } + }; + if (algorithm.name === "PRIMEINC") { + return primeincFindPrime(bits, rng, algorithm.options, callback); + } + throw new Error("Invalid prime generation algorithm: " + algorithm.name); + }; + function primeincFindPrime(bits, rng, options, callback) { + if ("workers" in options) { + return primeincFindPrimeWithWorkers(bits, rng, options, callback); + } + return primeincFindPrimeWithoutWorkers(bits, rng, options, callback); + } + function primeincFindPrimeWithoutWorkers(bits, rng, options, callback) { + var num = generateRandom(bits, rng); + var deltaIdx = 0; + var mrTests = getMillerRabinTests(num.bitLength()); + if ("millerRabinTests" in options) { + mrTests = options.millerRabinTests; + } + var maxBlockTime = 10; + if ("maxBlockTime" in options) { + maxBlockTime = options.maxBlockTime; + } + _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback); + } + function _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) { + var start = +new Date(); + do { + if (num.bitLength() > bits) { + num = generateRandom(bits, rng); + } + if (num.isProbablePrime(mrTests)) { + return callback(null, num); + } + num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0); + } while (maxBlockTime < 0 || +new Date() - start < maxBlockTime); + forge3.util.setImmediate(function() { + _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback); + }); + } + function primeincFindPrimeWithWorkers(bits, rng, options, callback) { + if (typeof Worker === "undefined") { + return primeincFindPrimeWithoutWorkers(bits, rng, options, callback); + } + var num = generateRandom(bits, rng); + var numWorkers = options.workers; + var workLoad = options.workLoad || 100; + var range = workLoad * 30 / 8; + var workerScript = options.workerScript || "forge/prime.worker.js"; + if (numWorkers === -1) { + return forge3.util.estimateCores(function(err, cores) { + if (err) { + cores = 2; + } + numWorkers = cores - 1; + generate(); + }); + } + generate(); + function generate() { + numWorkers = Math.max(1, numWorkers); + var workers = []; + for (var i = 0; i < numWorkers; ++i) { + workers[i] = new Worker(workerScript); + } + var running = numWorkers; + for (var i = 0; i < numWorkers; ++i) { + workers[i].addEventListener("message", workerMessage); + } + var found = false; + function workerMessage(e) { + if (found) { + return; + } + --running; + var data = e.data; + if (data.found) { + for (var i2 = 0; i2 < workers.length; ++i2) { + workers[i2].terminate(); + } + found = true; + return callback(null, new BigInteger(data.prime, 16)); + } + if (num.bitLength() > bits) { + num = generateRandom(bits, rng); + } + var hex = num.toString(16); + e.target.postMessage({ + hex, + workLoad + }); + num.dAddOffset(range, 0); + } + } + } + function generateRandom(bits, rng) { + var num = new BigInteger(bits, rng); + var bits1 = bits - 1; + if (!num.testBit(bits1)) { + num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num); + } + num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0); + return num; + } + function getMillerRabinTests(bits) { + if (bits <= 100) + return 27; + if (bits <= 150) + return 18; + if (bits <= 200) + return 15; + if (bits <= 250) + return 12; + if (bits <= 300) + return 9; + if (bits <= 350) + return 8; + if (bits <= 400) + return 7; + if (bits <= 500) + return 6; + if (bits <= 600) + return 5; + if (bits <= 800) + return 4; + if (bits <= 1250) + return 3; + return 2; + } + })(); + } +}); + +// node_modules/node-forge/lib/rsa.js +var require_rsa = __commonJS({ + "node_modules/node-forge/lib/rsa.js"(exports, module2) { + var forge3 = require_forge(); + require_asn1(); + require_jsbn(); + require_oids(); + require_pkcs1(); + require_prime(); + require_random(); + require_util(); + if (typeof BigInteger === "undefined") { + BigInteger = forge3.jsbn.BigInteger; + } + var BigInteger; + var _crypto = forge3.util.isNodejs ? require("crypto") : null; + var asn1 = forge3.asn1; + var util = forge3.util; + forge3.pki = forge3.pki || {}; + module2.exports = forge3.pki.rsa = forge3.rsa = forge3.rsa || {}; + var pki2 = forge3.pki; + var GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2]; + var privateKeyValidator = { + name: "PrivateKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PrivateKeyInfo.version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyVersion" + }, { + name: "PrivateKeyInfo.privateKeyAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "privateKeyOid" + }] + }, { + name: "PrivateKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "privateKey" + }] + }; + var rsaPrivateKeyValidator = { + name: "RSAPrivateKey", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "RSAPrivateKey.version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyVersion" + }, { + name: "RSAPrivateKey.modulus", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyModulus" + }, { + name: "RSAPrivateKey.publicExponent", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyPublicExponent" + }, { + name: "RSAPrivateKey.privateExponent", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyPrivateExponent" + }, { + name: "RSAPrivateKey.prime1", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyPrime1" + }, { + name: "RSAPrivateKey.prime2", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyPrime2" + }, { + name: "RSAPrivateKey.exponent1", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyExponent1" + }, { + name: "RSAPrivateKey.exponent2", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyExponent2" + }, { + name: "RSAPrivateKey.coefficient", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyCoefficient" + }] + }; + var rsaPublicKeyValidator = { + name: "RSAPublicKey", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "RSAPublicKey.modulus", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "publicKeyModulus" + }, { + name: "RSAPublicKey.exponent", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "publicKeyExponent" + }] + }; + var publicKeyValidator = forge3.pki.rsa.publicKeyValidator = { + name: "SubjectPublicKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "subjectPublicKeyInfo", + value: [{ + name: "SubjectPublicKeyInfo.AlgorithmIdentifier", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "publicKeyOid" + }] + }, { + name: "SubjectPublicKeyInfo.subjectPublicKey", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.BITSTRING, + constructed: false, + value: [{ + name: "SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + optional: true, + captureAsn1: "rsaPublicKey" + }] + }] + }; + var digestInfoValidator = { + name: "DigestInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "DigestInfo.DigestAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "DigestInfo.DigestAlgorithm.algorithmIdentifier", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "algorithmIdentifier" + }, { + name: "DigestInfo.DigestAlgorithm.parameters", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.NULL, + capture: "parameters", + optional: true, + constructed: false + }] + }, { + name: "DigestInfo.digest", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "digest" + }] + }; + var emsaPkcs1v15encode = function(md) { + var oid; + if (md.algorithm in pki2.oids) { + oid = pki2.oids[md.algorithm]; + } else { + var error = new Error("Unknown message digest algorithm."); + error.algorithm = md.algorithm; + throw error; + } + var oidBytes = asn1.oidToDer(oid).getBytes(); + var digestInfo = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var digestAlgorithm = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + digestAlgorithm.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, oidBytes)); + digestAlgorithm.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "")); + var digest = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, md.digest().getBytes()); + digestInfo.value.push(digestAlgorithm); + digestInfo.value.push(digest); + return asn1.toDer(digestInfo).getBytes(); + }; + var _modPow = function(x, key, pub) { + if (pub) { + return x.modPow(key.e, key.n); + } + if (!key.p || !key.q) { + return x.modPow(key.d, key.n); + } + if (!key.dP) { + key.dP = key.d.mod(key.p.subtract(BigInteger.ONE)); + } + if (!key.dQ) { + key.dQ = key.d.mod(key.q.subtract(BigInteger.ONE)); + } + if (!key.qInv) { + key.qInv = key.q.modInverse(key.p); + } + var r; + do { + r = new BigInteger(forge3.util.bytesToHex(forge3.random.getBytes(key.n.bitLength() / 8)), 16); + } while (r.compareTo(key.n) >= 0 || !r.gcd(key.n).equals(BigInteger.ONE)); + x = x.multiply(r.modPow(key.e, key.n)).mod(key.n); + var xp = x.mod(key.p).modPow(key.dP, key.p); + var xq = x.mod(key.q).modPow(key.dQ, key.q); + while (xp.compareTo(xq) < 0) { + xp = xp.add(key.p); + } + var y = xp.subtract(xq).multiply(key.qInv).mod(key.p).multiply(key.q).add(xq); + y = y.multiply(r.modInverse(key.n)).mod(key.n); + return y; + }; + pki2.rsa.encrypt = function(m, key, bt) { + var pub = bt; + var eb; + var k = Math.ceil(key.n.bitLength() / 8); + if (bt !== false && bt !== true) { + pub = bt === 2; + eb = _encodePkcs1_v1_5(m, key, bt); + } else { + eb = forge3.util.createBuffer(); + eb.putBytes(m); + } + var x = new BigInteger(eb.toHex(), 16); + var y = _modPow(x, key, pub); + var yhex = y.toString(16); + var ed = forge3.util.createBuffer(); + var zeros = k - Math.ceil(yhex.length / 2); + while (zeros > 0) { + ed.putByte(0); + --zeros; + } + ed.putBytes(forge3.util.hexToBytes(yhex)); + return ed.getBytes(); + }; + pki2.rsa.decrypt = function(ed, key, pub, ml) { + var k = Math.ceil(key.n.bitLength() / 8); + if (ed.length !== k) { + var error = new Error("Encrypted message length is invalid."); + error.length = ed.length; + error.expected = k; + throw error; + } + var y = new BigInteger(forge3.util.createBuffer(ed).toHex(), 16); + if (y.compareTo(key.n) >= 0) { + throw new Error("Encrypted message is invalid."); + } + var x = _modPow(y, key, pub); + var xhex = x.toString(16); + var eb = forge3.util.createBuffer(); + var zeros = k - Math.ceil(xhex.length / 2); + while (zeros > 0) { + eb.putByte(0); + --zeros; + } + eb.putBytes(forge3.util.hexToBytes(xhex)); + if (ml !== false) { + return _decodePkcs1_v1_5(eb.getBytes(), key, pub); + } + return eb.getBytes(); + }; + pki2.rsa.createKeyPairGenerationState = function(bits, e, options) { + if (typeof bits === "string") { + bits = parseInt(bits, 10); + } + bits = bits || 2048; + options = options || {}; + var prng = options.prng || forge3.random; + var rng = { + nextBytes: function(x) { + var b = prng.getBytesSync(x.length); + for (var i = 0; i < x.length; ++i) { + x[i] = b.charCodeAt(i); + } + } + }; + var algorithm = options.algorithm || "PRIMEINC"; + var rval; + if (algorithm === "PRIMEINC") { + rval = { + algorithm, + state: 0, + bits, + rng, + eInt: e || 65537, + e: new BigInteger(null), + p: null, + q: null, + qBits: bits >> 1, + pBits: bits - (bits >> 1), + pqState: 0, + num: null, + keys: null + }; + rval.e.fromInt(rval.eInt); + } else { + throw new Error("Invalid key generation algorithm: " + algorithm); + } + return rval; + }; + pki2.rsa.stepKeyPairGenerationState = function(state, n) { + if (!("algorithm" in state)) { + state.algorithm = "PRIMEINC"; + } + var THIRTY = new BigInteger(null); + THIRTY.fromInt(30); + var deltaIdx = 0; + var op_or = function(x, y) { + return x | y; + }; + var t1 = +new Date(); + var t2; + var total = 0; + while (state.keys === null && (n <= 0 || total < n)) { + if (state.state === 0) { + var bits = state.p === null ? state.pBits : state.qBits; + var bits1 = bits - 1; + if (state.pqState === 0) { + state.num = new BigInteger(bits, state.rng); + if (!state.num.testBit(bits1)) { + state.num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, state.num); + } + state.num.dAddOffset(31 - state.num.mod(THIRTY).byteValue(), 0); + deltaIdx = 0; + ++state.pqState; + } else if (state.pqState === 1) { + if (state.num.bitLength() > bits) { + state.pqState = 0; + } else if (state.num.isProbablePrime(_getMillerRabinTests(state.num.bitLength()))) { + ++state.pqState; + } else { + state.num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0); + } + } else if (state.pqState === 2) { + state.pqState = state.num.subtract(BigInteger.ONE).gcd(state.e).compareTo(BigInteger.ONE) === 0 ? 3 : 0; + } else if (state.pqState === 3) { + state.pqState = 0; + if (state.p === null) { + state.p = state.num; + } else { + state.q = state.num; + } + if (state.p !== null && state.q !== null) { + ++state.state; + } + state.num = null; + } + } else if (state.state === 1) { + if (state.p.compareTo(state.q) < 0) { + state.num = state.p; + state.p = state.q; + state.q = state.num; + } + ++state.state; + } else if (state.state === 2) { + state.p1 = state.p.subtract(BigInteger.ONE); + state.q1 = state.q.subtract(BigInteger.ONE); + state.phi = state.p1.multiply(state.q1); + ++state.state; + } else if (state.state === 3) { + if (state.phi.gcd(state.e).compareTo(BigInteger.ONE) === 0) { + ++state.state; + } else { + state.p = null; + state.q = null; + state.state = 0; + } + } else if (state.state === 4) { + state.n = state.p.multiply(state.q); + if (state.n.bitLength() === state.bits) { + ++state.state; + } else { + state.q = null; + state.state = 0; + } + } else if (state.state === 5) { + var d = state.e.modInverse(state.phi); + state.keys = { + privateKey: pki2.rsa.setPrivateKey(state.n, state.e, d, state.p, state.q, d.mod(state.p1), d.mod(state.q1), state.q.modInverse(state.p)), + publicKey: pki2.rsa.setPublicKey(state.n, state.e) + }; + } + t2 = +new Date(); + total += t2 - t1; + t1 = t2; + } + return state.keys !== null; + }; + pki2.rsa.generateKeyPair = function(bits, e, options, callback) { + if (arguments.length === 1) { + if (typeof bits === "object") { + options = bits; + bits = void 0; + } else if (typeof bits === "function") { + callback = bits; + bits = void 0; + } + } else if (arguments.length === 2) { + if (typeof bits === "number") { + if (typeof e === "function") { + callback = e; + e = void 0; + } else if (typeof e !== "number") { + options = e; + e = void 0; + } + } else { + options = bits; + callback = e; + bits = void 0; + e = void 0; + } + } else if (arguments.length === 3) { + if (typeof e === "number") { + if (typeof options === "function") { + callback = options; + options = void 0; + } + } else { + callback = options; + options = e; + e = void 0; + } + } + options = options || {}; + if (bits === void 0) { + bits = options.bits || 2048; + } + if (e === void 0) { + e = options.e || 65537; + } + if (!forge3.options.usePureJavaScript && !options.prng && bits >= 256 && bits <= 16384 && (e === 65537 || e === 3)) { + if (callback) { + if (_detectNodeCrypto("generateKeyPair")) { + return _crypto.generateKeyPair("rsa", { + modulusLength: bits, + publicExponent: e, + publicKeyEncoding: { + type: "spki", + format: "pem" + }, + privateKeyEncoding: { + type: "pkcs8", + format: "pem" + } + }, function(err, pub, priv) { + if (err) { + return callback(err); + } + callback(null, { + privateKey: pki2.privateKeyFromPem(priv), + publicKey: pki2.publicKeyFromPem(pub) + }); + }); + } + if (_detectSubtleCrypto("generateKey") && _detectSubtleCrypto("exportKey")) { + return util.globalScope.crypto.subtle.generateKey({ + name: "RSASSA-PKCS1-v1_5", + modulusLength: bits, + publicExponent: _intToUint8Array(e), + hash: { name: "SHA-256" } + }, true, ["sign", "verify"]).then(function(pair) { + return util.globalScope.crypto.subtle.exportKey("pkcs8", pair.privateKey); + }).then(void 0, function(err) { + callback(err); + }).then(function(pkcs8) { + if (pkcs8) { + var privateKey = pki2.privateKeyFromAsn1(asn1.fromDer(forge3.util.createBuffer(pkcs8))); + callback(null, { + privateKey, + publicKey: pki2.setRsaPublicKey(privateKey.n, privateKey.e) + }); + } + }); + } + if (_detectSubtleMsCrypto("generateKey") && _detectSubtleMsCrypto("exportKey")) { + var genOp = util.globalScope.msCrypto.subtle.generateKey({ + name: "RSASSA-PKCS1-v1_5", + modulusLength: bits, + publicExponent: _intToUint8Array(e), + hash: { name: "SHA-256" } + }, true, ["sign", "verify"]); + genOp.oncomplete = function(e2) { + var pair = e2.target.result; + var exportOp = util.globalScope.msCrypto.subtle.exportKey("pkcs8", pair.privateKey); + exportOp.oncomplete = function(e3) { + var pkcs8 = e3.target.result; + var privateKey = pki2.privateKeyFromAsn1(asn1.fromDer(forge3.util.createBuffer(pkcs8))); + callback(null, { + privateKey, + publicKey: pki2.setRsaPublicKey(privateKey.n, privateKey.e) + }); + }; + exportOp.onerror = function(err) { + callback(err); + }; + }; + genOp.onerror = function(err) { + callback(err); + }; + return; + } + } else { + if (_detectNodeCrypto("generateKeyPairSync")) { + var keypair = _crypto.generateKeyPairSync("rsa", { + modulusLength: bits, + publicExponent: e, + publicKeyEncoding: { + type: "spki", + format: "pem" + }, + privateKeyEncoding: { + type: "pkcs8", + format: "pem" + } + }); + return { + privateKey: pki2.privateKeyFromPem(keypair.privateKey), + publicKey: pki2.publicKeyFromPem(keypair.publicKey) + }; + } + } + } + var state = pki2.rsa.createKeyPairGenerationState(bits, e, options); + if (!callback) { + pki2.rsa.stepKeyPairGenerationState(state, 0); + return state.keys; + } + _generateKeyPair(state, options, callback); + }; + pki2.setRsaPublicKey = pki2.rsa.setPublicKey = function(n, e) { + var key = { + n, + e + }; + key.encrypt = function(data, scheme, schemeOptions) { + if (typeof scheme === "string") { + scheme = scheme.toUpperCase(); + } else if (scheme === void 0) { + scheme = "RSAES-PKCS1-V1_5"; + } + if (scheme === "RSAES-PKCS1-V1_5") { + scheme = { + encode: function(m, key2, pub) { + return _encodePkcs1_v1_5(m, key2, 2).getBytes(); + } + }; + } else if (scheme === "RSA-OAEP" || scheme === "RSAES-OAEP") { + scheme = { + encode: function(m, key2) { + return forge3.pkcs1.encode_rsa_oaep(key2, m, schemeOptions); + } + }; + } else if (["RAW", "NONE", "NULL", null].indexOf(scheme) !== -1) { + scheme = { encode: function(e3) { + return e3; + } }; + } else if (typeof scheme === "string") { + throw new Error('Unsupported encryption scheme: "' + scheme + '".'); + } + var e2 = scheme.encode(data, key, true); + return pki2.rsa.encrypt(e2, key, true); + }; + key.verify = function(digest, signature, scheme, options) { + if (typeof scheme === "string") { + scheme = scheme.toUpperCase(); + } else if (scheme === void 0) { + scheme = "RSASSA-PKCS1-V1_5"; + } + if (options === void 0) { + options = { + _parseAllDigestBytes: true + }; + } + if (!("_parseAllDigestBytes" in options)) { + options._parseAllDigestBytes = true; + } + if (scheme === "RSASSA-PKCS1-V1_5") { + scheme = { + verify: function(digest2, d2) { + d2 = _decodePkcs1_v1_5(d2, key, true); + var obj = asn1.fromDer(d2, { + parseAllBytes: options._parseAllDigestBytes + }); + var capture = {}; + var errors = []; + if (!asn1.validate(obj, digestInfoValidator, capture, errors)) { + var error = new Error("ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value."); + error.errors = errors; + throw error; + } + var oid = asn1.derToOid(capture.algorithmIdentifier); + if (!(oid === forge3.oids.md2 || oid === forge3.oids.md5 || oid === forge3.oids.sha1 || oid === forge3.oids.sha224 || oid === forge3.oids.sha256 || oid === forge3.oids.sha384 || oid === forge3.oids.sha512 || oid === forge3.oids["sha512-224"] || oid === forge3.oids["sha512-256"])) { + var error = new Error("Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier."); + error.oid = oid; + throw error; + } + if (oid === forge3.oids.md2 || oid === forge3.oids.md5) { + if (!("parameters" in capture)) { + throw new Error("ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 DigestInfo value. Missing algorithm identifer NULL parameters."); + } + } + return digest2 === capture.digest; + } + }; + } else if (scheme === "NONE" || scheme === "NULL" || scheme === null) { + scheme = { + verify: function(digest2, d2) { + d2 = _decodePkcs1_v1_5(d2, key, true); + return digest2 === d2; + } + }; + } + var d = pki2.rsa.decrypt(signature, key, true, false); + return scheme.verify(digest, d, key.n.bitLength()); + }; + return key; + }; + pki2.setRsaPrivateKey = pki2.rsa.setPrivateKey = function(n, e, d, p, q, dP, dQ, qInv) { + var key = { + n, + e, + d, + p, + q, + dP, + dQ, + qInv + }; + key.decrypt = function(data, scheme, schemeOptions) { + if (typeof scheme === "string") { + scheme = scheme.toUpperCase(); + } else if (scheme === void 0) { + scheme = "RSAES-PKCS1-V1_5"; + } + var d2 = pki2.rsa.decrypt(data, key, false, false); + if (scheme === "RSAES-PKCS1-V1_5") { + scheme = { decode: _decodePkcs1_v1_5 }; + } else if (scheme === "RSA-OAEP" || scheme === "RSAES-OAEP") { + scheme = { + decode: function(d3, key2) { + return forge3.pkcs1.decode_rsa_oaep(key2, d3, schemeOptions); + } + }; + } else if (["RAW", "NONE", "NULL", null].indexOf(scheme) !== -1) { + scheme = { decode: function(d3) { + return d3; + } }; + } else { + throw new Error('Unsupported encryption scheme: "' + scheme + '".'); + } + return scheme.decode(d2, key, false); + }; + key.sign = function(md, scheme) { + var bt = false; + if (typeof scheme === "string") { + scheme = scheme.toUpperCase(); + } + if (scheme === void 0 || scheme === "RSASSA-PKCS1-V1_5") { + scheme = { encode: emsaPkcs1v15encode }; + bt = 1; + } else if (scheme === "NONE" || scheme === "NULL" || scheme === null) { + scheme = { encode: function() { + return md; + } }; + bt = 1; + } + var d2 = scheme.encode(md, key.n.bitLength()); + return pki2.rsa.encrypt(d2, key, bt); + }; + return key; + }; + pki2.wrapRsaPrivateKey = function(rsaKey) { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(0).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.rsaEncryption).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, asn1.toDer(rsaKey).getBytes()) + ]); + }; + pki2.privateKeyFromAsn1 = function(obj) { + var capture = {}; + var errors = []; + if (asn1.validate(obj, privateKeyValidator, capture, errors)) { + obj = asn1.fromDer(forge3.util.createBuffer(capture.privateKey)); + } + capture = {}; + errors = []; + if (!asn1.validate(obj, rsaPrivateKeyValidator, capture, errors)) { + var error = new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey."); + error.errors = errors; + throw error; + } + var n, e, d, p, q, dP, dQ, qInv; + n = forge3.util.createBuffer(capture.privateKeyModulus).toHex(); + e = forge3.util.createBuffer(capture.privateKeyPublicExponent).toHex(); + d = forge3.util.createBuffer(capture.privateKeyPrivateExponent).toHex(); + p = forge3.util.createBuffer(capture.privateKeyPrime1).toHex(); + q = forge3.util.createBuffer(capture.privateKeyPrime2).toHex(); + dP = forge3.util.createBuffer(capture.privateKeyExponent1).toHex(); + dQ = forge3.util.createBuffer(capture.privateKeyExponent2).toHex(); + qInv = forge3.util.createBuffer(capture.privateKeyCoefficient).toHex(); + return pki2.setRsaPrivateKey(new BigInteger(n, 16), new BigInteger(e, 16), new BigInteger(d, 16), new BigInteger(p, 16), new BigInteger(q, 16), new BigInteger(dP, 16), new BigInteger(dQ, 16), new BigInteger(qInv, 16)); + }; + pki2.privateKeyToAsn1 = pki2.privateKeyToRSAPrivateKey = function(key) { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(0).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.n)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.e)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.d)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.p)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.q)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.dP)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.dQ)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.qInv)) + ]); + }; + pki2.publicKeyFromAsn1 = function(obj) { + var capture = {}; + var errors = []; + if (asn1.validate(obj, publicKeyValidator, capture, errors)) { + var oid = asn1.derToOid(capture.publicKeyOid); + if (oid !== pki2.oids.rsaEncryption) { + var error = new Error("Cannot read public key. Unknown OID."); + error.oid = oid; + throw error; + } + obj = capture.rsaPublicKey; + } + errors = []; + if (!asn1.validate(obj, rsaPublicKeyValidator, capture, errors)) { + var error = new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey."); + error.errors = errors; + throw error; + } + var n = forge3.util.createBuffer(capture.publicKeyModulus).toHex(); + var e = forge3.util.createBuffer(capture.publicKeyExponent).toHex(); + return pki2.setRsaPublicKey(new BigInteger(n, 16), new BigInteger(e, 16)); + }; + pki2.publicKeyToAsn1 = pki2.publicKeyToSubjectPublicKeyInfo = function(key) { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.rsaEncryption).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, [ + pki2.publicKeyToRSAPublicKey(key) + ]) + ]); + }; + pki2.publicKeyToRSAPublicKey = function(key) { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.n)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, _bnToBytes(key.e)) + ]); + }; + function _encodePkcs1_v1_5(m, key, bt) { + var eb = forge3.util.createBuffer(); + var k = Math.ceil(key.n.bitLength() / 8); + if (m.length > k - 11) { + var error = new Error("Message is too long for PKCS#1 v1.5 padding."); + error.length = m.length; + error.max = k - 11; + throw error; + } + eb.putByte(0); + eb.putByte(bt); + var padNum = k - 3 - m.length; + var padByte; + if (bt === 0 || bt === 1) { + padByte = bt === 0 ? 0 : 255; + for (var i = 0; i < padNum; ++i) { + eb.putByte(padByte); + } + } else { + while (padNum > 0) { + var numZeros = 0; + var padBytes = forge3.random.getBytes(padNum); + for (var i = 0; i < padNum; ++i) { + padByte = padBytes.charCodeAt(i); + if (padByte === 0) { + ++numZeros; + } else { + eb.putByte(padByte); + } + } + padNum = numZeros; + } + } + eb.putByte(0); + eb.putBytes(m); + return eb; + } + function _decodePkcs1_v1_5(em, key, pub, ml) { + var k = Math.ceil(key.n.bitLength() / 8); + var eb = forge3.util.createBuffer(em); + var first = eb.getByte(); + var bt = eb.getByte(); + if (first !== 0 || pub && bt !== 0 && bt !== 1 || !pub && bt != 2 || pub && bt === 0 && typeof ml === "undefined") { + throw new Error("Encryption block is invalid."); + } + var padNum = 0; + if (bt === 0) { + padNum = k - 3 - ml; + for (var i = 0; i < padNum; ++i) { + if (eb.getByte() !== 0) { + throw new Error("Encryption block is invalid."); + } + } + } else if (bt === 1) { + padNum = 0; + while (eb.length() > 1) { + if (eb.getByte() !== 255) { + --eb.read; + break; + } + ++padNum; + } + } else if (bt === 2) { + padNum = 0; + while (eb.length() > 1) { + if (eb.getByte() === 0) { + --eb.read; + break; + } + ++padNum; + } + } + var zero = eb.getByte(); + if (zero !== 0 || padNum !== k - 3 - eb.length()) { + throw new Error("Encryption block is invalid."); + } + return eb.getBytes(); + } + function _generateKeyPair(state, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } + options = options || {}; + var opts = { + algorithm: { + name: options.algorithm || "PRIMEINC", + options: { + workers: options.workers || 2, + workLoad: options.workLoad || 100, + workerScript: options.workerScript + } + } + }; + if ("prng" in options) { + opts.prng = options.prng; + } + generate(); + function generate() { + getPrime(state.pBits, function(err, num) { + if (err) { + return callback(err); + } + state.p = num; + if (state.q !== null) { + return finish(err, state.q); + } + getPrime(state.qBits, finish); + }); + } + function getPrime(bits, callback2) { + forge3.prime.generateProbablePrime(bits, opts, callback2); + } + function finish(err, num) { + if (err) { + return callback(err); + } + state.q = num; + if (state.p.compareTo(state.q) < 0) { + var tmp = state.p; + state.p = state.q; + state.q = tmp; + } + if (state.p.subtract(BigInteger.ONE).gcd(state.e).compareTo(BigInteger.ONE) !== 0) { + state.p = null; + generate(); + return; + } + if (state.q.subtract(BigInteger.ONE).gcd(state.e).compareTo(BigInteger.ONE) !== 0) { + state.q = null; + getPrime(state.qBits, finish); + return; + } + state.p1 = state.p.subtract(BigInteger.ONE); + state.q1 = state.q.subtract(BigInteger.ONE); + state.phi = state.p1.multiply(state.q1); + if (state.phi.gcd(state.e).compareTo(BigInteger.ONE) !== 0) { + state.p = state.q = null; + generate(); + return; + } + state.n = state.p.multiply(state.q); + if (state.n.bitLength() !== state.bits) { + state.q = null; + getPrime(state.qBits, finish); + return; + } + var d = state.e.modInverse(state.phi); + state.keys = { + privateKey: pki2.rsa.setPrivateKey(state.n, state.e, d, state.p, state.q, d.mod(state.p1), d.mod(state.q1), state.q.modInverse(state.p)), + publicKey: pki2.rsa.setPublicKey(state.n, state.e) + }; + callback(null, state.keys); + } + } + function _bnToBytes(b) { + var hex = b.toString(16); + if (hex[0] >= "8") { + hex = "00" + hex; + } + var bytes = forge3.util.hexToBytes(hex); + if (bytes.length > 1 && (bytes.charCodeAt(0) === 0 && (bytes.charCodeAt(1) & 128) === 0 || bytes.charCodeAt(0) === 255 && (bytes.charCodeAt(1) & 128) === 128)) { + return bytes.substr(1); + } + return bytes; + } + function _getMillerRabinTests(bits) { + if (bits <= 100) + return 27; + if (bits <= 150) + return 18; + if (bits <= 200) + return 15; + if (bits <= 250) + return 12; + if (bits <= 300) + return 9; + if (bits <= 350) + return 8; + if (bits <= 400) + return 7; + if (bits <= 500) + return 6; + if (bits <= 600) + return 5; + if (bits <= 800) + return 4; + if (bits <= 1250) + return 3; + return 2; + } + function _detectNodeCrypto(fn) { + return forge3.util.isNodejs && typeof _crypto[fn] === "function"; + } + function _detectSubtleCrypto(fn) { + return typeof util.globalScope !== "undefined" && typeof util.globalScope.crypto === "object" && typeof util.globalScope.crypto.subtle === "object" && typeof util.globalScope.crypto.subtle[fn] === "function"; + } + function _detectSubtleMsCrypto(fn) { + return typeof util.globalScope !== "undefined" && typeof util.globalScope.msCrypto === "object" && typeof util.globalScope.msCrypto.subtle === "object" && typeof util.globalScope.msCrypto.subtle[fn] === "function"; + } + function _intToUint8Array(x) { + var bytes = forge3.util.hexToBytes(x.toString(16)); + var buffer = new Uint8Array(bytes.length); + for (var i = 0; i < bytes.length; ++i) { + buffer[i] = bytes.charCodeAt(i); + } + return buffer; + } + } +}); + +// node_modules/node-forge/lib/pbe.js +var require_pbe = __commonJS({ + "node_modules/node-forge/lib/pbe.js"(exports, module2) { + var forge3 = require_forge(); + require_aes(); + require_asn1(); + require_des(); + require_md(); + require_oids(); + require_pbkdf2(); + require_pem(); + require_random(); + require_rc2(); + require_rsa(); + require_util(); + if (typeof BigInteger === "undefined") { + BigInteger = forge3.jsbn.BigInteger; + } + var BigInteger; + var asn1 = forge3.asn1; + var pki2 = forge3.pki = forge3.pki || {}; + module2.exports = pki2.pbe = forge3.pbe = forge3.pbe || {}; + var oids = pki2.oids; + var encryptedPrivateKeyValidator = { + name: "EncryptedPrivateKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "EncryptedPrivateKeyInfo.encryptionAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "encryptionOid" + }, { + name: "AlgorithmIdentifier.parameters", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "encryptionParams" + }] + }, { + name: "EncryptedPrivateKeyInfo.encryptedData", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "encryptedData" + }] + }; + var PBES2AlgorithmsValidator = { + name: "PBES2Algorithms", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PBES2Algorithms.keyDerivationFunc", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PBES2Algorithms.keyDerivationFunc.oid", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "kdfOid" + }, { + name: "PBES2Algorithms.params", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PBES2Algorithms.params.salt", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "kdfSalt" + }, { + name: "PBES2Algorithms.params.iterationCount", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "kdfIterationCount" + }, { + name: "PBES2Algorithms.params.keyLength", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + optional: true, + capture: "keyLength" + }, { + name: "PBES2Algorithms.params.prf", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + optional: true, + value: [{ + name: "PBES2Algorithms.params.prf.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "prfOid" + }] + }] + }] + }, { + name: "PBES2Algorithms.encryptionScheme", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PBES2Algorithms.encryptionScheme.oid", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "encOid" + }, { + name: "PBES2Algorithms.encryptionScheme.iv", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "encIv" + }] + }] + }; + var pkcs12PbeParamsValidator = { + name: "pkcs-12PbeParams", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "pkcs-12PbeParams.salt", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "salt" + }, { + name: "pkcs-12PbeParams.iterations", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "iterations" + }] + }; + pki2.encryptPrivateKeyInfo = function(obj, password, options) { + options = options || {}; + options.saltSize = options.saltSize || 8; + options.count = options.count || 2048; + options.algorithm = options.algorithm || "aes128"; + options.prfAlgorithm = options.prfAlgorithm || "sha1"; + var salt = forge3.random.getBytesSync(options.saltSize); + var count = options.count; + var countBytes = asn1.integerToDer(count); + var dkLen; + var encryptionAlgorithm; + var encryptedData; + if (options.algorithm.indexOf("aes") === 0 || options.algorithm === "des") { + var ivLen, encOid, cipherFn; + switch (options.algorithm) { + case "aes128": + dkLen = 16; + ivLen = 16; + encOid = oids["aes128-CBC"]; + cipherFn = forge3.aes.createEncryptionCipher; + break; + case "aes192": + dkLen = 24; + ivLen = 16; + encOid = oids["aes192-CBC"]; + cipherFn = forge3.aes.createEncryptionCipher; + break; + case "aes256": + dkLen = 32; + ivLen = 16; + encOid = oids["aes256-CBC"]; + cipherFn = forge3.aes.createEncryptionCipher; + break; + case "des": + dkLen = 8; + ivLen = 8; + encOid = oids["desCBC"]; + cipherFn = forge3.des.createEncryptionCipher; + break; + default: + var error = new Error("Cannot encrypt private key. Unknown encryption algorithm."); + error.algorithm = options.algorithm; + throw error; + } + var prfAlgorithm = "hmacWith" + options.prfAlgorithm.toUpperCase(); + var md = prfAlgorithmToMessageDigest(prfAlgorithm); + var dk = forge3.pkcs5.pbkdf2(password, salt, count, dkLen, md); + var iv = forge3.random.getBytesSync(ivLen); + var cipher = cipherFn(dk); + cipher.start(iv); + cipher.update(asn1.toDer(obj)); + cipher.finish(); + encryptedData = cipher.output.getBytes(); + var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm); + encryptionAlgorithm = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(oids["pkcs5PBES2"]).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(oids["pkcs5PBKDF2"]).getBytes()), + params + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(encOid).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv) + ]) + ]) + ]); + } else if (options.algorithm === "3des") { + dkLen = 24; + var saltBytes = new forge3.util.ByteBuffer(salt); + var dk = pki2.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen); + var iv = pki2.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen); + var cipher = forge3.des.createEncryptionCipher(dk); + cipher.start(iv); + cipher.update(asn1.toDer(obj)); + cipher.finish(); + encryptedData = cipher.output.getBytes(); + encryptionAlgorithm = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, countBytes.getBytes()) + ]) + ]); + } else { + var error = new Error("Cannot encrypt private key. Unknown encryption algorithm."); + error.algorithm = options.algorithm; + throw error; + } + var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + encryptionAlgorithm, + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData) + ]); + return rval; + }; + pki2.decryptPrivateKeyInfo = function(obj, password) { + var rval = null; + var capture = {}; + var errors = []; + if (!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) { + var error = new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo."); + error.errors = errors; + throw error; + } + var oid = asn1.derToOid(capture.encryptionOid); + var cipher = pki2.pbe.getCipher(oid, capture.encryptionParams, password); + var encrypted = forge3.util.createBuffer(capture.encryptedData); + cipher.update(encrypted); + if (cipher.finish()) { + rval = asn1.fromDer(cipher.output); + } + return rval; + }; + pki2.encryptedPrivateKeyToPem = function(epki, maxline) { + var msg = { + type: "ENCRYPTED PRIVATE KEY", + body: asn1.toDer(epki).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + pki2.encryptedPrivateKeyFromPem = function(pem) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "ENCRYPTED PRIVATE KEY") { + var error = new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted."); + } + return asn1.fromDer(msg.body); + }; + pki2.encryptRsaPrivateKey = function(rsaKey, password, options) { + options = options || {}; + if (!options.legacy) { + var rval = pki2.wrapRsaPrivateKey(pki2.privateKeyToAsn1(rsaKey)); + rval = pki2.encryptPrivateKeyInfo(rval, password, options); + return pki2.encryptedPrivateKeyToPem(rval); + } + var algorithm; + var iv; + var dkLen; + var cipherFn; + switch (options.algorithm) { + case "aes128": + algorithm = "AES-128-CBC"; + dkLen = 16; + iv = forge3.random.getBytesSync(16); + cipherFn = forge3.aes.createEncryptionCipher; + break; + case "aes192": + algorithm = "AES-192-CBC"; + dkLen = 24; + iv = forge3.random.getBytesSync(16); + cipherFn = forge3.aes.createEncryptionCipher; + break; + case "aes256": + algorithm = "AES-256-CBC"; + dkLen = 32; + iv = forge3.random.getBytesSync(16); + cipherFn = forge3.aes.createEncryptionCipher; + break; + case "3des": + algorithm = "DES-EDE3-CBC"; + dkLen = 24; + iv = forge3.random.getBytesSync(8); + cipherFn = forge3.des.createEncryptionCipher; + break; + case "des": + algorithm = "DES-CBC"; + dkLen = 8; + iv = forge3.random.getBytesSync(8); + cipherFn = forge3.des.createEncryptionCipher; + break; + default: + var error = new Error('Could not encrypt RSA private key; unsupported encryption algorithm "' + options.algorithm + '".'); + error.algorithm = options.algorithm; + throw error; + } + var dk = forge3.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen); + var cipher = cipherFn(dk); + cipher.start(iv); + cipher.update(asn1.toDer(pki2.privateKeyToAsn1(rsaKey))); + cipher.finish(); + var msg = { + type: "RSA PRIVATE KEY", + procType: { + version: "4", + type: "ENCRYPTED" + }, + dekInfo: { + algorithm, + parameters: forge3.util.bytesToHex(iv).toUpperCase() + }, + body: cipher.output.getBytes() + }; + return forge3.pem.encode(msg); + }; + pki2.decryptRsaPrivateKey = function(pem, password) { + var rval = null; + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "ENCRYPTED PRIVATE KEY" && msg.type !== "PRIVATE KEY" && msg.type !== "RSA PRIVATE KEY") { + var error = new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".'); + error.headerType = error; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + var dkLen; + var cipherFn; + switch (msg.dekInfo.algorithm) { + case "DES-CBC": + dkLen = 8; + cipherFn = forge3.des.createDecryptionCipher; + break; + case "DES-EDE3-CBC": + dkLen = 24; + cipherFn = forge3.des.createDecryptionCipher; + break; + case "AES-128-CBC": + dkLen = 16; + cipherFn = forge3.aes.createDecryptionCipher; + break; + case "AES-192-CBC": + dkLen = 24; + cipherFn = forge3.aes.createDecryptionCipher; + break; + case "AES-256-CBC": + dkLen = 32; + cipherFn = forge3.aes.createDecryptionCipher; + break; + case "RC2-40-CBC": + dkLen = 5; + cipherFn = function(key) { + return forge3.rc2.createDecryptionCipher(key, 40); + }; + break; + case "RC2-64-CBC": + dkLen = 8; + cipherFn = function(key) { + return forge3.rc2.createDecryptionCipher(key, 64); + }; + break; + case "RC2-128-CBC": + dkLen = 16; + cipherFn = function(key) { + return forge3.rc2.createDecryptionCipher(key, 128); + }; + break; + default: + var error = new Error('Could not decrypt private key; unsupported encryption algorithm "' + msg.dekInfo.algorithm + '".'); + error.algorithm = msg.dekInfo.algorithm; + throw error; + } + var iv = forge3.util.hexToBytes(msg.dekInfo.parameters); + var dk = forge3.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen); + var cipher = cipherFn(dk); + cipher.start(iv); + cipher.update(forge3.util.createBuffer(msg.body)); + if (cipher.finish()) { + rval = cipher.output.getBytes(); + } else { + return rval; + } + } else { + rval = msg.body; + } + if (msg.type === "ENCRYPTED PRIVATE KEY") { + rval = pki2.decryptPrivateKeyInfo(asn1.fromDer(rval), password); + } else { + rval = asn1.fromDer(rval); + } + if (rval !== null) { + rval = pki2.privateKeyFromAsn1(rval); + } + return rval; + }; + pki2.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) { + var j, l; + if (typeof md === "undefined" || md === null) { + if (!("sha1" in forge3.md)) { + throw new Error('"sha1" hash algorithm unavailable.'); + } + md = forge3.md.sha1.create(); + } + var u = md.digestLength; + var v = md.blockLength; + var result = new forge3.util.ByteBuffer(); + var passBuf = new forge3.util.ByteBuffer(); + if (password !== null && password !== void 0) { + for (l = 0; l < password.length; l++) { + passBuf.putInt16(password.charCodeAt(l)); + } + passBuf.putInt16(0); + } + var p = passBuf.length(); + var s = salt.length(); + var D = new forge3.util.ByteBuffer(); + D.fillWithByte(id, v); + var Slen = v * Math.ceil(s / v); + var S = new forge3.util.ByteBuffer(); + for (l = 0; l < Slen; l++) { + S.putByte(salt.at(l % s)); + } + var Plen = v * Math.ceil(p / v); + var P = new forge3.util.ByteBuffer(); + for (l = 0; l < Plen; l++) { + P.putByte(passBuf.at(l % p)); + } + var I = S; + I.putBuffer(P); + var c = Math.ceil(n / u); + for (var i = 1; i <= c; i++) { + var buf = new forge3.util.ByteBuffer(); + buf.putBytes(D.bytes()); + buf.putBytes(I.bytes()); + for (var round = 0; round < iter; round++) { + md.start(); + md.update(buf.getBytes()); + buf = md.digest(); + } + var B = new forge3.util.ByteBuffer(); + for (l = 0; l < v; l++) { + B.putByte(buf.at(l % u)); + } + var k = Math.ceil(s / v) + Math.ceil(p / v); + var Inew = new forge3.util.ByteBuffer(); + for (j = 0; j < k; j++) { + var chunk = new forge3.util.ByteBuffer(I.getBytes(v)); + var x = 511; + for (l = B.length() - 1; l >= 0; l--) { + x = x >> 8; + x += B.at(l) + chunk.at(l); + chunk.setAt(l, x & 255); + } + Inew.putBuffer(chunk); + } + I = Inew; + result.putBuffer(buf); + } + result.truncate(result.length() - n); + return result; + }; + pki2.pbe.getCipher = function(oid, params, password) { + switch (oid) { + case pki2.oids["pkcs5PBES2"]: + return pki2.pbe.getCipherForPBES2(oid, params, password); + case pki2.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]: + case pki2.oids["pbewithSHAAnd40BitRC2-CBC"]: + return pki2.pbe.getCipherForPKCS12PBE(oid, params, password); + default: + var error = new Error("Cannot read encrypted PBE data block. Unsupported OID."); + error.oid = oid; + error.supportedOids = [ + "pkcs5PBES2", + "pbeWithSHAAnd3-KeyTripleDES-CBC", + "pbewithSHAAnd40BitRC2-CBC" + ]; + throw error; + } + }; + pki2.pbe.getCipherForPBES2 = function(oid, params, password) { + var capture = {}; + var errors = []; + if (!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) { + var error = new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo."); + error.errors = errors; + throw error; + } + oid = asn1.derToOid(capture.kdfOid); + if (oid !== pki2.oids["pkcs5PBKDF2"]) { + var error = new Error("Cannot read encrypted private key. Unsupported key derivation function OID."); + error.oid = oid; + error.supportedOids = ["pkcs5PBKDF2"]; + throw error; + } + oid = asn1.derToOid(capture.encOid); + if (oid !== pki2.oids["aes128-CBC"] && oid !== pki2.oids["aes192-CBC"] && oid !== pki2.oids["aes256-CBC"] && oid !== pki2.oids["des-EDE3-CBC"] && oid !== pki2.oids["desCBC"]) { + var error = new Error("Cannot read encrypted private key. Unsupported encryption scheme OID."); + error.oid = oid; + error.supportedOids = [ + "aes128-CBC", + "aes192-CBC", + "aes256-CBC", + "des-EDE3-CBC", + "desCBC" + ]; + throw error; + } + var salt = capture.kdfSalt; + var count = forge3.util.createBuffer(capture.kdfIterationCount); + count = count.getInt(count.length() << 3); + var dkLen; + var cipherFn; + switch (pki2.oids[oid]) { + case "aes128-CBC": + dkLen = 16; + cipherFn = forge3.aes.createDecryptionCipher; + break; + case "aes192-CBC": + dkLen = 24; + cipherFn = forge3.aes.createDecryptionCipher; + break; + case "aes256-CBC": + dkLen = 32; + cipherFn = forge3.aes.createDecryptionCipher; + break; + case "des-EDE3-CBC": + dkLen = 24; + cipherFn = forge3.des.createDecryptionCipher; + break; + case "desCBC": + dkLen = 8; + cipherFn = forge3.des.createDecryptionCipher; + break; + } + var md = prfOidToMessageDigest(capture.prfOid); + var dk = forge3.pkcs5.pbkdf2(password, salt, count, dkLen, md); + var iv = capture.encIv; + var cipher = cipherFn(dk); + cipher.start(iv); + return cipher; + }; + pki2.pbe.getCipherForPKCS12PBE = function(oid, params, password) { + var capture = {}; + var errors = []; + if (!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) { + var error = new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo."); + error.errors = errors; + throw error; + } + var salt = forge3.util.createBuffer(capture.salt); + var count = forge3.util.createBuffer(capture.iterations); + count = count.getInt(count.length() << 3); + var dkLen, dIvLen, cipherFn; + switch (oid) { + case pki2.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]: + dkLen = 24; + dIvLen = 8; + cipherFn = forge3.des.startDecrypting; + break; + case pki2.oids["pbewithSHAAnd40BitRC2-CBC"]: + dkLen = 5; + dIvLen = 8; + cipherFn = function(key2, iv2) { + var cipher = forge3.rc2.createDecryptionCipher(key2, 40); + cipher.start(iv2, null); + return cipher; + }; + break; + default: + var error = new Error("Cannot read PKCS #12 PBE data block. Unsupported OID."); + error.oid = oid; + throw error; + } + var md = prfOidToMessageDigest(capture.prfOid); + var key = pki2.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md); + md.start(); + var iv = pki2.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md); + return cipherFn(key, iv); + }; + pki2.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) { + if (typeof md === "undefined" || md === null) { + if (!("md5" in forge3.md)) { + throw new Error('"md5" hash algorithm unavailable.'); + } + md = forge3.md.md5.create(); + } + if (salt === null) { + salt = ""; + } + var digests = [hash(md, password + salt)]; + for (var length = 16, i = 1; length < dkLen; ++i, length += 16) { + digests.push(hash(md, digests[i - 1] + password + salt)); + } + return digests.join("").substr(0, dkLen); + }; + function hash(md, bytes) { + return md.start().update(bytes).digest().getBytes(); + } + function prfOidToMessageDigest(prfOid) { + var prfAlgorithm; + if (!prfOid) { + prfAlgorithm = "hmacWithSHA1"; + } else { + prfAlgorithm = pki2.oids[asn1.derToOid(prfOid)]; + if (!prfAlgorithm) { + var error = new Error("Unsupported PRF OID."); + error.oid = prfOid; + error.supported = [ + "hmacWithSHA1", + "hmacWithSHA224", + "hmacWithSHA256", + "hmacWithSHA384", + "hmacWithSHA512" + ]; + throw error; + } + } + return prfAlgorithmToMessageDigest(prfAlgorithm); + } + function prfAlgorithmToMessageDigest(prfAlgorithm) { + var factory = forge3.md; + switch (prfAlgorithm) { + case "hmacWithSHA224": + factory = forge3.md.sha512; + case "hmacWithSHA1": + case "hmacWithSHA256": + case "hmacWithSHA384": + case "hmacWithSHA512": + prfAlgorithm = prfAlgorithm.substr(8).toLowerCase(); + break; + default: + var error = new Error("Unsupported PRF algorithm."); + error.algorithm = prfAlgorithm; + error.supported = [ + "hmacWithSHA1", + "hmacWithSHA224", + "hmacWithSHA256", + "hmacWithSHA384", + "hmacWithSHA512" + ]; + throw error; + } + if (!factory || !(prfAlgorithm in factory)) { + throw new Error("Unknown hash algorithm: " + prfAlgorithm); + } + return factory[prfAlgorithm].create(); + } + function createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) { + var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, countBytes.getBytes()) + ]); + if (prfAlgorithm !== "hmacWithSHA1") { + params.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, forge3.util.hexToBytes(dkLen.toString(16))), asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids[prfAlgorithm]).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ])); + } + return params; + } + } +}); + +// node_modules/node-forge/lib/pkcs7asn1.js +var require_pkcs7asn1 = __commonJS({ + "node_modules/node-forge/lib/pkcs7asn1.js"(exports, module2) { + var forge3 = require_forge(); + require_asn1(); + require_util(); + var asn1 = forge3.asn1; + var p7v = module2.exports = forge3.pkcs7asn1 = forge3.pkcs7asn1 || {}; + forge3.pkcs7 = forge3.pkcs7 || {}; + forge3.pkcs7.asn1 = p7v; + var contentInfoValidator = { + name: "ContentInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "ContentInfo.ContentType", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "contentType" + }, { + name: "ContentInfo.content", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + constructed: true, + optional: true, + captureAsn1: "content" + }] + }; + p7v.contentInfoValidator = contentInfoValidator; + var encryptedContentInfoValidator = { + name: "EncryptedContentInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "EncryptedContentInfo.contentType", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "contentType" + }, { + name: "EncryptedContentInfo.contentEncryptionAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "EncryptedContentInfo.contentEncryptionAlgorithm.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "encAlgorithm" + }, { + name: "EncryptedContentInfo.contentEncryptionAlgorithm.parameter", + tagClass: asn1.Class.UNIVERSAL, + captureAsn1: "encParameter" + }] + }, { + name: "EncryptedContentInfo.encryptedContent", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + capture: "encryptedContent", + captureAsn1: "encryptedContentAsn1" + }] + }; + p7v.envelopedDataValidator = { + name: "EnvelopedData", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "EnvelopedData.Version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "version" + }, { + name: "EnvelopedData.RecipientInfos", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SET, + constructed: true, + captureAsn1: "recipientInfos" + }].concat(encryptedContentInfoValidator) + }; + p7v.encryptedDataValidator = { + name: "EncryptedData", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "EncryptedData.Version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "version" + }].concat(encryptedContentInfoValidator) + }; + var signerValidator = { + name: "SignerInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "SignerInfo.version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false + }, { + name: "SignerInfo.issuerAndSerialNumber", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "SignerInfo.issuerAndSerialNumber.issuer", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "issuer" + }, { + name: "SignerInfo.issuerAndSerialNumber.serialNumber", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "serial" + }] + }, { + name: "SignerInfo.digestAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "SignerInfo.digestAlgorithm.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "digestAlgorithm" + }, { + name: "SignerInfo.digestAlgorithm.parameter", + tagClass: asn1.Class.UNIVERSAL, + constructed: false, + captureAsn1: "digestParameter", + optional: true + }] + }, { + name: "SignerInfo.authenticatedAttributes", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + constructed: true, + optional: true, + capture: "authenticatedAttributes" + }, { + name: "SignerInfo.digestEncryptionAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + capture: "signatureAlgorithm" + }, { + name: "SignerInfo.encryptedDigest", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "signature" + }, { + name: "SignerInfo.unauthenticatedAttributes", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 1, + constructed: true, + optional: true, + capture: "unauthenticatedAttributes" + }] + }; + p7v.signedDataValidator = { + name: "SignedData", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [ + { + name: "SignedData.Version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "version" + }, + { + name: "SignedData.DigestAlgorithms", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SET, + constructed: true, + captureAsn1: "digestAlgorithms" + }, + contentInfoValidator, + { + name: "SignedData.Certificates", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + optional: true, + captureAsn1: "certificates" + }, + { + name: "SignedData.CertificateRevocationLists", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 1, + optional: true, + captureAsn1: "crls" + }, + { + name: "SignedData.SignerInfos", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SET, + capture: "signerInfos", + optional: true, + value: [signerValidator] + } + ] + }; + p7v.recipientInfoValidator = { + name: "RecipientInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "RecipientInfo.version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "version" + }, { + name: "RecipientInfo.issuerAndSerial", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "RecipientInfo.issuerAndSerial.issuer", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "issuer" + }, { + name: "RecipientInfo.issuerAndSerial.serialNumber", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "serial" + }] + }, { + name: "RecipientInfo.keyEncryptionAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "RecipientInfo.keyEncryptionAlgorithm.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "encAlgorithm" + }, { + name: "RecipientInfo.keyEncryptionAlgorithm.parameter", + tagClass: asn1.Class.UNIVERSAL, + constructed: false, + captureAsn1: "encParameter", + optional: true + }] + }, { + name: "RecipientInfo.encryptedKey", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "encKey" + }] + }; + } +}); + +// node_modules/node-forge/lib/mgf1.js +var require_mgf1 = __commonJS({ + "node_modules/node-forge/lib/mgf1.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + forge3.mgf = forge3.mgf || {}; + var mgf1 = module2.exports = forge3.mgf.mgf1 = forge3.mgf1 = forge3.mgf1 || {}; + mgf1.create = function(md) { + var mgf = { + generate: function(seed, maskLen) { + var t = new forge3.util.ByteBuffer(); + var len = Math.ceil(maskLen / md.digestLength); + for (var i = 0; i < len; i++) { + var c = new forge3.util.ByteBuffer(); + c.putInt32(i); + md.start(); + md.update(seed + c.getBytes()); + t.putBuffer(md.digest()); + } + t.truncate(t.length() - maskLen); + return t.getBytes(); + } + }; + return mgf; + }; + } +}); + +// node_modules/node-forge/lib/mgf.js +var require_mgf = __commonJS({ + "node_modules/node-forge/lib/mgf.js"(exports, module2) { + var forge3 = require_forge(); + require_mgf1(); + module2.exports = forge3.mgf = forge3.mgf || {}; + forge3.mgf.mgf1 = forge3.mgf1; + } +}); + +// node_modules/node-forge/lib/pss.js +var require_pss = __commonJS({ + "node_modules/node-forge/lib/pss.js"(exports, module2) { + var forge3 = require_forge(); + require_random(); + require_util(); + var pss = module2.exports = forge3.pss = forge3.pss || {}; + pss.create = function(options) { + if (arguments.length === 3) { + options = { + md: arguments[0], + mgf: arguments[1], + saltLength: arguments[2] + }; + } + var hash = options.md; + var mgf = options.mgf; + var hLen = hash.digestLength; + var salt_ = options.salt || null; + if (typeof salt_ === "string") { + salt_ = forge3.util.createBuffer(salt_); + } + var sLen; + if ("saltLength" in options) { + sLen = options.saltLength; + } else if (salt_ !== null) { + sLen = salt_.length(); + } else { + throw new Error("Salt length not specified or specific salt not given."); + } + if (salt_ !== null && salt_.length() !== sLen) { + throw new Error("Given salt length does not match length of given salt."); + } + var prng = options.prng || forge3.random; + var pssobj = {}; + pssobj.encode = function(md, modBits) { + var i; + var emBits = modBits - 1; + var emLen = Math.ceil(emBits / 8); + var mHash = md.digest().getBytes(); + if (emLen < hLen + sLen + 2) { + throw new Error("Message is too long to encrypt."); + } + var salt; + if (salt_ === null) { + salt = prng.getBytesSync(sLen); + } else { + salt = salt_.bytes(); + } + var m_ = new forge3.util.ByteBuffer(); + m_.fillWithByte(0, 8); + m_.putBytes(mHash); + m_.putBytes(salt); + hash.start(); + hash.update(m_.getBytes()); + var h = hash.digest().getBytes(); + var ps = new forge3.util.ByteBuffer(); + ps.fillWithByte(0, emLen - sLen - hLen - 2); + ps.putByte(1); + ps.putBytes(salt); + var db = ps.getBytes(); + var maskLen = emLen - hLen - 1; + var dbMask = mgf.generate(h, maskLen); + var maskedDB = ""; + for (i = 0; i < maskLen; i++) { + maskedDB += String.fromCharCode(db.charCodeAt(i) ^ dbMask.charCodeAt(i)); + } + var mask = 65280 >> 8 * emLen - emBits & 255; + maskedDB = String.fromCharCode(maskedDB.charCodeAt(0) & ~mask) + maskedDB.substr(1); + return maskedDB + h + String.fromCharCode(188); + }; + pssobj.verify = function(mHash, em, modBits) { + var i; + var emBits = modBits - 1; + var emLen = Math.ceil(emBits / 8); + em = em.substr(-emLen); + if (emLen < hLen + sLen + 2) { + throw new Error("Inconsistent parameters to PSS signature verification."); + } + if (em.charCodeAt(emLen - 1) !== 188) { + throw new Error("Encoded message does not end in 0xBC."); + } + var maskLen = emLen - hLen - 1; + var maskedDB = em.substr(0, maskLen); + var h = em.substr(maskLen, hLen); + var mask = 65280 >> 8 * emLen - emBits & 255; + if ((maskedDB.charCodeAt(0) & mask) !== 0) { + throw new Error("Bits beyond keysize not zero as expected."); + } + var dbMask = mgf.generate(h, maskLen); + var db = ""; + for (i = 0; i < maskLen; i++) { + db += String.fromCharCode(maskedDB.charCodeAt(i) ^ dbMask.charCodeAt(i)); + } + db = String.fromCharCode(db.charCodeAt(0) & ~mask) + db.substr(1); + var checkLen = emLen - hLen - sLen - 2; + for (i = 0; i < checkLen; i++) { + if (db.charCodeAt(i) !== 0) { + throw new Error("Leftmost octets not zero as expected"); + } + } + if (db.charCodeAt(checkLen) !== 1) { + throw new Error("Inconsistent PSS signature, 0x01 marker not found"); + } + var salt = db.substr(-sLen); + var m_ = new forge3.util.ByteBuffer(); + m_.fillWithByte(0, 8); + m_.putBytes(mHash); + m_.putBytes(salt); + hash.start(); + hash.update(m_.getBytes()); + var h_ = hash.digest().getBytes(); + return h === h_; + }; + return pssobj; + }; + } +}); + +// node_modules/node-forge/lib/x509.js +var require_x509 = __commonJS({ + "node_modules/node-forge/lib/x509.js"(exports, module2) { + var forge3 = require_forge(); + require_aes(); + require_asn1(); + require_des(); + require_md(); + require_mgf(); + require_oids(); + require_pem(); + require_pss(); + require_rsa(); + require_util(); + var asn1 = forge3.asn1; + var pki2 = module2.exports = forge3.pki = forge3.pki || {}; + var oids = pki2.oids; + var _shortNames = {}; + _shortNames["CN"] = oids["commonName"]; + _shortNames["commonName"] = "CN"; + _shortNames["C"] = oids["countryName"]; + _shortNames["countryName"] = "C"; + _shortNames["L"] = oids["localityName"]; + _shortNames["localityName"] = "L"; + _shortNames["ST"] = oids["stateOrProvinceName"]; + _shortNames["stateOrProvinceName"] = "ST"; + _shortNames["O"] = oids["organizationName"]; + _shortNames["organizationName"] = "O"; + _shortNames["OU"] = oids["organizationalUnitName"]; + _shortNames["organizationalUnitName"] = "OU"; + _shortNames["E"] = oids["emailAddress"]; + _shortNames["emailAddress"] = "E"; + var publicKeyValidator = forge3.pki.rsa.publicKeyValidator; + var x509CertificateValidator = { + name: "Certificate", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "Certificate.TBSCertificate", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "tbsCertificate", + value: [ + { + name: "Certificate.TBSCertificate.version", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + constructed: true, + optional: true, + value: [{ + name: "Certificate.TBSCertificate.version.integer", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "certVersion" + }] + }, + { + name: "Certificate.TBSCertificate.serialNumber", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "certSerialNumber" + }, + { + name: "Certificate.TBSCertificate.signature", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "Certificate.TBSCertificate.signature.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "certinfoSignatureOid" + }, { + name: "Certificate.TBSCertificate.signature.parameters", + tagClass: asn1.Class.UNIVERSAL, + optional: true, + captureAsn1: "certinfoSignatureParams" + }] + }, + { + name: "Certificate.TBSCertificate.issuer", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "certIssuer" + }, + { + name: "Certificate.TBSCertificate.validity", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "Certificate.TBSCertificate.validity.notBefore (utc)", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.UTCTIME, + constructed: false, + optional: true, + capture: "certValidity1UTCTime" + }, { + name: "Certificate.TBSCertificate.validity.notBefore (generalized)", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.GENERALIZEDTIME, + constructed: false, + optional: true, + capture: "certValidity2GeneralizedTime" + }, { + name: "Certificate.TBSCertificate.validity.notAfter (utc)", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.UTCTIME, + constructed: false, + optional: true, + capture: "certValidity3UTCTime" + }, { + name: "Certificate.TBSCertificate.validity.notAfter (generalized)", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.GENERALIZEDTIME, + constructed: false, + optional: true, + capture: "certValidity4GeneralizedTime" + }] + }, + { + name: "Certificate.TBSCertificate.subject", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "certSubject" + }, + publicKeyValidator, + { + name: "Certificate.TBSCertificate.issuerUniqueID", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 1, + constructed: true, + optional: true, + value: [{ + name: "Certificate.TBSCertificate.issuerUniqueID.id", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.BITSTRING, + constructed: false, + captureBitStringValue: "certIssuerUniqueId" + }] + }, + { + name: "Certificate.TBSCertificate.subjectUniqueID", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 2, + constructed: true, + optional: true, + value: [{ + name: "Certificate.TBSCertificate.subjectUniqueID.id", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.BITSTRING, + constructed: false, + captureBitStringValue: "certSubjectUniqueId" + }] + }, + { + name: "Certificate.TBSCertificate.extensions", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 3, + constructed: true, + captureAsn1: "certExtensions", + optional: true + } + ] + }, { + name: "Certificate.signatureAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "Certificate.signatureAlgorithm.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "certSignatureOid" + }, { + name: "Certificate.TBSCertificate.signature.parameters", + tagClass: asn1.Class.UNIVERSAL, + optional: true, + captureAsn1: "certSignatureParams" + }] + }, { + name: "Certificate.signatureValue", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.BITSTRING, + constructed: false, + captureBitStringValue: "certSignature" + }] + }; + var rsassaPssParameterValidator = { + name: "rsapss", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "rsapss.hashAlgorithm", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + constructed: true, + value: [{ + name: "rsapss.hashAlgorithm.AlgorithmIdentifier", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Class.SEQUENCE, + constructed: true, + optional: true, + value: [{ + name: "rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "hashOid" + }] + }] + }, { + name: "rsapss.maskGenAlgorithm", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 1, + constructed: true, + value: [{ + name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Class.SEQUENCE, + constructed: true, + optional: true, + value: [{ + name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "maskGenOid" + }, { + name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier.params", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "maskGenHashOid" + }] + }] + }] + }, { + name: "rsapss.saltLength", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 2, + optional: true, + value: [{ + name: "rsapss.saltLength.saltLength", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Class.INTEGER, + constructed: false, + capture: "saltLength" + }] + }, { + name: "rsapss.trailerField", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 3, + optional: true, + value: [{ + name: "rsapss.trailer.trailer", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Class.INTEGER, + constructed: false, + capture: "trailer" + }] + }] + }; + var certificationRequestInfoValidator = { + name: "CertificationRequestInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "certificationRequestInfo", + value: [ + { + name: "CertificationRequestInfo.integer", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "certificationRequestInfoVersion" + }, + { + name: "CertificationRequestInfo.subject", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "certificationRequestInfoSubject" + }, + publicKeyValidator, + { + name: "CertificationRequestInfo.attributes", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + type: 0, + constructed: true, + optional: true, + capture: "certificationRequestInfoAttributes", + value: [{ + name: "CertificationRequestInfo.attributes", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "CertificationRequestInfo.attributes.type", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false + }, { + name: "CertificationRequestInfo.attributes.value", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SET, + constructed: true + }] + }] + } + ] + }; + var certificationRequestValidator = { + name: "CertificationRequest", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "csr", + value: [ + certificationRequestInfoValidator, + { + name: "CertificationRequest.signatureAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "CertificationRequest.signatureAlgorithm.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "csrSignatureOid" + }, { + name: "CertificationRequest.signatureAlgorithm.parameters", + tagClass: asn1.Class.UNIVERSAL, + optional: true, + captureAsn1: "csrSignatureParams" + }] + }, + { + name: "CertificationRequest.signature", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.BITSTRING, + constructed: false, + captureBitStringValue: "csrSignature" + } + ] + }; + pki2.RDNAttributesAsArray = function(rdn, md) { + var rval = []; + var set, attr, obj; + for (var si = 0; si < rdn.value.length; ++si) { + set = rdn.value[si]; + for (var i = 0; i < set.value.length; ++i) { + obj = {}; + attr = set.value[i]; + obj.type = asn1.derToOid(attr.value[0].value); + obj.value = attr.value[1].value; + obj.valueTagClass = attr.value[1].type; + if (obj.type in oids) { + obj.name = oids[obj.type]; + if (obj.name in _shortNames) { + obj.shortName = _shortNames[obj.name]; + } + } + if (md) { + md.update(obj.type); + md.update(obj.value); + } + rval.push(obj); + } + } + return rval; + }; + pki2.CRIAttributesAsArray = function(attributes) { + var rval = []; + for (var si = 0; si < attributes.length; ++si) { + var seq = attributes[si]; + var type = asn1.derToOid(seq.value[0].value); + var values = seq.value[1].value; + for (var vi = 0; vi < values.length; ++vi) { + var obj = {}; + obj.type = type; + obj.value = values[vi].value; + obj.valueTagClass = values[vi].type; + if (obj.type in oids) { + obj.name = oids[obj.type]; + if (obj.name in _shortNames) { + obj.shortName = _shortNames[obj.name]; + } + } + if (obj.type === oids.extensionRequest) { + obj.extensions = []; + for (var ei = 0; ei < obj.value.length; ++ei) { + obj.extensions.push(pki2.certificateExtensionFromAsn1(obj.value[ei])); + } + } + rval.push(obj); + } + } + return rval; + }; + function _getAttribute(obj, options) { + if (typeof options === "string") { + options = { shortName: options }; + } + var rval = null; + var attr; + for (var i = 0; rval === null && i < obj.attributes.length; ++i) { + attr = obj.attributes[i]; + if (options.type && options.type === attr.type) { + rval = attr; + } else if (options.name && options.name === attr.name) { + rval = attr; + } else if (options.shortName && options.shortName === attr.shortName) { + rval = attr; + } + } + return rval; + } + var _readSignatureParameters = function(oid, obj, fillDefaults) { + var params = {}; + if (oid !== oids["RSASSA-PSS"]) { + return params; + } + if (fillDefaults) { + params = { + hash: { + algorithmOid: oids["sha1"] + }, + mgf: { + algorithmOid: oids["mgf1"], + hash: { + algorithmOid: oids["sha1"] + } + }, + saltLength: 20 + }; + } + var capture = {}; + var errors = []; + if (!asn1.validate(obj, rsassaPssParameterValidator, capture, errors)) { + var error = new Error("Cannot read RSASSA-PSS parameter block."); + error.errors = errors; + throw error; + } + if (capture.hashOid !== void 0) { + params.hash = params.hash || {}; + params.hash.algorithmOid = asn1.derToOid(capture.hashOid); + } + if (capture.maskGenOid !== void 0) { + params.mgf = params.mgf || {}; + params.mgf.algorithmOid = asn1.derToOid(capture.maskGenOid); + params.mgf.hash = params.mgf.hash || {}; + params.mgf.hash.algorithmOid = asn1.derToOid(capture.maskGenHashOid); + } + if (capture.saltLength !== void 0) { + params.saltLength = capture.saltLength.charCodeAt(0); + } + return params; + }; + var _createSignatureDigest = function(options) { + switch (oids[options.signatureOid]) { + case "sha1WithRSAEncryption": + case "sha1WithRSASignature": + return forge3.md.sha1.create(); + case "md5WithRSAEncryption": + return forge3.md.md5.create(); + case "sha256WithRSAEncryption": + return forge3.md.sha256.create(); + case "sha384WithRSAEncryption": + return forge3.md.sha384.create(); + case "sha512WithRSAEncryption": + return forge3.md.sha512.create(); + case "RSASSA-PSS": + return forge3.md.sha256.create(); + default: + var error = new Error("Could not compute " + options.type + " digest. Unknown signature OID."); + error.signatureOid = options.signatureOid; + throw error; + } + }; + var _verifySignature = function(options) { + var cert = options.certificate; + var scheme; + switch (cert.signatureOid) { + case oids.sha1WithRSAEncryption: + case oids.sha1WithRSASignature: + break; + case oids["RSASSA-PSS"]: + var hash, mgf; + hash = oids[cert.signatureParameters.mgf.hash.algorithmOid]; + if (hash === void 0 || forge3.md[hash] === void 0) { + var error = new Error("Unsupported MGF hash function."); + error.oid = cert.signatureParameters.mgf.hash.algorithmOid; + error.name = hash; + throw error; + } + mgf = oids[cert.signatureParameters.mgf.algorithmOid]; + if (mgf === void 0 || forge3.mgf[mgf] === void 0) { + var error = new Error("Unsupported MGF function."); + error.oid = cert.signatureParameters.mgf.algorithmOid; + error.name = mgf; + throw error; + } + mgf = forge3.mgf[mgf].create(forge3.md[hash].create()); + hash = oids[cert.signatureParameters.hash.algorithmOid]; + if (hash === void 0 || forge3.md[hash] === void 0) { + var error = new Error("Unsupported RSASSA-PSS hash function."); + error.oid = cert.signatureParameters.hash.algorithmOid; + error.name = hash; + throw error; + } + scheme = forge3.pss.create(forge3.md[hash].create(), mgf, cert.signatureParameters.saltLength); + break; + } + return cert.publicKey.verify(options.md.digest().getBytes(), options.signature, scheme); + }; + pki2.certificateFromPem = function(pem, computeHash, strict) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "CERTIFICATE" && msg.type !== "X509 CERTIFICATE" && msg.type !== "TRUSTED CERTIFICATE") { + var error = new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert certificate from PEM; PEM is encrypted."); + } + var obj = asn1.fromDer(msg.body, strict); + return pki2.certificateFromAsn1(obj, computeHash); + }; + pki2.certificateToPem = function(cert, maxline) { + var msg = { + type: "CERTIFICATE", + body: asn1.toDer(pki2.certificateToAsn1(cert)).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + pki2.publicKeyFromPem = function(pem) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "PUBLIC KEY" && msg.type !== "RSA PUBLIC KEY") { + var error = new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert public key from PEM; PEM is encrypted."); + } + var obj = asn1.fromDer(msg.body); + return pki2.publicKeyFromAsn1(obj); + }; + pki2.publicKeyToPem = function(key, maxline) { + var msg = { + type: "PUBLIC KEY", + body: asn1.toDer(pki2.publicKeyToAsn1(key)).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + pki2.publicKeyToRSAPublicKeyPem = function(key, maxline) { + var msg = { + type: "RSA PUBLIC KEY", + body: asn1.toDer(pki2.publicKeyToRSAPublicKey(key)).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + pki2.getPublicKeyFingerprint = function(key, options) { + options = options || {}; + var md = options.md || forge3.md.sha1.create(); + var type = options.type || "RSAPublicKey"; + var bytes; + switch (type) { + case "RSAPublicKey": + bytes = asn1.toDer(pki2.publicKeyToRSAPublicKey(key)).getBytes(); + break; + case "SubjectPublicKeyInfo": + bytes = asn1.toDer(pki2.publicKeyToAsn1(key)).getBytes(); + break; + default: + throw new Error('Unknown fingerprint type "' + options.type + '".'); + } + md.start(); + md.update(bytes); + var digest = md.digest(); + if (options.encoding === "hex") { + var hex = digest.toHex(); + if (options.delimiter) { + return hex.match(/.{2}/g).join(options.delimiter); + } + return hex; + } else if (options.encoding === "binary") { + return digest.getBytes(); + } else if (options.encoding) { + throw new Error('Unknown encoding "' + options.encoding + '".'); + } + return digest; + }; + pki2.certificationRequestFromPem = function(pem, computeHash, strict) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "CERTIFICATE REQUEST") { + var error = new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert certification request from PEM; PEM is encrypted."); + } + var obj = asn1.fromDer(msg.body, strict); + return pki2.certificationRequestFromAsn1(obj, computeHash); + }; + pki2.certificationRequestToPem = function(csr, maxline) { + var msg = { + type: "CERTIFICATE REQUEST", + body: asn1.toDer(pki2.certificationRequestToAsn1(csr)).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + pki2.createCertificate = function() { + var cert = {}; + cert.version = 2; + cert.serialNumber = "00"; + cert.signatureOid = null; + cert.signature = null; + cert.siginfo = {}; + cert.siginfo.algorithmOid = null; + cert.validity = {}; + cert.validity.notBefore = new Date(); + cert.validity.notAfter = new Date(); + cert.issuer = {}; + cert.issuer.getField = function(sn) { + return _getAttribute(cert.issuer, sn); + }; + cert.issuer.addField = function(attr) { + _fillMissingFields([attr]); + cert.issuer.attributes.push(attr); + }; + cert.issuer.attributes = []; + cert.issuer.hash = null; + cert.subject = {}; + cert.subject.getField = function(sn) { + return _getAttribute(cert.subject, sn); + }; + cert.subject.addField = function(attr) { + _fillMissingFields([attr]); + cert.subject.attributes.push(attr); + }; + cert.subject.attributes = []; + cert.subject.hash = null; + cert.extensions = []; + cert.publicKey = null; + cert.md = null; + cert.setSubject = function(attrs, uniqueId) { + _fillMissingFields(attrs); + cert.subject.attributes = attrs; + delete cert.subject.uniqueId; + if (uniqueId) { + cert.subject.uniqueId = uniqueId; + } + cert.subject.hash = null; + }; + cert.setIssuer = function(attrs, uniqueId) { + _fillMissingFields(attrs); + cert.issuer.attributes = attrs; + delete cert.issuer.uniqueId; + if (uniqueId) { + cert.issuer.uniqueId = uniqueId; + } + cert.issuer.hash = null; + }; + cert.setExtensions = function(exts) { + for (var i = 0; i < exts.length; ++i) { + _fillMissingExtensionFields(exts[i], { cert }); + } + cert.extensions = exts; + }; + cert.getExtension = function(options) { + if (typeof options === "string") { + options = { name: options }; + } + var rval = null; + var ext; + for (var i = 0; rval === null && i < cert.extensions.length; ++i) { + ext = cert.extensions[i]; + if (options.id && ext.id === options.id) { + rval = ext; + } else if (options.name && ext.name === options.name) { + rval = ext; + } + } + return rval; + }; + cert.sign = function(key, md) { + cert.md = md || forge3.md.sha1.create(); + var algorithmOid = oids[cert.md.algorithm + "WithRSAEncryption"]; + if (!algorithmOid) { + var error = new Error("Could not compute certificate digest. Unknown message digest algorithm OID."); + error.algorithm = cert.md.algorithm; + throw error; + } + cert.signatureOid = cert.siginfo.algorithmOid = algorithmOid; + cert.tbsCertificate = pki2.getTBSCertificate(cert); + var bytes = asn1.toDer(cert.tbsCertificate); + cert.md.update(bytes.getBytes()); + cert.signature = key.sign(cert.md); + }; + cert.verify = function(child) { + var rval = false; + if (!cert.issued(child)) { + var issuer = child.issuer; + var subject = cert.subject; + var error = new Error("The parent certificate did not issue the given child certificate; the child certificate's issuer does not match the parent's subject."); + error.expectedIssuer = subject.attributes; + error.actualIssuer = issuer.attributes; + throw error; + } + var md = child.md; + if (md === null) { + md = _createSignatureDigest({ + signatureOid: child.signatureOid, + type: "certificate" + }); + var tbsCertificate = child.tbsCertificate || pki2.getTBSCertificate(child); + var bytes = asn1.toDer(tbsCertificate); + md.update(bytes.getBytes()); + } + if (md !== null) { + rval = _verifySignature({ + certificate: cert, + md, + signature: child.signature + }); + } + return rval; + }; + cert.isIssuer = function(parent) { + var rval = false; + var i = cert.issuer; + var s = parent.subject; + if (i.hash && s.hash) { + rval = i.hash === s.hash; + } else if (i.attributes.length === s.attributes.length) { + rval = true; + var iattr, sattr; + for (var n = 0; rval && n < i.attributes.length; ++n) { + iattr = i.attributes[n]; + sattr = s.attributes[n]; + if (iattr.type !== sattr.type || iattr.value !== sattr.value) { + rval = false; + } + } + } + return rval; + }; + cert.issued = function(child) { + return child.isIssuer(cert); + }; + cert.generateSubjectKeyIdentifier = function() { + return pki2.getPublicKeyFingerprint(cert.publicKey, { type: "RSAPublicKey" }); + }; + cert.verifySubjectKeyIdentifier = function() { + var oid = oids["subjectKeyIdentifier"]; + for (var i = 0; i < cert.extensions.length; ++i) { + var ext = cert.extensions[i]; + if (ext.id === oid) { + var ski = cert.generateSubjectKeyIdentifier().getBytes(); + return forge3.util.hexToBytes(ext.subjectKeyIdentifier) === ski; + } + } + return false; + }; + return cert; + }; + pki2.certificateFromAsn1 = function(obj, computeHash) { + var capture = {}; + var errors = []; + if (!asn1.validate(obj, x509CertificateValidator, capture, errors)) { + var error = new Error("Cannot read X.509 certificate. ASN.1 object is not an X509v3 Certificate."); + error.errors = errors; + throw error; + } + var oid = asn1.derToOid(capture.publicKeyOid); + if (oid !== pki2.oids.rsaEncryption) { + throw new Error("Cannot read public key. OID is not RSA."); + } + var cert = pki2.createCertificate(); + cert.version = capture.certVersion ? capture.certVersion.charCodeAt(0) : 0; + var serial = forge3.util.createBuffer(capture.certSerialNumber); + cert.serialNumber = serial.toHex(); + cert.signatureOid = forge3.asn1.derToOid(capture.certSignatureOid); + cert.signatureParameters = _readSignatureParameters(cert.signatureOid, capture.certSignatureParams, true); + cert.siginfo.algorithmOid = forge3.asn1.derToOid(capture.certinfoSignatureOid); + cert.siginfo.parameters = _readSignatureParameters(cert.siginfo.algorithmOid, capture.certinfoSignatureParams, false); + cert.signature = capture.certSignature; + var validity = []; + if (capture.certValidity1UTCTime !== void 0) { + validity.push(asn1.utcTimeToDate(capture.certValidity1UTCTime)); + } + if (capture.certValidity2GeneralizedTime !== void 0) { + validity.push(asn1.generalizedTimeToDate(capture.certValidity2GeneralizedTime)); + } + if (capture.certValidity3UTCTime !== void 0) { + validity.push(asn1.utcTimeToDate(capture.certValidity3UTCTime)); + } + if (capture.certValidity4GeneralizedTime !== void 0) { + validity.push(asn1.generalizedTimeToDate(capture.certValidity4GeneralizedTime)); + } + if (validity.length > 2) { + throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate."); + } + if (validity.length < 2) { + throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime."); + } + cert.validity.notBefore = validity[0]; + cert.validity.notAfter = validity[1]; + cert.tbsCertificate = capture.tbsCertificate; + if (computeHash) { + cert.md = _createSignatureDigest({ + signatureOid: cert.signatureOid, + type: "certificate" + }); + var bytes = asn1.toDer(cert.tbsCertificate); + cert.md.update(bytes.getBytes()); + } + var imd = forge3.md.sha1.create(); + var ibytes = asn1.toDer(capture.certIssuer); + imd.update(ibytes.getBytes()); + cert.issuer.getField = function(sn) { + return _getAttribute(cert.issuer, sn); + }; + cert.issuer.addField = function(attr) { + _fillMissingFields([attr]); + cert.issuer.attributes.push(attr); + }; + cert.issuer.attributes = pki2.RDNAttributesAsArray(capture.certIssuer); + if (capture.certIssuerUniqueId) { + cert.issuer.uniqueId = capture.certIssuerUniqueId; + } + cert.issuer.hash = imd.digest().toHex(); + var smd = forge3.md.sha1.create(); + var sbytes = asn1.toDer(capture.certSubject); + smd.update(sbytes.getBytes()); + cert.subject.getField = function(sn) { + return _getAttribute(cert.subject, sn); + }; + cert.subject.addField = function(attr) { + _fillMissingFields([attr]); + cert.subject.attributes.push(attr); + }; + cert.subject.attributes = pki2.RDNAttributesAsArray(capture.certSubject); + if (capture.certSubjectUniqueId) { + cert.subject.uniqueId = capture.certSubjectUniqueId; + } + cert.subject.hash = smd.digest().toHex(); + if (capture.certExtensions) { + cert.extensions = pki2.certificateExtensionsFromAsn1(capture.certExtensions); + } else { + cert.extensions = []; + } + cert.publicKey = pki2.publicKeyFromAsn1(capture.subjectPublicKeyInfo); + return cert; + }; + pki2.certificateExtensionsFromAsn1 = function(exts) { + var rval = []; + for (var i = 0; i < exts.value.length; ++i) { + var extseq = exts.value[i]; + for (var ei = 0; ei < extseq.value.length; ++ei) { + rval.push(pki2.certificateExtensionFromAsn1(extseq.value[ei])); + } + } + return rval; + }; + pki2.certificateExtensionFromAsn1 = function(ext) { + var e = {}; + e.id = asn1.derToOid(ext.value[0].value); + e.critical = false; + if (ext.value[1].type === asn1.Type.BOOLEAN) { + e.critical = ext.value[1].value.charCodeAt(0) !== 0; + e.value = ext.value[2].value; + } else { + e.value = ext.value[1].value; + } + if (e.id in oids) { + e.name = oids[e.id]; + if (e.name === "keyUsage") { + var ev = asn1.fromDer(e.value); + var b2 = 0; + var b3 = 0; + if (ev.value.length > 1) { + b2 = ev.value.charCodeAt(1); + b3 = ev.value.length > 2 ? ev.value.charCodeAt(2) : 0; + } + e.digitalSignature = (b2 & 128) === 128; + e.nonRepudiation = (b2 & 64) === 64; + e.keyEncipherment = (b2 & 32) === 32; + e.dataEncipherment = (b2 & 16) === 16; + e.keyAgreement = (b2 & 8) === 8; + e.keyCertSign = (b2 & 4) === 4; + e.cRLSign = (b2 & 2) === 2; + e.encipherOnly = (b2 & 1) === 1; + e.decipherOnly = (b3 & 128) === 128; + } else if (e.name === "basicConstraints") { + var ev = asn1.fromDer(e.value); + if (ev.value.length > 0 && ev.value[0].type === asn1.Type.BOOLEAN) { + e.cA = ev.value[0].value.charCodeAt(0) !== 0; + } else { + e.cA = false; + } + var value = null; + if (ev.value.length > 0 && ev.value[0].type === asn1.Type.INTEGER) { + value = ev.value[0].value; + } else if (ev.value.length > 1) { + value = ev.value[1].value; + } + if (value !== null) { + e.pathLenConstraint = asn1.derToInteger(value); + } + } else if (e.name === "extKeyUsage") { + var ev = asn1.fromDer(e.value); + for (var vi = 0; vi < ev.value.length; ++vi) { + var oid = asn1.derToOid(ev.value[vi].value); + if (oid in oids) { + e[oids[oid]] = true; + } else { + e[oid] = true; + } + } + } else if (e.name === "nsCertType") { + var ev = asn1.fromDer(e.value); + var b2 = 0; + if (ev.value.length > 1) { + b2 = ev.value.charCodeAt(1); + } + e.client = (b2 & 128) === 128; + e.server = (b2 & 64) === 64; + e.email = (b2 & 32) === 32; + e.objsign = (b2 & 16) === 16; + e.reserved = (b2 & 8) === 8; + e.sslCA = (b2 & 4) === 4; + e.emailCA = (b2 & 2) === 2; + e.objCA = (b2 & 1) === 1; + } else if (e.name === "subjectAltName" || e.name === "issuerAltName") { + e.altNames = []; + var gn; + var ev = asn1.fromDer(e.value); + for (var n = 0; n < ev.value.length; ++n) { + gn = ev.value[n]; + var altName = { + type: gn.type, + value: gn.value + }; + e.altNames.push(altName); + switch (gn.type) { + case 1: + case 2: + case 6: + break; + case 7: + altName.ip = forge3.util.bytesToIP(gn.value); + break; + case 8: + altName.oid = asn1.derToOid(gn.value); + break; + default: + } + } + } else if (e.name === "subjectKeyIdentifier") { + var ev = asn1.fromDer(e.value); + e.subjectKeyIdentifier = forge3.util.bytesToHex(ev.value); + } + } + return e; + }; + pki2.certificationRequestFromAsn1 = function(obj, computeHash) { + var capture = {}; + var errors = []; + if (!asn1.validate(obj, certificationRequestValidator, capture, errors)) { + var error = new Error("Cannot read PKCS#10 certificate request. ASN.1 object is not a PKCS#10 CertificationRequest."); + error.errors = errors; + throw error; + } + var oid = asn1.derToOid(capture.publicKeyOid); + if (oid !== pki2.oids.rsaEncryption) { + throw new Error("Cannot read public key. OID is not RSA."); + } + var csr = pki2.createCertificationRequest(); + csr.version = capture.csrVersion ? capture.csrVersion.charCodeAt(0) : 0; + csr.signatureOid = forge3.asn1.derToOid(capture.csrSignatureOid); + csr.signatureParameters = _readSignatureParameters(csr.signatureOid, capture.csrSignatureParams, true); + csr.siginfo.algorithmOid = forge3.asn1.derToOid(capture.csrSignatureOid); + csr.siginfo.parameters = _readSignatureParameters(csr.siginfo.algorithmOid, capture.csrSignatureParams, false); + csr.signature = capture.csrSignature; + csr.certificationRequestInfo = capture.certificationRequestInfo; + if (computeHash) { + csr.md = _createSignatureDigest({ + signatureOid: csr.signatureOid, + type: "certification request" + }); + var bytes = asn1.toDer(csr.certificationRequestInfo); + csr.md.update(bytes.getBytes()); + } + var smd = forge3.md.sha1.create(); + csr.subject.getField = function(sn) { + return _getAttribute(csr.subject, sn); + }; + csr.subject.addField = function(attr) { + _fillMissingFields([attr]); + csr.subject.attributes.push(attr); + }; + csr.subject.attributes = pki2.RDNAttributesAsArray(capture.certificationRequestInfoSubject, smd); + csr.subject.hash = smd.digest().toHex(); + csr.publicKey = pki2.publicKeyFromAsn1(capture.subjectPublicKeyInfo); + csr.getAttribute = function(sn) { + return _getAttribute(csr, sn); + }; + csr.addAttribute = function(attr) { + _fillMissingFields([attr]); + csr.attributes.push(attr); + }; + csr.attributes = pki2.CRIAttributesAsArray(capture.certificationRequestInfoAttributes || []); + return csr; + }; + pki2.createCertificationRequest = function() { + var csr = {}; + csr.version = 0; + csr.signatureOid = null; + csr.signature = null; + csr.siginfo = {}; + csr.siginfo.algorithmOid = null; + csr.subject = {}; + csr.subject.getField = function(sn) { + return _getAttribute(csr.subject, sn); + }; + csr.subject.addField = function(attr) { + _fillMissingFields([attr]); + csr.subject.attributes.push(attr); + }; + csr.subject.attributes = []; + csr.subject.hash = null; + csr.publicKey = null; + csr.attributes = []; + csr.getAttribute = function(sn) { + return _getAttribute(csr, sn); + }; + csr.addAttribute = function(attr) { + _fillMissingFields([attr]); + csr.attributes.push(attr); + }; + csr.md = null; + csr.setSubject = function(attrs) { + _fillMissingFields(attrs); + csr.subject.attributes = attrs; + csr.subject.hash = null; + }; + csr.setAttributes = function(attrs) { + _fillMissingFields(attrs); + csr.attributes = attrs; + }; + csr.sign = function(key, md) { + csr.md = md || forge3.md.sha1.create(); + var algorithmOid = oids[csr.md.algorithm + "WithRSAEncryption"]; + if (!algorithmOid) { + var error = new Error("Could not compute certification request digest. Unknown message digest algorithm OID."); + error.algorithm = csr.md.algorithm; + throw error; + } + csr.signatureOid = csr.siginfo.algorithmOid = algorithmOid; + csr.certificationRequestInfo = pki2.getCertificationRequestInfo(csr); + var bytes = asn1.toDer(csr.certificationRequestInfo); + csr.md.update(bytes.getBytes()); + csr.signature = key.sign(csr.md); + }; + csr.verify = function() { + var rval = false; + var md = csr.md; + if (md === null) { + md = _createSignatureDigest({ + signatureOid: csr.signatureOid, + type: "certification request" + }); + var cri = csr.certificationRequestInfo || pki2.getCertificationRequestInfo(csr); + var bytes = asn1.toDer(cri); + md.update(bytes.getBytes()); + } + if (md !== null) { + rval = _verifySignature({ + certificate: csr, + md, + signature: csr.signature + }); + } + return rval; + }; + return csr; + }; + function _dnToAsn1(obj) { + var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var attr, set; + var attrs = obj.attributes; + for (var i = 0; i < attrs.length; ++i) { + attr = attrs[i]; + var value = attr.value; + var valueTagClass = asn1.Type.PRINTABLESTRING; + if ("valueTagClass" in attr) { + valueTagClass = attr.valueTagClass; + if (valueTagClass === asn1.Type.UTF8) { + value = forge3.util.encodeUtf8(value); + } + } + set = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(attr.type).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, valueTagClass, false, value) + ]) + ]); + rval.value.push(set); + } + return rval; + } + function _fillMissingFields(attrs) { + var attr; + for (var i = 0; i < attrs.length; ++i) { + attr = attrs[i]; + if (typeof attr.name === "undefined") { + if (attr.type && attr.type in pki2.oids) { + attr.name = pki2.oids[attr.type]; + } else if (attr.shortName && attr.shortName in _shortNames) { + attr.name = pki2.oids[_shortNames[attr.shortName]]; + } + } + if (typeof attr.type === "undefined") { + if (attr.name && attr.name in pki2.oids) { + attr.type = pki2.oids[attr.name]; + } else { + var error = new Error("Attribute type not specified."); + error.attribute = attr; + throw error; + } + } + if (typeof attr.shortName === "undefined") { + if (attr.name && attr.name in _shortNames) { + attr.shortName = _shortNames[attr.name]; + } + } + if (attr.type === oids.extensionRequest) { + attr.valueConstructed = true; + attr.valueTagClass = asn1.Type.SEQUENCE; + if (!attr.value && attr.extensions) { + attr.value = []; + for (var ei = 0; ei < attr.extensions.length; ++ei) { + attr.value.push(pki2.certificateExtensionToAsn1(_fillMissingExtensionFields(attr.extensions[ei]))); + } + } + } + if (typeof attr.value === "undefined") { + var error = new Error("Attribute value not specified."); + error.attribute = attr; + throw error; + } + } + } + function _fillMissingExtensionFields(e, options) { + options = options || {}; + if (typeof e.name === "undefined") { + if (e.id && e.id in pki2.oids) { + e.name = pki2.oids[e.id]; + } + } + if (typeof e.id === "undefined") { + if (e.name && e.name in pki2.oids) { + e.id = pki2.oids[e.name]; + } else { + var error = new Error("Extension ID not specified."); + error.extension = e; + throw error; + } + } + if (typeof e.value !== "undefined") { + return e; + } + if (e.name === "keyUsage") { + var unused = 0; + var b2 = 0; + var b3 = 0; + if (e.digitalSignature) { + b2 |= 128; + unused = 7; + } + if (e.nonRepudiation) { + b2 |= 64; + unused = 6; + } + if (e.keyEncipherment) { + b2 |= 32; + unused = 5; + } + if (e.dataEncipherment) { + b2 |= 16; + unused = 4; + } + if (e.keyAgreement) { + b2 |= 8; + unused = 3; + } + if (e.keyCertSign) { + b2 |= 4; + unused = 2; + } + if (e.cRLSign) { + b2 |= 2; + unused = 1; + } + if (e.encipherOnly) { + b2 |= 1; + unused = 0; + } + if (e.decipherOnly) { + b3 |= 128; + unused = 7; + } + var value = String.fromCharCode(unused); + if (b3 !== 0) { + value += String.fromCharCode(b2) + String.fromCharCode(b3); + } else if (b2 !== 0) { + value += String.fromCharCode(b2); + } + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value); + } else if (e.name === "basicConstraints") { + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + if (e.cA) { + e.value.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false, String.fromCharCode(255))); + } + if ("pathLenConstraint" in e) { + e.value.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(e.pathLenConstraint).getBytes())); + } + } else if (e.name === "extKeyUsage") { + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var seq = e.value.value; + for (var key in e) { + if (e[key] !== true) { + continue; + } + if (key in oids) { + seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(oids[key]).getBytes())); + } else if (key.indexOf(".") !== -1) { + seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(key).getBytes())); + } + } + } else if (e.name === "nsCertType") { + var unused = 0; + var b2 = 0; + if (e.client) { + b2 |= 128; + unused = 7; + } + if (e.server) { + b2 |= 64; + unused = 6; + } + if (e.email) { + b2 |= 32; + unused = 5; + } + if (e.objsign) { + b2 |= 16; + unused = 4; + } + if (e.reserved) { + b2 |= 8; + unused = 3; + } + if (e.sslCA) { + b2 |= 4; + unused = 2; + } + if (e.emailCA) { + b2 |= 2; + unused = 1; + } + if (e.objCA) { + b2 |= 1; + unused = 0; + } + var value = String.fromCharCode(unused); + if (b2 !== 0) { + value += String.fromCharCode(b2); + } + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value); + } else if (e.name === "subjectAltName" || e.name === "issuerAltName") { + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var altName; + for (var n = 0; n < e.altNames.length; ++n) { + altName = e.altNames[n]; + var value = altName.value; + if (altName.type === 7 && altName.ip) { + value = forge3.util.bytesFromIP(altName.ip); + if (value === null) { + var error = new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.'); + error.extension = e; + throw error; + } + } else if (altName.type === 8) { + if (altName.oid) { + value = asn1.oidToDer(asn1.oidToDer(altName.oid)); + } else { + value = asn1.oidToDer(value); + } + } + e.value.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, altName.type, false, value)); + } + } else if (e.name === "nsComment" && options.cert) { + if (!/^[\x00-\x7F]*$/.test(e.comment) || e.comment.length < 1 || e.comment.length > 128) { + throw new Error('Invalid "nsComment" content.'); + } + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.IA5STRING, false, e.comment); + } else if (e.name === "subjectKeyIdentifier" && options.cert) { + var ski = options.cert.generateSubjectKeyIdentifier(); + e.subjectKeyIdentifier = ski.toHex(); + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, ski.getBytes()); + } else if (e.name === "authorityKeyIdentifier" && options.cert) { + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var seq = e.value.value; + if (e.keyIdentifier) { + var keyIdentifier = e.keyIdentifier === true ? options.cert.generateSubjectKeyIdentifier().getBytes() : e.keyIdentifier; + seq.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, false, keyIdentifier)); + } + if (e.authorityCertIssuer) { + var authorityCertIssuer = [ + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 4, true, [ + _dnToAsn1(e.authorityCertIssuer === true ? options.cert.issuer : e.authorityCertIssuer) + ]) + ]; + seq.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, authorityCertIssuer)); + } + if (e.serialNumber) { + var serialNumber = forge3.util.hexToBytes(e.serialNumber === true ? options.cert.serialNumber : e.serialNumber); + seq.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, false, serialNumber)); + } + } else if (e.name === "cRLDistributionPoints") { + e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var seq = e.value.value; + var subSeq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + var fullNameGeneralNames = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, []); + var altName; + for (var n = 0; n < e.altNames.length; ++n) { + altName = e.altNames[n]; + var value = altName.value; + if (altName.type === 7 && altName.ip) { + value = forge3.util.bytesFromIP(altName.ip); + if (value === null) { + var error = new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.'); + error.extension = e; + throw error; + } + } else if (altName.type === 8) { + if (altName.oid) { + value = asn1.oidToDer(asn1.oidToDer(altName.oid)); + } else { + value = asn1.oidToDer(value); + } + } + fullNameGeneralNames.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, altName.type, false, value)); + } + subSeq.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [fullNameGeneralNames])); + seq.push(subSeq); + } + if (typeof e.value === "undefined") { + var error = new Error("Extension value not specified."); + error.extension = e; + throw error; + } + return e; + } + function _signatureParametersToAsn1(oid, params) { + switch (oid) { + case oids["RSASSA-PSS"]: + var parts = []; + if (params.hash.algorithmOid !== void 0) { + parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(params.hash.algorithmOid).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]) + ])); + } + if (params.mgf.algorithmOid !== void 0) { + parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(params.mgf.algorithmOid).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(params.mgf.hash.algorithmOid).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]) + ]) + ])); + } + if (params.saltLength !== void 0) { + parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(params.saltLength).getBytes()) + ])); + } + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, parts); + default: + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, ""); + } + } + function _CRIAttributesToAsn1(csr) { + var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, []); + if (csr.attributes.length === 0) { + return rval; + } + var attrs = csr.attributes; + for (var i = 0; i < attrs.length; ++i) { + var attr = attrs[i]; + var value = attr.value; + var valueTagClass = asn1.Type.UTF8; + if ("valueTagClass" in attr) { + valueTagClass = attr.valueTagClass; + } + if (valueTagClass === asn1.Type.UTF8) { + value = forge3.util.encodeUtf8(value); + } + var valueConstructed = false; + if ("valueConstructed" in attr) { + valueConstructed = attr.valueConstructed; + } + var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(attr.type).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [ + asn1.create(asn1.Class.UNIVERSAL, valueTagClass, valueConstructed, value) + ]) + ]); + rval.value.push(seq); + } + return rval; + } + var jan_1_1950 = new Date("1950-01-01T00:00:00Z"); + var jan_1_2050 = new Date("2050-01-01T00:00:00Z"); + function _dateToAsn1(date) { + if (date >= jan_1_1950 && date < jan_1_2050) { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false, asn1.dateToUtcTime(date)); + } else { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false, asn1.dateToGeneralizedTime(date)); + } + } + pki2.getTBSCertificate = function(cert) { + var notBefore = _dateToAsn1(cert.validity.notBefore); + var notAfter = _dateToAsn1(cert.validity.notAfter); + var tbs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(cert.version).getBytes()) + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, forge3.util.hexToBytes(cert.serialNumber)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(cert.siginfo.algorithmOid).getBytes()), + _signatureParametersToAsn1(cert.siginfo.algorithmOid, cert.siginfo.parameters) + ]), + _dnToAsn1(cert.issuer), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + notBefore, + notAfter + ]), + _dnToAsn1(cert.subject), + pki2.publicKeyToAsn1(cert.publicKey) + ]); + if (cert.issuer.uniqueId) { + tbs.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, String.fromCharCode(0) + cert.issuer.uniqueId) + ])); + } + if (cert.subject.uniqueId) { + tbs.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, String.fromCharCode(0) + cert.subject.uniqueId) + ])); + } + if (cert.extensions.length > 0) { + tbs.value.push(pki2.certificateExtensionsToAsn1(cert.extensions)); + } + return tbs; + }; + pki2.getCertificationRequestInfo = function(csr) { + var cri = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(csr.version).getBytes()), + _dnToAsn1(csr.subject), + pki2.publicKeyToAsn1(csr.publicKey), + _CRIAttributesToAsn1(csr) + ]); + return cri; + }; + pki2.distinguishedNameToAsn1 = function(dn) { + return _dnToAsn1(dn); + }; + pki2.certificateToAsn1 = function(cert) { + var tbsCertificate = cert.tbsCertificate || pki2.getTBSCertificate(cert); + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + tbsCertificate, + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(cert.signatureOid).getBytes()), + _signatureParametersToAsn1(cert.signatureOid, cert.signatureParameters) + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, String.fromCharCode(0) + cert.signature) + ]); + }; + pki2.certificateExtensionsToAsn1 = function(exts) { + var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 3, true, []); + var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + rval.value.push(seq); + for (var i = 0; i < exts.length; ++i) { + seq.value.push(pki2.certificateExtensionToAsn1(exts[i])); + } + return rval; + }; + pki2.certificateExtensionToAsn1 = function(ext) { + var extseq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []); + extseq.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(ext.id).getBytes())); + if (ext.critical) { + extseq.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false, String.fromCharCode(255))); + } + var value = ext.value; + if (typeof ext.value !== "string") { + value = asn1.toDer(value).getBytes(); + } + extseq.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, value)); + return extseq; + }; + pki2.certificationRequestToAsn1 = function(csr) { + var cri = csr.certificationRequestInfo || pki2.getCertificationRequestInfo(csr); + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + cri, + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(csr.signatureOid).getBytes()), + _signatureParametersToAsn1(csr.signatureOid, csr.signatureParameters) + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, String.fromCharCode(0) + csr.signature) + ]); + }; + pki2.createCaStore = function(certs) { + var caStore = { + certs: {} + }; + caStore.getIssuer = function(cert2) { + var rval = getBySubject(cert2.issuer); + return rval; + }; + caStore.addCertificate = function(cert2) { + if (typeof cert2 === "string") { + cert2 = forge3.pki.certificateFromPem(cert2); + } + ensureSubjectHasHash(cert2.subject); + if (!caStore.hasCertificate(cert2)) { + if (cert2.subject.hash in caStore.certs) { + var tmp = caStore.certs[cert2.subject.hash]; + if (!forge3.util.isArray(tmp)) { + tmp = [tmp]; + } + tmp.push(cert2); + caStore.certs[cert2.subject.hash] = tmp; + } else { + caStore.certs[cert2.subject.hash] = cert2; + } + } + }; + caStore.hasCertificate = function(cert2) { + if (typeof cert2 === "string") { + cert2 = forge3.pki.certificateFromPem(cert2); + } + var match = getBySubject(cert2.subject); + if (!match) { + return false; + } + if (!forge3.util.isArray(match)) { + match = [match]; + } + var der1 = asn1.toDer(pki2.certificateToAsn1(cert2)).getBytes(); + for (var i2 = 0; i2 < match.length; ++i2) { + var der2 = asn1.toDer(pki2.certificateToAsn1(match[i2])).getBytes(); + if (der1 === der2) { + return true; + } + } + return false; + }; + caStore.listAllCertificates = function() { + var certList = []; + for (var hash in caStore.certs) { + if (caStore.certs.hasOwnProperty(hash)) { + var value = caStore.certs[hash]; + if (!forge3.util.isArray(value)) { + certList.push(value); + } else { + for (var i2 = 0; i2 < value.length; ++i2) { + certList.push(value[i2]); + } + } + } + } + return certList; + }; + caStore.removeCertificate = function(cert2) { + var result; + if (typeof cert2 === "string") { + cert2 = forge3.pki.certificateFromPem(cert2); + } + ensureSubjectHasHash(cert2.subject); + if (!caStore.hasCertificate(cert2)) { + return null; + } + var match = getBySubject(cert2.subject); + if (!forge3.util.isArray(match)) { + result = caStore.certs[cert2.subject.hash]; + delete caStore.certs[cert2.subject.hash]; + return result; + } + var der1 = asn1.toDer(pki2.certificateToAsn1(cert2)).getBytes(); + for (var i2 = 0; i2 < match.length; ++i2) { + var der2 = asn1.toDer(pki2.certificateToAsn1(match[i2])).getBytes(); + if (der1 === der2) { + result = match[i2]; + match.splice(i2, 1); + } + } + if (match.length === 0) { + delete caStore.certs[cert2.subject.hash]; + } + return result; + }; + function getBySubject(subject) { + ensureSubjectHasHash(subject); + return caStore.certs[subject.hash] || null; + } + function ensureSubjectHasHash(subject) { + if (!subject.hash) { + var md = forge3.md.sha1.create(); + subject.attributes = pki2.RDNAttributesAsArray(_dnToAsn1(subject), md); + subject.hash = md.digest().toHex(); + } + } + if (certs) { + for (var i = 0; i < certs.length; ++i) { + var cert = certs[i]; + caStore.addCertificate(cert); + } + } + return caStore; + }; + pki2.certificateError = { + bad_certificate: "forge.pki.BadCertificate", + unsupported_certificate: "forge.pki.UnsupportedCertificate", + certificate_revoked: "forge.pki.CertificateRevoked", + certificate_expired: "forge.pki.CertificateExpired", + certificate_unknown: "forge.pki.CertificateUnknown", + unknown_ca: "forge.pki.UnknownCertificateAuthority" + }; + pki2.verifyCertificateChain = function(caStore, chain, options) { + if (typeof options === "function") { + options = { verify: options }; + } + options = options || {}; + chain = chain.slice(0); + var certs = chain.slice(0); + var validityCheckDate = options.validityCheckDate; + if (typeof validityCheckDate === "undefined") { + validityCheckDate = new Date(); + } + var first = true; + var error = null; + var depth = 0; + do { + var cert = chain.shift(); + var parent = null; + var selfSigned = false; + if (validityCheckDate) { + if (validityCheckDate < cert.validity.notBefore || validityCheckDate > cert.validity.notAfter) { + error = { + message: "Certificate is not valid yet or has expired.", + error: pki2.certificateError.certificate_expired, + notBefore: cert.validity.notBefore, + notAfter: cert.validity.notAfter, + now: validityCheckDate + }; + } + } + if (error === null) { + parent = chain[0] || caStore.getIssuer(cert); + if (parent === null) { + if (cert.isIssuer(cert)) { + selfSigned = true; + parent = cert; + } + } + if (parent) { + var parents = parent; + if (!forge3.util.isArray(parents)) { + parents = [parents]; + } + var verified = false; + while (!verified && parents.length > 0) { + parent = parents.shift(); + try { + verified = parent.verify(cert); + } catch (ex) { + } + } + if (!verified) { + error = { + message: "Certificate signature is invalid.", + error: pki2.certificateError.bad_certificate + }; + } + } + if (error === null && (!parent || selfSigned) && !caStore.hasCertificate(cert)) { + error = { + message: "Certificate is not trusted.", + error: pki2.certificateError.unknown_ca + }; + } + } + if (error === null && parent && !cert.isIssuer(parent)) { + error = { + message: "Certificate issuer is invalid.", + error: pki2.certificateError.bad_certificate + }; + } + if (error === null) { + var se = { + keyUsage: true, + basicConstraints: true + }; + for (var i = 0; error === null && i < cert.extensions.length; ++i) { + var ext = cert.extensions[i]; + if (ext.critical && !(ext.name in se)) { + error = { + message: "Certificate has an unsupported critical extension.", + error: pki2.certificateError.unsupported_certificate + }; + } + } + } + if (error === null && (!first || chain.length === 0 && (!parent || selfSigned))) { + var bcExt = cert.getExtension("basicConstraints"); + var keyUsageExt = cert.getExtension("keyUsage"); + if (keyUsageExt !== null) { + if (!keyUsageExt.keyCertSign || bcExt === null) { + error = { + message: "Certificate keyUsage or basicConstraints conflict or indicate that the certificate is not a CA. If the certificate is the only one in the chain or isn't the first then the certificate must be a valid CA.", + error: pki2.certificateError.bad_certificate + }; + } + } + if (error === null && bcExt !== null && !bcExt.cA) { + error = { + message: "Certificate basicConstraints indicates the certificate is not a CA.", + error: pki2.certificateError.bad_certificate + }; + } + if (error === null && keyUsageExt !== null && "pathLenConstraint" in bcExt) { + var pathLen = depth - 1; + if (pathLen > bcExt.pathLenConstraint) { + error = { + message: "Certificate basicConstraints pathLenConstraint violated.", + error: pki2.certificateError.bad_certificate + }; + } + } + } + var vfd = error === null ? true : error.error; + var ret = options.verify ? options.verify(vfd, depth, certs) : vfd; + if (ret === true) { + error = null; + } else { + if (vfd === true) { + error = { + message: "The application rejected the certificate.", + error: pki2.certificateError.bad_certificate + }; + } + if (ret || ret === 0) { + if (typeof ret === "object" && !forge3.util.isArray(ret)) { + if (ret.message) { + error.message = ret.message; + } + if (ret.error) { + error.error = ret.error; + } + } else if (typeof ret === "string") { + error.error = ret; + } + } + throw error; + } + first = false; + ++depth; + } while (chain.length > 0); + return true; + }; + } +}); + +// node_modules/node-forge/lib/pkcs12.js +var require_pkcs12 = __commonJS({ + "node_modules/node-forge/lib/pkcs12.js"(exports, module2) { + var forge3 = require_forge(); + require_asn1(); + require_hmac(); + require_oids(); + require_pkcs7asn1(); + require_pbe(); + require_random(); + require_rsa(); + require_sha1(); + require_util(); + require_x509(); + var asn1 = forge3.asn1; + var pki2 = forge3.pki; + var p12 = module2.exports = forge3.pkcs12 = forge3.pkcs12 || {}; + var contentInfoValidator = { + name: "ContentInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "ContentInfo.contentType", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "contentType" + }, { + name: "ContentInfo.content", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + constructed: true, + captureAsn1: "content" + }] + }; + var pfxValidator = { + name: "PFX", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [ + { + name: "PFX.version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "version" + }, + contentInfoValidator, + { + name: "PFX.macData", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + optional: true, + captureAsn1: "mac", + value: [{ + name: "PFX.macData.mac", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PFX.macData.mac.digestAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PFX.macData.mac.digestAlgorithm.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "macAlgorithm" + }, { + name: "PFX.macData.mac.digestAlgorithm.parameters", + tagClass: asn1.Class.UNIVERSAL, + captureAsn1: "macAlgorithmParameters" + }] + }, { + name: "PFX.macData.mac.digest", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "macDigest" + }] + }, { + name: "PFX.macData.macSalt", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "macSalt" + }, { + name: "PFX.macData.iterations", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + optional: true, + capture: "macIterations" + }] + } + ] + }; + var safeBagValidator = { + name: "SafeBag", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "SafeBag.bagId", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "bagId" + }, { + name: "SafeBag.bagValue", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + constructed: true, + captureAsn1: "bagValue" + }, { + name: "SafeBag.bagAttributes", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SET, + constructed: true, + optional: true, + capture: "bagAttributes" + }] + }; + var attributeValidator = { + name: "Attribute", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "Attribute.attrId", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "oid" + }, { + name: "Attribute.attrValues", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SET, + constructed: true, + capture: "values" + }] + }; + var certBagValidator = { + name: "CertBag", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "CertBag.certId", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "certId" + }, { + name: "CertBag.certValue", + tagClass: asn1.Class.CONTEXT_SPECIFIC, + constructed: true, + value: [{ + name: "CertBag.certValue[0]", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Class.OCTETSTRING, + constructed: false, + capture: "cert" + }] + }] + }; + function _getBagsByAttribute(safeContents, attrName, attrValue, bagType) { + var result = []; + for (var i = 0; i < safeContents.length; i++) { + for (var j = 0; j < safeContents[i].safeBags.length; j++) { + var bag = safeContents[i].safeBags[j]; + if (bagType !== void 0 && bag.type !== bagType) { + continue; + } + if (attrName === null) { + result.push(bag); + continue; + } + if (bag.attributes[attrName] !== void 0 && bag.attributes[attrName].indexOf(attrValue) >= 0) { + result.push(bag); + } + } + } + return result; + } + p12.pkcs12FromAsn1 = function(obj, strict, password) { + if (typeof strict === "string") { + password = strict; + strict = true; + } else if (strict === void 0) { + strict = true; + } + var capture = {}; + var errors = []; + if (!asn1.validate(obj, pfxValidator, capture, errors)) { + var error = new Error("Cannot read PKCS#12 PFX. ASN.1 object is not an PKCS#12 PFX."); + error.errors = error; + throw error; + } + var pfx = { + version: capture.version.charCodeAt(0), + safeContents: [], + getBags: function(filter) { + var rval = {}; + var localKeyId; + if ("localKeyId" in filter) { + localKeyId = filter.localKeyId; + } else if ("localKeyIdHex" in filter) { + localKeyId = forge3.util.hexToBytes(filter.localKeyIdHex); + } + if (localKeyId === void 0 && !("friendlyName" in filter) && "bagType" in filter) { + rval[filter.bagType] = _getBagsByAttribute(pfx.safeContents, null, null, filter.bagType); + } + if (localKeyId !== void 0) { + rval.localKeyId = _getBagsByAttribute(pfx.safeContents, "localKeyId", localKeyId, filter.bagType); + } + if ("friendlyName" in filter) { + rval.friendlyName = _getBagsByAttribute(pfx.safeContents, "friendlyName", filter.friendlyName, filter.bagType); + } + return rval; + }, + getBagsByFriendlyName: function(friendlyName, bagType) { + return _getBagsByAttribute(pfx.safeContents, "friendlyName", friendlyName, bagType); + }, + getBagsByLocalKeyId: function(localKeyId, bagType) { + return _getBagsByAttribute(pfx.safeContents, "localKeyId", localKeyId, bagType); + } + }; + if (capture.version.charCodeAt(0) !== 3) { + var error = new Error("PKCS#12 PFX of version other than 3 not supported."); + error.version = capture.version.charCodeAt(0); + throw error; + } + if (asn1.derToOid(capture.contentType) !== pki2.oids.data) { + var error = new Error("Only PKCS#12 PFX in password integrity mode supported."); + error.oid = asn1.derToOid(capture.contentType); + throw error; + } + var data = capture.content.value[0]; + if (data.tagClass !== asn1.Class.UNIVERSAL || data.type !== asn1.Type.OCTETSTRING) { + throw new Error("PKCS#12 authSafe content data is not an OCTET STRING."); + } + data = _decodePkcs7Data(data); + if (capture.mac) { + var md = null; + var macKeyBytes = 0; + var macAlgorithm = asn1.derToOid(capture.macAlgorithm); + switch (macAlgorithm) { + case pki2.oids.sha1: + md = forge3.md.sha1.create(); + macKeyBytes = 20; + break; + case pki2.oids.sha256: + md = forge3.md.sha256.create(); + macKeyBytes = 32; + break; + case pki2.oids.sha384: + md = forge3.md.sha384.create(); + macKeyBytes = 48; + break; + case pki2.oids.sha512: + md = forge3.md.sha512.create(); + macKeyBytes = 64; + break; + case pki2.oids.md5: + md = forge3.md.md5.create(); + macKeyBytes = 16; + break; + } + if (md === null) { + throw new Error("PKCS#12 uses unsupported MAC algorithm: " + macAlgorithm); + } + var macSalt = new forge3.util.ByteBuffer(capture.macSalt); + var macIterations = "macIterations" in capture ? parseInt(forge3.util.bytesToHex(capture.macIterations), 16) : 1; + var macKey = p12.generateKey(password, macSalt, 3, macIterations, macKeyBytes, md); + var mac = forge3.hmac.create(); + mac.start(md, macKey); + mac.update(data.value); + var macValue = mac.getMac(); + if (macValue.getBytes() !== capture.macDigest) { + throw new Error("PKCS#12 MAC could not be verified. Invalid password?"); + } + } + _decodeAuthenticatedSafe(pfx, data.value, strict, password); + return pfx; + }; + function _decodePkcs7Data(data) { + if (data.composed || data.constructed) { + var value = forge3.util.createBuffer(); + for (var i = 0; i < data.value.length; ++i) { + value.putBytes(data.value[i].value); + } + data.composed = data.constructed = false; + data.value = value.getBytes(); + } + return data; + } + function _decodeAuthenticatedSafe(pfx, authSafe, strict, password) { + authSafe = asn1.fromDer(authSafe, strict); + if (authSafe.tagClass !== asn1.Class.UNIVERSAL || authSafe.type !== asn1.Type.SEQUENCE || authSafe.constructed !== true) { + throw new Error("PKCS#12 AuthenticatedSafe expected to be a SEQUENCE OF ContentInfo"); + } + for (var i = 0; i < authSafe.value.length; i++) { + var contentInfo = authSafe.value[i]; + var capture = {}; + var errors = []; + if (!asn1.validate(contentInfo, contentInfoValidator, capture, errors)) { + var error = new Error("Cannot read ContentInfo."); + error.errors = errors; + throw error; + } + var obj = { + encrypted: false + }; + var safeContents = null; + var data = capture.content.value[0]; + switch (asn1.derToOid(capture.contentType)) { + case pki2.oids.data: + if (data.tagClass !== asn1.Class.UNIVERSAL || data.type !== asn1.Type.OCTETSTRING) { + throw new Error("PKCS#12 SafeContents Data is not an OCTET STRING."); + } + safeContents = _decodePkcs7Data(data).value; + break; + case pki2.oids.encryptedData: + safeContents = _decryptSafeContents(data, password); + obj.encrypted = true; + break; + default: + var error = new Error("Unsupported PKCS#12 contentType."); + error.contentType = asn1.derToOid(capture.contentType); + throw error; + } + obj.safeBags = _decodeSafeContents(safeContents, strict, password); + pfx.safeContents.push(obj); + } + } + function _decryptSafeContents(data, password) { + var capture = {}; + var errors = []; + if (!asn1.validate(data, forge3.pkcs7.asn1.encryptedDataValidator, capture, errors)) { + var error = new Error("Cannot read EncryptedContentInfo."); + error.errors = errors; + throw error; + } + var oid = asn1.derToOid(capture.contentType); + if (oid !== pki2.oids.data) { + var error = new Error("PKCS#12 EncryptedContentInfo ContentType is not Data."); + error.oid = oid; + throw error; + } + oid = asn1.derToOid(capture.encAlgorithm); + var cipher = pki2.pbe.getCipher(oid, capture.encParameter, password); + var encryptedContentAsn1 = _decodePkcs7Data(capture.encryptedContentAsn1); + var encrypted = forge3.util.createBuffer(encryptedContentAsn1.value); + cipher.update(encrypted); + if (!cipher.finish()) { + throw new Error("Failed to decrypt PKCS#12 SafeContents."); + } + return cipher.output.getBytes(); + } + function _decodeSafeContents(safeContents, strict, password) { + if (!strict && safeContents.length === 0) { + return []; + } + safeContents = asn1.fromDer(safeContents, strict); + if (safeContents.tagClass !== asn1.Class.UNIVERSAL || safeContents.type !== asn1.Type.SEQUENCE || safeContents.constructed !== true) { + throw new Error("PKCS#12 SafeContents expected to be a SEQUENCE OF SafeBag."); + } + var res = []; + for (var i = 0; i < safeContents.value.length; i++) { + var safeBag = safeContents.value[i]; + var capture = {}; + var errors = []; + if (!asn1.validate(safeBag, safeBagValidator, capture, errors)) { + var error = new Error("Cannot read SafeBag."); + error.errors = errors; + throw error; + } + var bag = { + type: asn1.derToOid(capture.bagId), + attributes: _decodeBagAttributes(capture.bagAttributes) + }; + res.push(bag); + var validator, decoder; + var bagAsn1 = capture.bagValue.value[0]; + switch (bag.type) { + case pki2.oids.pkcs8ShroudedKeyBag: + bagAsn1 = pki2.decryptPrivateKeyInfo(bagAsn1, password); + if (bagAsn1 === null) { + throw new Error("Unable to decrypt PKCS#8 ShroudedKeyBag, wrong password?"); + } + case pki2.oids.keyBag: + try { + bag.key = pki2.privateKeyFromAsn1(bagAsn1); + } catch (e) { + bag.key = null; + bag.asn1 = bagAsn1; + } + continue; + case pki2.oids.certBag: + validator = certBagValidator; + decoder = function() { + if (asn1.derToOid(capture.certId) !== pki2.oids.x509Certificate) { + var error2 = new Error("Unsupported certificate type, only X.509 supported."); + error2.oid = asn1.derToOid(capture.certId); + throw error2; + } + var certAsn1 = asn1.fromDer(capture.cert, strict); + try { + bag.cert = pki2.certificateFromAsn1(certAsn1, true); + } catch (e) { + bag.cert = null; + bag.asn1 = certAsn1; + } + }; + break; + default: + var error = new Error("Unsupported PKCS#12 SafeBag type."); + error.oid = bag.type; + throw error; + } + if (validator !== void 0 && !asn1.validate(bagAsn1, validator, capture, errors)) { + var error = new Error("Cannot read PKCS#12 " + validator.name); + error.errors = errors; + throw error; + } + decoder(); + } + return res; + } + function _decodeBagAttributes(attributes) { + var decodedAttrs = {}; + if (attributes !== void 0) { + for (var i = 0; i < attributes.length; ++i) { + var capture = {}; + var errors = []; + if (!asn1.validate(attributes[i], attributeValidator, capture, errors)) { + var error = new Error("Cannot read PKCS#12 BagAttribute."); + error.errors = errors; + throw error; + } + var oid = asn1.derToOid(capture.oid); + if (pki2.oids[oid] === void 0) { + continue; + } + decodedAttrs[pki2.oids[oid]] = []; + for (var j = 0; j < capture.values.length; ++j) { + decodedAttrs[pki2.oids[oid]].push(capture.values[j].value); + } + } + } + return decodedAttrs; + } + p12.toPkcs12Asn1 = function(key, cert, password, options) { + options = options || {}; + options.saltSize = options.saltSize || 8; + options.count = options.count || 2048; + options.algorithm = options.algorithm || options.encAlgorithm || "aes128"; + if (!("useMac" in options)) { + options.useMac = true; + } + if (!("localKeyId" in options)) { + options.localKeyId = null; + } + if (!("generateLocalKeyId" in options)) { + options.generateLocalKeyId = true; + } + var localKeyId = options.localKeyId; + var bagAttrs; + if (localKeyId !== null) { + localKeyId = forge3.util.hexToBytes(localKeyId); + } else if (options.generateLocalKeyId) { + if (cert) { + var pairedCert = forge3.util.isArray(cert) ? cert[0] : cert; + if (typeof pairedCert === "string") { + pairedCert = pki2.certificateFromPem(pairedCert); + } + var sha1 = forge3.md.sha1.create(); + sha1.update(asn1.toDer(pki2.certificateToAsn1(pairedCert)).getBytes()); + localKeyId = sha1.digest().getBytes(); + } else { + localKeyId = forge3.random.getBytes(20); + } + } + var attrs = []; + if (localKeyId !== null) { + attrs.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.localKeyId).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, localKeyId) + ]) + ])); + } + if ("friendlyName" in options) { + attrs.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.friendlyName).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BMPSTRING, false, options.friendlyName) + ]) + ])); + } + if (attrs.length > 0) { + bagAttrs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, attrs); + } + var contents = []; + var chain = []; + if (cert !== null) { + if (forge3.util.isArray(cert)) { + chain = cert; + } else { + chain = [cert]; + } + } + var certSafeBags = []; + for (var i = 0; i < chain.length; ++i) { + cert = chain[i]; + if (typeof cert === "string") { + cert = pki2.certificateFromPem(cert); + } + var certBagAttrs = i === 0 ? bagAttrs : void 0; + var certAsn1 = pki2.certificateToAsn1(cert); + var certSafeBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.certBag).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.x509Certificate).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, asn1.toDer(certAsn1).getBytes()) + ]) + ]) + ]), + certBagAttrs + ]); + certSafeBags.push(certSafeBag); + } + if (certSafeBags.length > 0) { + var certSafeContents = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, certSafeBags); + var certCI = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.data).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, asn1.toDer(certSafeContents).getBytes()) + ]) + ]); + contents.push(certCI); + } + var keyBag = null; + if (key !== null) { + var pkAsn1 = pki2.wrapRsaPrivateKey(pki2.privateKeyToAsn1(key)); + if (password === null) { + keyBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.keyBag).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + pkAsn1 + ]), + bagAttrs + ]); + } else { + keyBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.pkcs8ShroudedKeyBag).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + pki2.encryptPrivateKeyInfo(pkAsn1, password, options) + ]), + bagAttrs + ]); + } + var keySafeContents = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [keyBag]); + var keyCI = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.data).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, asn1.toDer(keySafeContents).getBytes()) + ]) + ]); + contents.push(keyCI); + } + var safe = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, contents); + var macData; + if (options.useMac) { + var sha1 = forge3.md.sha1.create(); + var macSalt = new forge3.util.ByteBuffer(forge3.random.getBytes(options.saltSize)); + var count = options.count; + var key = p12.generateKey(password, macSalt, 3, count, 20); + var mac = forge3.hmac.create(); + mac.start(sha1, key); + mac.update(asn1.toDer(safe).getBytes()); + var macValue = mac.getMac(); + macData = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.sha1).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, macValue.getBytes()) + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, macSalt.getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(count).getBytes()) + ]); + } + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(3).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(pki2.oids.data).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, asn1.toDer(safe).getBytes()) + ]) + ]), + macData + ]); + }; + p12.generateKey = forge3.pbe.generatePkcs12Key; + } +}); + +// node_modules/node-forge/lib/pki.js +var require_pki = __commonJS({ + "node_modules/node-forge/lib/pki.js"(exports, module2) { + var forge3 = require_forge(); + require_asn1(); + require_oids(); + require_pbe(); + require_pem(); + require_pbkdf2(); + require_pkcs12(); + require_pss(); + require_rsa(); + require_util(); + require_x509(); + var asn1 = forge3.asn1; + var pki2 = module2.exports = forge3.pki = forge3.pki || {}; + pki2.pemToDer = function(pem) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert PEM to DER; PEM is encrypted."); + } + return forge3.util.createBuffer(msg.body); + }; + pki2.privateKeyFromPem = function(pem) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "PRIVATE KEY" && msg.type !== "RSA PRIVATE KEY") { + var error = new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert private key from PEM; PEM is encrypted."); + } + var obj = asn1.fromDer(msg.body); + return pki2.privateKeyFromAsn1(obj); + }; + pki2.privateKeyToPem = function(key, maxline) { + var msg = { + type: "RSA PRIVATE KEY", + body: asn1.toDer(pki2.privateKeyToAsn1(key)).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + pki2.privateKeyInfoToPem = function(pki3, maxline) { + var msg = { + type: "PRIVATE KEY", + body: asn1.toDer(pki3).getBytes() + }; + return forge3.pem.encode(msg, { maxline }); + }; + } +}); + +// node_modules/node-forge/lib/tls.js +var require_tls = __commonJS({ + "node_modules/node-forge/lib/tls.js"(exports, module2) { + var forge3 = require_forge(); + require_asn1(); + require_hmac(); + require_md5(); + require_pem(); + require_pki(); + require_random(); + require_sha1(); + require_util(); + var prf_TLS1 = function(secret, label, seed, length) { + var rval = forge3.util.createBuffer(); + var idx = secret.length >> 1; + var slen = idx + (secret.length & 1); + var s1 = secret.substr(0, slen); + var s2 = secret.substr(idx, slen); + var ai = forge3.util.createBuffer(); + var hmac = forge3.hmac.create(); + seed = label + seed; + var md5itr = Math.ceil(length / 16); + var sha1itr = Math.ceil(length / 20); + hmac.start("MD5", s1); + var md5bytes = forge3.util.createBuffer(); + ai.putBytes(seed); + for (var i = 0; i < md5itr; ++i) { + hmac.start(null, null); + hmac.update(ai.getBytes()); + ai.putBuffer(hmac.digest()); + hmac.start(null, null); + hmac.update(ai.bytes() + seed); + md5bytes.putBuffer(hmac.digest()); + } + hmac.start("SHA1", s2); + var sha1bytes = forge3.util.createBuffer(); + ai.clear(); + ai.putBytes(seed); + for (var i = 0; i < sha1itr; ++i) { + hmac.start(null, null); + hmac.update(ai.getBytes()); + ai.putBuffer(hmac.digest()); + hmac.start(null, null); + hmac.update(ai.bytes() + seed); + sha1bytes.putBuffer(hmac.digest()); + } + rval.putBytes(forge3.util.xorBytes(md5bytes.getBytes(), sha1bytes.getBytes(), length)); + return rval; + }; + var hmac_sha1 = function(key2, seqNum, record) { + var hmac = forge3.hmac.create(); + hmac.start("SHA1", key2); + var b = forge3.util.createBuffer(); + b.putInt32(seqNum[0]); + b.putInt32(seqNum[1]); + b.putByte(record.type); + b.putByte(record.version.major); + b.putByte(record.version.minor); + b.putInt16(record.length); + b.putBytes(record.fragment.bytes()); + hmac.update(b.getBytes()); + return hmac.digest().getBytes(); + }; + var deflate = function(c, record, s) { + var rval = false; + try { + var bytes = c.deflate(record.fragment.getBytes()); + record.fragment = forge3.util.createBuffer(bytes); + record.length = bytes.length; + rval = true; + } catch (ex) { + } + return rval; + }; + var inflate = function(c, record, s) { + var rval = false; + try { + var bytes = c.inflate(record.fragment.getBytes()); + record.fragment = forge3.util.createBuffer(bytes); + record.length = bytes.length; + rval = true; + } catch (ex) { + } + return rval; + }; + var readVector = function(b, lenBytes) { + var len = 0; + switch (lenBytes) { + case 1: + len = b.getByte(); + break; + case 2: + len = b.getInt16(); + break; + case 3: + len = b.getInt24(); + break; + case 4: + len = b.getInt32(); + break; + } + return forge3.util.createBuffer(b.getBytes(len)); + }; + var writeVector = function(b, lenBytes, v) { + b.putInt(v.length(), lenBytes << 3); + b.putBuffer(v); + }; + var tls = {}; + tls.Versions = { + TLS_1_0: { major: 3, minor: 1 }, + TLS_1_1: { major: 3, minor: 2 }, + TLS_1_2: { major: 3, minor: 3 } + }; + tls.SupportedVersions = [ + tls.Versions.TLS_1_1, + tls.Versions.TLS_1_0 + ]; + tls.Version = tls.SupportedVersions[0]; + tls.MaxFragment = 16384 - 1024; + tls.ConnectionEnd = { + server: 0, + client: 1 + }; + tls.PRFAlgorithm = { + tls_prf_sha256: 0 + }; + tls.BulkCipherAlgorithm = { + none: null, + rc4: 0, + des3: 1, + aes: 2 + }; + tls.CipherType = { + stream: 0, + block: 1, + aead: 2 + }; + tls.MACAlgorithm = { + none: null, + hmac_md5: 0, + hmac_sha1: 1, + hmac_sha256: 2, + hmac_sha384: 3, + hmac_sha512: 4 + }; + tls.CompressionMethod = { + none: 0, + deflate: 1 + }; + tls.ContentType = { + change_cipher_spec: 20, + alert: 21, + handshake: 22, + application_data: 23, + heartbeat: 24 + }; + tls.HandshakeType = { + hello_request: 0, + client_hello: 1, + server_hello: 2, + certificate: 11, + server_key_exchange: 12, + certificate_request: 13, + server_hello_done: 14, + certificate_verify: 15, + client_key_exchange: 16, + finished: 20 + }; + tls.Alert = {}; + tls.Alert.Level = { + warning: 1, + fatal: 2 + }; + tls.Alert.Description = { + close_notify: 0, + unexpected_message: 10, + bad_record_mac: 20, + decryption_failed: 21, + record_overflow: 22, + decompression_failure: 30, + handshake_failure: 40, + bad_certificate: 42, + unsupported_certificate: 43, + certificate_revoked: 44, + certificate_expired: 45, + certificate_unknown: 46, + illegal_parameter: 47, + unknown_ca: 48, + access_denied: 49, + decode_error: 50, + decrypt_error: 51, + export_restriction: 60, + protocol_version: 70, + insufficient_security: 71, + internal_error: 80, + user_canceled: 90, + no_renegotiation: 100 + }; + tls.HeartbeatMessageType = { + heartbeat_request: 1, + heartbeat_response: 2 + }; + tls.CipherSuites = {}; + tls.getCipherSuite = function(twoBytes) { + var rval = null; + for (var key2 in tls.CipherSuites) { + var cs = tls.CipherSuites[key2]; + if (cs.id[0] === twoBytes.charCodeAt(0) && cs.id[1] === twoBytes.charCodeAt(1)) { + rval = cs; + break; + } + } + return rval; + }; + tls.handleUnexpected = function(c, record) { + var ignore = !c.open && c.entity === tls.ConnectionEnd.client; + if (!ignore) { + c.error(c, { + message: "Unexpected message. Received TLS record out of order.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.unexpected_message + } + }); + } + }; + tls.handleHelloRequest = function(c, record, length) { + if (!c.handshaking && c.handshakes > 0) { + tls.queue(c, tls.createAlert(c, { + level: tls.Alert.Level.warning, + description: tls.Alert.Description.no_renegotiation + })); + tls.flush(c); + } + c.process(); + }; + tls.parseHelloMessage = function(c, record, length) { + var msg = null; + var client = c.entity === tls.ConnectionEnd.client; + if (length < 38) { + c.error(c, { + message: client ? "Invalid ServerHello message. Message too short." : "Invalid ClientHello message. Message too short.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.illegal_parameter + } + }); + } else { + var b = record.fragment; + var remaining = b.length(); + msg = { + version: { + major: b.getByte(), + minor: b.getByte() + }, + random: forge3.util.createBuffer(b.getBytes(32)), + session_id: readVector(b, 1), + extensions: [] + }; + if (client) { + msg.cipher_suite = b.getBytes(2); + msg.compression_method = b.getByte(); + } else { + msg.cipher_suites = readVector(b, 2); + msg.compression_methods = readVector(b, 1); + } + remaining = length - (remaining - b.length()); + if (remaining > 0) { + var exts = readVector(b, 2); + while (exts.length() > 0) { + msg.extensions.push({ + type: [exts.getByte(), exts.getByte()], + data: readVector(exts, 2) + }); + } + if (!client) { + for (var i = 0; i < msg.extensions.length; ++i) { + var ext = msg.extensions[i]; + if (ext.type[0] === 0 && ext.type[1] === 0) { + var snl = readVector(ext.data, 2); + while (snl.length() > 0) { + var snType = snl.getByte(); + if (snType !== 0) { + break; + } + c.session.extensions.server_name.serverNameList.push(readVector(snl, 2).getBytes()); + } + } + } + } + } + if (c.session.version) { + if (msg.version.major !== c.session.version.major || msg.version.minor !== c.session.version.minor) { + return c.error(c, { + message: "TLS version change is disallowed during renegotiation.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.protocol_version + } + }); + } + } + if (client) { + c.session.cipherSuite = tls.getCipherSuite(msg.cipher_suite); + } else { + var tmp = forge3.util.createBuffer(msg.cipher_suites.bytes()); + while (tmp.length() > 0) { + c.session.cipherSuite = tls.getCipherSuite(tmp.getBytes(2)); + if (c.session.cipherSuite !== null) { + break; + } + } + } + if (c.session.cipherSuite === null) { + return c.error(c, { + message: "No cipher suites in common.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.handshake_failure + }, + cipherSuite: forge3.util.bytesToHex(msg.cipher_suite) + }); + } + if (client) { + c.session.compressionMethod = msg.compression_method; + } else { + c.session.compressionMethod = tls.CompressionMethod.none; + } + } + return msg; + }; + tls.createSecurityParameters = function(c, msg) { + var client = c.entity === tls.ConnectionEnd.client; + var msgRandom = msg.random.bytes(); + var cRandom = client ? c.session.sp.client_random : msgRandom; + var sRandom = client ? msgRandom : tls.createRandom().getBytes(); + c.session.sp = { + entity: c.entity, + prf_algorithm: tls.PRFAlgorithm.tls_prf_sha256, + bulk_cipher_algorithm: null, + cipher_type: null, + enc_key_length: null, + block_length: null, + fixed_iv_length: null, + record_iv_length: null, + mac_algorithm: null, + mac_length: null, + mac_key_length: null, + compression_algorithm: c.session.compressionMethod, + pre_master_secret: null, + master_secret: null, + client_random: cRandom, + server_random: sRandom + }; + }; + tls.handleServerHello = function(c, record, length) { + var msg = tls.parseHelloMessage(c, record, length); + if (c.fail) { + return; + } + if (msg.version.minor <= c.version.minor) { + c.version.minor = msg.version.minor; + } else { + return c.error(c, { + message: "Incompatible TLS version.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.protocol_version + } + }); + } + c.session.version = c.version; + var sessionId = msg.session_id.bytes(); + if (sessionId.length > 0 && sessionId === c.session.id) { + c.expect = SCC; + c.session.resuming = true; + c.session.sp.server_random = msg.random.bytes(); + } else { + c.expect = SCE; + c.session.resuming = false; + tls.createSecurityParameters(c, msg); + } + c.session.id = sessionId; + c.process(); + }; + tls.handleClientHello = function(c, record, length) { + var msg = tls.parseHelloMessage(c, record, length); + if (c.fail) { + return; + } + var sessionId = msg.session_id.bytes(); + var session = null; + if (c.sessionCache) { + session = c.sessionCache.getSession(sessionId); + if (session === null) { + sessionId = ""; + } else if (session.version.major !== msg.version.major || session.version.minor > msg.version.minor) { + session = null; + sessionId = ""; + } + } + if (sessionId.length === 0) { + sessionId = forge3.random.getBytes(32); + } + c.session.id = sessionId; + c.session.clientHelloVersion = msg.version; + c.session.sp = {}; + if (session) { + c.version = c.session.version = session.version; + c.session.sp = session.sp; + } else { + var version; + for (var i = 1; i < tls.SupportedVersions.length; ++i) { + version = tls.SupportedVersions[i]; + if (version.minor <= msg.version.minor) { + break; + } + } + c.version = { major: version.major, minor: version.minor }; + c.session.version = c.version; + } + if (session !== null) { + c.expect = CCC; + c.session.resuming = true; + c.session.sp.client_random = msg.random.bytes(); + } else { + c.expect = c.verifyClient !== false ? CCE : CKE; + c.session.resuming = false; + tls.createSecurityParameters(c, msg); + } + c.open = true; + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createServerHello(c) + })); + if (c.session.resuming) { + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.change_cipher_spec, + data: tls.createChangeCipherSpec() + })); + c.state.pending = tls.createConnectionState(c); + c.state.current.write = c.state.pending.write; + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createFinished(c) + })); + } else { + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createCertificate(c) + })); + if (!c.fail) { + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createServerKeyExchange(c) + })); + if (c.verifyClient !== false) { + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createCertificateRequest(c) + })); + } + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createServerHelloDone(c) + })); + } + } + tls.flush(c); + c.process(); + }; + tls.handleCertificate = function(c, record, length) { + if (length < 3) { + return c.error(c, { + message: "Invalid Certificate message. Message too short.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.illegal_parameter + } + }); + } + var b = record.fragment; + var msg = { + certificate_list: readVector(b, 3) + }; + var cert, asn1; + var certs = []; + try { + while (msg.certificate_list.length() > 0) { + cert = readVector(msg.certificate_list, 3); + asn1 = forge3.asn1.fromDer(cert); + cert = forge3.pki.certificateFromAsn1(asn1, true); + certs.push(cert); + } + } catch (ex) { + return c.error(c, { + message: "Could not parse certificate list.", + cause: ex, + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.bad_certificate + } + }); + } + var client = c.entity === tls.ConnectionEnd.client; + if ((client || c.verifyClient === true) && certs.length === 0) { + c.error(c, { + message: client ? "No server certificate provided." : "No client certificate provided.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.illegal_parameter + } + }); + } else if (certs.length === 0) { + c.expect = client ? SKE : CKE; + } else { + if (client) { + c.session.serverCertificate = certs[0]; + } else { + c.session.clientCertificate = certs[0]; + } + if (tls.verifyCertificateChain(c, certs)) { + c.expect = client ? SKE : CKE; + } + } + c.process(); + }; + tls.handleServerKeyExchange = function(c, record, length) { + if (length > 0) { + return c.error(c, { + message: "Invalid key parameters. Only RSA is supported.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.unsupported_certificate + } + }); + } + c.expect = SCR; + c.process(); + }; + tls.handleClientKeyExchange = function(c, record, length) { + if (length < 48) { + return c.error(c, { + message: "Invalid key parameters. Only RSA is supported.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.unsupported_certificate + } + }); + } + var b = record.fragment; + var msg = { + enc_pre_master_secret: readVector(b, 2).getBytes() + }; + var privateKey = null; + if (c.getPrivateKey) { + try { + privateKey = c.getPrivateKey(c, c.session.serverCertificate); + privateKey = forge3.pki.privateKeyFromPem(privateKey); + } catch (ex) { + c.error(c, { + message: "Could not get private key.", + cause: ex, + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.internal_error + } + }); + } + } + if (privateKey === null) { + return c.error(c, { + message: "No private key set.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.internal_error + } + }); + } + try { + var sp = c.session.sp; + sp.pre_master_secret = privateKey.decrypt(msg.enc_pre_master_secret); + var version = c.session.clientHelloVersion; + if (version.major !== sp.pre_master_secret.charCodeAt(0) || version.minor !== sp.pre_master_secret.charCodeAt(1)) { + throw new Error("TLS version rollback attack detected."); + } + } catch (ex) { + sp.pre_master_secret = forge3.random.getBytes(48); + } + c.expect = CCC; + if (c.session.clientCertificate !== null) { + c.expect = CCV; + } + c.process(); + }; + tls.handleCertificateRequest = function(c, record, length) { + if (length < 3) { + return c.error(c, { + message: "Invalid CertificateRequest. Message too short.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.illegal_parameter + } + }); + } + var b = record.fragment; + var msg = { + certificate_types: readVector(b, 1), + certificate_authorities: readVector(b, 2) + }; + c.session.certificateRequest = msg; + c.expect = SHD; + c.process(); + }; + tls.handleCertificateVerify = function(c, record, length) { + if (length < 2) { + return c.error(c, { + message: "Invalid CertificateVerify. Message too short.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.illegal_parameter + } + }); + } + var b = record.fragment; + b.read -= 4; + var msgBytes = b.bytes(); + b.read += 4; + var msg = { + signature: readVector(b, 2).getBytes() + }; + var verify = forge3.util.createBuffer(); + verify.putBuffer(c.session.md5.digest()); + verify.putBuffer(c.session.sha1.digest()); + verify = verify.getBytes(); + try { + var cert = c.session.clientCertificate; + if (!cert.publicKey.verify(verify, msg.signature, "NONE")) { + throw new Error("CertificateVerify signature does not match."); + } + c.session.md5.update(msgBytes); + c.session.sha1.update(msgBytes); + } catch (ex) { + return c.error(c, { + message: "Bad signature in CertificateVerify.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.handshake_failure + } + }); + } + c.expect = CCC; + c.process(); + }; + tls.handleServerHelloDone = function(c, record, length) { + if (length > 0) { + return c.error(c, { + message: "Invalid ServerHelloDone message. Invalid length.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.record_overflow + } + }); + } + if (c.serverCertificate === null) { + var error = { + message: "No server certificate provided. Not enough security.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.insufficient_security + } + }; + var depth = 0; + var ret = c.verify(c, error.alert.description, depth, []); + if (ret !== true) { + if (ret || ret === 0) { + if (typeof ret === "object" && !forge3.util.isArray(ret)) { + if (ret.message) { + error.message = ret.message; + } + if (ret.alert) { + error.alert.description = ret.alert; + } + } else if (typeof ret === "number") { + error.alert.description = ret; + } + } + return c.error(c, error); + } + } + if (c.session.certificateRequest !== null) { + record = tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createCertificate(c) + }); + tls.queue(c, record); + } + record = tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createClientKeyExchange(c) + }); + tls.queue(c, record); + c.expect = SER; + var callback = function(c2, signature) { + if (c2.session.certificateRequest !== null && c2.session.clientCertificate !== null) { + tls.queue(c2, tls.createRecord(c2, { + type: tls.ContentType.handshake, + data: tls.createCertificateVerify(c2, signature) + })); + } + tls.queue(c2, tls.createRecord(c2, { + type: tls.ContentType.change_cipher_spec, + data: tls.createChangeCipherSpec() + })); + c2.state.pending = tls.createConnectionState(c2); + c2.state.current.write = c2.state.pending.write; + tls.queue(c2, tls.createRecord(c2, { + type: tls.ContentType.handshake, + data: tls.createFinished(c2) + })); + c2.expect = SCC; + tls.flush(c2); + c2.process(); + }; + if (c.session.certificateRequest === null || c.session.clientCertificate === null) { + return callback(c, null); + } + tls.getClientSignature(c, callback); + }; + tls.handleChangeCipherSpec = function(c, record) { + if (record.fragment.getByte() !== 1) { + return c.error(c, { + message: "Invalid ChangeCipherSpec message received.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.illegal_parameter + } + }); + } + var client = c.entity === tls.ConnectionEnd.client; + if (c.session.resuming && client || !c.session.resuming && !client) { + c.state.pending = tls.createConnectionState(c); + } + c.state.current.read = c.state.pending.read; + if (!c.session.resuming && client || c.session.resuming && !client) { + c.state.pending = null; + } + c.expect = client ? SFI : CFI; + c.process(); + }; + tls.handleFinished = function(c, record, length) { + var b = record.fragment; + b.read -= 4; + var msgBytes = b.bytes(); + b.read += 4; + var vd = record.fragment.getBytes(); + b = forge3.util.createBuffer(); + b.putBuffer(c.session.md5.digest()); + b.putBuffer(c.session.sha1.digest()); + var client = c.entity === tls.ConnectionEnd.client; + var label = client ? "server finished" : "client finished"; + var sp = c.session.sp; + var vdl = 12; + var prf = prf_TLS1; + b = prf(sp.master_secret, label, b.getBytes(), vdl); + if (b.getBytes() !== vd) { + return c.error(c, { + message: "Invalid verify_data in Finished message.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.decrypt_error + } + }); + } + c.session.md5.update(msgBytes); + c.session.sha1.update(msgBytes); + if (c.session.resuming && client || !c.session.resuming && !client) { + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.change_cipher_spec, + data: tls.createChangeCipherSpec() + })); + c.state.current.write = c.state.pending.write; + c.state.pending = null; + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createFinished(c) + })); + } + c.expect = client ? SAD : CAD; + c.handshaking = false; + ++c.handshakes; + c.peerCertificate = client ? c.session.serverCertificate : c.session.clientCertificate; + tls.flush(c); + c.isConnected = true; + c.connected(c); + c.process(); + }; + tls.handleAlert = function(c, record) { + var b = record.fragment; + var alert = { + level: b.getByte(), + description: b.getByte() + }; + var msg; + switch (alert.description) { + case tls.Alert.Description.close_notify: + msg = "Connection closed."; + break; + case tls.Alert.Description.unexpected_message: + msg = "Unexpected message."; + break; + case tls.Alert.Description.bad_record_mac: + msg = "Bad record MAC."; + break; + case tls.Alert.Description.decryption_failed: + msg = "Decryption failed."; + break; + case tls.Alert.Description.record_overflow: + msg = "Record overflow."; + break; + case tls.Alert.Description.decompression_failure: + msg = "Decompression failed."; + break; + case tls.Alert.Description.handshake_failure: + msg = "Handshake failure."; + break; + case tls.Alert.Description.bad_certificate: + msg = "Bad certificate."; + break; + case tls.Alert.Description.unsupported_certificate: + msg = "Unsupported certificate."; + break; + case tls.Alert.Description.certificate_revoked: + msg = "Certificate revoked."; + break; + case tls.Alert.Description.certificate_expired: + msg = "Certificate expired."; + break; + case tls.Alert.Description.certificate_unknown: + msg = "Certificate unknown."; + break; + case tls.Alert.Description.illegal_parameter: + msg = "Illegal parameter."; + break; + case tls.Alert.Description.unknown_ca: + msg = "Unknown certificate authority."; + break; + case tls.Alert.Description.access_denied: + msg = "Access denied."; + break; + case tls.Alert.Description.decode_error: + msg = "Decode error."; + break; + case tls.Alert.Description.decrypt_error: + msg = "Decrypt error."; + break; + case tls.Alert.Description.export_restriction: + msg = "Export restriction."; + break; + case tls.Alert.Description.protocol_version: + msg = "Unsupported protocol version."; + break; + case tls.Alert.Description.insufficient_security: + msg = "Insufficient security."; + break; + case tls.Alert.Description.internal_error: + msg = "Internal error."; + break; + case tls.Alert.Description.user_canceled: + msg = "User canceled."; + break; + case tls.Alert.Description.no_renegotiation: + msg = "Renegotiation not supported."; + break; + default: + msg = "Unknown error."; + break; + } + if (alert.description === tls.Alert.Description.close_notify) { + return c.close(); + } + c.error(c, { + message: msg, + send: false, + origin: c.entity === tls.ConnectionEnd.client ? "server" : "client", + alert + }); + c.process(); + }; + tls.handleHandshake = function(c, record) { + var b = record.fragment; + var type = b.getByte(); + var length = b.getInt24(); + if (length > b.length()) { + c.fragmented = record; + record.fragment = forge3.util.createBuffer(); + b.read -= 4; + return c.process(); + } + c.fragmented = null; + b.read -= 4; + var bytes = b.bytes(length + 4); + b.read += 4; + if (type in hsTable[c.entity][c.expect]) { + if (c.entity === tls.ConnectionEnd.server && !c.open && !c.fail) { + c.handshaking = true; + c.session = { + version: null, + extensions: { + server_name: { + serverNameList: [] + } + }, + cipherSuite: null, + compressionMethod: null, + serverCertificate: null, + clientCertificate: null, + md5: forge3.md.md5.create(), + sha1: forge3.md.sha1.create() + }; + } + if (type !== tls.HandshakeType.hello_request && type !== tls.HandshakeType.certificate_verify && type !== tls.HandshakeType.finished) { + c.session.md5.update(bytes); + c.session.sha1.update(bytes); + } + hsTable[c.entity][c.expect][type](c, record, length); + } else { + tls.handleUnexpected(c, record); + } + }; + tls.handleApplicationData = function(c, record) { + c.data.putBuffer(record.fragment); + c.dataReady(c); + c.process(); + }; + tls.handleHeartbeat = function(c, record) { + var b = record.fragment; + var type = b.getByte(); + var length = b.getInt16(); + var payload = b.getBytes(length); + if (type === tls.HeartbeatMessageType.heartbeat_request) { + if (c.handshaking || length > payload.length) { + return c.process(); + } + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.heartbeat, + data: tls.createHeartbeat(tls.HeartbeatMessageType.heartbeat_response, payload) + })); + tls.flush(c); + } else if (type === tls.HeartbeatMessageType.heartbeat_response) { + if (payload !== c.expectedHeartbeatPayload) { + return c.process(); + } + if (c.heartbeatReceived) { + c.heartbeatReceived(c, forge3.util.createBuffer(payload)); + } + } + c.process(); + }; + var SHE = 0; + var SCE = 1; + var SKE = 2; + var SCR = 3; + var SHD = 4; + var SCC = 5; + var SFI = 6; + var SAD = 7; + var SER = 8; + var CHE = 0; + var CCE = 1; + var CKE = 2; + var CCV = 3; + var CCC = 4; + var CFI = 5; + var CAD = 6; + var __ = tls.handleUnexpected; + var R0 = tls.handleChangeCipherSpec; + var R1 = tls.handleAlert; + var R2 = tls.handleHandshake; + var R3 = tls.handleApplicationData; + var R4 = tls.handleHeartbeat; + var ctTable = []; + ctTable[tls.ConnectionEnd.client] = [ + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [R0, R1, __, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, R3, R4], + [__, R1, R2, __, R4] + ]; + ctTable[tls.ConnectionEnd.server] = [ + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, __, R4], + [R0, R1, __, __, R4], + [__, R1, R2, __, R4], + [__, R1, R2, R3, R4], + [__, R1, R2, __, R4] + ]; + var H0 = tls.handleHelloRequest; + var H1 = tls.handleServerHello; + var H2 = tls.handleCertificate; + var H3 = tls.handleServerKeyExchange; + var H4 = tls.handleCertificateRequest; + var H5 = tls.handleServerHelloDone; + var H6 = tls.handleFinished; + var hsTable = []; + hsTable[tls.ConnectionEnd.client] = [ + [__, __, H1, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, H2, H3, H4, H5, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, __, H3, H4, H5, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, __, __, H4, H5, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, __, __, __, H5, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, H6], + [H0, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __], + [H0, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __] + ]; + var H7 = tls.handleClientHello; + var H8 = tls.handleClientKeyExchange; + var H9 = tls.handleCertificateVerify; + hsTable[tls.ConnectionEnd.server] = [ + [__, H7, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __], + [__, __, __, __, __, __, __, __, __, __, __, H2, __, __, __, __, __, __, __, __, __], + [__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, H8, __, __, __, __], + [__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, H9, __, __, __, __, __], + [__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __], + [__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, H6], + [__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __], + [__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __] + ]; + tls.generateKeys = function(c, sp) { + var prf = prf_TLS1; + var random = sp.client_random + sp.server_random; + if (!c.session.resuming) { + sp.master_secret = prf(sp.pre_master_secret, "master secret", random, 48).bytes(); + sp.pre_master_secret = null; + } + random = sp.server_random + sp.client_random; + var length = 2 * sp.mac_key_length + 2 * sp.enc_key_length; + var tls10 = c.version.major === tls.Versions.TLS_1_0.major && c.version.minor === tls.Versions.TLS_1_0.minor; + if (tls10) { + length += 2 * sp.fixed_iv_length; + } + var km = prf(sp.master_secret, "key expansion", random, length); + var rval = { + client_write_MAC_key: km.getBytes(sp.mac_key_length), + server_write_MAC_key: km.getBytes(sp.mac_key_length), + client_write_key: km.getBytes(sp.enc_key_length), + server_write_key: km.getBytes(sp.enc_key_length) + }; + if (tls10) { + rval.client_write_IV = km.getBytes(sp.fixed_iv_length); + rval.server_write_IV = km.getBytes(sp.fixed_iv_length); + } + return rval; + }; + tls.createConnectionState = function(c) { + var client = c.entity === tls.ConnectionEnd.client; + var createMode = function() { + var mode = { + sequenceNumber: [0, 0], + macKey: null, + macLength: 0, + macFunction: null, + cipherState: null, + cipherFunction: function(record) { + return true; + }, + compressionState: null, + compressFunction: function(record) { + return true; + }, + updateSequenceNumber: function() { + if (mode.sequenceNumber[1] === 4294967295) { + mode.sequenceNumber[1] = 0; + ++mode.sequenceNumber[0]; + } else { + ++mode.sequenceNumber[1]; + } + } + }; + return mode; + }; + var state = { + read: createMode(), + write: createMode() + }; + state.read.update = function(c2, record) { + if (!state.read.cipherFunction(record, state.read)) { + c2.error(c2, { + message: "Could not decrypt record or bad MAC.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.bad_record_mac + } + }); + } else if (!state.read.compressFunction(c2, record, state.read)) { + c2.error(c2, { + message: "Could not decompress record.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.decompression_failure + } + }); + } + return !c2.fail; + }; + state.write.update = function(c2, record) { + if (!state.write.compressFunction(c2, record, state.write)) { + c2.error(c2, { + message: "Could not compress record.", + send: false, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.internal_error + } + }); + } else if (!state.write.cipherFunction(record, state.write)) { + c2.error(c2, { + message: "Could not encrypt record.", + send: false, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.internal_error + } + }); + } + return !c2.fail; + }; + if (c.session) { + var sp = c.session.sp; + c.session.cipherSuite.initSecurityParameters(sp); + sp.keys = tls.generateKeys(c, sp); + state.read.macKey = client ? sp.keys.server_write_MAC_key : sp.keys.client_write_MAC_key; + state.write.macKey = client ? sp.keys.client_write_MAC_key : sp.keys.server_write_MAC_key; + c.session.cipherSuite.initConnectionState(state, c, sp); + switch (sp.compression_algorithm) { + case tls.CompressionMethod.none: + break; + case tls.CompressionMethod.deflate: + state.read.compressFunction = inflate; + state.write.compressFunction = deflate; + break; + default: + throw new Error("Unsupported compression algorithm."); + } + } + return state; + }; + tls.createRandom = function() { + var d = new Date(); + var utc = +d + d.getTimezoneOffset() * 6e4; + var rval = forge3.util.createBuffer(); + rval.putInt32(utc); + rval.putBytes(forge3.random.getBytes(28)); + return rval; + }; + tls.createRecord = function(c, options) { + if (!options.data) { + return null; + } + var record = { + type: options.type, + version: { + major: c.version.major, + minor: c.version.minor + }, + length: options.data.length(), + fragment: options.data + }; + return record; + }; + tls.createAlert = function(c, alert) { + var b = forge3.util.createBuffer(); + b.putByte(alert.level); + b.putByte(alert.description); + return tls.createRecord(c, { + type: tls.ContentType.alert, + data: b + }); + }; + tls.createClientHello = function(c) { + c.session.clientHelloVersion = { + major: c.version.major, + minor: c.version.minor + }; + var cipherSuites = forge3.util.createBuffer(); + for (var i = 0; i < c.cipherSuites.length; ++i) { + var cs = c.cipherSuites[i]; + cipherSuites.putByte(cs.id[0]); + cipherSuites.putByte(cs.id[1]); + } + var cSuites = cipherSuites.length(); + var compressionMethods = forge3.util.createBuffer(); + compressionMethods.putByte(tls.CompressionMethod.none); + var cMethods = compressionMethods.length(); + var extensions = forge3.util.createBuffer(); + if (c.virtualHost) { + var ext = forge3.util.createBuffer(); + ext.putByte(0); + ext.putByte(0); + var serverName = forge3.util.createBuffer(); + serverName.putByte(0); + writeVector(serverName, 2, forge3.util.createBuffer(c.virtualHost)); + var snList = forge3.util.createBuffer(); + writeVector(snList, 2, serverName); + writeVector(ext, 2, snList); + extensions.putBuffer(ext); + } + var extLength = extensions.length(); + if (extLength > 0) { + extLength += 2; + } + var sessionId = c.session.id; + var length = sessionId.length + 1 + 2 + 4 + 28 + 2 + cSuites + 1 + cMethods + extLength; + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.client_hello); + rval.putInt24(length); + rval.putByte(c.version.major); + rval.putByte(c.version.minor); + rval.putBytes(c.session.sp.client_random); + writeVector(rval, 1, forge3.util.createBuffer(sessionId)); + writeVector(rval, 2, cipherSuites); + writeVector(rval, 1, compressionMethods); + if (extLength > 0) { + writeVector(rval, 2, extensions); + } + return rval; + }; + tls.createServerHello = function(c) { + var sessionId = c.session.id; + var length = sessionId.length + 1 + 2 + 4 + 28 + 2 + 1; + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.server_hello); + rval.putInt24(length); + rval.putByte(c.version.major); + rval.putByte(c.version.minor); + rval.putBytes(c.session.sp.server_random); + writeVector(rval, 1, forge3.util.createBuffer(sessionId)); + rval.putByte(c.session.cipherSuite.id[0]); + rval.putByte(c.session.cipherSuite.id[1]); + rval.putByte(c.session.compressionMethod); + return rval; + }; + tls.createCertificate = function(c) { + var client = c.entity === tls.ConnectionEnd.client; + var cert = null; + if (c.getCertificate) { + var hint; + if (client) { + hint = c.session.certificateRequest; + } else { + hint = c.session.extensions.server_name.serverNameList; + } + cert = c.getCertificate(c, hint); + } + var certList = forge3.util.createBuffer(); + if (cert !== null) { + try { + if (!forge3.util.isArray(cert)) { + cert = [cert]; + } + var asn1 = null; + for (var i = 0; i < cert.length; ++i) { + var msg = forge3.pem.decode(cert[i])[0]; + if (msg.type !== "CERTIFICATE" && msg.type !== "X509 CERTIFICATE" && msg.type !== "TRUSTED CERTIFICATE") { + var error = new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert certificate from PEM; PEM is encrypted."); + } + var der = forge3.util.createBuffer(msg.body); + if (asn1 === null) { + asn1 = forge3.asn1.fromDer(der.bytes(), false); + } + var certBuffer = forge3.util.createBuffer(); + writeVector(certBuffer, 3, der); + certList.putBuffer(certBuffer); + } + cert = forge3.pki.certificateFromAsn1(asn1); + if (client) { + c.session.clientCertificate = cert; + } else { + c.session.serverCertificate = cert; + } + } catch (ex) { + return c.error(c, { + message: "Could not send certificate list.", + cause: ex, + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.bad_certificate + } + }); + } + } + var length = 3 + certList.length(); + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.certificate); + rval.putInt24(length); + writeVector(rval, 3, certList); + return rval; + }; + tls.createClientKeyExchange = function(c) { + var b = forge3.util.createBuffer(); + b.putByte(c.session.clientHelloVersion.major); + b.putByte(c.session.clientHelloVersion.minor); + b.putBytes(forge3.random.getBytes(46)); + var sp = c.session.sp; + sp.pre_master_secret = b.getBytes(); + var key2 = c.session.serverCertificate.publicKey; + b = key2.encrypt(sp.pre_master_secret); + var length = b.length + 2; + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.client_key_exchange); + rval.putInt24(length); + rval.putInt16(b.length); + rval.putBytes(b); + return rval; + }; + tls.createServerKeyExchange = function(c) { + var length = 0; + var rval = forge3.util.createBuffer(); + if (length > 0) { + rval.putByte(tls.HandshakeType.server_key_exchange); + rval.putInt24(length); + } + return rval; + }; + tls.getClientSignature = function(c, callback) { + var b = forge3.util.createBuffer(); + b.putBuffer(c.session.md5.digest()); + b.putBuffer(c.session.sha1.digest()); + b = b.getBytes(); + c.getSignature = c.getSignature || function(c2, b2, callback2) { + var privateKey = null; + if (c2.getPrivateKey) { + try { + privateKey = c2.getPrivateKey(c2, c2.session.clientCertificate); + privateKey = forge3.pki.privateKeyFromPem(privateKey); + } catch (ex) { + c2.error(c2, { + message: "Could not get private key.", + cause: ex, + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.internal_error + } + }); + } + } + if (privateKey === null) { + c2.error(c2, { + message: "No private key set.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.internal_error + } + }); + } else { + b2 = privateKey.sign(b2, null); + } + callback2(c2, b2); + }; + c.getSignature(c, b, callback); + }; + tls.createCertificateVerify = function(c, signature) { + var length = signature.length + 2; + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.certificate_verify); + rval.putInt24(length); + rval.putInt16(signature.length); + rval.putBytes(signature); + return rval; + }; + tls.createCertificateRequest = function(c) { + var certTypes = forge3.util.createBuffer(); + certTypes.putByte(1); + var cAs = forge3.util.createBuffer(); + for (var key2 in c.caStore.certs) { + var cert = c.caStore.certs[key2]; + var dn = forge3.pki.distinguishedNameToAsn1(cert.subject); + var byteBuffer = forge3.asn1.toDer(dn); + cAs.putInt16(byteBuffer.length()); + cAs.putBuffer(byteBuffer); + } + var length = 1 + certTypes.length() + 2 + cAs.length(); + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.certificate_request); + rval.putInt24(length); + writeVector(rval, 1, certTypes); + writeVector(rval, 2, cAs); + return rval; + }; + tls.createServerHelloDone = function(c) { + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.server_hello_done); + rval.putInt24(0); + return rval; + }; + tls.createChangeCipherSpec = function() { + var rval = forge3.util.createBuffer(); + rval.putByte(1); + return rval; + }; + tls.createFinished = function(c) { + var b = forge3.util.createBuffer(); + b.putBuffer(c.session.md5.digest()); + b.putBuffer(c.session.sha1.digest()); + var client = c.entity === tls.ConnectionEnd.client; + var sp = c.session.sp; + var vdl = 12; + var prf = prf_TLS1; + var label = client ? "client finished" : "server finished"; + b = prf(sp.master_secret, label, b.getBytes(), vdl); + var rval = forge3.util.createBuffer(); + rval.putByte(tls.HandshakeType.finished); + rval.putInt24(b.length()); + rval.putBuffer(b); + return rval; + }; + tls.createHeartbeat = function(type, payload, payloadLength) { + if (typeof payloadLength === "undefined") { + payloadLength = payload.length; + } + var rval = forge3.util.createBuffer(); + rval.putByte(type); + rval.putInt16(payloadLength); + rval.putBytes(payload); + var plaintextLength = rval.length(); + var paddingLength = Math.max(16, plaintextLength - payloadLength - 3); + rval.putBytes(forge3.random.getBytes(paddingLength)); + return rval; + }; + tls.queue = function(c, record) { + if (!record) { + return; + } + if (record.fragment.length() === 0) { + if (record.type === tls.ContentType.handshake || record.type === tls.ContentType.alert || record.type === tls.ContentType.change_cipher_spec) { + return; + } + } + if (record.type === tls.ContentType.handshake) { + var bytes = record.fragment.bytes(); + c.session.md5.update(bytes); + c.session.sha1.update(bytes); + bytes = null; + } + var records; + if (record.fragment.length() <= tls.MaxFragment) { + records = [record]; + } else { + records = []; + var data = record.fragment.bytes(); + while (data.length > tls.MaxFragment) { + records.push(tls.createRecord(c, { + type: record.type, + data: forge3.util.createBuffer(data.slice(0, tls.MaxFragment)) + })); + data = data.slice(tls.MaxFragment); + } + if (data.length > 0) { + records.push(tls.createRecord(c, { + type: record.type, + data: forge3.util.createBuffer(data) + })); + } + } + for (var i = 0; i < records.length && !c.fail; ++i) { + var rec = records[i]; + var s = c.state.current.write; + if (s.update(c, rec)) { + c.records.push(rec); + } + } + }; + tls.flush = function(c) { + for (var i = 0; i < c.records.length; ++i) { + var record = c.records[i]; + c.tlsData.putByte(record.type); + c.tlsData.putByte(record.version.major); + c.tlsData.putByte(record.version.minor); + c.tlsData.putInt16(record.fragment.length()); + c.tlsData.putBuffer(c.records[i].fragment); + } + c.records = []; + return c.tlsDataReady(c); + }; + var _certErrorToAlertDesc = function(error) { + switch (error) { + case true: + return true; + case forge3.pki.certificateError.bad_certificate: + return tls.Alert.Description.bad_certificate; + case forge3.pki.certificateError.unsupported_certificate: + return tls.Alert.Description.unsupported_certificate; + case forge3.pki.certificateError.certificate_revoked: + return tls.Alert.Description.certificate_revoked; + case forge3.pki.certificateError.certificate_expired: + return tls.Alert.Description.certificate_expired; + case forge3.pki.certificateError.certificate_unknown: + return tls.Alert.Description.certificate_unknown; + case forge3.pki.certificateError.unknown_ca: + return tls.Alert.Description.unknown_ca; + default: + return tls.Alert.Description.bad_certificate; + } + }; + var _alertDescToCertError = function(desc) { + switch (desc) { + case true: + return true; + case tls.Alert.Description.bad_certificate: + return forge3.pki.certificateError.bad_certificate; + case tls.Alert.Description.unsupported_certificate: + return forge3.pki.certificateError.unsupported_certificate; + case tls.Alert.Description.certificate_revoked: + return forge3.pki.certificateError.certificate_revoked; + case tls.Alert.Description.certificate_expired: + return forge3.pki.certificateError.certificate_expired; + case tls.Alert.Description.certificate_unknown: + return forge3.pki.certificateError.certificate_unknown; + case tls.Alert.Description.unknown_ca: + return forge3.pki.certificateError.unknown_ca; + default: + return forge3.pki.certificateError.bad_certificate; + } + }; + tls.verifyCertificateChain = function(c, chain) { + try { + var options = {}; + for (var key2 in c.verifyOptions) { + options[key2] = c.verifyOptions[key2]; + } + options.verify = function(vfd, depth, chain2) { + var desc = _certErrorToAlertDesc(vfd); + var ret = c.verify(c, vfd, depth, chain2); + if (ret !== true) { + if (typeof ret === "object" && !forge3.util.isArray(ret)) { + var error = new Error("The application rejected the certificate."); + error.send = true; + error.alert = { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.bad_certificate + }; + if (ret.message) { + error.message = ret.message; + } + if (ret.alert) { + error.alert.description = ret.alert; + } + throw error; + } + if (ret !== vfd) { + ret = _alertDescToCertError(ret); + } + } + return ret; + }; + forge3.pki.verifyCertificateChain(c.caStore, chain, options); + } catch (ex) { + var err = ex; + if (typeof err !== "object" || forge3.util.isArray(err)) { + err = { + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: _certErrorToAlertDesc(ex) + } + }; + } + if (!("send" in err)) { + err.send = true; + } + if (!("alert" in err)) { + err.alert = { + level: tls.Alert.Level.fatal, + description: _certErrorToAlertDesc(err.error) + }; + } + c.error(c, err); + } + return !c.fail; + }; + tls.createSessionCache = function(cache, capacity) { + var rval = null; + if (cache && cache.getSession && cache.setSession && cache.order) { + rval = cache; + } else { + rval = {}; + rval.cache = cache || {}; + rval.capacity = Math.max(capacity || 100, 1); + rval.order = []; + for (var key2 in cache) { + if (rval.order.length <= capacity) { + rval.order.push(key2); + } else { + delete cache[key2]; + } + } + rval.getSession = function(sessionId) { + var session = null; + var key3 = null; + if (sessionId) { + key3 = forge3.util.bytesToHex(sessionId); + } else if (rval.order.length > 0) { + key3 = rval.order[0]; + } + if (key3 !== null && key3 in rval.cache) { + session = rval.cache[key3]; + delete rval.cache[key3]; + for (var i in rval.order) { + if (rval.order[i] === key3) { + rval.order.splice(i, 1); + break; + } + } + } + return session; + }; + rval.setSession = function(sessionId, session) { + if (rval.order.length === rval.capacity) { + var key3 = rval.order.shift(); + delete rval.cache[key3]; + } + var key3 = forge3.util.bytesToHex(sessionId); + rval.order.push(key3); + rval.cache[key3] = session; + }; + } + return rval; + }; + tls.createConnection = function(options) { + var caStore = null; + if (options.caStore) { + if (forge3.util.isArray(options.caStore)) { + caStore = forge3.pki.createCaStore(options.caStore); + } else { + caStore = options.caStore; + } + } else { + caStore = forge3.pki.createCaStore(); + } + var cipherSuites = options.cipherSuites || null; + if (cipherSuites === null) { + cipherSuites = []; + for (var key2 in tls.CipherSuites) { + cipherSuites.push(tls.CipherSuites[key2]); + } + } + var entity = options.server || false ? tls.ConnectionEnd.server : tls.ConnectionEnd.client; + var sessionCache = options.sessionCache ? tls.createSessionCache(options.sessionCache) : null; + var c = { + version: { major: tls.Version.major, minor: tls.Version.minor }, + entity, + sessionId: options.sessionId, + caStore, + sessionCache, + cipherSuites, + connected: options.connected, + virtualHost: options.virtualHost || null, + verifyClient: options.verifyClient || false, + verify: options.verify || function(cn, vfd, dpth, cts) { + return vfd; + }, + verifyOptions: options.verifyOptions || {}, + getCertificate: options.getCertificate || null, + getPrivateKey: options.getPrivateKey || null, + getSignature: options.getSignature || null, + input: forge3.util.createBuffer(), + tlsData: forge3.util.createBuffer(), + data: forge3.util.createBuffer(), + tlsDataReady: options.tlsDataReady, + dataReady: options.dataReady, + heartbeatReceived: options.heartbeatReceived, + closed: options.closed, + error: function(c2, ex) { + ex.origin = ex.origin || (c2.entity === tls.ConnectionEnd.client ? "client" : "server"); + if (ex.send) { + tls.queue(c2, tls.createAlert(c2, ex.alert)); + tls.flush(c2); + } + var fatal = ex.fatal !== false; + if (fatal) { + c2.fail = true; + } + options.error(c2, ex); + if (fatal) { + c2.close(false); + } + }, + deflate: options.deflate || null, + inflate: options.inflate || null + }; + c.reset = function(clearFail) { + c.version = { major: tls.Version.major, minor: tls.Version.minor }; + c.record = null; + c.session = null; + c.peerCertificate = null; + c.state = { + pending: null, + current: null + }; + c.expect = c.entity === tls.ConnectionEnd.client ? SHE : CHE; + c.fragmented = null; + c.records = []; + c.open = false; + c.handshakes = 0; + c.handshaking = false; + c.isConnected = false; + c.fail = !(clearFail || typeof clearFail === "undefined"); + c.input.clear(); + c.tlsData.clear(); + c.data.clear(); + c.state.current = tls.createConnectionState(c); + }; + c.reset(); + var _update = function(c2, record) { + var aligned = record.type - tls.ContentType.change_cipher_spec; + var handlers = ctTable[c2.entity][c2.expect]; + if (aligned in handlers) { + handlers[aligned](c2, record); + } else { + tls.handleUnexpected(c2, record); + } + }; + var _readRecordHeader = function(c2) { + var rval = 0; + var b = c2.input; + var len = b.length(); + if (len < 5) { + rval = 5 - len; + } else { + c2.record = { + type: b.getByte(), + version: { + major: b.getByte(), + minor: b.getByte() + }, + length: b.getInt16(), + fragment: forge3.util.createBuffer(), + ready: false + }; + var compatibleVersion = c2.record.version.major === c2.version.major; + if (compatibleVersion && c2.session && c2.session.version) { + compatibleVersion = c2.record.version.minor === c2.version.minor; + } + if (!compatibleVersion) { + c2.error(c2, { + message: "Incompatible TLS version.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.protocol_version + } + }); + } + } + return rval; + }; + var _readRecord = function(c2) { + var rval = 0; + var b = c2.input; + var len = b.length(); + if (len < c2.record.length) { + rval = c2.record.length - len; + } else { + c2.record.fragment.putBytes(b.getBytes(c2.record.length)); + b.compact(); + var s = c2.state.current.read; + if (s.update(c2, c2.record)) { + if (c2.fragmented !== null) { + if (c2.fragmented.type === c2.record.type) { + c2.fragmented.fragment.putBuffer(c2.record.fragment); + c2.record = c2.fragmented; + } else { + c2.error(c2, { + message: "Invalid fragmented record.", + send: true, + alert: { + level: tls.Alert.Level.fatal, + description: tls.Alert.Description.unexpected_message + } + }); + } + } + c2.record.ready = true; + } + } + return rval; + }; + c.handshake = function(sessionId) { + if (c.entity !== tls.ConnectionEnd.client) { + c.error(c, { + message: "Cannot initiate handshake as a server.", + fatal: false + }); + } else if (c.handshaking) { + c.error(c, { + message: "Handshake already in progress.", + fatal: false + }); + } else { + if (c.fail && !c.open && c.handshakes === 0) { + c.fail = false; + } + c.handshaking = true; + sessionId = sessionId || ""; + var session = null; + if (sessionId.length > 0) { + if (c.sessionCache) { + session = c.sessionCache.getSession(sessionId); + } + if (session === null) { + sessionId = ""; + } + } + if (sessionId.length === 0 && c.sessionCache) { + session = c.sessionCache.getSession(); + if (session !== null) { + sessionId = session.id; + } + } + c.session = { + id: sessionId, + version: null, + cipherSuite: null, + compressionMethod: null, + serverCertificate: null, + certificateRequest: null, + clientCertificate: null, + sp: {}, + md5: forge3.md.md5.create(), + sha1: forge3.md.sha1.create() + }; + if (session) { + c.version = session.version; + c.session.sp = session.sp; + } + c.session.sp.client_random = tls.createRandom().getBytes(); + c.open = true; + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.handshake, + data: tls.createClientHello(c) + })); + tls.flush(c); + } + }; + c.process = function(data) { + var rval = 0; + if (data) { + c.input.putBytes(data); + } + if (!c.fail) { + if (c.record !== null && c.record.ready && c.record.fragment.isEmpty()) { + c.record = null; + } + if (c.record === null) { + rval = _readRecordHeader(c); + } + if (!c.fail && c.record !== null && !c.record.ready) { + rval = _readRecord(c); + } + if (!c.fail && c.record !== null && c.record.ready) { + _update(c, c.record); + } + } + return rval; + }; + c.prepare = function(data) { + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.application_data, + data: forge3.util.createBuffer(data) + })); + return tls.flush(c); + }; + c.prepareHeartbeatRequest = function(payload, payloadLength) { + if (payload instanceof forge3.util.ByteBuffer) { + payload = payload.bytes(); + } + if (typeof payloadLength === "undefined") { + payloadLength = payload.length; + } + c.expectedHeartbeatPayload = payload; + tls.queue(c, tls.createRecord(c, { + type: tls.ContentType.heartbeat, + data: tls.createHeartbeat(tls.HeartbeatMessageType.heartbeat_request, payload, payloadLength) + })); + return tls.flush(c); + }; + c.close = function(clearFail) { + if (!c.fail && c.sessionCache && c.session) { + var session = { + id: c.session.id, + version: c.session.version, + sp: c.session.sp + }; + session.sp.keys = null; + c.sessionCache.setSession(session.id, session); + } + if (c.open) { + c.open = false; + c.input.clear(); + if (c.isConnected || c.handshaking) { + c.isConnected = c.handshaking = false; + tls.queue(c, tls.createAlert(c, { + level: tls.Alert.Level.warning, + description: tls.Alert.Description.close_notify + })); + tls.flush(c); + } + c.closed(c); + } + c.reset(clearFail); + }; + return c; + }; + module2.exports = forge3.tls = forge3.tls || {}; + for (key in tls) { + if (typeof tls[key] !== "function") { + forge3.tls[key] = tls[key]; + } + } + var key; + forge3.tls.prf_tls1 = prf_TLS1; + forge3.tls.hmac_sha1 = hmac_sha1; + forge3.tls.createSessionCache = tls.createSessionCache; + forge3.tls.createConnection = tls.createConnection; + } +}); + +// node_modules/node-forge/lib/aesCipherSuites.js +var require_aesCipherSuites = __commonJS({ + "node_modules/node-forge/lib/aesCipherSuites.js"(exports, module2) { + var forge3 = require_forge(); + require_aes(); + require_tls(); + var tls = module2.exports = forge3.tls; + tls.CipherSuites["TLS_RSA_WITH_AES_128_CBC_SHA"] = { + id: [0, 47], + name: "TLS_RSA_WITH_AES_128_CBC_SHA", + initSecurityParameters: function(sp) { + sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes; + sp.cipher_type = tls.CipherType.block; + sp.enc_key_length = 16; + sp.block_length = 16; + sp.fixed_iv_length = 16; + sp.record_iv_length = 16; + sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1; + sp.mac_length = 20; + sp.mac_key_length = 20; + }, + initConnectionState + }; + tls.CipherSuites["TLS_RSA_WITH_AES_256_CBC_SHA"] = { + id: [0, 53], + name: "TLS_RSA_WITH_AES_256_CBC_SHA", + initSecurityParameters: function(sp) { + sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes; + sp.cipher_type = tls.CipherType.block; + sp.enc_key_length = 32; + sp.block_length = 16; + sp.fixed_iv_length = 16; + sp.record_iv_length = 16; + sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1; + sp.mac_length = 20; + sp.mac_key_length = 20; + }, + initConnectionState + }; + function initConnectionState(state, c, sp) { + var client = c.entity === forge3.tls.ConnectionEnd.client; + state.read.cipherState = { + init: false, + cipher: forge3.cipher.createDecipher("AES-CBC", client ? sp.keys.server_write_key : sp.keys.client_write_key), + iv: client ? sp.keys.server_write_IV : sp.keys.client_write_IV + }; + state.write.cipherState = { + init: false, + cipher: forge3.cipher.createCipher("AES-CBC", client ? sp.keys.client_write_key : sp.keys.server_write_key), + iv: client ? sp.keys.client_write_IV : sp.keys.server_write_IV + }; + state.read.cipherFunction = decrypt_aes_cbc_sha1; + state.write.cipherFunction = encrypt_aes_cbc_sha1; + state.read.macLength = state.write.macLength = sp.mac_length; + state.read.macFunction = state.write.macFunction = tls.hmac_sha1; + } + function encrypt_aes_cbc_sha1(record, s) { + var rval = false; + var mac = s.macFunction(s.macKey, s.sequenceNumber, record); + record.fragment.putBytes(mac); + s.updateSequenceNumber(); + var iv; + if (record.version.minor === tls.Versions.TLS_1_0.minor) { + iv = s.cipherState.init ? null : s.cipherState.iv; + } else { + iv = forge3.random.getBytesSync(16); + } + s.cipherState.init = true; + var cipher = s.cipherState.cipher; + cipher.start({ iv }); + if (record.version.minor >= tls.Versions.TLS_1_1.minor) { + cipher.output.putBytes(iv); + } + cipher.update(record.fragment); + if (cipher.finish(encrypt_aes_cbc_sha1_padding)) { + record.fragment = cipher.output; + record.length = record.fragment.length(); + rval = true; + } + return rval; + } + function encrypt_aes_cbc_sha1_padding(blockSize, input, decrypt) { + if (!decrypt) { + var padding = blockSize - input.length() % blockSize; + input.fillWithByte(padding - 1, padding); + } + return true; + } + function decrypt_aes_cbc_sha1_padding(blockSize, output, decrypt) { + var rval = true; + if (decrypt) { + var len = output.length(); + var paddingLength = output.last(); + for (var i = len - 1 - paddingLength; i < len - 1; ++i) { + rval = rval && output.at(i) == paddingLength; + } + if (rval) { + output.truncate(paddingLength + 1); + } + } + return rval; + } + function decrypt_aes_cbc_sha1(record, s) { + var rval = false; + var iv; + if (record.version.minor === tls.Versions.TLS_1_0.minor) { + iv = s.cipherState.init ? null : s.cipherState.iv; + } else { + iv = record.fragment.getBytes(16); + } + s.cipherState.init = true; + var cipher = s.cipherState.cipher; + cipher.start({ iv }); + cipher.update(record.fragment); + rval = cipher.finish(decrypt_aes_cbc_sha1_padding); + var macLen = s.macLength; + var mac = forge3.random.getBytesSync(macLen); + var len = cipher.output.length(); + if (len >= macLen) { + record.fragment = cipher.output.getBytes(len - macLen); + mac = cipher.output.getBytes(macLen); + } else { + record.fragment = cipher.output.getBytes(); + } + record.fragment = forge3.util.createBuffer(record.fragment); + record.length = record.fragment.length(); + var mac2 = s.macFunction(s.macKey, s.sequenceNumber, record); + s.updateSequenceNumber(); + rval = compareMacs(s.macKey, mac, mac2) && rval; + return rval; + } + function compareMacs(key, mac1, mac2) { + var hmac = forge3.hmac.create(); + hmac.start("SHA1", key); + hmac.update(mac1); + mac1 = hmac.digest().getBytes(); + hmac.start(null, null); + hmac.update(mac2); + mac2 = hmac.digest().getBytes(); + return mac1 === mac2; + } + } +}); + +// node_modules/node-forge/lib/sha512.js +var require_sha512 = __commonJS({ + "node_modules/node-forge/lib/sha512.js"(exports, module2) { + var forge3 = require_forge(); + require_md(); + require_util(); + var sha512 = module2.exports = forge3.sha512 = forge3.sha512 || {}; + forge3.md.sha512 = forge3.md.algorithms.sha512 = sha512; + var sha384 = forge3.sha384 = forge3.sha512.sha384 = forge3.sha512.sha384 || {}; + sha384.create = function() { + return sha512.create("SHA-384"); + }; + forge3.md.sha384 = forge3.md.algorithms.sha384 = sha384; + forge3.sha512.sha256 = forge3.sha512.sha256 || { + create: function() { + return sha512.create("SHA-512/256"); + } + }; + forge3.md["sha512/256"] = forge3.md.algorithms["sha512/256"] = forge3.sha512.sha256; + forge3.sha512.sha224 = forge3.sha512.sha224 || { + create: function() { + return sha512.create("SHA-512/224"); + } + }; + forge3.md["sha512/224"] = forge3.md.algorithms["sha512/224"] = forge3.sha512.sha224; + sha512.create = function(algorithm) { + if (!_initialized) { + _init(); + } + if (typeof algorithm === "undefined") { + algorithm = "SHA-512"; + } + if (!(algorithm in _states)) { + throw new Error("Invalid SHA-512 algorithm: " + algorithm); + } + var _state = _states[algorithm]; + var _h = null; + var _input = forge3.util.createBuffer(); + var _w = new Array(80); + for (var wi = 0; wi < 80; ++wi) { + _w[wi] = new Array(2); + } + var digestLength = 64; + switch (algorithm) { + case "SHA-384": + digestLength = 48; + break; + case "SHA-512/256": + digestLength = 32; + break; + case "SHA-512/224": + digestLength = 28; + break; + } + var md = { + algorithm: algorithm.replace("-", "").toLowerCase(), + blockLength: 128, + digestLength, + messageLength: 0, + fullMessageLength: null, + messageLengthSize: 16 + }; + md.start = function() { + md.messageLength = 0; + md.fullMessageLength = md.messageLength128 = []; + var int32s = md.messageLengthSize / 4; + for (var i = 0; i < int32s; ++i) { + md.fullMessageLength.push(0); + } + _input = forge3.util.createBuffer(); + _h = new Array(_state.length); + for (var i = 0; i < _state.length; ++i) { + _h[i] = _state[i].slice(0); + } + return md; + }; + md.start(); + md.update = function(msg, encoding) { + if (encoding === "utf8") { + msg = forge3.util.encodeUtf8(msg); + } + var len = msg.length; + md.messageLength += len; + len = [len / 4294967296 >>> 0, len >>> 0]; + for (var i = md.fullMessageLength.length - 1; i >= 0; --i) { + md.fullMessageLength[i] += len[1]; + len[1] = len[0] + (md.fullMessageLength[i] / 4294967296 >>> 0); + md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0; + len[0] = len[1] / 4294967296 >>> 0; + } + _input.putBytes(msg); + _update(_h, _w, _input); + if (_input.read > 2048 || _input.length() === 0) { + _input.compact(); + } + return md; + }; + md.digest = function() { + var finalBlock = forge3.util.createBuffer(); + finalBlock.putBytes(_input.bytes()); + var remaining = md.fullMessageLength[md.fullMessageLength.length - 1] + md.messageLengthSize; + var overflow = remaining & md.blockLength - 1; + finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow)); + var next, carry; + var bits = md.fullMessageLength[0] * 8; + for (var i = 0; i < md.fullMessageLength.length - 1; ++i) { + next = md.fullMessageLength[i + 1] * 8; + carry = next / 4294967296 >>> 0; + bits += carry; + finalBlock.putInt32(bits >>> 0); + bits = next >>> 0; + } + finalBlock.putInt32(bits); + var h = new Array(_h.length); + for (var i = 0; i < _h.length; ++i) { + h[i] = _h[i].slice(0); + } + _update(h, _w, finalBlock); + var rval = forge3.util.createBuffer(); + var hlen; + if (algorithm === "SHA-512") { + hlen = h.length; + } else if (algorithm === "SHA-384") { + hlen = h.length - 2; + } else { + hlen = h.length - 4; + } + for (var i = 0; i < hlen; ++i) { + rval.putInt32(h[i][0]); + if (i !== hlen - 1 || algorithm !== "SHA-512/224") { + rval.putInt32(h[i][1]); + } + } + return rval; + }; + return md; + }; + var _padding = null; + var _initialized = false; + var _k = null; + var _states = null; + function _init() { + _padding = String.fromCharCode(128); + _padding += forge3.util.fillString(String.fromCharCode(0), 128); + _k = [ + [1116352408, 3609767458], + [1899447441, 602891725], + [3049323471, 3964484399], + [3921009573, 2173295548], + [961987163, 4081628472], + [1508970993, 3053834265], + [2453635748, 2937671579], + [2870763221, 3664609560], + [3624381080, 2734883394], + [310598401, 1164996542], + [607225278, 1323610764], + [1426881987, 3590304994], + [1925078388, 4068182383], + [2162078206, 991336113], + [2614888103, 633803317], + [3248222580, 3479774868], + [3835390401, 2666613458], + [4022224774, 944711139], + [264347078, 2341262773], + [604807628, 2007800933], + [770255983, 1495990901], + [1249150122, 1856431235], + [1555081692, 3175218132], + [1996064986, 2198950837], + [2554220882, 3999719339], + [2821834349, 766784016], + [2952996808, 2566594879], + [3210313671, 3203337956], + [3336571891, 1034457026], + [3584528711, 2466948901], + [113926993, 3758326383], + [338241895, 168717936], + [666307205, 1188179964], + [773529912, 1546045734], + [1294757372, 1522805485], + [1396182291, 2643833823], + [1695183700, 2343527390], + [1986661051, 1014477480], + [2177026350, 1206759142], + [2456956037, 344077627], + [2730485921, 1290863460], + [2820302411, 3158454273], + [3259730800, 3505952657], + [3345764771, 106217008], + [3516065817, 3606008344], + [3600352804, 1432725776], + [4094571909, 1467031594], + [275423344, 851169720], + [430227734, 3100823752], + [506948616, 1363258195], + [659060556, 3750685593], + [883997877, 3785050280], + [958139571, 3318307427], + [1322822218, 3812723403], + [1537002063, 2003034995], + [1747873779, 3602036899], + [1955562222, 1575990012], + [2024104815, 1125592928], + [2227730452, 2716904306], + [2361852424, 442776044], + [2428436474, 593698344], + [2756734187, 3733110249], + [3204031479, 2999351573], + [3329325298, 3815920427], + [3391569614, 3928383900], + [3515267271, 566280711], + [3940187606, 3454069534], + [4118630271, 4000239992], + [116418474, 1914138554], + [174292421, 2731055270], + [289380356, 3203993006], + [460393269, 320620315], + [685471733, 587496836], + [852142971, 1086792851], + [1017036298, 365543100], + [1126000580, 2618297676], + [1288033470, 3409855158], + [1501505948, 4234509866], + [1607167915, 987167468], + [1816402316, 1246189591] + ]; + _states = {}; + _states["SHA-512"] = [ + [1779033703, 4089235720], + [3144134277, 2227873595], + [1013904242, 4271175723], + [2773480762, 1595750129], + [1359893119, 2917565137], + [2600822924, 725511199], + [528734635, 4215389547], + [1541459225, 327033209] + ]; + _states["SHA-384"] = [ + [3418070365, 3238371032], + [1654270250, 914150663], + [2438529370, 812702999], + [355462360, 4144912697], + [1731405415, 4290775857], + [2394180231, 1750603025], + [3675008525, 1694076839], + [1203062813, 3204075428] + ]; + _states["SHA-512/256"] = [ + [573645204, 4230739756], + [2673172387, 3360449730], + [596883563, 1867755857], + [2520282905, 1497426621], + [2519219938, 2827943907], + [3193839141, 1401305490], + [721525244, 746961066], + [246885852, 2177182882] + ]; + _states["SHA-512/224"] = [ + [2352822216, 424955298], + [1944164710, 2312950998], + [502970286, 855612546], + [1738396948, 1479516111], + [258812777, 2077511080], + [2011393907, 79989058], + [1067287976, 1780299464], + [286451373, 2446758561] + ]; + _initialized = true; + } + function _update(s, w, bytes) { + var t1_hi, t1_lo; + var t2_hi, t2_lo; + var s0_hi, s0_lo; + var s1_hi, s1_lo; + var ch_hi, ch_lo; + var maj_hi, maj_lo; + var a_hi, a_lo; + var b_hi, b_lo; + var c_hi, c_lo; + var d_hi, d_lo; + var e_hi, e_lo; + var f_hi, f_lo; + var g_hi, g_lo; + var h_hi, h_lo; + var i, hi, lo, w2, w7, w15, w16; + var len = bytes.length(); + while (len >= 128) { + for (i = 0; i < 16; ++i) { + w[i][0] = bytes.getInt32() >>> 0; + w[i][1] = bytes.getInt32() >>> 0; + } + for (; i < 80; ++i) { + w2 = w[i - 2]; + hi = w2[0]; + lo = w2[1]; + t1_hi = ((hi >>> 19 | lo << 13) ^ (lo >>> 29 | hi << 3) ^ hi >>> 6) >>> 0; + t1_lo = ((hi << 13 | lo >>> 19) ^ (lo << 3 | hi >>> 29) ^ (hi << 26 | lo >>> 6)) >>> 0; + w15 = w[i - 15]; + hi = w15[0]; + lo = w15[1]; + t2_hi = ((hi >>> 1 | lo << 31) ^ (hi >>> 8 | lo << 24) ^ hi >>> 7) >>> 0; + t2_lo = ((hi << 31 | lo >>> 1) ^ (hi << 24 | lo >>> 8) ^ (hi << 25 | lo >>> 7)) >>> 0; + w7 = w[i - 7]; + w16 = w[i - 16]; + lo = t1_lo + w7[1] + t2_lo + w16[1]; + w[i][0] = t1_hi + w7[0] + t2_hi + w16[0] + (lo / 4294967296 >>> 0) >>> 0; + w[i][1] = lo >>> 0; + } + a_hi = s[0][0]; + a_lo = s[0][1]; + b_hi = s[1][0]; + b_lo = s[1][1]; + c_hi = s[2][0]; + c_lo = s[2][1]; + d_hi = s[3][0]; + d_lo = s[3][1]; + e_hi = s[4][0]; + e_lo = s[4][1]; + f_hi = s[5][0]; + f_lo = s[5][1]; + g_hi = s[6][0]; + g_lo = s[6][1]; + h_hi = s[7][0]; + h_lo = s[7][1]; + for (i = 0; i < 80; ++i) { + s1_hi = ((e_hi >>> 14 | e_lo << 18) ^ (e_hi >>> 18 | e_lo << 14) ^ (e_lo >>> 9 | e_hi << 23)) >>> 0; + s1_lo = ((e_hi << 18 | e_lo >>> 14) ^ (e_hi << 14 | e_lo >>> 18) ^ (e_lo << 23 | e_hi >>> 9)) >>> 0; + ch_hi = (g_hi ^ e_hi & (f_hi ^ g_hi)) >>> 0; + ch_lo = (g_lo ^ e_lo & (f_lo ^ g_lo)) >>> 0; + s0_hi = ((a_hi >>> 28 | a_lo << 4) ^ (a_lo >>> 2 | a_hi << 30) ^ (a_lo >>> 7 | a_hi << 25)) >>> 0; + s0_lo = ((a_hi << 4 | a_lo >>> 28) ^ (a_lo << 30 | a_hi >>> 2) ^ (a_lo << 25 | a_hi >>> 7)) >>> 0; + maj_hi = (a_hi & b_hi | c_hi & (a_hi ^ b_hi)) >>> 0; + maj_lo = (a_lo & b_lo | c_lo & (a_lo ^ b_lo)) >>> 0; + lo = h_lo + s1_lo + ch_lo + _k[i][1] + w[i][1]; + t1_hi = h_hi + s1_hi + ch_hi + _k[i][0] + w[i][0] + (lo / 4294967296 >>> 0) >>> 0; + t1_lo = lo >>> 0; + lo = s0_lo + maj_lo; + t2_hi = s0_hi + maj_hi + (lo / 4294967296 >>> 0) >>> 0; + t2_lo = lo >>> 0; + h_hi = g_hi; + h_lo = g_lo; + g_hi = f_hi; + g_lo = f_lo; + f_hi = e_hi; + f_lo = e_lo; + lo = d_lo + t1_lo; + e_hi = d_hi + t1_hi + (lo / 4294967296 >>> 0) >>> 0; + e_lo = lo >>> 0; + d_hi = c_hi; + d_lo = c_lo; + c_hi = b_hi; + c_lo = b_lo; + b_hi = a_hi; + b_lo = a_lo; + lo = t1_lo + t2_lo; + a_hi = t1_hi + t2_hi + (lo / 4294967296 >>> 0) >>> 0; + a_lo = lo >>> 0; + } + lo = s[0][1] + a_lo; + s[0][0] = s[0][0] + a_hi + (lo / 4294967296 >>> 0) >>> 0; + s[0][1] = lo >>> 0; + lo = s[1][1] + b_lo; + s[1][0] = s[1][0] + b_hi + (lo / 4294967296 >>> 0) >>> 0; + s[1][1] = lo >>> 0; + lo = s[2][1] + c_lo; + s[2][0] = s[2][0] + c_hi + (lo / 4294967296 >>> 0) >>> 0; + s[2][1] = lo >>> 0; + lo = s[3][1] + d_lo; + s[3][0] = s[3][0] + d_hi + (lo / 4294967296 >>> 0) >>> 0; + s[3][1] = lo >>> 0; + lo = s[4][1] + e_lo; + s[4][0] = s[4][0] + e_hi + (lo / 4294967296 >>> 0) >>> 0; + s[4][1] = lo >>> 0; + lo = s[5][1] + f_lo; + s[5][0] = s[5][0] + f_hi + (lo / 4294967296 >>> 0) >>> 0; + s[5][1] = lo >>> 0; + lo = s[6][1] + g_lo; + s[6][0] = s[6][0] + g_hi + (lo / 4294967296 >>> 0) >>> 0; + s[6][1] = lo >>> 0; + lo = s[7][1] + h_lo; + s[7][0] = s[7][0] + h_hi + (lo / 4294967296 >>> 0) >>> 0; + s[7][1] = lo >>> 0; + len -= 128; + } + } + } +}); + +// node_modules/node-forge/lib/asn1-validator.js +var require_asn1_validator = __commonJS({ + "node_modules/node-forge/lib/asn1-validator.js"(exports) { + var forge3 = require_forge(); + require_asn1(); + var asn1 = forge3.asn1; + exports.privateKeyValidator = { + name: "PrivateKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "PrivateKeyInfo.version", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.INTEGER, + constructed: false, + capture: "privateKeyVersion" + }, { + name: "PrivateKeyInfo.privateKeyAlgorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "privateKeyOid" + }] + }, { + name: "PrivateKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OCTETSTRING, + constructed: false, + capture: "privateKey" + }] + }; + exports.publicKeyValidator = { + name: "SubjectPublicKeyInfo", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + captureAsn1: "subjectPublicKeyInfo", + value: [ + { + name: "SubjectPublicKeyInfo.AlgorithmIdentifier", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.SEQUENCE, + constructed: true, + value: [{ + name: "AlgorithmIdentifier.algorithm", + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.OID, + constructed: false, + capture: "publicKeyOid" + }] + }, + { + tagClass: asn1.Class.UNIVERSAL, + type: asn1.Type.BITSTRING, + constructed: false, + composed: true, + captureBitStringValue: "ed25519PublicKey" + } + ] + }; + } +}); + +// node_modules/node-forge/lib/ed25519.js +var require_ed25519 = __commonJS({ + "node_modules/node-forge/lib/ed25519.js"(exports, module2) { + var forge3 = require_forge(); + require_jsbn(); + require_random(); + require_sha512(); + require_util(); + var asn1Validator = require_asn1_validator(); + var publicKeyValidator = asn1Validator.publicKeyValidator; + var privateKeyValidator = asn1Validator.privateKeyValidator; + if (typeof BigInteger === "undefined") { + BigInteger = forge3.jsbn.BigInteger; + } + var BigInteger; + var ByteBuffer = forge3.util.ByteBuffer; + var NativeBuffer = typeof Buffer === "undefined" ? Uint8Array : Buffer; + forge3.pki = forge3.pki || {}; + module2.exports = forge3.pki.ed25519 = forge3.ed25519 = forge3.ed25519 || {}; + var ed25519 = forge3.ed25519; + ed25519.constants = {}; + ed25519.constants.PUBLIC_KEY_BYTE_LENGTH = 32; + ed25519.constants.PRIVATE_KEY_BYTE_LENGTH = 64; + ed25519.constants.SEED_BYTE_LENGTH = 32; + ed25519.constants.SIGN_BYTE_LENGTH = 64; + ed25519.constants.HASH_BYTE_LENGTH = 64; + ed25519.generateKeyPair = function(options) { + options = options || {}; + var seed = options.seed; + if (seed === void 0) { + seed = forge3.random.getBytesSync(ed25519.constants.SEED_BYTE_LENGTH); + } else if (typeof seed === "string") { + if (seed.length !== ed25519.constants.SEED_BYTE_LENGTH) { + throw new TypeError('"seed" must be ' + ed25519.constants.SEED_BYTE_LENGTH + " bytes in length."); + } + } else if (!(seed instanceof Uint8Array)) { + throw new TypeError('"seed" must be a node.js Buffer, Uint8Array, or a binary string.'); + } + seed = messageToNativeBuffer({ message: seed, encoding: "binary" }); + var pk = new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH); + var sk = new NativeBuffer(ed25519.constants.PRIVATE_KEY_BYTE_LENGTH); + for (var i = 0; i < 32; ++i) { + sk[i] = seed[i]; + } + crypto_sign_keypair(pk, sk); + return { publicKey: pk, privateKey: sk }; + }; + ed25519.privateKeyFromAsn1 = function(obj) { + var capture = {}; + var errors = []; + var valid = forge3.asn1.validate(obj, privateKeyValidator, capture, errors); + if (!valid) { + var error = new Error("Invalid Key."); + error.errors = errors; + throw error; + } + var oid = forge3.asn1.derToOid(capture.privateKeyOid); + var ed25519Oid = forge3.oids.EdDSA25519; + if (oid !== ed25519Oid) { + throw new Error('Invalid OID "' + oid + '"; OID must be "' + ed25519Oid + '".'); + } + var privateKey = capture.privateKey; + var privateKeyBytes = messageToNativeBuffer({ + message: forge3.asn1.fromDer(privateKey).value, + encoding: "binary" + }); + return { privateKeyBytes }; + }; + ed25519.publicKeyFromAsn1 = function(obj) { + var capture = {}; + var errors = []; + var valid = forge3.asn1.validate(obj, publicKeyValidator, capture, errors); + if (!valid) { + var error = new Error("Invalid Key."); + error.errors = errors; + throw error; + } + var oid = forge3.asn1.derToOid(capture.publicKeyOid); + var ed25519Oid = forge3.oids.EdDSA25519; + if (oid !== ed25519Oid) { + throw new Error('Invalid OID "' + oid + '"; OID must be "' + ed25519Oid + '".'); + } + var publicKeyBytes = capture.ed25519PublicKey; + if (publicKeyBytes.length !== ed25519.constants.PUBLIC_KEY_BYTE_LENGTH) { + throw new Error("Key length is invalid."); + } + return messageToNativeBuffer({ + message: publicKeyBytes, + encoding: "binary" + }); + }; + ed25519.publicKeyFromPrivateKey = function(options) { + options = options || {}; + var privateKey = messageToNativeBuffer({ + message: options.privateKey, + encoding: "binary" + }); + if (privateKey.length !== ed25519.constants.PRIVATE_KEY_BYTE_LENGTH) { + throw new TypeError('"options.privateKey" must have a byte length of ' + ed25519.constants.PRIVATE_KEY_BYTE_LENGTH); + } + var pk = new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH); + for (var i = 0; i < pk.length; ++i) { + pk[i] = privateKey[32 + i]; + } + return pk; + }; + ed25519.sign = function(options) { + options = options || {}; + var msg = messageToNativeBuffer(options); + var privateKey = messageToNativeBuffer({ + message: options.privateKey, + encoding: "binary" + }); + if (privateKey.length === ed25519.constants.SEED_BYTE_LENGTH) { + var keyPair = ed25519.generateKeyPair({ seed: privateKey }); + privateKey = keyPair.privateKey; + } else if (privateKey.length !== ed25519.constants.PRIVATE_KEY_BYTE_LENGTH) { + throw new TypeError('"options.privateKey" must have a byte length of ' + ed25519.constants.SEED_BYTE_LENGTH + " or " + ed25519.constants.PRIVATE_KEY_BYTE_LENGTH); + } + var signedMsg = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length); + crypto_sign(signedMsg, msg, msg.length, privateKey); + var sig = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH); + for (var i = 0; i < sig.length; ++i) { + sig[i] = signedMsg[i]; + } + return sig; + }; + ed25519.verify = function(options) { + options = options || {}; + var msg = messageToNativeBuffer(options); + if (options.signature === void 0) { + throw new TypeError('"options.signature" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a binary string.'); + } + var sig = messageToNativeBuffer({ + message: options.signature, + encoding: "binary" + }); + if (sig.length !== ed25519.constants.SIGN_BYTE_LENGTH) { + throw new TypeError('"options.signature" must have a byte length of ' + ed25519.constants.SIGN_BYTE_LENGTH); + } + var publicKey = messageToNativeBuffer({ + message: options.publicKey, + encoding: "binary" + }); + if (publicKey.length !== ed25519.constants.PUBLIC_KEY_BYTE_LENGTH) { + throw new TypeError('"options.publicKey" must have a byte length of ' + ed25519.constants.PUBLIC_KEY_BYTE_LENGTH); + } + var sm = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length); + var m = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length); + var i; + for (i = 0; i < ed25519.constants.SIGN_BYTE_LENGTH; ++i) { + sm[i] = sig[i]; + } + for (i = 0; i < msg.length; ++i) { + sm[i + ed25519.constants.SIGN_BYTE_LENGTH] = msg[i]; + } + return crypto_sign_open(m, sm, sm.length, publicKey) >= 0; + }; + function messageToNativeBuffer(options) { + var message = options.message; + if (message instanceof Uint8Array || message instanceof NativeBuffer) { + return message; + } + var encoding = options.encoding; + if (message === void 0) { + if (options.md) { + message = options.md.digest().getBytes(); + encoding = "binary"; + } else { + throw new TypeError('"options.message" or "options.md" not specified.'); + } + } + if (typeof message === "string" && !encoding) { + throw new TypeError('"options.encoding" must be "binary" or "utf8".'); + } + if (typeof message === "string") { + if (typeof Buffer !== "undefined") { + return Buffer.from(message, encoding); + } + message = new ByteBuffer(message, encoding); + } else if (!(message instanceof ByteBuffer)) { + throw new TypeError('"options.message" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a string with "options.encoding" specifying its encoding.'); + } + var buffer = new NativeBuffer(message.length()); + for (var i = 0; i < buffer.length; ++i) { + buffer[i] = message.at(i); + } + return buffer; + } + var gf0 = gf(); + var gf1 = gf([1]); + var D = gf([ + 30883, + 4953, + 19914, + 30187, + 55467, + 16705, + 2637, + 112, + 59544, + 30585, + 16505, + 36039, + 65139, + 11119, + 27886, + 20995 + ]); + var D2 = gf([ + 61785, + 9906, + 39828, + 60374, + 45398, + 33411, + 5274, + 224, + 53552, + 61171, + 33010, + 6542, + 64743, + 22239, + 55772, + 9222 + ]); + var X = gf([ + 54554, + 36645, + 11616, + 51542, + 42930, + 38181, + 51040, + 26924, + 56412, + 64982, + 57905, + 49316, + 21502, + 52590, + 14035, + 8553 + ]); + var Y = gf([ + 26200, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214, + 26214 + ]); + var L = new Float64Array([ + 237, + 211, + 245, + 92, + 26, + 99, + 18, + 88, + 214, + 156, + 247, + 162, + 222, + 249, + 222, + 20, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 16 + ]); + var I = gf([ + 41136, + 18958, + 6951, + 50414, + 58488, + 44335, + 6150, + 12099, + 55207, + 15867, + 153, + 11085, + 57099, + 20417, + 9344, + 11139 + ]); + function sha512(msg, msgLen) { + var md = forge3.md.sha512.create(); + var buffer = new ByteBuffer(msg); + md.update(buffer.getBytes(msgLen), "binary"); + var hash = md.digest().getBytes(); + if (typeof Buffer !== "undefined") { + return Buffer.from(hash, "binary"); + } + var out = new NativeBuffer(ed25519.constants.HASH_BYTE_LENGTH); + for (var i = 0; i < 64; ++i) { + out[i] = hash.charCodeAt(i); + } + return out; + } + function crypto_sign_keypair(pk, sk) { + var p = [gf(), gf(), gf(), gf()]; + var i; + var d = sha512(sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + scalarbase(p, d); + pack(pk, p); + for (i = 0; i < 32; ++i) { + sk[i + 32] = pk[i]; + } + return 0; + } + function crypto_sign(sm, m, n, sk) { + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + var d = sha512(sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + var smlen = n + 64; + for (i = 0; i < n; ++i) { + sm[64 + i] = m[i]; + } + for (i = 0; i < 32; ++i) { + sm[32 + i] = d[32 + i]; + } + var r = sha512(sm.subarray(32), n + 32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + for (i = 32; i < 64; ++i) { + sm[i] = sk[i]; + } + var h = sha512(sm, n + 64); + reduce(h); + for (i = 32; i < 64; ++i) { + x[i] = 0; + } + for (i = 0; i < 32; ++i) { + x[i] = r[i]; + } + for (i = 0; i < 32; ++i) { + for (j = 0; j < 32; j++) { + x[i + j] += h[i] * d[j]; + } + } + modL(sm.subarray(32), x); + return smlen; + } + function crypto_sign_open(m, sm, n, pk) { + var i, mlen; + var t = new NativeBuffer(32); + var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()]; + mlen = -1; + if (n < 64) { + return -1; + } + if (unpackneg(q, pk)) { + return -1; + } + for (i = 0; i < n; ++i) { + m[i] = sm[i]; + } + for (i = 0; i < 32; ++i) { + m[i + 32] = pk[i]; + } + var h = sha512(m, n); + reduce(h); + scalarmult(p, q, h); + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; ++i) { + m[i] = 0; + } + return -1; + } + for (i = 0; i < n; ++i) { + m[i] = sm[i + 64]; + } + mlen = n; + return mlen; + } + function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = x[j] + 128 >> 8; + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; ++j) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; ++j) { + x[j] -= carry * L[j]; + } + for (i = 0; i < 32; ++i) { + x[i + 1] += x[i] >> 8; + r[i] = x[i] & 255; + } + } + function reduce(r) { + var x = new Float64Array(64); + for (var i = 0; i < 64; ++i) { + x[i] = r[i]; + r[i] = 0; + } + modL(r, x); + } + function add(p, q) { + var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf(); + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); + } + function cswap(p, q, b) { + for (var i = 0; i < 4; ++i) { + sel25519(p[i], q[i], b); + } + } + function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; + } + function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; ++i) { + t[i] = n[i]; + } + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; ++j) { + m[0] = t[0] - 65517; + for (i = 1; i < 15; ++i) { + m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1); + m[i - 1] &= 65535; + } + m[15] = t[15] - 32767 - (m[14] >> 16 & 1); + b = m[15] >> 16 & 1; + m[14] &= 65535; + sel25519(t, m, 1 - b); + } + for (i = 0; i < 16; i++) { + o[2 * i] = t[i] & 255; + o[2 * i + 1] = t[i] >> 8; + } + } + function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf(); + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) { + M(r[0], r[0], I); + } + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) { + return -1; + } + if (par25519(r[0]) === p[31] >> 7) { + Z(r[0], gf0, r[0]); + } + M(r[3], r[0], r[1]); + return 0; + } + function unpack25519(o, n) { + var i; + for (i = 0; i < 16; ++i) { + o[i] = n[2 * i] + (n[2 * i + 1] << 8); + } + o[15] &= 32767; + } + function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; ++a) { + c[a] = i[a]; + } + for (a = 250; a >= 0; --a) { + S(c, c); + if (a !== 1) { + M(c, c, i); + } + } + for (a = 0; a < 16; ++a) { + o[a] = c[a]; + } + } + function neq25519(a, b) { + var c = new NativeBuffer(32); + var d = new NativeBuffer(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); + } + function crypto_verify_32(x, xi, y, yi) { + return vn(x, xi, y, yi, 32); + } + function vn(x, xi, y, yi, n) { + var i, d = 0; + for (i = 0; i < n; ++i) { + d |= x[xi + i] ^ y[yi + i]; + } + return (1 & d - 1 >>> 8) - 1; + } + function par25519(a) { + var d = new NativeBuffer(32); + pack25519(d, a); + return d[0] & 1; + } + function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = s[i / 8 | 0] >> (i & 7) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } + } + function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); + } + function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) { + r[i] = a[i] | 0; + } + } + function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; ++a) { + c[a] = i[a]; + } + for (a = 253; a >= 0; --a) { + S(c, c); + if (a !== 2 && a !== 4) { + M(c, c, i); + } + } + for (a = 0; a < 16; ++a) { + o[a] = c[a]; + } + } + function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; ++i) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c - 1 + 37 * (c - 1); + } + function sel25519(p, q, b) { + var t, c = ~(b - 1); + for (var i = 0; i < 16; ++i) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } + } + function gf(init) { + var i, r = new Float64Array(16); + if (init) { + for (i = 0; i < init.length; ++i) { + r[i] = init[i]; + } + } + return r; + } + function A(o, a, b) { + for (var i = 0; i < 16; ++i) { + o[i] = a[i] + b[i]; + } + } + function Z(o, a, b) { + for (var i = 0; i < 16; ++i) { + o[i] = a[i] - b[i]; + } + } + function S(o, a) { + M(o, a, a); + } + function M(o, a, b) { + var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15]; + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + c = 1; + v = t0 + c + 65535; + c = Math.floor(v / 65536); + t0 = v - c * 65536; + v = t1 + c + 65535; + c = Math.floor(v / 65536); + t1 = v - c * 65536; + v = t2 + c + 65535; + c = Math.floor(v / 65536); + t2 = v - c * 65536; + v = t3 + c + 65535; + c = Math.floor(v / 65536); + t3 = v - c * 65536; + v = t4 + c + 65535; + c = Math.floor(v / 65536); + t4 = v - c * 65536; + v = t5 + c + 65535; + c = Math.floor(v / 65536); + t5 = v - c * 65536; + v = t6 + c + 65535; + c = Math.floor(v / 65536); + t6 = v - c * 65536; + v = t7 + c + 65535; + c = Math.floor(v / 65536); + t7 = v - c * 65536; + v = t8 + c + 65535; + c = Math.floor(v / 65536); + t8 = v - c * 65536; + v = t9 + c + 65535; + c = Math.floor(v / 65536); + t9 = v - c * 65536; + v = t10 + c + 65535; + c = Math.floor(v / 65536); + t10 = v - c * 65536; + v = t11 + c + 65535; + c = Math.floor(v / 65536); + t11 = v - c * 65536; + v = t12 + c + 65535; + c = Math.floor(v / 65536); + t12 = v - c * 65536; + v = t13 + c + 65535; + c = Math.floor(v / 65536); + t13 = v - c * 65536; + v = t14 + c + 65535; + c = Math.floor(v / 65536); + t14 = v - c * 65536; + v = t15 + c + 65535; + c = Math.floor(v / 65536); + t15 = v - c * 65536; + t0 += c - 1 + 37 * (c - 1); + c = 1; + v = t0 + c + 65535; + c = Math.floor(v / 65536); + t0 = v - c * 65536; + v = t1 + c + 65535; + c = Math.floor(v / 65536); + t1 = v - c * 65536; + v = t2 + c + 65535; + c = Math.floor(v / 65536); + t2 = v - c * 65536; + v = t3 + c + 65535; + c = Math.floor(v / 65536); + t3 = v - c * 65536; + v = t4 + c + 65535; + c = Math.floor(v / 65536); + t4 = v - c * 65536; + v = t5 + c + 65535; + c = Math.floor(v / 65536); + t5 = v - c * 65536; + v = t6 + c + 65535; + c = Math.floor(v / 65536); + t6 = v - c * 65536; + v = t7 + c + 65535; + c = Math.floor(v / 65536); + t7 = v - c * 65536; + v = t8 + c + 65535; + c = Math.floor(v / 65536); + t8 = v - c * 65536; + v = t9 + c + 65535; + c = Math.floor(v / 65536); + t9 = v - c * 65536; + v = t10 + c + 65535; + c = Math.floor(v / 65536); + t10 = v - c * 65536; + v = t11 + c + 65535; + c = Math.floor(v / 65536); + t11 = v - c * 65536; + v = t12 + c + 65535; + c = Math.floor(v / 65536); + t12 = v - c * 65536; + v = t13 + c + 65535; + c = Math.floor(v / 65536); + t13 = v - c * 65536; + v = t14 + c + 65535; + c = Math.floor(v / 65536); + t14 = v - c * 65536; + v = t15 + c + 65535; + c = Math.floor(v / 65536); + t15 = v - c * 65536; + t0 += c - 1 + 37 * (c - 1); + o[0] = t0; + o[1] = t1; + o[2] = t2; + o[3] = t3; + o[4] = t4; + o[5] = t5; + o[6] = t6; + o[7] = t7; + o[8] = t8; + o[9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; + } + } +}); + +// node_modules/node-forge/lib/kem.js +var require_kem = __commonJS({ + "node_modules/node-forge/lib/kem.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + require_random(); + require_jsbn(); + module2.exports = forge3.kem = forge3.kem || {}; + var BigInteger = forge3.jsbn.BigInteger; + forge3.kem.rsa = {}; + forge3.kem.rsa.create = function(kdf, options) { + options = options || {}; + var prng = options.prng || forge3.random; + var kem = {}; + kem.encrypt = function(publicKey, keyLength) { + var byteLength = Math.ceil(publicKey.n.bitLength() / 8); + var r; + do { + r = new BigInteger(forge3.util.bytesToHex(prng.getBytesSync(byteLength)), 16).mod(publicKey.n); + } while (r.compareTo(BigInteger.ONE) <= 0); + r = forge3.util.hexToBytes(r.toString(16)); + var zeros = byteLength - r.length; + if (zeros > 0) { + r = forge3.util.fillString(String.fromCharCode(0), zeros) + r; + } + var encapsulation = publicKey.encrypt(r, "NONE"); + var key = kdf.generate(r, keyLength); + return { encapsulation, key }; + }; + kem.decrypt = function(privateKey, encapsulation, keyLength) { + var r = privateKey.decrypt(encapsulation, "NONE"); + return kdf.generate(r, keyLength); + }; + return kem; + }; + forge3.kem.kdf1 = function(md, digestLength) { + _createKDF(this, md, 0, digestLength || md.digestLength); + }; + forge3.kem.kdf2 = function(md, digestLength) { + _createKDF(this, md, 1, digestLength || md.digestLength); + }; + function _createKDF(kdf, md, counterStart, digestLength) { + kdf.generate = function(x, length) { + var key = new forge3.util.ByteBuffer(); + var k = Math.ceil(length / digestLength) + counterStart; + var c = new forge3.util.ByteBuffer(); + for (var i = counterStart; i < k; ++i) { + c.putInt32(i); + md.start(); + md.update(x + c.getBytes()); + var hash = md.digest(); + key.putBytes(hash.getBytes(digestLength)); + } + key.truncate(key.length() - length); + return key.getBytes(); + }; + } + } +}); + +// node_modules/node-forge/lib/log.js +var require_log = __commonJS({ + "node_modules/node-forge/lib/log.js"(exports, module2) { + var forge3 = require_forge(); + require_util(); + module2.exports = forge3.log = forge3.log || {}; + forge3.log.levels = [ + "none", + "error", + "warning", + "info", + "debug", + "verbose", + "max" + ]; + var sLevelInfo = {}; + var sLoggers = []; + var sConsoleLogger = null; + forge3.log.LEVEL_LOCKED = 1 << 1; + forge3.log.NO_LEVEL_CHECK = 1 << 2; + forge3.log.INTERPOLATE = 1 << 3; + for (i = 0; i < forge3.log.levels.length; ++i) { + level = forge3.log.levels[i]; + sLevelInfo[level] = { + index: i, + name: level.toUpperCase() + }; + } + var level; + var i; + forge3.log.logMessage = function(message) { + var messageLevelIndex = sLevelInfo[message.level].index; + for (var i2 = 0; i2 < sLoggers.length; ++i2) { + var logger2 = sLoggers[i2]; + if (logger2.flags & forge3.log.NO_LEVEL_CHECK) { + logger2.f(message); + } else { + var loggerLevelIndex = sLevelInfo[logger2.level].index; + if (messageLevelIndex <= loggerLevelIndex) { + logger2.f(logger2, message); + } + } + } + }; + forge3.log.prepareStandard = function(message) { + if (!("standard" in message)) { + message.standard = sLevelInfo[message.level].name + " [" + message.category + "] " + message.message; + } + }; + forge3.log.prepareFull = function(message) { + if (!("full" in message)) { + var args = [message.message]; + args = args.concat([]); + message.full = forge3.util.format.apply(this, args); + } + }; + forge3.log.prepareStandardFull = function(message) { + if (!("standardFull" in message)) { + forge3.log.prepareStandard(message); + message.standardFull = message.standard; + } + }; + if (true) { + levels = ["error", "warning", "info", "debug", "verbose"]; + for (i = 0; i < levels.length; ++i) { + (function(level2) { + forge3.log[level2] = function(category, message) { + var args = Array.prototype.slice.call(arguments).slice(2); + var msg = { + timestamp: new Date(), + level: level2, + category, + message, + "arguments": args + }; + forge3.log.logMessage(msg); + }; + })(levels[i]); + } + } + var levels; + var i; + forge3.log.makeLogger = function(logFunction) { + var logger2 = { + flags: 0, + f: logFunction + }; + forge3.log.setLevel(logger2, "none"); + return logger2; + }; + forge3.log.setLevel = function(logger2, level2) { + var rval = false; + if (logger2 && !(logger2.flags & forge3.log.LEVEL_LOCKED)) { + for (var i2 = 0; i2 < forge3.log.levels.length; ++i2) { + var aValidLevel = forge3.log.levels[i2]; + if (level2 == aValidLevel) { + logger2.level = level2; + rval = true; + break; + } + } + } + return rval; + }; + forge3.log.lock = function(logger2, lock2) { + if (typeof lock2 === "undefined" || lock2) { + logger2.flags |= forge3.log.LEVEL_LOCKED; + } else { + logger2.flags &= ~forge3.log.LEVEL_LOCKED; + } + }; + forge3.log.addLogger = function(logger2) { + sLoggers.push(logger2); + }; + if (typeof console !== "undefined" && "log" in console) { + if (console.error && console.warn && console.info && console.debug) { + levelHandlers = { + error: console.error, + warning: console.warn, + info: console.info, + debug: console.debug, + verbose: console.debug + }; + f = function(logger2, message) { + forge3.log.prepareStandard(message); + var handler = levelHandlers[message.level]; + var args = [message.standard]; + args = args.concat(message["arguments"].slice()); + handler.apply(console, args); + }; + logger = forge3.log.makeLogger(f); + } else { + f = function(logger2, message) { + forge3.log.prepareStandardFull(message); + console.log(message.standardFull); + }; + logger = forge3.log.makeLogger(f); + } + forge3.log.setLevel(logger, "debug"); + forge3.log.addLogger(logger); + sConsoleLogger = logger; + } else { + console = { + log: function() { + } + }; + } + var logger; + var levelHandlers; + var f; + if (sConsoleLogger !== null && typeof window !== "undefined" && window.location) { + query = new URL(window.location.href).searchParams; + if (query.has("console.level")) { + forge3.log.setLevel(sConsoleLogger, query.get("console.level").slice(-1)[0]); + } + if (query.has("console.lock")) { + lock = query.get("console.lock").slice(-1)[0]; + if (lock == "true") { + forge3.log.lock(sConsoleLogger); + } + } + } + var query; + var lock; + forge3.log.consoleLogger = sConsoleLogger; + } +}); + +// node_modules/node-forge/lib/md.all.js +var require_md_all = __commonJS({ + "node_modules/node-forge/lib/md.all.js"(exports, module2) { + module2.exports = require_md(); + require_md5(); + require_sha1(); + require_sha256(); + require_sha512(); + } +}); + +// node_modules/node-forge/lib/pkcs7.js +var require_pkcs7 = __commonJS({ + "node_modules/node-forge/lib/pkcs7.js"(exports, module2) { + var forge3 = require_forge(); + require_aes(); + require_asn1(); + require_des(); + require_oids(); + require_pem(); + require_pkcs7asn1(); + require_random(); + require_util(); + require_x509(); + var asn1 = forge3.asn1; + var p7 = module2.exports = forge3.pkcs7 = forge3.pkcs7 || {}; + p7.messageFromPem = function(pem) { + var msg = forge3.pem.decode(pem)[0]; + if (msg.type !== "PKCS7") { + var error = new Error('Could not convert PKCS#7 message from PEM; PEM header type is not "PKCS#7".'); + error.headerType = msg.type; + throw error; + } + if (msg.procType && msg.procType.type === "ENCRYPTED") { + throw new Error("Could not convert PKCS#7 message from PEM; PEM is encrypted."); + } + var obj = asn1.fromDer(msg.body); + return p7.messageFromAsn1(obj); + }; + p7.messageToPem = function(msg, maxline) { + var pemObj = { + type: "PKCS7", + body: asn1.toDer(msg.toAsn1()).getBytes() + }; + return forge3.pem.encode(pemObj, { maxline }); + }; + p7.messageFromAsn1 = function(obj) { + var capture = {}; + var errors = []; + if (!asn1.validate(obj, p7.asn1.contentInfoValidator, capture, errors)) { + var error = new Error("Cannot read PKCS#7 message. ASN.1 object is not an PKCS#7 ContentInfo."); + error.errors = errors; + throw error; + } + var contentType = asn1.derToOid(capture.contentType); + var msg; + switch (contentType) { + case forge3.pki.oids.envelopedData: + msg = p7.createEnvelopedData(); + break; + case forge3.pki.oids.encryptedData: + msg = p7.createEncryptedData(); + break; + case forge3.pki.oids.signedData: + msg = p7.createSignedData(); + break; + default: + throw new Error("Cannot read PKCS#7 message. ContentType with OID " + contentType + " is not (yet) supported."); + } + msg.fromAsn1(capture.content.value[0]); + return msg; + }; + p7.createSignedData = function() { + var msg = null; + msg = { + type: forge3.pki.oids.signedData, + version: 1, + certificates: [], + crls: [], + signers: [], + digestAlgorithmIdentifiers: [], + contentInfo: null, + signerInfos: [], + fromAsn1: function(obj) { + _fromAsn1(msg, obj, p7.asn1.signedDataValidator); + msg.certificates = []; + msg.crls = []; + msg.digestAlgorithmIdentifiers = []; + msg.contentInfo = null; + msg.signerInfos = []; + if (msg.rawCapture.certificates) { + var certs = msg.rawCapture.certificates.value; + for (var i = 0; i < certs.length; ++i) { + msg.certificates.push(forge3.pki.certificateFromAsn1(certs[i])); + } + } + }, + toAsn1: function() { + if (!msg.contentInfo) { + msg.sign(); + } + var certs = []; + for (var i = 0; i < msg.certificates.length; ++i) { + certs.push(forge3.pki.certificateToAsn1(msg.certificates[i])); + } + var crls = []; + var signedData = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(msg.version).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, msg.digestAlgorithmIdentifiers), + msg.contentInfo + ]) + ]); + if (certs.length > 0) { + signedData.value[0].value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, certs)); + } + if (crls.length > 0) { + signedData.value[0].value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, crls)); + } + signedData.value[0].value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, msg.signerInfos)); + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(msg.type).getBytes()), + signedData + ]); + }, + addSigner: function(signer) { + var issuer = signer.issuer; + var serialNumber = signer.serialNumber; + if (signer.certificate) { + var cert = signer.certificate; + if (typeof cert === "string") { + cert = forge3.pki.certificateFromPem(cert); + } + issuer = cert.issuer.attributes; + serialNumber = cert.serialNumber; + } + var key = signer.key; + if (!key) { + throw new Error("Could not add PKCS#7 signer; no private key specified."); + } + if (typeof key === "string") { + key = forge3.pki.privateKeyFromPem(key); + } + var digestAlgorithm = signer.digestAlgorithm || forge3.pki.oids.sha1; + switch (digestAlgorithm) { + case forge3.pki.oids.sha1: + case forge3.pki.oids.sha256: + case forge3.pki.oids.sha384: + case forge3.pki.oids.sha512: + case forge3.pki.oids.md5: + break; + default: + throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: " + digestAlgorithm); + } + var authenticatedAttributes = signer.authenticatedAttributes || []; + if (authenticatedAttributes.length > 0) { + var contentType = false; + var messageDigest = false; + for (var i = 0; i < authenticatedAttributes.length; ++i) { + var attr = authenticatedAttributes[i]; + if (!contentType && attr.type === forge3.pki.oids.contentType) { + contentType = true; + if (messageDigest) { + break; + } + continue; + } + if (!messageDigest && attr.type === forge3.pki.oids.messageDigest) { + messageDigest = true; + if (contentType) { + break; + } + continue; + } + } + if (!contentType || !messageDigest) { + throw new Error("Invalid signer.authenticatedAttributes. If signer.authenticatedAttributes is specified, then it must contain at least two attributes, PKCS #9 content-type and PKCS #9 message-digest."); + } + } + msg.signers.push({ + key, + version: 1, + issuer, + serialNumber, + digestAlgorithm, + signatureAlgorithm: forge3.pki.oids.rsaEncryption, + signature: null, + authenticatedAttributes, + unauthenticatedAttributes: [] + }); + }, + sign: function(options) { + options = options || {}; + if (typeof msg.content !== "object" || msg.contentInfo === null) { + msg.contentInfo = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(forge3.pki.oids.data).getBytes()) + ]); + if ("content" in msg) { + var content; + if (msg.content instanceof forge3.util.ByteBuffer) { + content = msg.content.bytes(); + } else if (typeof msg.content === "string") { + content = forge3.util.encodeUtf8(msg.content); + } + if (options.detached) { + msg.detachedContent = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, content); + } else { + msg.contentInfo.value.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, content) + ])); + } + } + } + if (msg.signers.length === 0) { + return; + } + var mds = addDigestAlgorithmIds(); + addSignerInfos(mds); + }, + verify: function() { + throw new Error("PKCS#7 signature verification not yet implemented."); + }, + addCertificate: function(cert) { + if (typeof cert === "string") { + cert = forge3.pki.certificateFromPem(cert); + } + msg.certificates.push(cert); + }, + addCertificateRevokationList: function(crl) { + throw new Error("PKCS#7 CRL support not yet implemented."); + } + }; + return msg; + function addDigestAlgorithmIds() { + var mds = {}; + for (var i = 0; i < msg.signers.length; ++i) { + var signer = msg.signers[i]; + var oid = signer.digestAlgorithm; + if (!(oid in mds)) { + mds[oid] = forge3.md[forge3.pki.oids[oid]].create(); + } + if (signer.authenticatedAttributes.length === 0) { + signer.md = mds[oid]; + } else { + signer.md = forge3.md[forge3.pki.oids[oid]].create(); + } + } + msg.digestAlgorithmIdentifiers = []; + for (var oid in mds) { + msg.digestAlgorithmIdentifiers.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(oid).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ])); + } + return mds; + } + function addSignerInfos(mds) { + var content; + if (msg.detachedContent) { + content = msg.detachedContent; + } else { + content = msg.contentInfo.value[1]; + content = content.value[0]; + } + if (!content) { + throw new Error("Could not sign PKCS#7 message; there is no content to sign."); + } + var contentType = asn1.derToOid(msg.contentInfo.value[0].value); + var bytes = asn1.toDer(content); + bytes.getByte(); + asn1.getBerValueLength(bytes); + bytes = bytes.getBytes(); + for (var oid in mds) { + mds[oid].start().update(bytes); + } + var signingTime = new Date(); + for (var i = 0; i < msg.signers.length; ++i) { + var signer = msg.signers[i]; + if (signer.authenticatedAttributes.length === 0) { + if (contentType !== forge3.pki.oids.data) { + throw new Error("Invalid signer; authenticatedAttributes must be present when the ContentInfo content type is not PKCS#7 Data."); + } + } else { + signer.authenticatedAttributesAsn1 = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, []); + var attrsAsn1 = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, []); + for (var ai = 0; ai < signer.authenticatedAttributes.length; ++ai) { + var attr = signer.authenticatedAttributes[ai]; + if (attr.type === forge3.pki.oids.messageDigest) { + attr.value = mds[signer.digestAlgorithm].digest(); + } else if (attr.type === forge3.pki.oids.signingTime) { + if (!attr.value) { + attr.value = signingTime; + } + } + attrsAsn1.value.push(_attributeToAsn1(attr)); + signer.authenticatedAttributesAsn1.value.push(_attributeToAsn1(attr)); + } + bytes = asn1.toDer(attrsAsn1).getBytes(); + signer.md.start().update(bytes); + } + signer.signature = signer.key.sign(signer.md, "RSASSA-PKCS1-V1_5"); + } + msg.signerInfos = _signersToAsn1(msg.signers); + } + }; + p7.createEncryptedData = function() { + var msg = null; + msg = { + type: forge3.pki.oids.encryptedData, + version: 0, + encryptedContent: { + algorithm: forge3.pki.oids["aes256-CBC"] + }, + fromAsn1: function(obj) { + _fromAsn1(msg, obj, p7.asn1.encryptedDataValidator); + }, + decrypt: function(key) { + if (key !== void 0) { + msg.encryptedContent.key = key; + } + _decryptContent(msg); + } + }; + return msg; + }; + p7.createEnvelopedData = function() { + var msg = null; + msg = { + type: forge3.pki.oids.envelopedData, + version: 0, + recipients: [], + encryptedContent: { + algorithm: forge3.pki.oids["aes256-CBC"] + }, + fromAsn1: function(obj) { + var capture = _fromAsn1(msg, obj, p7.asn1.envelopedDataValidator); + msg.recipients = _recipientsFromAsn1(capture.recipientInfos.value); + }, + toAsn1: function() { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(msg.type).getBytes()), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(msg.version).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, _recipientsToAsn1(msg.recipients)), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, _encryptedContentToAsn1(msg.encryptedContent)) + ]) + ]) + ]); + }, + findRecipient: function(cert) { + var sAttr = cert.issuer.attributes; + for (var i = 0; i < msg.recipients.length; ++i) { + var r = msg.recipients[i]; + var rAttr = r.issuer; + if (r.serialNumber !== cert.serialNumber) { + continue; + } + if (rAttr.length !== sAttr.length) { + continue; + } + var match = true; + for (var j = 0; j < sAttr.length; ++j) { + if (rAttr[j].type !== sAttr[j].type || rAttr[j].value !== sAttr[j].value) { + match = false; + break; + } + } + if (match) { + return r; + } + } + return null; + }, + decrypt: function(recipient, privKey) { + if (msg.encryptedContent.key === void 0 && recipient !== void 0 && privKey !== void 0) { + switch (recipient.encryptedContent.algorithm) { + case forge3.pki.oids.rsaEncryption: + case forge3.pki.oids.desCBC: + var key = privKey.decrypt(recipient.encryptedContent.content); + msg.encryptedContent.key = forge3.util.createBuffer(key); + break; + default: + throw new Error("Unsupported asymmetric cipher, OID " + recipient.encryptedContent.algorithm); + } + } + _decryptContent(msg); + }, + addRecipient: function(cert) { + msg.recipients.push({ + version: 0, + issuer: cert.issuer.attributes, + serialNumber: cert.serialNumber, + encryptedContent: { + algorithm: forge3.pki.oids.rsaEncryption, + key: cert.publicKey + } + }); + }, + encrypt: function(key, cipher) { + if (msg.encryptedContent.content === void 0) { + cipher = cipher || msg.encryptedContent.algorithm; + key = key || msg.encryptedContent.key; + var keyLen, ivLen, ciphFn; + switch (cipher) { + case forge3.pki.oids["aes128-CBC"]: + keyLen = 16; + ivLen = 16; + ciphFn = forge3.aes.createEncryptionCipher; + break; + case forge3.pki.oids["aes192-CBC"]: + keyLen = 24; + ivLen = 16; + ciphFn = forge3.aes.createEncryptionCipher; + break; + case forge3.pki.oids["aes256-CBC"]: + keyLen = 32; + ivLen = 16; + ciphFn = forge3.aes.createEncryptionCipher; + break; + case forge3.pki.oids["des-EDE3-CBC"]: + keyLen = 24; + ivLen = 8; + ciphFn = forge3.des.createEncryptionCipher; + break; + default: + throw new Error("Unsupported symmetric cipher, OID " + cipher); + } + if (key === void 0) { + key = forge3.util.createBuffer(forge3.random.getBytes(keyLen)); + } else if (key.length() != keyLen) { + throw new Error("Symmetric key has wrong length; got " + key.length() + " bytes, expected " + keyLen + "."); + } + msg.encryptedContent.algorithm = cipher; + msg.encryptedContent.key = key; + msg.encryptedContent.parameter = forge3.util.createBuffer(forge3.random.getBytes(ivLen)); + var ciph = ciphFn(key); + ciph.start(msg.encryptedContent.parameter.copy()); + ciph.update(msg.content); + if (!ciph.finish()) { + throw new Error("Symmetric encryption failed."); + } + msg.encryptedContent.content = ciph.output; + } + for (var i = 0; i < msg.recipients.length; ++i) { + var recipient = msg.recipients[i]; + if (recipient.encryptedContent.content !== void 0) { + continue; + } + switch (recipient.encryptedContent.algorithm) { + case forge3.pki.oids.rsaEncryption: + recipient.encryptedContent.content = recipient.encryptedContent.key.encrypt(msg.encryptedContent.key.data); + break; + default: + throw new Error("Unsupported asymmetric cipher, OID " + recipient.encryptedContent.algorithm); + } + } + } + }; + return msg; + }; + function _recipientFromAsn1(obj) { + var capture = {}; + var errors = []; + if (!asn1.validate(obj, p7.asn1.recipientInfoValidator, capture, errors)) { + var error = new Error("Cannot read PKCS#7 RecipientInfo. ASN.1 object is not an PKCS#7 RecipientInfo."); + error.errors = errors; + throw error; + } + return { + version: capture.version.charCodeAt(0), + issuer: forge3.pki.RDNAttributesAsArray(capture.issuer), + serialNumber: forge3.util.createBuffer(capture.serial).toHex(), + encryptedContent: { + algorithm: asn1.derToOid(capture.encAlgorithm), + parameter: capture.encParameter ? capture.encParameter.value : void 0, + content: capture.encKey + } + }; + } + function _recipientToAsn1(obj) { + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(obj.version).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + forge3.pki.distinguishedNameToAsn1({ attributes: obj.issuer }), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, forge3.util.hexToBytes(obj.serialNumber)) + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(obj.encryptedContent.algorithm).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, obj.encryptedContent.content) + ]); + } + function _recipientsFromAsn1(infos) { + var ret = []; + for (var i = 0; i < infos.length; ++i) { + ret.push(_recipientFromAsn1(infos[i])); + } + return ret; + } + function _recipientsToAsn1(recipients) { + var ret = []; + for (var i = 0; i < recipients.length; ++i) { + ret.push(_recipientToAsn1(recipients[i])); + } + return ret; + } + function _signerToAsn1(obj) { + var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, asn1.integerToDer(obj.version).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + forge3.pki.distinguishedNameToAsn1({ attributes: obj.issuer }), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false, forge3.util.hexToBytes(obj.serialNumber)) + ]), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(obj.digestAlgorithm).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ]) + ]); + if (obj.authenticatedAttributesAsn1) { + rval.value.push(obj.authenticatedAttributesAsn1); + } + rval.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(obj.signatureAlgorithm).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, "") + ])); + rval.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, obj.signature)); + if (obj.unauthenticatedAttributes.length > 0) { + var attrsAsn1 = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, []); + for (var i = 0; i < obj.unauthenticatedAttributes.length; ++i) { + var attr = obj.unauthenticatedAttributes[i]; + attrsAsn1.values.push(_attributeToAsn1(attr)); + } + rval.value.push(attrsAsn1); + } + return rval; + } + function _signersToAsn1(signers) { + var ret = []; + for (var i = 0; i < signers.length; ++i) { + ret.push(_signerToAsn1(signers[i])); + } + return ret; + } + function _attributeToAsn1(attr) { + var value; + if (attr.type === forge3.pki.oids.contentType) { + value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(attr.value).getBytes()); + } else if (attr.type === forge3.pki.oids.messageDigest) { + value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, attr.value.bytes()); + } else if (attr.type === forge3.pki.oids.signingTime) { + var jan_1_1950 = new Date("1950-01-01T00:00:00Z"); + var jan_1_2050 = new Date("2050-01-01T00:00:00Z"); + var date = attr.value; + if (typeof date === "string") { + var timestamp = Date.parse(date); + if (!isNaN(timestamp)) { + date = new Date(timestamp); + } else if (date.length === 13) { + date = asn1.utcTimeToDate(date); + } else { + date = asn1.generalizedTimeToDate(date); + } + } + if (date >= jan_1_1950 && date < jan_1_2050) { + value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false, asn1.dateToUtcTime(date)); + } else { + value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false, asn1.dateToGeneralizedTime(date)); + } + } + return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(attr.type).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [ + value + ]) + ]); + } + function _encryptedContentToAsn1(ec) { + return [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(forge3.pki.oids.data).getBytes()), + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false, asn1.oidToDer(ec.algorithm).getBytes()), + !ec.parameter ? void 0 : asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, ec.parameter.getBytes()) + ]), + asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [ + asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, ec.content.getBytes()) + ]) + ]; + } + function _fromAsn1(msg, obj, validator) { + var capture = {}; + var errors = []; + if (!asn1.validate(obj, validator, capture, errors)) { + var error = new Error("Cannot read PKCS#7 message. ASN.1 object is not a supported PKCS#7 message."); + error.errors = error; + throw error; + } + var contentType = asn1.derToOid(capture.contentType); + if (contentType !== forge3.pki.oids.data) { + throw new Error("Unsupported PKCS#7 message. Only wrapped ContentType Data supported."); + } + if (capture.encryptedContent) { + var content = ""; + if (forge3.util.isArray(capture.encryptedContent)) { + for (var i = 0; i < capture.encryptedContent.length; ++i) { + if (capture.encryptedContent[i].type !== asn1.Type.OCTETSTRING) { + throw new Error("Malformed PKCS#7 message, expecting encrypted content constructed of only OCTET STRING objects."); + } + content += capture.encryptedContent[i].value; + } + } else { + content = capture.encryptedContent; + } + msg.encryptedContent = { + algorithm: asn1.derToOid(capture.encAlgorithm), + parameter: forge3.util.createBuffer(capture.encParameter.value), + content: forge3.util.createBuffer(content) + }; + } + if (capture.content) { + var content = ""; + if (forge3.util.isArray(capture.content)) { + for (var i = 0; i < capture.content.length; ++i) { + if (capture.content[i].type !== asn1.Type.OCTETSTRING) { + throw new Error("Malformed PKCS#7 message, expecting content constructed of only OCTET STRING objects."); + } + content += capture.content[i].value; + } + } else { + content = capture.content; + } + msg.content = forge3.util.createBuffer(content); + } + msg.version = capture.version.charCodeAt(0); + msg.rawCapture = capture; + return capture; + } + function _decryptContent(msg) { + if (msg.encryptedContent.key === void 0) { + throw new Error("Symmetric key not available."); + } + if (msg.content === void 0) { + var ciph; + switch (msg.encryptedContent.algorithm) { + case forge3.pki.oids["aes128-CBC"]: + case forge3.pki.oids["aes192-CBC"]: + case forge3.pki.oids["aes256-CBC"]: + ciph = forge3.aes.createDecryptionCipher(msg.encryptedContent.key); + break; + case forge3.pki.oids["desCBC"]: + case forge3.pki.oids["des-EDE3-CBC"]: + ciph = forge3.des.createDecryptionCipher(msg.encryptedContent.key); + break; + default: + throw new Error("Unsupported symmetric cipher, OID " + msg.encryptedContent.algorithm); + } + ciph.start(msg.encryptedContent.parameter); + ciph.update(msg.encryptedContent.content); + if (!ciph.finish()) { + throw new Error("Symmetric decryption failed."); + } + msg.content = ciph.output; + } + } + } +}); + +// node_modules/node-forge/lib/ssh.js +var require_ssh = __commonJS({ + "node_modules/node-forge/lib/ssh.js"(exports, module2) { + var forge3 = require_forge(); + require_aes(); + require_hmac(); + require_md5(); + require_sha1(); + require_util(); + var ssh = module2.exports = forge3.ssh = forge3.ssh || {}; + ssh.privateKeyToPutty = function(privateKey, passphrase, comment) { + comment = comment || ""; + passphrase = passphrase || ""; + var algorithm = "ssh-rsa"; + var encryptionAlgorithm = passphrase === "" ? "none" : "aes256-cbc"; + var ppk = "PuTTY-User-Key-File-2: " + algorithm + "\r\n"; + ppk += "Encryption: " + encryptionAlgorithm + "\r\n"; + ppk += "Comment: " + comment + "\r\n"; + var pubbuffer = forge3.util.createBuffer(); + _addStringToBuffer(pubbuffer, algorithm); + _addBigIntegerToBuffer(pubbuffer, privateKey.e); + _addBigIntegerToBuffer(pubbuffer, privateKey.n); + var pub = forge3.util.encode64(pubbuffer.bytes(), 64); + var length = Math.floor(pub.length / 66) + 1; + ppk += "Public-Lines: " + length + "\r\n"; + ppk += pub; + var privbuffer = forge3.util.createBuffer(); + _addBigIntegerToBuffer(privbuffer, privateKey.d); + _addBigIntegerToBuffer(privbuffer, privateKey.p); + _addBigIntegerToBuffer(privbuffer, privateKey.q); + _addBigIntegerToBuffer(privbuffer, privateKey.qInv); + var priv; + if (!passphrase) { + priv = forge3.util.encode64(privbuffer.bytes(), 64); + } else { + var encLen = privbuffer.length() + 16 - 1; + encLen -= encLen % 16; + var padding = _sha1(privbuffer.bytes()); + padding.truncate(padding.length() - encLen + privbuffer.length()); + privbuffer.putBuffer(padding); + var aeskey = forge3.util.createBuffer(); + aeskey.putBuffer(_sha1("\0\0\0\0", passphrase)); + aeskey.putBuffer(_sha1("\0\0\0", passphrase)); + var cipher = forge3.aes.createEncryptionCipher(aeskey.truncate(8), "CBC"); + cipher.start(forge3.util.createBuffer().fillWithByte(0, 16)); + cipher.update(privbuffer.copy()); + cipher.finish(); + var encrypted = cipher.output; + encrypted.truncate(16); + priv = forge3.util.encode64(encrypted.bytes(), 64); + } + length = Math.floor(priv.length / 66) + 1; + ppk += "\r\nPrivate-Lines: " + length + "\r\n"; + ppk += priv; + var mackey = _sha1("putty-private-key-file-mac-key", passphrase); + var macbuffer = forge3.util.createBuffer(); + _addStringToBuffer(macbuffer, algorithm); + _addStringToBuffer(macbuffer, encryptionAlgorithm); + _addStringToBuffer(macbuffer, comment); + macbuffer.putInt32(pubbuffer.length()); + macbuffer.putBuffer(pubbuffer); + macbuffer.putInt32(privbuffer.length()); + macbuffer.putBuffer(privbuffer); + var hmac = forge3.hmac.create(); + hmac.start("sha1", mackey); + hmac.update(macbuffer.bytes()); + ppk += "\r\nPrivate-MAC: " + hmac.digest().toHex() + "\r\n"; + return ppk; + }; + ssh.publicKeyToOpenSSH = function(key, comment) { + var type = "ssh-rsa"; + comment = comment || ""; + var buffer = forge3.util.createBuffer(); + _addStringToBuffer(buffer, type); + _addBigIntegerToBuffer(buffer, key.e); + _addBigIntegerToBuffer(buffer, key.n); + return type + " " + forge3.util.encode64(buffer.bytes()) + " " + comment; + }; + ssh.privateKeyToOpenSSH = function(privateKey, passphrase) { + if (!passphrase) { + return forge3.pki.privateKeyToPem(privateKey); + } + return forge3.pki.encryptRsaPrivateKey(privateKey, passphrase, { legacy: true, algorithm: "aes128" }); + }; + ssh.getPublicKeyFingerprint = function(key, options) { + options = options || {}; + var md = options.md || forge3.md.md5.create(); + var type = "ssh-rsa"; + var buffer = forge3.util.createBuffer(); + _addStringToBuffer(buffer, type); + _addBigIntegerToBuffer(buffer, key.e); + _addBigIntegerToBuffer(buffer, key.n); + md.start(); + md.update(buffer.getBytes()); + var digest = md.digest(); + if (options.encoding === "hex") { + var hex = digest.toHex(); + if (options.delimiter) { + return hex.match(/.{2}/g).join(options.delimiter); + } + return hex; + } else if (options.encoding === "binary") { + return digest.getBytes(); + } else if (options.encoding) { + throw new Error('Unknown encoding "' + options.encoding + '".'); + } + return digest; + }; + function _addBigIntegerToBuffer(buffer, val) { + var hexVal = val.toString(16); + if (hexVal[0] >= "8") { + hexVal = "00" + hexVal; + } + var bytes = forge3.util.hexToBytes(hexVal); + buffer.putInt32(bytes.length); + buffer.putBytes(bytes); + } + function _addStringToBuffer(buffer, val) { + buffer.putInt32(val.length); + buffer.putString(val); + } + function _sha1() { + var sha = forge3.md.sha1.create(); + var num = arguments.length; + for (var i = 0; i < num; ++i) { + sha.update(arguments[i]); + } + return sha.digest(); + } + } +}); + +// node_modules/node-forge/lib/index.js +var require_lib = __commonJS({ + "node_modules/node-forge/lib/index.js"(exports, module2) { + module2.exports = require_forge(); + require_aes(); + require_aesCipherSuites(); + require_asn1(); + require_cipher(); + require_des(); + require_ed25519(); + require_hmac(); + require_kem(); + require_log(); + require_md_all(); + require_mgf1(); + require_pbkdf2(); + require_pem(); + require_pkcs1(); + require_pkcs12(); + require_pkcs7(); + require_pki(); + require_prime(); + require_prng(); + require_pss(); + require_random(); + require_rc2(); + require_ssh(); + require_tls(); + require_util(); + } +}); + +// node_modules/obsidian-daily-notes-interface/dist/main.js +var require_main = __commonJS({ + "node_modules/obsidian-daily-notes-interface/dist/main.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var obsidian = require("obsidian"); + var DEFAULT_DAILY_NOTE_FORMAT = "YYYY-MM-DD"; + var DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; + var DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; + var DEFAULT_QUARTERLY_NOTE_FORMAT = "YYYY-[Q]Q"; + var DEFAULT_YEARLY_NOTE_FORMAT = "YYYY"; + function shouldUsePeriodicNotesSettings(periodicity) { + var _a, _b; + const periodicNotes2 = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes2 && ((_b = (_a = periodicNotes2.settings) == null ? void 0 : _a[periodicity]) == null ? void 0 : _b.enabled); + } + function getDailyNoteSettings() { + var _a, _b, _c, _d; + try { + const { internalPlugins, plugins } = window.app; + if (shouldUsePeriodicNotesSettings("daily")) { + const { format: format2, folder: folder2, template: template2 } = ((_b = (_a = plugins.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.daily) || {}; + return { + format: format2 || DEFAULT_DAILY_NOTE_FORMAT, + folder: (folder2 == null ? void 0 : folder2.trim()) || "", + template: (template2 == null ? void 0 : template2.trim()) || "" + }; + } + const { folder, format, template } = ((_d = (_c = internalPlugins.getPluginById("daily-notes")) == null ? void 0 : _c.instance) == null ? void 0 : _d.options) || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: (folder == null ? void 0 : folder.trim()) || "", + template: (template == null ? void 0 : template.trim()) || "" + }; + } catch (err) { + console.info("No custom daily note settings found!", err); + } + } + function getWeeklyNoteSettings() { + var _a, _b, _c, _d, _e, _f, _g; + try { + const pluginManager = window.app.plugins; + const calendarSettings = (_a = pluginManager.getPlugin("calendar")) == null ? void 0 : _a.options; + const periodicNotesSettings = (_c = (_b = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _b.settings) == null ? void 0 : _c.weekly; + if (shouldUsePeriodicNotesSettings("weekly")) { + return { + format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_d = periodicNotesSettings.folder) == null ? void 0 : _d.trim()) || "", + template: ((_e = periodicNotesSettings.template) == null ? void 0 : _e.trim()) || "" + }; + } + const settings = calendarSettings || {}; + return { + format: settings.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_f = settings.weeklyNoteFolder) == null ? void 0 : _f.trim()) || "", + template: ((_g = settings.weeklyNoteTemplate) == null ? void 0 : _g.trim()) || "" + }; + } catch (err) { + console.info("No custom weekly note settings found!", err); + } + } + function getMonthlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("monthly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.monthly) || {}; + return { + format: settings.format || DEFAULT_MONTHLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom monthly note settings found!", err); + } + } + function getQuarterlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("quarterly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.quarterly) || {}; + return { + format: settings.format || DEFAULT_QUARTERLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom quarterly note settings found!", err); + } + } + function getYearlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("yearly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.yearly) || {}; + return { + format: settings.format || DEFAULT_YEARLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom yearly note settings found!", err); + } + } + function join(...partSegments) { + let parts = []; + for (let i = 0, l = partSegments.length; i < l; i++) { + parts = parts.concat(partSegments[i].split("/")); + } + const newParts = []; + for (let i = 0, l = parts.length; i < l; i++) { + const part = parts[i]; + if (!part || part === ".") + continue; + else + newParts.push(part); + } + if (parts[0] === "") + newParts.unshift(""); + return newParts.join("/"); + } + function basename(fullPath) { + let base = fullPath.substring(fullPath.lastIndexOf("/") + 1); + if (base.lastIndexOf(".") != -1) + base = base.substring(0, base.lastIndexOf(".")); + return base; + } + function ensureFolderExists(path2) { + return __async(this, null, function* () { + const dirs = path2.replace(/\\/g, "/").split("/"); + dirs.pop(); + if (dirs.length) { + const dir = join(...dirs); + if (!window.app.vault.getAbstractFileByPath(dir)) { + yield window.app.vault.createFolder(dir); + } + } + }); + } + function getNotePath(directory, filename) { + return __async(this, null, function* () { + if (!filename.endsWith(".md")) { + filename += ".md"; + } + const path2 = obsidian.normalizePath(join(directory, filename)); + yield ensureFolderExists(path2); + return path2; + }); + } + function getTemplateInfo(template) { + return __async(this, null, function* () { + const { metadataCache, vault } = window.app; + const templatePath = obsidian.normalizePath(template); + if (templatePath === "/") { + return Promise.resolve(["", null]); + } + try { + const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); + const contents = yield vault.cachedRead(templateFile); + const IFoldInfo = window.app.foldManager.load(templateFile); + return [contents, IFoldInfo]; + } catch (err) { + console.error(`Failed to read the daily note template '${templatePath}'`, err); + new obsidian.Notice("Failed to read the daily note template"); + return ["", null]; + } + }); + } + function getDateUID(date, granularity = "day") { + const ts = date.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; + } + function removeEscapedCharacters(format) { + return format.replace(/\[[^\]]*\]/g, ""); + } + function isFormatAmbiguous(format, granularity) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + return /w{1,2}/i.test(cleanFormat) && (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat)); + } + return false; + } + function getDateFromFile(file, granularity) { + return getDateFromFilename(file.basename, granularity); + } + function getDateFromPath(path2, granularity) { + return getDateFromFilename(basename(path2), granularity); + } + function getDateFromFilename(filename, granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }; + const format = getSettings[granularity]().format.split("/").pop(); + const noteDate = window.moment(filename, format, true); + if (!noteDate.isValid()) { + return null; + } + if (isFormatAmbiguous(format, granularity)) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + if (/w{1,2}/i.test(cleanFormat)) { + return window.moment(filename, format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), false); + } + } + } + return noteDate; + } + var DailyNotesFolderMissingError = class extends Error { + }; + function createDailyNote(date) { + return __async(this, null, function* () { + const app = window.app; + const { vault } = app; + const moment = window.moment; + const { template, format, folder } = getDailyNoteSettings(); + const [templateContents, IFoldInfo] = yield getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = yield getNotePath(folder, filename); + try { + const createdFile = yield vault.create(normalizedPath, templateContents.replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)).replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format))); + app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + }); + } + function getDailyNote(date, dailyNotes) { + var _a; + return (_a = dailyNotes[getDateUID(date, "day")]) != null ? _a : null; + } + function getAllDailyNotes() { + const { vault } = window.app; + const { folder } = getDailyNoteSettings(); + const dailyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!dailyNotesFolder) { + throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); + } + const dailyNotes = {}; + obsidian.Vault.recurseChildren(dailyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "day"); + if (date) { + const dateString = getDateUID(date, "day"); + dailyNotes[dateString] = note; + } + } + }); + return dailyNotes; + } + var WeeklyNotesFolderMissingError = class extends Error { + }; + function getDaysOfWeek() { + const { moment } = window; + let weekStart = moment.localeData()._week.dow; + const daysOfWeek = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday" + ]; + while (weekStart) { + daysOfWeek.push(daysOfWeek.shift()); + weekStart--; + } + return daysOfWeek; + } + function getDayOfWeekNumericalValue(dayOfWeekName) { + return getDaysOfWeek().indexOf(dayOfWeekName.toLowerCase()); + } + function createWeeklyNote(date) { + return __async(this, null, function* () { + const { vault } = window.app; + const { template, format, folder } = getWeeklyNoteSettings(); + const [templateContents, IFoldInfo] = yield getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = yield getNotePath(folder, filename); + try { + const createdFile = yield vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => { + const day = getDayOfWeekNumericalValue(dayOfWeek); + return date.weekday(day).format(momentFormat.trim()); + })); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + }); + } + function getWeeklyNote(date, weeklyNotes) { + var _a; + return (_a = weeklyNotes[getDateUID(date, "week")]) != null ? _a : null; + } + function getAllWeeklyNotes() { + const weeklyNotes = {}; + if (!appHasWeeklyNotesPluginLoaded()) { + return weeklyNotes; + } + const { vault } = window.app; + const { folder } = getWeeklyNoteSettings(); + const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!weeklyNotesFolder) { + throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); + } + obsidian.Vault.recurseChildren(weeklyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "week"); + if (date) { + const dateString = getDateUID(date, "week"); + weeklyNotes[dateString] = note; + } + } + }); + return weeklyNotes; + } + var MonthlyNotesFolderMissingError = class extends Error { + }; + function createMonthlyNote(date) { + return __async(this, null, function* () { + const { vault } = window.app; + const { template, format, folder } = getMonthlyNoteSettings(); + const [templateContents, IFoldInfo] = yield getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = yield getNotePath(folder, filename); + try { + const createdFile = yield vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + }); + } + function getMonthlyNote(date, monthlyNotes) { + var _a; + return (_a = monthlyNotes[getDateUID(date, "month")]) != null ? _a : null; + } + function getAllMonthlyNotes() { + const monthlyNotes = {}; + if (!appHasMonthlyNotesPluginLoaded()) { + return monthlyNotes; + } + const { vault } = window.app; + const { folder } = getMonthlyNoteSettings(); + const monthlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!monthlyNotesFolder) { + throw new MonthlyNotesFolderMissingError("Failed to find monthly notes folder"); + } + obsidian.Vault.recurseChildren(monthlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "month"); + if (date) { + const dateString = getDateUID(date, "month"); + monthlyNotes[dateString] = note; + } + } + }); + return monthlyNotes; + } + var QuarterlyNotesFolderMissingError = class extends Error { + }; + function createQuarterlyNote(date) { + return __async(this, null, function* () { + const { vault } = window.app; + const { template, format, folder } = getQuarterlyNoteSettings(); + const [templateContents, IFoldInfo] = yield getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = yield getNotePath(folder, filename); + try { + const createdFile = yield vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + }); + } + function getQuarterlyNote(date, quarterly) { + var _a; + return (_a = quarterly[getDateUID(date, "quarter")]) != null ? _a : null; + } + function getAllQuarterlyNotes() { + const quarterly = {}; + if (!appHasQuarterlyNotesPluginLoaded()) { + return quarterly; + } + const { vault } = window.app; + const { folder } = getQuarterlyNoteSettings(); + const quarterlyFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!quarterlyFolder) { + throw new QuarterlyNotesFolderMissingError("Failed to find quarterly notes folder"); + } + obsidian.Vault.recurseChildren(quarterlyFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "quarter"); + if (date) { + const dateString = getDateUID(date, "quarter"); + quarterly[dateString] = note; + } + } + }); + return quarterly; + } + var YearlyNotesFolderMissingError = class extends Error { + }; + function createYearlyNote(date) { + return __async(this, null, function* () { + const { vault } = window.app; + const { template, format, folder } = getYearlyNoteSettings(); + const [templateContents, IFoldInfo] = yield getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = yield getNotePath(folder, filename); + try { + const createdFile = yield vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + }); + } + function getYearlyNote(date, yearlyNotes) { + var _a; + return (_a = yearlyNotes[getDateUID(date, "year")]) != null ? _a : null; + } + function getAllYearlyNotes() { + const yearlyNotes = {}; + if (!appHasYearlyNotesPluginLoaded()) { + return yearlyNotes; + } + const { vault } = window.app; + const { folder } = getYearlyNoteSettings(); + const yearlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!yearlyNotesFolder) { + throw new YearlyNotesFolderMissingError("Failed to find yearly notes folder"); + } + obsidian.Vault.recurseChildren(yearlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile(note, "year"); + if (date) { + const dateString = getDateUID(date, "year"); + yearlyNotes[dateString] = note; + } + } + }); + return yearlyNotes; + } + function appHasDailyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; + if (dailyNotesPlugin && dailyNotesPlugin.enabled) { + return true; + } + const periodicNotes2 = app.plugins.getPlugin("periodic-notes"); + return periodicNotes2 && ((_b = (_a = periodicNotes2.settings) == null ? void 0 : _a.daily) == null ? void 0 : _b.enabled); + } + function appHasWeeklyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + if (app.plugins.getPlugin("calendar")) { + return true; + } + const periodicNotes2 = app.plugins.getPlugin("periodic-notes"); + return periodicNotes2 && ((_b = (_a = periodicNotes2.settings) == null ? void 0 : _a.weekly) == null ? void 0 : _b.enabled); + } + function appHasMonthlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes2 = app.plugins.getPlugin("periodic-notes"); + return periodicNotes2 && ((_b = (_a = periodicNotes2.settings) == null ? void 0 : _a.monthly) == null ? void 0 : _b.enabled); + } + function appHasQuarterlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes2 = app.plugins.getPlugin("periodic-notes"); + return periodicNotes2 && ((_b = (_a = periodicNotes2.settings) == null ? void 0 : _a.quarterly) == null ? void 0 : _b.enabled); + } + function appHasYearlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes2 = app.plugins.getPlugin("periodic-notes"); + return periodicNotes2 && ((_b = (_a = periodicNotes2.settings) == null ? void 0 : _a.yearly) == null ? void 0 : _b.enabled); + } + function getPeriodicNoteSettings(granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }[granularity]; + return getSettings(); + } + function createPeriodicNote(granularity, date) { + const createFn = { + day: createDailyNote, + month: createMonthlyNote, + week: createWeeklyNote + }; + return createFn[granularity](date); + } + exports.DEFAULT_DAILY_NOTE_FORMAT = DEFAULT_DAILY_NOTE_FORMAT; + exports.DEFAULT_MONTHLY_NOTE_FORMAT = DEFAULT_MONTHLY_NOTE_FORMAT; + exports.DEFAULT_QUARTERLY_NOTE_FORMAT = DEFAULT_QUARTERLY_NOTE_FORMAT; + exports.DEFAULT_WEEKLY_NOTE_FORMAT = DEFAULT_WEEKLY_NOTE_FORMAT; + exports.DEFAULT_YEARLY_NOTE_FORMAT = DEFAULT_YEARLY_NOTE_FORMAT; + exports.appHasDailyNotesPluginLoaded = appHasDailyNotesPluginLoaded; + exports.appHasMonthlyNotesPluginLoaded = appHasMonthlyNotesPluginLoaded; + exports.appHasQuarterlyNotesPluginLoaded = appHasQuarterlyNotesPluginLoaded; + exports.appHasWeeklyNotesPluginLoaded = appHasWeeklyNotesPluginLoaded; + exports.appHasYearlyNotesPluginLoaded = appHasYearlyNotesPluginLoaded; + exports.createDailyNote = createDailyNote; + exports.createMonthlyNote = createMonthlyNote; + exports.createPeriodicNote = createPeriodicNote; + exports.createQuarterlyNote = createQuarterlyNote; + exports.createWeeklyNote = createWeeklyNote; + exports.createYearlyNote = createYearlyNote; + exports.getAllDailyNotes = getAllDailyNotes; + exports.getAllMonthlyNotes = getAllMonthlyNotes; + exports.getAllQuarterlyNotes = getAllQuarterlyNotes; + exports.getAllWeeklyNotes = getAllWeeklyNotes; + exports.getAllYearlyNotes = getAllYearlyNotes; + exports.getDailyNote = getDailyNote; + exports.getDailyNoteSettings = getDailyNoteSettings; + exports.getDateFromFile = getDateFromFile; + exports.getDateFromPath = getDateFromPath; + exports.getDateUID = getDateUID; + exports.getMonthlyNote = getMonthlyNote; + exports.getMonthlyNoteSettings = getMonthlyNoteSettings; + exports.getPeriodicNoteSettings = getPeriodicNoteSettings; + exports.getQuarterlyNote = getQuarterlyNote; + exports.getQuarterlyNoteSettings = getQuarterlyNoteSettings; + exports.getTemplateInfo = getTemplateInfo; + exports.getWeeklyNote = getWeeklyNote; + exports.getWeeklyNoteSettings = getWeeklyNoteSettings; + exports.getYearlyNote = getYearlyNote; + exports.getYearlyNoteSettings = getYearlyNoteSettings; + } +}); + +// node_modules/obsidian-dataview/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/obsidian-dataview/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + require("obsidian"); + var LuxonError = class extends Error { + }; + var InvalidDateTimeError = class extends LuxonError { + constructor(reason) { + super(`Invalid DateTime: ${reason.toMessage()}`); + } + }; + var InvalidIntervalError = class extends LuxonError { + constructor(reason) { + super(`Invalid Interval: ${reason.toMessage()}`); + } + }; + var InvalidDurationError = class extends LuxonError { + constructor(reason) { + super(`Invalid Duration: ${reason.toMessage()}`); + } + }; + var ConflictingSpecificationError = class extends LuxonError { + }; + var InvalidUnitError = class extends LuxonError { + constructor(unit) { + super(`Invalid unit ${unit}`); + } + }; + var InvalidArgumentError = class extends LuxonError { + }; + var ZoneIsAbstractError = class extends LuxonError { + constructor() { + super("Zone is an abstract class"); + } + }; + var n = "numeric"; + var s = "short"; + var l = "long"; + var DATE_SHORT = { + year: n, + month: n, + day: n + }; + var DATE_MED = { + year: n, + month: s, + day: n + }; + var DATE_MED_WITH_WEEKDAY = { + year: n, + month: s, + day: n, + weekday: s + }; + var DATE_FULL = { + year: n, + month: l, + day: n + }; + var DATE_HUGE = { + year: n, + month: l, + day: n, + weekday: l + }; + var TIME_SIMPLE = { + hour: n, + minute: n + }; + var TIME_WITH_SECONDS = { + hour: n, + minute: n, + second: n + }; + var TIME_WITH_SHORT_OFFSET = { + hour: n, + minute: n, + second: n, + timeZoneName: s + }; + var TIME_WITH_LONG_OFFSET = { + hour: n, + minute: n, + second: n, + timeZoneName: l + }; + var TIME_24_SIMPLE = { + hour: n, + minute: n, + hourCycle: "h23" + }; + var TIME_24_WITH_SECONDS = { + hour: n, + minute: n, + second: n, + hourCycle: "h23" + }; + var TIME_24_WITH_SHORT_OFFSET = { + hour: n, + minute: n, + second: n, + hourCycle: "h23", + timeZoneName: s + }; + var TIME_24_WITH_LONG_OFFSET = { + hour: n, + minute: n, + second: n, + hourCycle: "h23", + timeZoneName: l + }; + var DATETIME_SHORT = { + year: n, + month: n, + day: n, + hour: n, + minute: n + }; + var DATETIME_SHORT_WITH_SECONDS = { + year: n, + month: n, + day: n, + hour: n, + minute: n, + second: n + }; + var DATETIME_MED = { + year: n, + month: s, + day: n, + hour: n, + minute: n + }; + var DATETIME_MED_WITH_SECONDS = { + year: n, + month: s, + day: n, + hour: n, + minute: n, + second: n + }; + var DATETIME_MED_WITH_WEEKDAY = { + year: n, + month: s, + day: n, + weekday: s, + hour: n, + minute: n + }; + var DATETIME_FULL = { + year: n, + month: l, + day: n, + hour: n, + minute: n, + timeZoneName: s + }; + var DATETIME_FULL_WITH_SECONDS = { + year: n, + month: l, + day: n, + hour: n, + minute: n, + second: n, + timeZoneName: s + }; + var DATETIME_HUGE = { + year: n, + month: l, + day: n, + weekday: l, + hour: n, + minute: n, + timeZoneName: l + }; + var DATETIME_HUGE_WITH_SECONDS = { + year: n, + month: l, + day: n, + weekday: l, + hour: n, + minute: n, + second: n, + timeZoneName: l + }; + var Zone = class { + get type() { + throw new ZoneIsAbstractError(); + } + get name() { + throw new ZoneIsAbstractError(); + } + get ianaName() { + return this.name; + } + get isUniversal() { + throw new ZoneIsAbstractError(); + } + offsetName(ts, opts) { + throw new ZoneIsAbstractError(); + } + formatOffset(ts, format) { + throw new ZoneIsAbstractError(); + } + offset(ts) { + throw new ZoneIsAbstractError(); + } + equals(otherZone) { + throw new ZoneIsAbstractError(); + } + get isValid() { + throw new ZoneIsAbstractError(); + } + }; + var singleton$1 = null; + var SystemZone = class extends Zone { + static get instance() { + if (singleton$1 === null) { + singleton$1 = new SystemZone(); + } + return singleton$1; + } + get type() { + return "system"; + } + get name() { + return new Intl.DateTimeFormat().resolvedOptions().timeZone; + } + get isUniversal() { + return false; + } + offsetName(ts, { format, locale }) { + return parseZoneInfo(ts, format, locale); + } + formatOffset(ts, format) { + return formatOffset(this.offset(ts), format); + } + offset(ts) { + return -new Date(ts).getTimezoneOffset(); + } + equals(otherZone) { + return otherZone.type === "system"; + } + get isValid() { + return true; + } + }; + var dtfCache = {}; + function makeDTF(zone) { + if (!dtfCache[zone]) { + dtfCache[zone] = new Intl.DateTimeFormat("en-US", { + hour12: false, + timeZone: zone, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + era: "short" + }); + } + return dtfCache[zone]; + } + var typeToPos = { + year: 0, + month: 1, + day: 2, + era: 3, + hour: 4, + minute: 5, + second: 6 + }; + function hackyOffset(dtf, date) { + const formatted = dtf.format(date).replace(/\u200E/g, ""), parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted), [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed; + return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond]; + } + function partsOffset(dtf, date) { + const formatted = dtf.formatToParts(date); + const filled = []; + for (let i = 0; i < formatted.length; i++) { + const { type, value } = formatted[i]; + const pos = typeToPos[type]; + if (type === "era") { + filled[pos] = value; + } else if (!isUndefined(pos)) { + filled[pos] = parseInt(value, 10); + } + } + return filled; + } + var ianaZoneCache = {}; + var IANAZone = class extends Zone { + static create(name) { + if (!ianaZoneCache[name]) { + ianaZoneCache[name] = new IANAZone(name); + } + return ianaZoneCache[name]; + } + static resetCache() { + ianaZoneCache = {}; + dtfCache = {}; + } + static isValidSpecifier(s2) { + return this.isValidZone(s2); + } + static isValidZone(zone) { + if (!zone) { + return false; + } + try { + new Intl.DateTimeFormat("en-US", { timeZone: zone }).format(); + return true; + } catch (e) { + return false; + } + } + constructor(name) { + super(); + this.zoneName = name; + this.valid = IANAZone.isValidZone(name); + } + get type() { + return "iana"; + } + get name() { + return this.zoneName; + } + get isUniversal() { + return false; + } + offsetName(ts, { format, locale }) { + return parseZoneInfo(ts, format, locale, this.name); + } + formatOffset(ts, format) { + return formatOffset(this.offset(ts), format); + } + offset(ts) { + const date = new Date(ts); + if (isNaN(date)) + return NaN; + const dtf = makeDTF(this.name); + let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date); + if (adOrBc === "BC") { + year = -Math.abs(year) + 1; + } + const adjustedHour = hour === 24 ? 0 : hour; + const asUTC = objToLocalTS({ + year, + month, + day, + hour: adjustedHour, + minute, + second, + millisecond: 0 + }); + let asTS = +date; + const over = asTS % 1e3; + asTS -= over >= 0 ? over : 1e3 + over; + return (asUTC - asTS) / (60 * 1e3); + } + equals(otherZone) { + return otherZone.type === "iana" && otherZone.name === this.name; + } + get isValid() { + return this.valid; + } + }; + var intlLFCache = {}; + function getCachedLF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlLFCache[key]; + if (!dtf) { + dtf = new Intl.ListFormat(locString, opts); + intlLFCache[key] = dtf; + } + return dtf; + } + var intlDTCache = {}; + function getCachedDTF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlDTCache[key]; + if (!dtf) { + dtf = new Intl.DateTimeFormat(locString, opts); + intlDTCache[key] = dtf; + } + return dtf; + } + var intlNumCache = {}; + function getCachedINF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let inf = intlNumCache[key]; + if (!inf) { + inf = new Intl.NumberFormat(locString, opts); + intlNumCache[key] = inf; + } + return inf; + } + var intlRelCache = {}; + function getCachedRTF(locString, opts = {}) { + const _a = opts, { base } = _a, cacheKeyOpts = __objRest(_a, ["base"]); + const key = JSON.stringify([locString, cacheKeyOpts]); + let inf = intlRelCache[key]; + if (!inf) { + inf = new Intl.RelativeTimeFormat(locString, opts); + intlRelCache[key] = inf; + } + return inf; + } + var sysLocaleCache = null; + function systemLocale() { + if (sysLocaleCache) { + return sysLocaleCache; + } else { + sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale; + return sysLocaleCache; + } + } + function parseLocaleString(localeStr) { + const xIndex = localeStr.indexOf("-x-"); + if (xIndex !== -1) { + localeStr = localeStr.substring(0, xIndex); + } + const uIndex = localeStr.indexOf("-u-"); + if (uIndex === -1) { + return [localeStr]; + } else { + let options; + let selectedStr; + try { + options = getCachedDTF(localeStr).resolvedOptions(); + selectedStr = localeStr; + } catch (e) { + const smaller = localeStr.substring(0, uIndex); + options = getCachedDTF(smaller).resolvedOptions(); + selectedStr = smaller; + } + const { numberingSystem, calendar } = options; + return [selectedStr, numberingSystem, calendar]; + } + } + function intlConfigString(localeStr, numberingSystem, outputCalendar) { + if (outputCalendar || numberingSystem) { + if (!localeStr.includes("-u-")) { + localeStr += "-u"; + } + if (outputCalendar) { + localeStr += `-ca-${outputCalendar}`; + } + if (numberingSystem) { + localeStr += `-nu-${numberingSystem}`; + } + return localeStr; + } else { + return localeStr; + } + } + function mapMonths(f) { + const ms = []; + for (let i = 1; i <= 12; i++) { + const dt = DateTime.utc(2009, i, 1); + ms.push(f(dt)); + } + return ms; + } + function mapWeekdays(f) { + const ms = []; + for (let i = 1; i <= 7; i++) { + const dt = DateTime.utc(2016, 11, 13 + i); + ms.push(f(dt)); + } + return ms; + } + function listStuff(loc, length, englishFn, intlFn) { + const mode = loc.listingMode(); + if (mode === "error") { + return null; + } else if (mode === "en") { + return englishFn(length); + } else { + return intlFn(length); + } + } + function supportsFastNumbers(loc) { + if (loc.numberingSystem && loc.numberingSystem !== "latn") { + return false; + } else { + return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"; + } + } + var PolyNumberFormatter = class { + constructor(intl, forceSimple, opts) { + this.padTo = opts.padTo || 0; + this.floor = opts.floor || false; + const _a = opts, { padTo, floor } = _a, otherOpts = __objRest(_a, ["padTo", "floor"]); + if (!forceSimple || Object.keys(otherOpts).length > 0) { + const intlOpts = __spreadValues({ useGrouping: false }, opts); + if (opts.padTo > 0) + intlOpts.minimumIntegerDigits = opts.padTo; + this.inf = getCachedINF(intl, intlOpts); + } + } + format(i) { + if (this.inf) { + const fixed = this.floor ? Math.floor(i) : i; + return this.inf.format(fixed); + } else { + const fixed = this.floor ? Math.floor(i) : roundTo(i, 3); + return padStart(fixed, this.padTo); + } + } + }; + var PolyDateFormatter = class { + constructor(dt, intl, opts) { + this.opts = opts; + this.originalZone = void 0; + let z = void 0; + if (this.opts.timeZone) { + this.dt = dt; + } else if (dt.zone.type === "fixed") { + const gmtOffset = -1 * (dt.offset / 60); + const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`; + if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) { + z = offsetZ; + this.dt = dt; + } else { + z = "UTC"; + this.dt = dt.offset === 0 ? dt : dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; + } + } else if (dt.zone.type === "system") { + this.dt = dt; + } else if (dt.zone.type === "iana") { + this.dt = dt; + z = dt.zone.name; + } else { + z = "UTC"; + this.dt = dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; + } + const intlOpts = __spreadValues({}, this.opts); + intlOpts.timeZone = intlOpts.timeZone || z; + this.dtf = getCachedDTF(intl, intlOpts); + } + format() { + if (this.originalZone) { + return this.formatToParts().map(({ value }) => value).join(""); + } + return this.dtf.format(this.dt.toJSDate()); + } + formatToParts() { + const parts = this.dtf.formatToParts(this.dt.toJSDate()); + if (this.originalZone) { + return parts.map((part) => { + if (part.type === "timeZoneName") { + const offsetName = this.originalZone.offsetName(this.dt.ts, { + locale: this.dt.locale, + format: this.opts.timeZoneName + }); + return __spreadProps(__spreadValues({}, part), { + value: offsetName + }); + } else { + return part; + } + }); + } + return parts; + } + resolvedOptions() { + return this.dtf.resolvedOptions(); + } + }; + var PolyRelFormatter = class { + constructor(intl, isEnglish, opts) { + this.opts = __spreadValues({ style: "long" }, opts); + if (!isEnglish && hasRelative()) { + this.rtf = getCachedRTF(intl, opts); + } + } + format(count, unit) { + if (this.rtf) { + return this.rtf.format(count, unit); + } else { + return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long"); + } + } + formatToParts(count, unit) { + if (this.rtf) { + return this.rtf.formatToParts(count, unit); + } else { + return []; + } + } + }; + var Locale = class { + static fromOpts(opts) { + return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN); + } + static create(locale, numberingSystem, outputCalendar, defaultToEN = false) { + const specifiedLocale = locale || Settings.defaultLocale; + const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()); + const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem; + const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar; + return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale); + } + static resetCache() { + sysLocaleCache = null; + intlDTCache = {}; + intlNumCache = {}; + intlRelCache = {}; + } + static fromObject({ locale, numberingSystem, outputCalendar } = {}) { + return Locale.create(locale, numberingSystem, outputCalendar); + } + constructor(locale, numbering, outputCalendar, specifiedLocale) { + const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale); + this.locale = parsedLocale; + this.numberingSystem = numbering || parsedNumberingSystem || null; + this.outputCalendar = outputCalendar || parsedOutputCalendar || null; + this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar); + this.weekdaysCache = { format: {}, standalone: {} }; + this.monthsCache = { format: {}, standalone: {} }; + this.meridiemCache = null; + this.eraCache = {}; + this.specifiedLocale = specifiedLocale; + this.fastNumbersCached = null; + } + get fastNumbers() { + if (this.fastNumbersCached == null) { + this.fastNumbersCached = supportsFastNumbers(this); + } + return this.fastNumbersCached; + } + listingMode() { + const isActuallyEn = this.isEnglish(); + const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory"); + return isActuallyEn && hasNoWeirdness ? "en" : "intl"; + } + clone(alts) { + if (!alts || Object.getOwnPropertyNames(alts).length === 0) { + return this; + } else { + return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, alts.defaultToEN || false); + } + } + redefaultToEN(alts = {}) { + return this.clone(__spreadProps(__spreadValues({}, alts), { defaultToEN: true })); + } + redefaultToSystem(alts = {}) { + return this.clone(__spreadProps(__spreadValues({}, alts), { defaultToEN: false })); + } + months(length, format = false) { + return listStuff(this, length, months, () => { + const intl = format ? { month: length, day: "numeric" } : { month: length }, formatStr = format ? "format" : "standalone"; + if (!this.monthsCache[formatStr][length]) { + this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, "month")); + } + return this.monthsCache[formatStr][length]; + }); + } + weekdays(length, format = false) { + return listStuff(this, length, weekdays, () => { + const intl = format ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, formatStr = format ? "format" : "standalone"; + if (!this.weekdaysCache[formatStr][length]) { + this.weekdaysCache[formatStr][length] = mapWeekdays((dt) => this.extract(dt, intl, "weekday")); + } + return this.weekdaysCache[formatStr][length]; + }); + } + meridiems() { + return listStuff(this, void 0, () => meridiems, () => { + if (!this.meridiemCache) { + const intl = { hour: "numeric", hourCycle: "h12" }; + this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map((dt) => this.extract(dt, intl, "dayperiod")); + } + return this.meridiemCache; + }); + } + eras(length) { + return listStuff(this, length, eras, () => { + const intl = { era: length }; + if (!this.eraCache[length]) { + this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) => this.extract(dt, intl, "era")); + } + return this.eraCache[length]; + }); + } + extract(dt, intlOpts, field) { + const df = this.dtFormatter(dt, intlOpts), results = df.formatToParts(), matching = results.find((m) => m.type.toLowerCase() === field); + return matching ? matching.value : null; + } + numberFormatter(opts = {}) { + return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts); + } + dtFormatter(dt, intlOpts = {}) { + return new PolyDateFormatter(dt, this.intl, intlOpts); + } + relFormatter(opts = {}) { + return new PolyRelFormatter(this.intl, this.isEnglish(), opts); + } + listFormatter(opts = {}) { + return getCachedLF(this.intl, opts); + } + isEnglish() { + return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); + } + equals(other) { + return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; + } + }; + var singleton = null; + var FixedOffsetZone = class extends Zone { + static get utcInstance() { + if (singleton === null) { + singleton = new FixedOffsetZone(0); + } + return singleton; + } + static instance(offset2) { + return offset2 === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset2); + } + static parseSpecifier(s2) { + if (s2) { + const r = s2.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + if (r) { + return new FixedOffsetZone(signedOffset(r[1], r[2])); + } + } + return null; + } + constructor(offset2) { + super(); + this.fixed = offset2; + } + get type() { + return "fixed"; + } + get name() { + return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`; + } + get ianaName() { + if (this.fixed === 0) { + return "Etc/UTC"; + } else { + return `Etc/GMT${formatOffset(-this.fixed, "narrow")}`; + } + } + offsetName() { + return this.name; + } + formatOffset(ts, format) { + return formatOffset(this.fixed, format); + } + get isUniversal() { + return true; + } + offset() { + return this.fixed; + } + equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + get isValid() { + return true; + } + }; + var InvalidZone = class extends Zone { + constructor(zoneName) { + super(); + this.zoneName = zoneName; + } + get type() { + return "invalid"; + } + get name() { + return this.zoneName; + } + get isUniversal() { + return false; + } + offsetName() { + return null; + } + formatOffset() { + return ""; + } + offset() { + return NaN; + } + equals() { + return false; + } + get isValid() { + return false; + } + }; + function normalizeZone(input, defaultZone2) { + if (isUndefined(input) || input === null) { + return defaultZone2; + } else if (input instanceof Zone) { + return input; + } else if (isString(input)) { + const lowered = input.toLowerCase(); + if (lowered === "default") + return defaultZone2; + else if (lowered === "local" || lowered === "system") + return SystemZone.instance; + else if (lowered === "utc" || lowered === "gmt") + return FixedOffsetZone.utcInstance; + else + return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input); + } else if (isNumber(input)) { + return FixedOffsetZone.instance(input); + } else if (typeof input === "object" && "offset" in input && typeof input.offset === "function") { + return input; + } else { + return new InvalidZone(input); + } + } + var now = () => Date.now(); + var defaultZone = "system"; + var defaultLocale = null; + var defaultNumberingSystem = null; + var defaultOutputCalendar = null; + var twoDigitCutoffYear = 60; + var throwOnInvalid; + var Settings = class { + static get now() { + return now; + } + static set now(n2) { + now = n2; + } + static set defaultZone(zone) { + defaultZone = zone; + } + static get defaultZone() { + return normalizeZone(defaultZone, SystemZone.instance); + } + static get defaultLocale() { + return defaultLocale; + } + static set defaultLocale(locale) { + defaultLocale = locale; + } + static get defaultNumberingSystem() { + return defaultNumberingSystem; + } + static set defaultNumberingSystem(numberingSystem) { + defaultNumberingSystem = numberingSystem; + } + static get defaultOutputCalendar() { + return defaultOutputCalendar; + } + static set defaultOutputCalendar(outputCalendar) { + defaultOutputCalendar = outputCalendar; + } + static get twoDigitCutoffYear() { + return twoDigitCutoffYear; + } + static set twoDigitCutoffYear(cutoffYear) { + twoDigitCutoffYear = cutoffYear % 100; + } + static get throwOnInvalid() { + return throwOnInvalid; + } + static set throwOnInvalid(t) { + throwOnInvalid = t; + } + static resetCaches() { + Locale.resetCache(); + IANAZone.resetCache(); + } + }; + function isUndefined(o) { + return typeof o === "undefined"; + } + function isNumber(o) { + return typeof o === "number"; + } + function isInteger(o) { + return typeof o === "number" && o % 1 === 0; + } + function isString(o) { + return typeof o === "string"; + } + function isDate(o) { + return Object.prototype.toString.call(o) === "[object Date]"; + } + function hasRelative() { + try { + return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat; + } catch (e) { + return false; + } + } + function maybeArray(thing) { + return Array.isArray(thing) ? thing : [thing]; + } + function bestBy(arr, by, compare) { + if (arr.length === 0) { + return void 0; + } + return arr.reduce((best, next) => { + const pair = [by(next), next]; + if (!best) { + return pair; + } else if (compare(best[0], pair[0]) === best[0]) { + return best; + } else { + return pair; + } + }, null)[1]; + } + function pick(obj, keys) { + return keys.reduce((a, k) => { + a[k] = obj[k]; + return a; + }, {}); + } + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + function integerBetween(thing, bottom, top) { + return isInteger(thing) && thing >= bottom && thing <= top; + } + function floorMod(x, n2) { + return x - n2 * Math.floor(x / n2); + } + function padStart(input, n2 = 2) { + const isNeg = input < 0; + let padded; + if (isNeg) { + padded = "-" + ("" + -input).padStart(n2, "0"); + } else { + padded = ("" + input).padStart(n2, "0"); + } + return padded; + } + function parseInteger(string) { + if (isUndefined(string) || string === null || string === "") { + return void 0; + } else { + return parseInt(string, 10); + } + } + function parseFloating(string) { + if (isUndefined(string) || string === null || string === "") { + return void 0; + } else { + return parseFloat(string); + } + } + function parseMillis(fraction) { + if (isUndefined(fraction) || fraction === null || fraction === "") { + return void 0; + } else { + const f = parseFloat("0." + fraction) * 1e3; + return Math.floor(f); + } + } + function roundTo(number, digits, towardZero = false) { + const factor = __pow(10, digits), rounder = towardZero ? Math.trunc : Math.round; + return rounder(number * factor) / factor; + } + function isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + function daysInMonth(year, month) { + const modMonth = floorMod(month - 1, 12) + 1, modYear = year + (month - modMonth) / 12; + if (modMonth === 2) { + return isLeapYear(modYear) ? 29 : 28; + } else { + return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1]; + } + } + function objToLocalTS(obj) { + let d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond); + if (obj.year < 100 && obj.year >= 0) { + d = new Date(d); + d.setUTCFullYear(obj.year, obj.month - 1, obj.day); + } + return +d; + } + function weeksInWeekYear(weekYear) { + const p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7, last = weekYear - 1, p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7; + return p1 === 4 || p2 === 3 ? 53 : 52; + } + function untruncateYear(year) { + if (year > 99) { + return year; + } else + return year > Settings.twoDigitCutoffYear ? 1900 + year : 2e3 + year; + } + function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) { + const date = new Date(ts), intlOpts = { + hourCycle: "h23", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit" + }; + if (timeZone) { + intlOpts.timeZone = timeZone; + } + const modified = __spreadValues({ timeZoneName: offsetFormat }, intlOpts); + const parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find((m) => m.type.toLowerCase() === "timezonename"); + return parsed ? parsed.value : null; + } + function signedOffset(offHourStr, offMinuteStr) { + let offHour = parseInt(offHourStr, 10); + if (Number.isNaN(offHour)) { + offHour = 0; + } + const offMin = parseInt(offMinuteStr, 10) || 0, offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin; + return offHour * 60 + offMinSigned; + } + function asNumber(value) { + const numericValue = Number(value); + if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue)) + throw new InvalidArgumentError(`Invalid unit value ${value}`); + return numericValue; + } + function normalizeObject(obj, normalizer) { + const normalized = {}; + for (const u in obj) { + if (hasOwnProperty(obj, u)) { + const v = obj[u]; + if (v === void 0 || v === null) + continue; + normalized[normalizer(u)] = asNumber(v); + } + } + return normalized; + } + function formatOffset(offset2, format) { + const hours = Math.trunc(Math.abs(offset2 / 60)), minutes = Math.trunc(Math.abs(offset2 % 60)), sign = offset2 >= 0 ? "+" : "-"; + switch (format) { + case "short": + return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`; + case "narrow": + return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`; + case "techie": + return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`; + default: + throw new RangeError(`Value format ${format} is out of range for property format`); + } + } + function timeObject(obj) { + return pick(obj, ["hour", "minute", "second", "millisecond"]); + } + var monthsLong = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ]; + var monthsShort = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + var monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]; + function months(length) { + switch (length) { + case "narrow": + return [...monthsNarrow]; + case "short": + return [...monthsShort]; + case "long": + return [...monthsLong]; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; + case "2-digit": + return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; + default: + return null; + } + } + var weekdaysLong = [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ]; + var weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + var weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"]; + function weekdays(length) { + switch (length) { + case "narrow": + return [...weekdaysNarrow]; + case "short": + return [...weekdaysShort]; + case "long": + return [...weekdaysLong]; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7"]; + default: + return null; + } + } + var meridiems = ["AM", "PM"]; + var erasLong = ["Before Christ", "Anno Domini"]; + var erasShort = ["BC", "AD"]; + var erasNarrow = ["B", "A"]; + function eras(length) { + switch (length) { + case "narrow": + return [...erasNarrow]; + case "short": + return [...erasShort]; + case "long": + return [...erasLong]; + default: + return null; + } + } + function meridiemForDateTime(dt) { + return meridiems[dt.hour < 12 ? 0 : 1]; + } + function weekdayForDateTime(dt, length) { + return weekdays(length)[dt.weekday - 1]; + } + function monthForDateTime(dt, length) { + return months(length)[dt.month - 1]; + } + function eraForDateTime(dt, length) { + return eras(length)[dt.year < 0 ? 0 : 1]; + } + function formatRelativeTime(unit, count, numeric = "always", narrow = false) { + const units = { + years: ["year", "yr."], + quarters: ["quarter", "qtr."], + months: ["month", "mo."], + weeks: ["week", "wk."], + days: ["day", "day", "days"], + hours: ["hour", "hr."], + minutes: ["minute", "min."], + seconds: ["second", "sec."] + }; + const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; + if (numeric === "auto" && lastable) { + const isDay = unit === "days"; + switch (count) { + case 1: + return isDay ? "tomorrow" : `next ${units[unit][0]}`; + case -1: + return isDay ? "yesterday" : `last ${units[unit][0]}`; + case 0: + return isDay ? "today" : `this ${units[unit][0]}`; + } + } + const isInPast = Object.is(count, -0) || count < 0, fmtValue = Math.abs(count), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; + return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`; + } + function stringifyTokens(splits, tokenToString) { + let s2 = ""; + for (const token of splits) { + if (token.literal) { + s2 += token.val; + } else { + s2 += tokenToString(token.val); + } + } + return s2; + } + var macroTokenToFormatOpts = { + D: DATE_SHORT, + DD: DATE_MED, + DDD: DATE_FULL, + DDDD: DATE_HUGE, + t: TIME_SIMPLE, + tt: TIME_WITH_SECONDS, + ttt: TIME_WITH_SHORT_OFFSET, + tttt: TIME_WITH_LONG_OFFSET, + T: TIME_24_SIMPLE, + TT: TIME_24_WITH_SECONDS, + TTT: TIME_24_WITH_SHORT_OFFSET, + TTTT: TIME_24_WITH_LONG_OFFSET, + f: DATETIME_SHORT, + ff: DATETIME_MED, + fff: DATETIME_FULL, + ffff: DATETIME_HUGE, + F: DATETIME_SHORT_WITH_SECONDS, + FF: DATETIME_MED_WITH_SECONDS, + FFF: DATETIME_FULL_WITH_SECONDS, + FFFF: DATETIME_HUGE_WITH_SECONDS + }; + var Formatter = class { + static create(locale, opts = {}) { + return new Formatter(locale, opts); + } + static parseFormat(fmt) { + let current = null, currentFull = "", bracketed = false; + const splits = []; + for (let i = 0; i < fmt.length; i++) { + const c = fmt.charAt(i); + if (c === "'") { + if (currentFull.length > 0) { + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); + } + current = null; + currentFull = ""; + bracketed = !bracketed; + } else if (bracketed) { + currentFull += c; + } else if (c === current) { + currentFull += c; + } else { + if (currentFull.length > 0) { + splits.push({ literal: /^\s+$/.test(currentFull), val: currentFull }); + } + currentFull = c; + current = c; + } + } + if (currentFull.length > 0) { + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); + } + return splits; + } + static macroTokenToFormatOpts(token) { + return macroTokenToFormatOpts[token]; + } + constructor(locale, formatOpts) { + this.opts = formatOpts; + this.loc = locale; + this.systemLoc = null; + } + formatWithSystemDefault(dt, opts) { + if (this.systemLoc === null) { + this.systemLoc = this.loc.redefaultToSystem(); + } + const df = this.systemLoc.dtFormatter(dt, __spreadValues(__spreadValues({}, this.opts), opts)); + return df.format(); + } + dtFormatter(dt, opts = {}) { + return this.loc.dtFormatter(dt, __spreadValues(__spreadValues({}, this.opts), opts)); + } + formatDateTime(dt, opts) { + return this.dtFormatter(dt, opts).format(); + } + formatDateTimeParts(dt, opts) { + return this.dtFormatter(dt, opts).formatToParts(); + } + formatInterval(interval, opts) { + const df = this.dtFormatter(interval.start, opts); + return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate()); + } + resolvedOptions(dt, opts) { + return this.dtFormatter(dt, opts).resolvedOptions(); + } + num(n2, p = 0) { + if (this.opts.forceSimple) { + return padStart(n2, p); + } + const opts = __spreadValues({}, this.opts); + if (p > 0) { + opts.padTo = p; + } + return this.loc.numberFormatter(opts).format(n2); + } + formatDateTimeFromString(dt, fmt) { + const knownEnglish = this.loc.listingMode() === "en", useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== "gregory", string = (opts, extract) => this.loc.extract(dt, opts, extract), formatOffset2 = (opts) => { + if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) { + return "Z"; + } + return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : ""; + }, meridiem = () => knownEnglish ? meridiemForDateTime(dt) : string({ hour: "numeric", hourCycle: "h12" }, "dayperiod"), month = (length, standalone) => knownEnglish ? monthForDateTime(dt, length) : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"), weekday = (length, standalone) => knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" }, "weekday"), maybeMacro = (token) => { + const formatOpts = Formatter.macroTokenToFormatOpts(token); + if (formatOpts) { + return this.formatWithSystemDefault(dt, formatOpts); + } else { + return token; + } + }, era = (length) => knownEnglish ? eraForDateTime(dt, length) : string({ era: length }, "era"), tokenToString = (token) => { + switch (token) { + case "S": + return this.num(dt.millisecond); + case "u": + case "SSS": + return this.num(dt.millisecond, 3); + case "s": + return this.num(dt.second); + case "ss": + return this.num(dt.second, 2); + case "uu": + return this.num(Math.floor(dt.millisecond / 10), 2); + case "uuu": + return this.num(Math.floor(dt.millisecond / 100)); + case "m": + return this.num(dt.minute); + case "mm": + return this.num(dt.minute, 2); + case "h": + return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12); + case "hh": + return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2); + case "H": + return this.num(dt.hour); + case "HH": + return this.num(dt.hour, 2); + case "Z": + return formatOffset2({ format: "narrow", allowZ: this.opts.allowZ }); + case "ZZ": + return formatOffset2({ format: "short", allowZ: this.opts.allowZ }); + case "ZZZ": + return formatOffset2({ format: "techie", allowZ: this.opts.allowZ }); + case "ZZZZ": + return dt.zone.offsetName(dt.ts, { format: "short", locale: this.loc.locale }); + case "ZZZZZ": + return dt.zone.offsetName(dt.ts, { format: "long", locale: this.loc.locale }); + case "z": + return dt.zoneName; + case "a": + return meridiem(); + case "d": + return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt.day); + case "dd": + return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt.day, 2); + case "c": + return this.num(dt.weekday); + case "ccc": + return weekday("short", true); + case "cccc": + return weekday("long", true); + case "ccccc": + return weekday("narrow", true); + case "E": + return this.num(dt.weekday); + case "EEE": + return weekday("short", false); + case "EEEE": + return weekday("long", false); + case "EEEEE": + return weekday("narrow", false); + case "L": + return useDateTimeFormatter ? string({ month: "numeric", day: "numeric" }, "month") : this.num(dt.month); + case "LL": + return useDateTimeFormatter ? string({ month: "2-digit", day: "numeric" }, "month") : this.num(dt.month, 2); + case "LLL": + return month("short", true); + case "LLLL": + return month("long", true); + case "LLLLL": + return month("narrow", true); + case "M": + return useDateTimeFormatter ? string({ month: "numeric" }, "month") : this.num(dt.month); + case "MM": + return useDateTimeFormatter ? string({ month: "2-digit" }, "month") : this.num(dt.month, 2); + case "MMM": + return month("short", false); + case "MMMM": + return month("long", false); + case "MMMMM": + return month("narrow", false); + case "y": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year); + case "yy": + return useDateTimeFormatter ? string({ year: "2-digit" }, "year") : this.num(dt.year.toString().slice(-2), 2); + case "yyyy": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year, 4); + case "yyyyyy": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year, 6); + case "G": + return era("short"); + case "GG": + return era("long"); + case "GGGGG": + return era("narrow"); + case "kk": + return this.num(dt.weekYear.toString().slice(-2), 2); + case "kkkk": + return this.num(dt.weekYear, 4); + case "W": + return this.num(dt.weekNumber); + case "WW": + return this.num(dt.weekNumber, 2); + case "o": + return this.num(dt.ordinal); + case "ooo": + return this.num(dt.ordinal, 3); + case "q": + return this.num(dt.quarter); + case "qq": + return this.num(dt.quarter, 2); + case "X": + return this.num(Math.floor(dt.ts / 1e3)); + case "x": + return this.num(dt.ts); + default: + return maybeMacro(token); + } + }; + return stringifyTokens(Formatter.parseFormat(fmt), tokenToString); + } + formatDurationFromString(dur, fmt) { + const tokenToField = (token) => { + switch (token[0]) { + case "S": + return "millisecond"; + case "s": + return "second"; + case "m": + return "minute"; + case "h": + return "hour"; + case "d": + return "day"; + case "w": + return "week"; + case "M": + return "month"; + case "y": + return "year"; + default: + return null; + } + }, tokenToString = (lildur) => (token) => { + const mapped = tokenToField(token); + if (mapped) { + return this.num(lildur.get(mapped), token.length); + } else { + return token; + } + }, tokens = Formatter.parseFormat(fmt), realTokens = tokens.reduce((found, { literal, val }) => literal ? found : found.concat(val), []), collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t)); + return stringifyTokens(tokens, tokenToString(collapsed)); + } + }; + var Invalid = class { + constructor(reason, explanation) { + this.reason = reason; + this.explanation = explanation; + } + toMessage() { + if (this.explanation) { + return `${this.reason}: ${this.explanation}`; + } else { + return this.reason; + } + } + }; + var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/; + function combineRegexes(...regexes) { + const full = regexes.reduce((f, r) => f + r.source, ""); + return RegExp(`^${full}$`); + } + function combineExtractors(...extractors) { + return (m) => extractors.reduce(([mergedVals, mergedZone, cursor], ex) => { + const [val, zone, next] = ex(m, cursor); + return [__spreadValues(__spreadValues({}, mergedVals), val), zone || mergedZone, next]; + }, [{}, null, 1]).slice(0, 2); + } + function parse(s2, ...patterns) { + if (s2 == null) { + return [null, null]; + } + for (const [regex, extractor] of patterns) { + const m = regex.exec(s2); + if (m) { + return extractor(m); + } + } + return [null, null]; + } + function simpleParse(...keys) { + return (match2, cursor) => { + const ret = {}; + let i; + for (i = 0; i < keys.length; i++) { + ret[keys[i]] = parseInteger(match2[cursor + i]); + } + return [ret, null, cursor + i]; + }; + } + var offsetRegex = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/; + var isoExtendedZone = `(?:${offsetRegex.source}?(?:\\[(${ianaRegex.source})\\])?)?`; + var isoTimeBaseRegex = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/; + var isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`); + var isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`); + var isoYmdRegex = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/; + var isoWeekRegex = /(\d{4})-?W(\d\d)(?:-?(\d))?/; + var isoOrdinalRegex = /(\d{4})-?(\d{3})/; + var extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay"); + var extractISOOrdinalData = simpleParse("year", "ordinal"); + var sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/; + var sqlTimeRegex = RegExp(`${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`); + var sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`); + function int(match2, pos, fallback) { + const m = match2[pos]; + return isUndefined(m) ? fallback : parseInteger(m); + } + function extractISOYmd(match2, cursor) { + const item = { + year: int(match2, cursor), + month: int(match2, cursor + 1, 1), + day: int(match2, cursor + 2, 1) + }; + return [item, null, cursor + 3]; + } + function extractISOTime(match2, cursor) { + const item = { + hours: int(match2, cursor, 0), + minutes: int(match2, cursor + 1, 0), + seconds: int(match2, cursor + 2, 0), + milliseconds: parseMillis(match2[cursor + 3]) + }; + return [item, null, cursor + 4]; + } + function extractISOOffset(match2, cursor) { + const local = !match2[cursor] && !match2[cursor + 1], fullOffset = signedOffset(match2[cursor + 1], match2[cursor + 2]), zone = local ? null : FixedOffsetZone.instance(fullOffset); + return [{}, zone, cursor + 3]; + } + function extractIANAZone(match2, cursor) { + const zone = match2[cursor] ? IANAZone.create(match2[cursor]) : null; + return [{}, zone, cursor + 1]; + } + var isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`); + var isoDuration = /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/; + function extractISODuration(match2) { + const [s2, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match2; + const hasNegativePrefix = s2[0] === "-"; + const negativeSeconds = secondStr && secondStr[0] === "-"; + const maybeNegate = (num, force = false) => num !== void 0 && (force || num && hasNegativePrefix) ? -num : num; + return [ + { + years: maybeNegate(parseFloating(yearStr)), + months: maybeNegate(parseFloating(monthStr)), + weeks: maybeNegate(parseFloating(weekStr)), + days: maybeNegate(parseFloating(dayStr)), + hours: maybeNegate(parseFloating(hourStr)), + minutes: maybeNegate(parseFloating(minuteStr)), + seconds: maybeNegate(parseFloating(secondStr), secondStr === "-0"), + milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds) + } + ]; + } + var obsOffsets = { + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + const result = { + year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr), + month: monthsShort.indexOf(monthStr) + 1, + day: parseInteger(dayStr), + hour: parseInteger(hourStr), + minute: parseInteger(minuteStr) + }; + if (secondStr) + result.second = parseInteger(secondStr); + if (weekdayStr) { + result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1; + } + return result; + } + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/; + function extractRFC2822(match2) { + const [ + , + weekdayStr, + dayStr, + monthStr, + yearStr, + hourStr, + minuteStr, + secondStr, + obsOffset, + milOffset, + offHourStr, + offMinuteStr + ] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + let offset2; + if (obsOffset) { + offset2 = obsOffsets[obsOffset]; + } else if (milOffset) { + offset2 = 0; + } else { + offset2 = signedOffset(offHourStr, offMinuteStr); + } + return [result, new FixedOffsetZone(offset2)]; + } + function preprocessRFC2822(s2) { + return s2.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim(); + } + var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/; + var rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/; + var ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/; + function extractRFC1123Or850(match2) { + const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; + } + function extractASCII(match2) { + const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; + } + var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex); + var isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex); + var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex); + var isoTimeCombinedRegex = combineRegexes(isoTimeRegex); + var extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone); + var extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset, extractIANAZone); + var extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset, extractIANAZone); + var extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone); + function parseISODate(s2) { + return parse(s2, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]); + } + function parseRFC2822Date(s2) { + return parse(preprocessRFC2822(s2), [rfc2822, extractRFC2822]); + } + function parseHTTPDate(s2) { + return parse(s2, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]); + } + function parseISODuration(s2) { + return parse(s2, [isoDuration, extractISODuration]); + } + var extractISOTimeOnly = combineExtractors(extractISOTime); + function parseISOTimeOnly(s2) { + return parse(s2, [isoTimeOnly, extractISOTimeOnly]); + } + var sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex); + var sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex); + var extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone); + function parseSQL(s2) { + return parse(s2, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]); + } + var INVALID$2 = "Invalid Duration"; + var lowOrderMatrix = { + weeks: { + days: 7, + hours: 7 * 24, + minutes: 7 * 24 * 60, + seconds: 7 * 24 * 60 * 60, + milliseconds: 7 * 24 * 60 * 60 * 1e3 + }, + days: { + hours: 24, + minutes: 24 * 60, + seconds: 24 * 60 * 60, + milliseconds: 24 * 60 * 60 * 1e3 + }, + hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1e3 }, + minutes: { seconds: 60, milliseconds: 60 * 1e3 }, + seconds: { milliseconds: 1e3 } + }; + var casualMatrix = __spreadValues({ + years: { + quarters: 4, + months: 12, + weeks: 52, + days: 365, + hours: 365 * 24, + minutes: 365 * 24 * 60, + seconds: 365 * 24 * 60 * 60, + milliseconds: 365 * 24 * 60 * 60 * 1e3 + }, + quarters: { + months: 3, + weeks: 13, + days: 91, + hours: 91 * 24, + minutes: 91 * 24 * 60, + seconds: 91 * 24 * 60 * 60, + milliseconds: 91 * 24 * 60 * 60 * 1e3 + }, + months: { + weeks: 4, + days: 30, + hours: 30 * 24, + minutes: 30 * 24 * 60, + seconds: 30 * 24 * 60 * 60, + milliseconds: 30 * 24 * 60 * 60 * 1e3 + } + }, lowOrderMatrix); + var daysInYearAccurate = 146097 / 400; + var daysInMonthAccurate = 146097 / 4800; + var accurateMatrix = __spreadValues({ + years: { + quarters: 4, + months: 12, + weeks: daysInYearAccurate / 7, + days: daysInYearAccurate, + hours: daysInYearAccurate * 24, + minutes: daysInYearAccurate * 24 * 60, + seconds: daysInYearAccurate * 24 * 60 * 60, + milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1e3 + }, + quarters: { + months: 3, + weeks: daysInYearAccurate / 28, + days: daysInYearAccurate / 4, + hours: daysInYearAccurate * 24 / 4, + minutes: daysInYearAccurate * 24 * 60 / 4, + seconds: daysInYearAccurate * 24 * 60 * 60 / 4, + milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1e3 / 4 + }, + months: { + weeks: daysInMonthAccurate / 7, + days: daysInMonthAccurate, + hours: daysInMonthAccurate * 24, + minutes: daysInMonthAccurate * 24 * 60, + seconds: daysInMonthAccurate * 24 * 60 * 60, + milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1e3 + } + }, lowOrderMatrix); + var orderedUnits$1 = [ + "years", + "quarters", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ]; + var reverseUnits = orderedUnits$1.slice(0).reverse(); + function clone$1(dur, alts, clear = false) { + const conf = { + values: clear ? alts.values : __spreadValues(__spreadValues({}, dur.values), alts.values || {}), + loc: dur.loc.clone(alts.loc), + conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy, + matrix: alts.matrix || dur.matrix + }; + return new Duration(conf); + } + function durationToMillis(matrix, vals) { + var _a; + let sum = (_a = vals.milliseconds) != null ? _a : 0; + for (const unit of reverseUnits.slice(1)) { + if (vals[unit]) { + sum += vals[unit] * matrix[unit]["milliseconds"]; + } + } + return sum; + } + function normalizeValues(matrix, vals) { + const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1; + orderedUnits$1.reduceRight((previous, current) => { + if (!isUndefined(vals[current])) { + if (previous) { + const previousVal = vals[previous] * factor; + const conv = matrix[current][previous]; + const rollUp = Math.floor(previousVal / conv); + vals[current] += rollUp * factor; + vals[previous] -= rollUp * conv * factor; + } + return current; + } else { + return previous; + } + }, null); + orderedUnits$1.reduce((previous, current) => { + if (!isUndefined(vals[current])) { + if (previous) { + const fraction = vals[previous] % 1; + vals[previous] -= fraction; + vals[current] += fraction * matrix[previous][current]; + } + return current; + } else { + return previous; + } + }, null); + } + function removeZeroes(vals) { + const newVals = {}; + for (const [key, value] of Object.entries(vals)) { + if (value !== 0) { + newVals[key] = value; + } + } + return newVals; + } + var Duration = class { + constructor(config) { + const accurate = config.conversionAccuracy === "longterm" || false; + let matrix = accurate ? accurateMatrix : casualMatrix; + if (config.matrix) { + matrix = config.matrix; + } + this.values = config.values; + this.loc = config.loc || Locale.create(); + this.conversionAccuracy = accurate ? "longterm" : "casual"; + this.invalid = config.invalid || null; + this.matrix = matrix; + this.isLuxonDuration = true; + } + static fromMillis(count, opts) { + return Duration.fromObject({ milliseconds: count }, opts); + } + static fromObject(obj, opts = {}) { + if (obj == null || typeof obj !== "object") { + throw new InvalidArgumentError(`Duration.fromObject: argument expected to be an object, got ${obj === null ? "null" : typeof obj}`); + } + return new Duration({ + values: normalizeObject(obj, Duration.normalizeUnit), + loc: Locale.fromObject(opts), + conversionAccuracy: opts.conversionAccuracy, + matrix: opts.matrix + }); + } + static fromDurationLike(durationLike) { + if (isNumber(durationLike)) { + return Duration.fromMillis(durationLike); + } else if (Duration.isDuration(durationLike)) { + return durationLike; + } else if (typeof durationLike === "object") { + return Duration.fromObject(durationLike); + } else { + throw new InvalidArgumentError(`Unknown duration argument ${durationLike} of type ${typeof durationLike}`); + } + } + static fromISO(text, opts) { + const [parsed] = parseISODuration(text); + if (parsed) { + return Duration.fromObject(parsed, opts); + } else { + return Duration.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`); + } + } + static fromISOTime(text, opts) { + const [parsed] = parseISOTimeOnly(text); + if (parsed) { + return Duration.fromObject(parsed, opts); + } else { + return Duration.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`); + } + } + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Duration is invalid"); + } + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + if (Settings.throwOnInvalid) { + throw new InvalidDurationError(invalid); + } else { + return new Duration({ invalid }); + } + } + static normalizeUnit(unit) { + const normalized = { + year: "years", + years: "years", + quarter: "quarters", + quarters: "quarters", + month: "months", + months: "months", + week: "weeks", + weeks: "weeks", + day: "days", + days: "days", + hour: "hours", + hours: "hours", + minute: "minutes", + minutes: "minutes", + second: "seconds", + seconds: "seconds", + millisecond: "milliseconds", + milliseconds: "milliseconds" + }[unit ? unit.toLowerCase() : unit]; + if (!normalized) + throw new InvalidUnitError(unit); + return normalized; + } + static isDuration(o) { + return o && o.isLuxonDuration || false; + } + get locale() { + return this.isValid ? this.loc.locale : null; + } + get numberingSystem() { + return this.isValid ? this.loc.numberingSystem : null; + } + toFormat(fmt, opts = {}) { + const fmtOpts = __spreadProps(__spreadValues({}, opts), { + floor: opts.round !== false && opts.floor !== false + }); + return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2; + } + toHuman(opts = {}) { + if (!this.isValid) + return INVALID$2; + const l2 = orderedUnits$1.map((unit) => { + const val = this.values[unit]; + if (isUndefined(val)) { + return null; + } + return this.loc.numberFormatter(__spreadProps(__spreadValues({ style: "unit", unitDisplay: "long" }, opts), { unit: unit.slice(0, -1) })).format(val); + }).filter((n2) => n2); + return this.loc.listFormatter(__spreadValues({ type: "conjunction", style: opts.listStyle || "narrow" }, opts)).format(l2); + } + toObject() { + if (!this.isValid) + return {}; + return __spreadValues({}, this.values); + } + toISO() { + if (!this.isValid) + return null; + let s2 = "P"; + if (this.years !== 0) + s2 += this.years + "Y"; + if (this.months !== 0 || this.quarters !== 0) + s2 += this.months + this.quarters * 3 + "M"; + if (this.weeks !== 0) + s2 += this.weeks + "W"; + if (this.days !== 0) + s2 += this.days + "D"; + if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) + s2 += "T"; + if (this.hours !== 0) + s2 += this.hours + "H"; + if (this.minutes !== 0) + s2 += this.minutes + "M"; + if (this.seconds !== 0 || this.milliseconds !== 0) + s2 += roundTo(this.seconds + this.milliseconds / 1e3, 3) + "S"; + if (s2 === "P") + s2 += "T0S"; + return s2; + } + toISOTime(opts = {}) { + if (!this.isValid) + return null; + const millis = this.toMillis(); + if (millis < 0 || millis >= 864e5) + return null; + opts = __spreadProps(__spreadValues({ + suppressMilliseconds: false, + suppressSeconds: false, + includePrefix: false, + format: "extended" + }, opts), { + includeOffset: false + }); + const dateTime = DateTime.fromMillis(millis, { zone: "UTC" }); + return dateTime.toISOTime(opts); + } + toJSON() { + return this.toISO(); + } + toString() { + return this.toISO(); + } + toMillis() { + if (!this.isValid) + return NaN; + return durationToMillis(this.matrix, this.values); + } + valueOf() { + return this.toMillis(); + } + plus(duration) { + if (!this.isValid) + return this; + const dur = Duration.fromDurationLike(duration), result = {}; + for (const k of orderedUnits$1) { + if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) { + result[k] = dur.get(k) + this.get(k); + } + } + return clone$1(this, { values: result }, true); + } + minus(duration) { + if (!this.isValid) + return this; + const dur = Duration.fromDurationLike(duration); + return this.plus(dur.negate()); + } + mapUnits(fn) { + if (!this.isValid) + return this; + const result = {}; + for (const k of Object.keys(this.values)) { + result[k] = asNumber(fn(this.values[k], k)); + } + return clone$1(this, { values: result }, true); + } + get(unit) { + return this[Duration.normalizeUnit(unit)]; + } + set(values) { + if (!this.isValid) + return this; + const mixed = __spreadValues(__spreadValues({}, this.values), normalizeObject(values, Duration.normalizeUnit)); + return clone$1(this, { values: mixed }); + } + reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) { + const loc = this.loc.clone({ locale, numberingSystem }); + const opts = { loc, matrix, conversionAccuracy }; + return clone$1(this, opts); + } + as(unit) { + return this.isValid ? this.shiftTo(unit).get(unit) : NaN; + } + normalize() { + if (!this.isValid) + return this; + const vals = this.toObject(); + normalizeValues(this.matrix, vals); + return clone$1(this, { values: vals }, true); + } + rescale() { + if (!this.isValid) + return this; + const vals = removeZeroes(this.normalize().shiftToAll().toObject()); + return clone$1(this, { values: vals }, true); + } + shiftTo(...units) { + if (!this.isValid) + return this; + if (units.length === 0) { + return this; + } + units = units.map((u) => Duration.normalizeUnit(u)); + const built = {}, accumulated = {}, vals = this.toObject(); + let lastUnit; + for (const k of orderedUnits$1) { + if (units.indexOf(k) >= 0) { + lastUnit = k; + let own = 0; + for (const ak in accumulated) { + own += this.matrix[ak][k] * accumulated[ak]; + accumulated[ak] = 0; + } + if (isNumber(vals[k])) { + own += vals[k]; + } + const i = Math.trunc(own); + built[k] = i; + accumulated[k] = (own * 1e3 - i * 1e3) / 1e3; + } else if (isNumber(vals[k])) { + accumulated[k] = vals[k]; + } + } + for (const key in accumulated) { + if (accumulated[key] !== 0) { + built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key]; + } + } + normalizeValues(this.matrix, built); + return clone$1(this, { values: built }, true); + } + shiftToAll() { + if (!this.isValid) + return this; + return this.shiftTo("years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds"); + } + negate() { + if (!this.isValid) + return this; + const negated = {}; + for (const k of Object.keys(this.values)) { + negated[k] = this.values[k] === 0 ? 0 : -this.values[k]; + } + return clone$1(this, { values: negated }, true); + } + get years() { + return this.isValid ? this.values.years || 0 : NaN; + } + get quarters() { + return this.isValid ? this.values.quarters || 0 : NaN; + } + get months() { + return this.isValid ? this.values.months || 0 : NaN; + } + get weeks() { + return this.isValid ? this.values.weeks || 0 : NaN; + } + get days() { + return this.isValid ? this.values.days || 0 : NaN; + } + get hours() { + return this.isValid ? this.values.hours || 0 : NaN; + } + get minutes() { + return this.isValid ? this.values.minutes || 0 : NaN; + } + get seconds() { + return this.isValid ? this.values.seconds || 0 : NaN; + } + get milliseconds() { + return this.isValid ? this.values.milliseconds || 0 : NaN; + } + get isValid() { + return this.invalid === null; + } + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + if (!this.loc.equals(other.loc)) { + return false; + } + function eq(v1, v2) { + if (v1 === void 0 || v1 === 0) + return v2 === void 0 || v2 === 0; + return v1 === v2; + } + for (const u of orderedUnits$1) { + if (!eq(this.values[u], other.values[u])) { + return false; + } + } + return true; + } + }; + var INVALID$1 = "Invalid Interval"; + function validateStartEnd(start, end) { + if (!start || !start.isValid) { + return Interval.invalid("missing or invalid start"); + } else if (!end || !end.isValid) { + return Interval.invalid("missing or invalid end"); + } else if (end < start) { + return Interval.invalid("end before start", `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`); + } else { + return null; + } + } + var Interval = class { + constructor(config) { + this.s = config.start; + this.e = config.end; + this.invalid = config.invalid || null; + this.isLuxonInterval = true; + } + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Interval is invalid"); + } + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + if (Settings.throwOnInvalid) { + throw new InvalidIntervalError(invalid); + } else { + return new Interval({ invalid }); + } + } + static fromDateTimes(start, end) { + const builtStart = friendlyDateTime(start), builtEnd = friendlyDateTime(end); + const validateError = validateStartEnd(builtStart, builtEnd); + if (validateError == null) { + return new Interval({ + start: builtStart, + end: builtEnd + }); + } else { + return validateError; + } + } + static after(start, duration) { + const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(start); + return Interval.fromDateTimes(dt, dt.plus(dur)); + } + static before(end, duration) { + const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(end); + return Interval.fromDateTimes(dt.minus(dur), dt); + } + static fromISO(text, opts) { + const [s2, e] = (text || "").split("/", 2); + if (s2 && e) { + let start, startIsValid; + try { + start = DateTime.fromISO(s2, opts); + startIsValid = start.isValid; + } catch (e2) { + startIsValid = false; + } + let end, endIsValid; + try { + end = DateTime.fromISO(e, opts); + endIsValid = end.isValid; + } catch (e2) { + endIsValid = false; + } + if (startIsValid && endIsValid) { + return Interval.fromDateTimes(start, end); + } + if (startIsValid) { + const dur = Duration.fromISO(e, opts); + if (dur.isValid) { + return Interval.after(start, dur); + } + } else if (endIsValid) { + const dur = Duration.fromISO(s2, opts); + if (dur.isValid) { + return Interval.before(end, dur); + } + } + } + return Interval.invalid("unparsable", `the input "${text}" can't be parsed as ISO 8601`); + } + static isInterval(o) { + return o && o.isLuxonInterval || false; + } + get start() { + return this.isValid ? this.s : null; + } + get end() { + return this.isValid ? this.e : null; + } + get isValid() { + return this.invalidReason === null; + } + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + length(unit = "milliseconds") { + return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN; + } + count(unit = "milliseconds") { + if (!this.isValid) + return NaN; + const start = this.start.startOf(unit), end = this.end.startOf(unit); + return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf()); + } + hasSame(unit) { + return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false; + } + isEmpty() { + return this.s.valueOf() === this.e.valueOf(); + } + isAfter(dateTime) { + if (!this.isValid) + return false; + return this.s > dateTime; + } + isBefore(dateTime) { + if (!this.isValid) + return false; + return this.e <= dateTime; + } + contains(dateTime) { + if (!this.isValid) + return false; + return this.s <= dateTime && this.e > dateTime; + } + set({ start, end } = {}) { + if (!this.isValid) + return this; + return Interval.fromDateTimes(start || this.s, end || this.e); + } + splitAt(...dateTimes) { + if (!this.isValid) + return []; + const sorted = dateTimes.map(friendlyDateTime).filter((d) => this.contains(d)).sort(), results = []; + let { s: s2 } = this, i = 0; + while (s2 < this.e) { + const added = sorted[i] || this.e, next = +added > +this.e ? this.e : added; + results.push(Interval.fromDateTimes(s2, next)); + s2 = next; + i += 1; + } + return results; + } + splitBy(duration) { + const dur = Duration.fromDurationLike(duration); + if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) { + return []; + } + let { s: s2 } = this, idx = 1, next; + const results = []; + while (s2 < this.e) { + const added = this.start.plus(dur.mapUnits((x) => x * idx)); + next = +added > +this.e ? this.e : added; + results.push(Interval.fromDateTimes(s2, next)); + s2 = next; + idx += 1; + } + return results; + } + divideEqually(numberOfParts) { + if (!this.isValid) + return []; + return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts); + } + overlaps(other) { + return this.e > other.s && this.s < other.e; + } + abutsStart(other) { + if (!this.isValid) + return false; + return +this.e === +other.s; + } + abutsEnd(other) { + if (!this.isValid) + return false; + return +other.e === +this.s; + } + engulfs(other) { + if (!this.isValid) + return false; + return this.s <= other.s && this.e >= other.e; + } + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + return this.s.equals(other.s) && this.e.equals(other.e); + } + intersection(other) { + if (!this.isValid) + return this; + const s2 = this.s > other.s ? this.s : other.s, e = this.e < other.e ? this.e : other.e; + if (s2 >= e) { + return null; + } else { + return Interval.fromDateTimes(s2, e); + } + } + union(other) { + if (!this.isValid) + return this; + const s2 = this.s < other.s ? this.s : other.s, e = this.e > other.e ? this.e : other.e; + return Interval.fromDateTimes(s2, e); + } + static merge(intervals) { + const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(([sofar, current], item) => { + if (!current) { + return [sofar, item]; + } else if (current.overlaps(item) || current.abutsStart(item)) { + return [sofar, current.union(item)]; + } else { + return [sofar.concat([current]), item]; + } + }, [[], null]); + if (final) { + found.push(final); + } + return found; + } + static xor(intervals) { + let start = null, currentCount = 0; + const results = [], ends = intervals.map((i) => [ + { time: i.s, type: "s" }, + { time: i.e, type: "e" } + ]), flattened = Array.prototype.concat(...ends), arr = flattened.sort((a, b) => a.time - b.time); + for (const i of arr) { + currentCount += i.type === "s" ? 1 : -1; + if (currentCount === 1) { + start = i.time; + } else { + if (start && +start !== +i.time) { + results.push(Interval.fromDateTimes(start, i.time)); + } + start = null; + } + } + return Interval.merge(results); + } + difference(...intervals) { + return Interval.xor([this].concat(intervals)).map((i) => this.intersection(i)).filter((i) => i && !i.isEmpty()); + } + toString() { + if (!this.isValid) + return INVALID$1; + return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`; + } + toLocaleString(formatOpts = DATE_SHORT, opts = {}) { + return this.isValid ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID$1; + } + toISO(opts) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`; + } + toISODate() { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISODate()}/${this.e.toISODate()}`; + } + toISOTime(opts) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`; + } + toFormat(dateFormat, { separator = " \u2013 " } = {}) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`; + } + toDuration(unit, opts) { + if (!this.isValid) { + return Duration.invalid(this.invalidReason); + } + return this.e.diff(this.s, unit, opts); + } + mapEndpoints(mapFn) { + return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); + } + }; + var Info = class { + static hasDST(zone = Settings.defaultZone) { + const proto = DateTime.now().setZone(zone).set({ month: 12 }); + return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset; + } + static isValidIANAZone(zone) { + return IANAZone.isValidZone(zone); + } + static normalizeZone(input) { + return normalizeZone(input, Settings.defaultZone); + } + static months(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length); + } + static monthsFormat(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true); + } + static weekdays(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length); + } + static weekdaysFormat(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true); + } + static meridiems({ locale = null } = {}) { + return Locale.create(locale).meridiems(); + } + static eras(length = "short", { locale = null } = {}) { + return Locale.create(locale, null, "gregory").eras(length); + } + static features() { + return { relative: hasRelative() }; + } + }; + function dayDiff(earlier, later) { + const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf("day").valueOf(), ms = utcDayStart(later) - utcDayStart(earlier); + return Math.floor(Duration.fromMillis(ms).as("days")); + } + function highOrderDiffs(cursor, later, units) { + const differs = [ + ["years", (a, b) => b.year - a.year], + ["quarters", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4], + ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12], + [ + "weeks", + (a, b) => { + const days = dayDiff(a, b); + return (days - days % 7) / 7; + } + ], + ["days", dayDiff] + ]; + const results = {}; + const earlier = cursor; + let lowestOrder, highWater; + for (const [unit, differ] of differs) { + if (units.indexOf(unit) >= 0) { + lowestOrder = unit; + results[unit] = differ(cursor, later); + highWater = earlier.plus(results); + if (highWater > later) { + results[unit]--; + cursor = earlier.plus(results); + if (cursor > later) { + highWater = cursor; + results[unit]--; + cursor = earlier.plus(results); + } + } else { + cursor = highWater; + } + } + } + return [cursor, results, highWater, lowestOrder]; + } + function diff(earlier, later, units, opts) { + let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units); + const remainingMillis = later - cursor; + const lowerOrderUnits = units.filter((u) => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0); + if (lowerOrderUnits.length === 0) { + if (highWater < later) { + highWater = cursor.plus({ [lowestOrder]: 1 }); + } + if (highWater !== cursor) { + results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor); + } + } + const duration = Duration.fromObject(results, opts); + if (lowerOrderUnits.length > 0) { + return Duration.fromMillis(remainingMillis, opts).shiftTo(...lowerOrderUnits).plus(duration); + } else { + return duration; + } + } + var numberingSystems = { + arab: "[\u0660-\u0669]", + arabext: "[\u06F0-\u06F9]", + bali: "[\u1B50-\u1B59]", + beng: "[\u09E6-\u09EF]", + deva: "[\u0966-\u096F]", + fullwide: "[\uFF10-\uFF19]", + gujr: "[\u0AE6-\u0AEF]", + hanidec: "[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]", + khmr: "[\u17E0-\u17E9]", + knda: "[\u0CE6-\u0CEF]", + laoo: "[\u0ED0-\u0ED9]", + limb: "[\u1946-\u194F]", + mlym: "[\u0D66-\u0D6F]", + mong: "[\u1810-\u1819]", + mymr: "[\u1040-\u1049]", + orya: "[\u0B66-\u0B6F]", + tamldec: "[\u0BE6-\u0BEF]", + telu: "[\u0C66-\u0C6F]", + thai: "[\u0E50-\u0E59]", + tibt: "[\u0F20-\u0F29]", + latn: "\\d" + }; + var numberingSystemsUTF16 = { + arab: [1632, 1641], + arabext: [1776, 1785], + bali: [6992, 7001], + beng: [2534, 2543], + deva: [2406, 2415], + fullwide: [65296, 65303], + gujr: [2790, 2799], + khmr: [6112, 6121], + knda: [3302, 3311], + laoo: [3792, 3801], + limb: [6470, 6479], + mlym: [3430, 3439], + mong: [6160, 6169], + mymr: [4160, 4169], + orya: [2918, 2927], + tamldec: [3046, 3055], + telu: [3174, 3183], + thai: [3664, 3673], + tibt: [3872, 3881] + }; + var hanidecChars = numberingSystems.hanidec.replace(/[\[|\]]/g, "").split(""); + function parseDigits(str) { + let value = parseInt(str, 10); + if (isNaN(value)) { + value = ""; + for (let i = 0; i < str.length; i++) { + const code = str.charCodeAt(i); + if (str[i].search(numberingSystems.hanidec) !== -1) { + value += hanidecChars.indexOf(str[i]); + } else { + for (const key in numberingSystemsUTF16) { + const [min, max] = numberingSystemsUTF16[key]; + if (code >= min && code <= max) { + value += code - min; + } + } + } + } + return parseInt(value, 10); + } else { + return value; + } + } + function digitRegex({ numberingSystem }, append = "") { + return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append}`); + } + var MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; + function intUnit(regex, post = (i) => i) { + return { regex, deser: ([s2]) => post(parseDigits(s2)) }; + } + var NBSP = String.fromCharCode(160); + var spaceOrNBSP = `[ ${NBSP}]`; + var spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, "g"); + function fixListRegex(s2) { + return s2.replace(/\./g, "\\.?").replace(spaceOrNBSPRegExp, spaceOrNBSP); + } + function stripInsensitivities(s2) { + return s2.replace(/\./g, "").replace(spaceOrNBSPRegExp, " ").toLowerCase(); + } + function oneOf(strings, startIndex) { + if (strings === null) { + return null; + } else { + return { + regex: RegExp(strings.map(fixListRegex).join("|")), + deser: ([s2]) => strings.findIndex((i) => stripInsensitivities(s2) === stripInsensitivities(i)) + startIndex + }; + } + } + function offset(regex, groups) { + return { regex, deser: ([, h, m]) => signedOffset(h, m), groups }; + } + function simple(regex) { + return { regex, deser: ([s2]) => s2 }; + } + function escapeToken(value) { + return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + } + function unitForToken(token, loc) { + const one = digitRegex(loc), two = digitRegex(loc, "{2}"), three = digitRegex(loc, "{3}"), four = digitRegex(loc, "{4}"), six = digitRegex(loc, "{6}"), oneOrTwo = digitRegex(loc, "{1,2}"), oneToThree = digitRegex(loc, "{1,3}"), oneToSix = digitRegex(loc, "{1,6}"), oneToNine = digitRegex(loc, "{1,9}"), twoToFour = digitRegex(loc, "{2,4}"), fourToSix = digitRegex(loc, "{4,6}"), literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s2]) => s2, literal: true }), unitate = (t) => { + if (token.literal) { + return literal(t); + } + switch (t.val) { + case "G": + return oneOf(loc.eras("short"), 0); + case "GG": + return oneOf(loc.eras("long"), 0); + case "y": + return intUnit(oneToSix); + case "yy": + return intUnit(twoToFour, untruncateYear); + case "yyyy": + return intUnit(four); + case "yyyyy": + return intUnit(fourToSix); + case "yyyyyy": + return intUnit(six); + case "M": + return intUnit(oneOrTwo); + case "MM": + return intUnit(two); + case "MMM": + return oneOf(loc.months("short", true), 1); + case "MMMM": + return oneOf(loc.months("long", true), 1); + case "L": + return intUnit(oneOrTwo); + case "LL": + return intUnit(two); + case "LLL": + return oneOf(loc.months("short", false), 1); + case "LLLL": + return oneOf(loc.months("long", false), 1); + case "d": + return intUnit(oneOrTwo); + case "dd": + return intUnit(two); + case "o": + return intUnit(oneToThree); + case "ooo": + return intUnit(three); + case "HH": + return intUnit(two); + case "H": + return intUnit(oneOrTwo); + case "hh": + return intUnit(two); + case "h": + return intUnit(oneOrTwo); + case "mm": + return intUnit(two); + case "m": + return intUnit(oneOrTwo); + case "q": + return intUnit(oneOrTwo); + case "qq": + return intUnit(two); + case "s": + return intUnit(oneOrTwo); + case "ss": + return intUnit(two); + case "S": + return intUnit(oneToThree); + case "SSS": + return intUnit(three); + case "u": + return simple(oneToNine); + case "uu": + return simple(oneOrTwo); + case "uuu": + return intUnit(one); + case "a": + return oneOf(loc.meridiems(), 0); + case "kkkk": + return intUnit(four); + case "kk": + return intUnit(twoToFour, untruncateYear); + case "W": + return intUnit(oneOrTwo); + case "WW": + return intUnit(two); + case "E": + case "c": + return intUnit(one); + case "EEE": + return oneOf(loc.weekdays("short", false), 1); + case "EEEE": + return oneOf(loc.weekdays("long", false), 1); + case "ccc": + return oneOf(loc.weekdays("short", true), 1); + case "cccc": + return oneOf(loc.weekdays("long", true), 1); + case "Z": + case "ZZ": + return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2); + case "ZZZ": + return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2); + case "z": + return simple(/[a-z_+-/]{1,256}?/i); + case " ": + return simple(/[^\S\n\r]/); + default: + return literal(t); + } + }; + const unit = unitate(token) || { + invalidReason: MISSING_FTP + }; + unit.token = token; + return unit; + } + var partTypeStyleToTokenVal = { + year: { + "2-digit": "yy", + numeric: "yyyyy" + }, + month: { + numeric: "M", + "2-digit": "MM", + short: "MMM", + long: "MMMM" + }, + day: { + numeric: "d", + "2-digit": "dd" + }, + weekday: { + short: "EEE", + long: "EEEE" + }, + dayperiod: "a", + dayPeriod: "a", + hour12: { + numeric: "h", + "2-digit": "hh" + }, + hour24: { + numeric: "H", + "2-digit": "HH" + }, + minute: { + numeric: "m", + "2-digit": "mm" + }, + second: { + numeric: "s", + "2-digit": "ss" + }, + timeZoneName: { + long: "ZZZZZ", + short: "ZZZ" + } + }; + function tokenForPart(part, formatOpts, resolvedOpts) { + const { type, value } = part; + if (type === "literal") { + const isSpace = /^\s+$/.test(value); + return { + literal: !isSpace, + val: isSpace ? " " : value + }; + } + const style = formatOpts[type]; + let actualType = type; + if (type === "hour") { + if (formatOpts.hour12 != null) { + actualType = formatOpts.hour12 ? "hour12" : "hour24"; + } else if (formatOpts.hourCycle != null) { + if (formatOpts.hourCycle === "h11" || formatOpts.hourCycle === "h12") { + actualType = "hour12"; + } else { + actualType = "hour24"; + } + } else { + actualType = resolvedOpts.hour12 ? "hour12" : "hour24"; + } + } + let val = partTypeStyleToTokenVal[actualType]; + if (typeof val === "object") { + val = val[style]; + } + if (val) { + return { + literal: false, + val + }; + } + return void 0; + } + function buildRegex(units) { + const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, ""); + return [`^${re}$`, units]; + } + function match(input, regex, handlers) { + const matches = input.match(regex); + if (matches) { + const all = {}; + let matchIndex = 1; + for (const i in handlers) { + if (hasOwnProperty(handlers, i)) { + const h = handlers[i], groups = h.groups ? h.groups + 1 : 1; + if (!h.literal && h.token) { + all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups)); + } + matchIndex += groups; + } + } + return [matches, all]; + } else { + return [matches, {}]; + } + } + function dateTimeFromMatches(matches) { + const toField = (token) => { + switch (token) { + case "S": + return "millisecond"; + case "s": + return "second"; + case "m": + return "minute"; + case "h": + case "H": + return "hour"; + case "d": + return "day"; + case "o": + return "ordinal"; + case "L": + case "M": + return "month"; + case "y": + return "year"; + case "E": + case "c": + return "weekday"; + case "W": + return "weekNumber"; + case "k": + return "weekYear"; + case "q": + return "quarter"; + default: + return null; + } + }; + let zone = null; + let specificOffset; + if (!isUndefined(matches.z)) { + zone = IANAZone.create(matches.z); + } + if (!isUndefined(matches.Z)) { + if (!zone) { + zone = new FixedOffsetZone(matches.Z); + } + specificOffset = matches.Z; + } + if (!isUndefined(matches.q)) { + matches.M = (matches.q - 1) * 3 + 1; + } + if (!isUndefined(matches.h)) { + if (matches.h < 12 && matches.a === 1) { + matches.h += 12; + } else if (matches.h === 12 && matches.a === 0) { + matches.h = 0; + } + } + if (matches.G === 0 && matches.y) { + matches.y = -matches.y; + } + if (!isUndefined(matches.u)) { + matches.S = parseMillis(matches.u); + } + const vals = Object.keys(matches).reduce((r, k) => { + const f = toField(k); + if (f) { + r[f] = matches[k]; + } + return r; + }, {}); + return [vals, zone, specificOffset]; + } + var dummyDateTimeCache = null; + function getDummyDateTime() { + if (!dummyDateTimeCache) { + dummyDateTimeCache = DateTime.fromMillis(1555555555555); + } + return dummyDateTimeCache; + } + function maybeExpandMacroToken(token, locale) { + if (token.literal) { + return token; + } + const formatOpts = Formatter.macroTokenToFormatOpts(token.val); + const tokens = formatOptsToTokens(formatOpts, locale); + if (tokens == null || tokens.includes(void 0)) { + return token; + } + return tokens; + } + function expandMacroTokens(tokens, locale) { + return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale))); + } + function explainFromTokens(locale, input, format) { + const tokens = expandMacroTokens(Formatter.parseFormat(format), locale), units = tokens.map((t) => unitForToken(t, locale)), disqualifyingUnit = units.find((t) => t.invalidReason); + if (disqualifyingUnit) { + return { input, tokens, invalidReason: disqualifyingUnit.invalidReason }; + } else { + const [regexString, handlers] = buildRegex(units), regex = RegExp(regexString, "i"), [rawMatches, matches] = match(input, regex, handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0]; + if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) { + throw new ConflictingSpecificationError("Can't include meridiem when specifying 24-hour format"); + } + return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset }; + } + } + function parseFromTokens(locale, input, format) { + const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format); + return [result, zone, specificOffset, invalidReason]; + } + function formatOptsToTokens(formatOpts, locale) { + if (!formatOpts) { + return null; + } + const formatter = Formatter.create(locale, formatOpts); + const df = formatter.dtFormatter(getDummyDateTime()); + const parts = df.formatToParts(); + const resolvedOpts = df.resolvedOptions(); + return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts)); + } + var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + var leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; + function unitOutOfRange(unit, value) { + return new Invalid("unit out of range", `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`); + } + function dayOfWeek(year, month, day) { + const d = new Date(Date.UTC(year, month - 1, day)); + if (year < 100 && year >= 0) { + d.setUTCFullYear(d.getUTCFullYear() - 1900); + } + const js = d.getUTCDay(); + return js === 0 ? 7 : js; + } + function computeOrdinal(year, month, day) { + return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1]; + } + function uncomputeOrdinal(year, ordinal) { + const table = isLeapYear(year) ? leapLadder : nonLeapLadder, month0 = table.findIndex((i) => i < ordinal), day = ordinal - table[month0]; + return { month: month0 + 1, day }; + } + function gregorianToWeek(gregObj) { + const { year, month, day } = gregObj, ordinal = computeOrdinal(year, month, day), weekday = dayOfWeek(year, month, day); + let weekNumber = Math.floor((ordinal - weekday + 10) / 7), weekYear; + if (weekNumber < 1) { + weekYear = year - 1; + weekNumber = weeksInWeekYear(weekYear); + } else if (weekNumber > weeksInWeekYear(year)) { + weekYear = year + 1; + weekNumber = 1; + } else { + weekYear = year; + } + return __spreadValues({ weekYear, weekNumber, weekday }, timeObject(gregObj)); + } + function weekToGregorian(weekData) { + const { weekYear, weekNumber, weekday } = weekData, weekdayOfJan4 = dayOfWeek(weekYear, 1, 4), yearInDays = daysInYear(weekYear); + let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3, year; + if (ordinal < 1) { + year = weekYear - 1; + ordinal += daysInYear(year); + } else if (ordinal > yearInDays) { + year = weekYear + 1; + ordinal -= daysInYear(weekYear); + } else { + year = weekYear; + } + const { month, day } = uncomputeOrdinal(year, ordinal); + return __spreadValues({ year, month, day }, timeObject(weekData)); + } + function gregorianToOrdinal(gregData) { + const { year, month, day } = gregData; + const ordinal = computeOrdinal(year, month, day); + return __spreadValues({ year, ordinal }, timeObject(gregData)); + } + function ordinalToGregorian(ordinalData) { + const { year, ordinal } = ordinalData; + const { month, day } = uncomputeOrdinal(year, ordinal); + return __spreadValues({ year, month, day }, timeObject(ordinalData)); + } + function hasInvalidWeekData(obj) { + const validYear = isInteger(obj.weekYear), validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)), validWeekday = integerBetween(obj.weekday, 1, 7); + if (!validYear) { + return unitOutOfRange("weekYear", obj.weekYear); + } else if (!validWeek) { + return unitOutOfRange("week", obj.week); + } else if (!validWeekday) { + return unitOutOfRange("weekday", obj.weekday); + } else + return false; + } + function hasInvalidOrdinalData(obj) { + const validYear = isInteger(obj.year), validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year)); + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validOrdinal) { + return unitOutOfRange("ordinal", obj.ordinal); + } else + return false; + } + function hasInvalidGregorianData(obj) { + const validYear = isInteger(obj.year), validMonth = integerBetween(obj.month, 1, 12), validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month)); + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validMonth) { + return unitOutOfRange("month", obj.month); + } else if (!validDay) { + return unitOutOfRange("day", obj.day); + } else + return false; + } + function hasInvalidTimeData(obj) { + const { hour, minute, second, millisecond } = obj; + const validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, validMinute = integerBetween(minute, 0, 59), validSecond = integerBetween(second, 0, 59), validMillisecond = integerBetween(millisecond, 0, 999); + if (!validHour) { + return unitOutOfRange("hour", hour); + } else if (!validMinute) { + return unitOutOfRange("minute", minute); + } else if (!validSecond) { + return unitOutOfRange("second", second); + } else if (!validMillisecond) { + return unitOutOfRange("millisecond", millisecond); + } else + return false; + } + var INVALID = "Invalid DateTime"; + var MAX_DATE = 864e13; + function unsupportedZone(zone) { + return new Invalid("unsupported zone", `the zone "${zone.name}" is not supported`); + } + function possiblyCachedWeekData(dt) { + if (dt.weekData === null) { + dt.weekData = gregorianToWeek(dt.c); + } + return dt.weekData; + } + function clone(inst, alts) { + const current = { + ts: inst.ts, + zone: inst.zone, + c: inst.c, + o: inst.o, + loc: inst.loc, + invalid: inst.invalid + }; + return new DateTime(__spreadProps(__spreadValues(__spreadValues({}, current), alts), { old: current })); + } + function fixOffset(localTS, o, tz) { + let utcGuess = localTS - o * 60 * 1e3; + const o2 = tz.offset(utcGuess); + if (o === o2) { + return [utcGuess, o]; + } + utcGuess -= (o2 - o) * 60 * 1e3; + const o3 = tz.offset(utcGuess); + if (o2 === o3) { + return [utcGuess, o2]; + } + return [localTS - Math.min(o2, o3) * 60 * 1e3, Math.max(o2, o3)]; + } + function tsToObj(ts, offset2) { + ts += offset2 * 60 * 1e3; + const d = new Date(ts); + return { + year: d.getUTCFullYear(), + month: d.getUTCMonth() + 1, + day: d.getUTCDate(), + hour: d.getUTCHours(), + minute: d.getUTCMinutes(), + second: d.getUTCSeconds(), + millisecond: d.getUTCMilliseconds() + }; + } + function objToTS(obj, offset2, zone) { + return fixOffset(objToLocalTS(obj), offset2, zone); + } + function adjustTime(inst, dur) { + const oPre = inst.o, year = inst.c.year + Math.trunc(dur.years), month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3, c = __spreadProps(__spreadValues({}, inst.c), { + year, + month, + day: Math.min(inst.c.day, daysInMonth(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7 + }), millisToAdd = Duration.fromObject({ + years: dur.years - Math.trunc(dur.years), + quarters: dur.quarters - Math.trunc(dur.quarters), + months: dur.months - Math.trunc(dur.months), + weeks: dur.weeks - Math.trunc(dur.weeks), + days: dur.days - Math.trunc(dur.days), + hours: dur.hours, + minutes: dur.minutes, + seconds: dur.seconds, + milliseconds: dur.milliseconds + }).as("milliseconds"), localTS = objToLocalTS(c); + let [ts, o] = fixOffset(localTS, oPre, inst.zone); + if (millisToAdd !== 0) { + ts += millisToAdd; + o = inst.zone.offset(ts); + } + return { ts, o }; + } + function parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) { + const { setZone, zone } = opts; + if (parsed && Object.keys(parsed).length !== 0 || parsedZone) { + const interpretationZone = parsedZone || zone, inst = DateTime.fromObject(parsed, __spreadProps(__spreadValues({}, opts), { + zone: interpretationZone, + specificOffset + })); + return setZone ? inst : inst.setZone(zone); + } else { + return DateTime.invalid(new Invalid("unparsable", `the input "${text}" can't be parsed as ${format}`)); + } + } + function toTechFormat(dt, format, allowZ = true) { + return dt.isValid ? Formatter.create(Locale.create("en-US"), { + allowZ, + forceSimple: true + }).formatDateTimeFromString(dt, format) : null; + } + function toISODate(o, extended) { + const longFormat = o.c.year > 9999 || o.c.year < 0; + let c = ""; + if (longFormat && o.c.year >= 0) + c += "+"; + c += padStart(o.c.year, longFormat ? 6 : 4); + if (extended) { + c += "-"; + c += padStart(o.c.month); + c += "-"; + c += padStart(o.c.day); + } else { + c += padStart(o.c.month); + c += padStart(o.c.day); + } + return c; + } + function toISOTime(o, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) { + let c = padStart(o.c.hour); + if (extended) { + c += ":"; + c += padStart(o.c.minute); + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { + c += ":"; + } + } else { + c += padStart(o.c.minute); + } + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { + c += padStart(o.c.second); + if (o.c.millisecond !== 0 || !suppressMilliseconds) { + c += "."; + c += padStart(o.c.millisecond, 3); + } + } + if (includeOffset) { + if (o.isOffsetFixed && o.offset === 0 && !extendedZone) { + c += "Z"; + } else if (o.o < 0) { + c += "-"; + c += padStart(Math.trunc(-o.o / 60)); + c += ":"; + c += padStart(Math.trunc(-o.o % 60)); + } else { + c += "+"; + c += padStart(Math.trunc(o.o / 60)); + c += ":"; + c += padStart(Math.trunc(o.o % 60)); + } + } + if (extendedZone) { + c += "[" + o.zone.ianaName + "]"; + } + return c; + } + var defaultUnitValues = { + month: 1, + day: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var defaultWeekUnitValues = { + weekNumber: 1, + weekday: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var defaultOrdinalUnitValues = { + ordinal: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var orderedUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"]; + var orderedWeekUnits = [ + "weekYear", + "weekNumber", + "weekday", + "hour", + "minute", + "second", + "millisecond" + ]; + var orderedOrdinalUnits = ["year", "ordinal", "hour", "minute", "second", "millisecond"]; + function normalizeUnit(unit) { + const normalized = { + year: "year", + years: "year", + month: "month", + months: "month", + day: "day", + days: "day", + hour: "hour", + hours: "hour", + minute: "minute", + minutes: "minute", + quarter: "quarter", + quarters: "quarter", + second: "second", + seconds: "second", + millisecond: "millisecond", + milliseconds: "millisecond", + weekday: "weekday", + weekdays: "weekday", + weeknumber: "weekNumber", + weeksnumber: "weekNumber", + weeknumbers: "weekNumber", + weekyear: "weekYear", + weekyears: "weekYear", + ordinal: "ordinal" + }[unit.toLowerCase()]; + if (!normalized) + throw new InvalidUnitError(unit); + return normalized; + } + function quickDT(obj, opts) { + const zone = normalizeZone(opts.zone, Settings.defaultZone), loc = Locale.fromObject(opts), tsNow = Settings.now(); + let ts, o; + if (!isUndefined(obj.year)) { + for (const u of orderedUnits) { + if (isUndefined(obj[u])) { + obj[u] = defaultUnitValues[u]; + } + } + const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj); + if (invalid) { + return DateTime.invalid(invalid); + } + const offsetProvis = zone.offset(tsNow); + [ts, o] = objToTS(obj, offsetProvis, zone); + } else { + ts = tsNow; + } + return new DateTime({ ts, zone, loc, o }); + } + function diffRelative(start, end, opts) { + const round = isUndefined(opts.round) ? true : opts.round, format = (c, unit) => { + c = roundTo(c, round || opts.calendary ? 0 : 2, true); + const formatter = end.loc.clone(opts).relFormatter(opts); + return formatter.format(c, unit); + }, differ = (unit) => { + if (opts.calendary) { + if (!end.hasSame(start, unit)) { + return end.startOf(unit).diff(start.startOf(unit), unit).get(unit); + } else + return 0; + } else { + return end.diff(start, unit).get(unit); + } + }; + if (opts.unit) { + return format(differ(opts.unit), opts.unit); + } + for (const unit of opts.units) { + const count = differ(unit); + if (Math.abs(count) >= 1) { + return format(count, unit); + } + } + return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]); + } + function lastOpts(argList) { + let opts = {}, args; + if (argList.length > 0 && typeof argList[argList.length - 1] === "object") { + opts = argList[argList.length - 1]; + args = Array.from(argList).slice(0, argList.length - 1); + } else { + args = Array.from(argList); + } + return [opts, args]; + } + var DateTime = class { + constructor(config) { + const zone = config.zone || Settings.defaultZone; + let invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid("invalid input") : null) || (!zone.isValid ? unsupportedZone(zone) : null); + this.ts = isUndefined(config.ts) ? Settings.now() : config.ts; + let c = null, o = null; + if (!invalid) { + const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone); + if (unchanged) { + [c, o] = [config.old.c, config.old.o]; + } else { + const ot = zone.offset(this.ts); + c = tsToObj(this.ts, ot); + invalid = Number.isNaN(c.year) ? new Invalid("invalid input") : null; + c = invalid ? null : c; + o = invalid ? null : ot; + } + } + this._zone = zone; + this.loc = config.loc || Locale.create(); + this.invalid = invalid; + this.weekData = null; + this.c = c; + this.o = o; + this.isLuxonDateTime = true; + } + static now() { + return new DateTime({}); + } + static local() { + const [opts, args] = lastOpts(arguments), [year, month, day, hour, minute, second, millisecond] = args; + return quickDT({ year, month, day, hour, minute, second, millisecond }, opts); + } + static utc() { + const [opts, args] = lastOpts(arguments), [year, month, day, hour, minute, second, millisecond] = args; + opts.zone = FixedOffsetZone.utcInstance; + return quickDT({ year, month, day, hour, minute, second, millisecond }, opts); + } + static fromJSDate(date, options = {}) { + const ts = isDate(date) ? date.valueOf() : NaN; + if (Number.isNaN(ts)) { + return DateTime.invalid("invalid input"); + } + const zoneToUse = normalizeZone(options.zone, Settings.defaultZone); + if (!zoneToUse.isValid) { + return DateTime.invalid(unsupportedZone(zoneToUse)); + } + return new DateTime({ + ts, + zone: zoneToUse, + loc: Locale.fromObject(options) + }); + } + static fromMillis(milliseconds, options = {}) { + if (!isNumber(milliseconds)) { + throw new InvalidArgumentError(`fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`); + } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) { + return DateTime.invalid("Timestamp out of range"); + } else { + return new DateTime({ + ts: milliseconds, + zone: normalizeZone(options.zone, Settings.defaultZone), + loc: Locale.fromObject(options) + }); + } + } + static fromSeconds(seconds, options = {}) { + if (!isNumber(seconds)) { + throw new InvalidArgumentError("fromSeconds requires a numerical input"); + } else { + return new DateTime({ + ts: seconds * 1e3, + zone: normalizeZone(options.zone, Settings.defaultZone), + loc: Locale.fromObject(options) + }); + } + } + static fromObject(obj, opts = {}) { + obj = obj || {}; + const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone); + if (!zoneToUse.isValid) { + return DateTime.invalid(unsupportedZone(zoneToUse)); + } + const tsNow = Settings.now(), offsetProvis = !isUndefined(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow), normalized = normalizeObject(obj, normalizeUnit), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber, loc = Locale.fromObject(opts); + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError("Can't mix weekYear/weekNumber units with year/month/day or ordinals"); + } + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day"); + } + const useWeekData = definiteWeekDef || normalized.weekday && !containsGregor; + let units, defaultValues, objNow = tsToObj(tsNow, offsetProvis); + if (useWeekData) { + units = orderedWeekUnits; + defaultValues = defaultWeekUnitValues; + objNow = gregorianToWeek(objNow); + } else if (containsOrdinal) { + units = orderedOrdinalUnits; + defaultValues = defaultOrdinalUnitValues; + objNow = gregorianToOrdinal(objNow); + } else { + units = orderedUnits; + defaultValues = defaultUnitValues; + } + let foundFirst = false; + for (const u of units) { + const v = normalized[u]; + if (!isUndefined(v)) { + foundFirst = true; + } else if (foundFirst) { + normalized[u] = defaultValues[u]; + } else { + normalized[u] = objNow[u]; + } + } + const higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized), invalid = higherOrderInvalid || hasInvalidTimeData(normalized); + if (invalid) { + return DateTime.invalid(invalid); + } + const gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized, [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse), inst = new DateTime({ + ts: tsFinal, + zone: zoneToUse, + o: offsetFinal, + loc + }); + if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) { + return DateTime.invalid("mismatched weekday", `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`); + } + return inst; + } + static fromISO(text, opts = {}) { + const [vals, parsedZone] = parseISODate(text); + return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text); + } + static fromRFC2822(text, opts = {}) { + const [vals, parsedZone] = parseRFC2822Date(text); + return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text); + } + static fromHTTP(text, opts = {}) { + const [vals, parsedZone] = parseHTTPDate(text); + return parseDataToDateTime(vals, parsedZone, opts, "HTTP", opts); + } + static fromFormat(text, fmt, opts = {}) { + if (isUndefined(text) || isUndefined(fmt)) { + throw new InvalidArgumentError("fromFormat requires an input string and a format"); + } + const { locale = null, numberingSystem = null } = opts, localeToUse = Locale.fromOpts({ + locale, + numberingSystem, + defaultToEN: true + }), [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt); + if (invalid) { + return DateTime.invalid(invalid); + } else { + return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset); + } + } + static fromString(text, fmt, opts = {}) { + return DateTime.fromFormat(text, fmt, opts); + } + static fromSQL(text, opts = {}) { + const [vals, parsedZone] = parseSQL(text); + return parseDataToDateTime(vals, parsedZone, opts, "SQL", text); + } + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the DateTime is invalid"); + } + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + if (Settings.throwOnInvalid) { + throw new InvalidDateTimeError(invalid); + } else { + return new DateTime({ invalid }); + } + } + static isDateTime(o) { + return o && o.isLuxonDateTime || false; + } + static parseFormatForOpts(formatOpts, localeOpts = {}) { + const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts)); + return !tokenList ? null : tokenList.map((t) => t ? t.val : null).join(""); + } + static expandFormat(fmt, localeOpts = {}) { + const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts)); + return expanded.map((t) => t.val).join(""); + } + get(unit) { + return this[unit]; + } + get isValid() { + return this.invalid === null; + } + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + get locale() { + return this.isValid ? this.loc.locale : null; + } + get numberingSystem() { + return this.isValid ? this.loc.numberingSystem : null; + } + get outputCalendar() { + return this.isValid ? this.loc.outputCalendar : null; + } + get zone() { + return this._zone; + } + get zoneName() { + return this.isValid ? this.zone.name : null; + } + get year() { + return this.isValid ? this.c.year : NaN; + } + get quarter() { + return this.isValid ? Math.ceil(this.c.month / 3) : NaN; + } + get month() { + return this.isValid ? this.c.month : NaN; + } + get day() { + return this.isValid ? this.c.day : NaN; + } + get hour() { + return this.isValid ? this.c.hour : NaN; + } + get minute() { + return this.isValid ? this.c.minute : NaN; + } + get second() { + return this.isValid ? this.c.second : NaN; + } + get millisecond() { + return this.isValid ? this.c.millisecond : NaN; + } + get weekYear() { + return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN; + } + get weekNumber() { + return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN; + } + get weekday() { + return this.isValid ? possiblyCachedWeekData(this).weekday : NaN; + } + get ordinal() { + return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN; + } + get monthShort() { + return this.isValid ? Info.months("short", { locObj: this.loc })[this.month - 1] : null; + } + get monthLong() { + return this.isValid ? Info.months("long", { locObj: this.loc })[this.month - 1] : null; + } + get weekdayShort() { + return this.isValid ? Info.weekdays("short", { locObj: this.loc })[this.weekday - 1] : null; + } + get weekdayLong() { + return this.isValid ? Info.weekdays("long", { locObj: this.loc })[this.weekday - 1] : null; + } + get offset() { + return this.isValid ? +this.o : NaN; + } + get offsetNameShort() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "short", + locale: this.locale + }); + } else { + return null; + } + } + get offsetNameLong() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "long", + locale: this.locale + }); + } else { + return null; + } + } + get isOffsetFixed() { + return this.isValid ? this.zone.isUniversal : null; + } + get isInDST() { + if (this.isOffsetFixed) { + return false; + } else { + return this.offset > this.set({ month: 1, day: 1 }).offset || this.offset > this.set({ month: 5 }).offset; + } + } + getPossibleOffsets() { + if (!this.isValid || this.isOffsetFixed) { + return [this]; + } + const dayMs = 864e5; + const minuteMs = 6e4; + const localTS = objToLocalTS(this.c); + const oEarlier = this.zone.offset(localTS - dayMs); + const oLater = this.zone.offset(localTS + dayMs); + const o1 = this.zone.offset(localTS - oEarlier * minuteMs); + const o2 = this.zone.offset(localTS - oLater * minuteMs); + if (o1 === o2) { + return [this]; + } + const ts1 = localTS - o1 * minuteMs; + const ts2 = localTS - o2 * minuteMs; + const c1 = tsToObj(ts1, o1); + const c2 = tsToObj(ts2, o2); + if (c1.hour === c2.hour && c1.minute === c2.minute && c1.second === c2.second && c1.millisecond === c2.millisecond) { + return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })]; + } + return [this]; + } + get isInLeapYear() { + return isLeapYear(this.year); + } + get daysInMonth() { + return daysInMonth(this.year, this.month); + } + get daysInYear() { + return this.isValid ? daysInYear(this.year) : NaN; + } + get weeksInWeekYear() { + return this.isValid ? weeksInWeekYear(this.weekYear) : NaN; + } + resolvedLocaleOptions(opts = {}) { + const { locale, numberingSystem, calendar } = Formatter.create(this.loc.clone(opts), opts).resolvedOptions(this); + return { locale, numberingSystem, outputCalendar: calendar }; + } + toUTC(offset2 = 0, opts = {}) { + return this.setZone(FixedOffsetZone.instance(offset2), opts); + } + toLocal() { + return this.setZone(Settings.defaultZone); + } + setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) { + zone = normalizeZone(zone, Settings.defaultZone); + if (zone.equals(this.zone)) { + return this; + } else if (!zone.isValid) { + return DateTime.invalid(unsupportedZone(zone)); + } else { + let newTS = this.ts; + if (keepLocalTime || keepCalendarTime) { + const offsetGuess = zone.offset(this.ts); + const asObj = this.toObject(); + [newTS] = objToTS(asObj, offsetGuess, zone); + } + return clone(this, { ts: newTS, zone }); + } + } + reconfigure({ locale, numberingSystem, outputCalendar } = {}) { + const loc = this.loc.clone({ locale, numberingSystem, outputCalendar }); + return clone(this, { loc }); + } + setLocale(locale) { + return this.reconfigure({ locale }); + } + set(values) { + if (!this.isValid) + return this; + const normalized = normalizeObject(values, normalizeUnit), settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber; + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError("Can't mix weekYear/weekNumber units with year/month/day or ordinals"); + } + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day"); + } + let mixed; + if (settingWeekStuff) { + mixed = weekToGregorian(__spreadValues(__spreadValues({}, gregorianToWeek(this.c)), normalized)); + } else if (!isUndefined(normalized.ordinal)) { + mixed = ordinalToGregorian(__spreadValues(__spreadValues({}, gregorianToOrdinal(this.c)), normalized)); + } else { + mixed = __spreadValues(__spreadValues({}, this.toObject()), normalized); + if (isUndefined(normalized.day)) { + mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day); + } + } + const [ts, o] = objToTS(mixed, this.o, this.zone); + return clone(this, { ts, o }); + } + plus(duration) { + if (!this.isValid) + return this; + const dur = Duration.fromDurationLike(duration); + return clone(this, adjustTime(this, dur)); + } + minus(duration) { + if (!this.isValid) + return this; + const dur = Duration.fromDurationLike(duration).negate(); + return clone(this, adjustTime(this, dur)); + } + startOf(unit) { + if (!this.isValid) + return this; + const o = {}, normalizedUnit = Duration.normalizeUnit(unit); + switch (normalizedUnit) { + case "years": + o.month = 1; + case "quarters": + case "months": + o.day = 1; + case "weeks": + case "days": + o.hour = 0; + case "hours": + o.minute = 0; + case "minutes": + o.second = 0; + case "seconds": + o.millisecond = 0; + break; + } + if (normalizedUnit === "weeks") { + o.weekday = 1; + } + if (normalizedUnit === "quarters") { + const q = Math.ceil(this.month / 3); + o.month = (q - 1) * 3 + 1; + } + return this.set(o); + } + endOf(unit) { + return this.isValid ? this.plus({ [unit]: 1 }).startOf(unit).minus(1) : this; + } + toFormat(fmt, opts = {}) { + return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID; + } + toLocaleString(formatOpts = DATE_SHORT, opts = {}) { + return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID; + } + toLocaleParts(opts = {}) { + return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : []; + } + toISO({ + format = "extended", + suppressSeconds = false, + suppressMilliseconds = false, + includeOffset = true, + extendedZone = false + } = {}) { + if (!this.isValid) { + return null; + } + const ext = format === "extended"; + let c = toISODate(this, ext); + c += "T"; + c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); + return c; + } + toISODate({ format = "extended" } = {}) { + if (!this.isValid) { + return null; + } + return toISODate(this, format === "extended"); + } + toISOWeekDate() { + return toTechFormat(this, "kkkk-'W'WW-c"); + } + toISOTime({ + suppressMilliseconds = false, + suppressSeconds = false, + includeOffset = true, + includePrefix = false, + extendedZone = false, + format = "extended" + } = {}) { + if (!this.isValid) { + return null; + } + let c = includePrefix ? "T" : ""; + return c + toISOTime(this, format === "extended", suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); + } + toRFC2822() { + return toTechFormat(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false); + } + toHTTP() { + return toTechFormat(this.toUTC(), "EEE, dd LLL yyyy HH:mm:ss 'GMT'"); + } + toSQLDate() { + if (!this.isValid) { + return null; + } + return toISODate(this, true); + } + toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) { + let fmt = "HH:mm:ss.SSS"; + if (includeZone || includeOffset) { + if (includeOffsetSpace) { + fmt += " "; + } + if (includeZone) { + fmt += "z"; + } else if (includeOffset) { + fmt += "ZZ"; + } + } + return toTechFormat(this, fmt, true); + } + toSQL(opts = {}) { + if (!this.isValid) { + return null; + } + return `${this.toSQLDate()} ${this.toSQLTime(opts)}`; + } + toString() { + return this.isValid ? this.toISO() : INVALID; + } + valueOf() { + return this.toMillis(); + } + toMillis() { + return this.isValid ? this.ts : NaN; + } + toSeconds() { + return this.isValid ? this.ts / 1e3 : NaN; + } + toUnixInteger() { + return this.isValid ? Math.floor(this.ts / 1e3) : NaN; + } + toJSON() { + return this.toISO(); + } + toBSON() { + return this.toJSDate(); + } + toObject(opts = {}) { + if (!this.isValid) + return {}; + const base = __spreadValues({}, this.c); + if (opts.includeConfig) { + base.outputCalendar = this.outputCalendar; + base.numberingSystem = this.loc.numberingSystem; + base.locale = this.loc.locale; + } + return base; + } + toJSDate() { + return new Date(this.isValid ? this.ts : NaN); + } + diff(otherDateTime, unit = "milliseconds", opts = {}) { + if (!this.isValid || !otherDateTime.isValid) { + return Duration.invalid("created by diffing an invalid DateTime"); + } + const durOpts = __spreadValues({ locale: this.locale, numberingSystem: this.numberingSystem }, opts); + const units = maybeArray(unit).map(Duration.normalizeUnit), otherIsLater = otherDateTime.valueOf() > this.valueOf(), earlier = otherIsLater ? this : otherDateTime, later = otherIsLater ? otherDateTime : this, diffed = diff(earlier, later, units, durOpts); + return otherIsLater ? diffed.negate() : diffed; + } + diffNow(unit = "milliseconds", opts = {}) { + return this.diff(DateTime.now(), unit, opts); + } + until(otherDateTime) { + return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this; + } + hasSame(otherDateTime, unit) { + if (!this.isValid) + return false; + const inputMs = otherDateTime.valueOf(); + const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true }); + return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit); + } + equals(other) { + return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc); + } + toRelative(options = {}) { + if (!this.isValid) + return null; + const base = options.base || DateTime.fromObject({}, { zone: this.zone }), padding = options.padding ? this < base ? -options.padding : options.padding : 0; + let units = ["years", "months", "days", "hours", "minutes", "seconds"]; + let unit = options.unit; + if (Array.isArray(options.unit)) { + units = options.unit; + unit = void 0; + } + return diffRelative(base, this.plus(padding), __spreadProps(__spreadValues({}, options), { + numeric: "always", + units, + unit + })); + } + toRelativeCalendar(options = {}) { + if (!this.isValid) + return null; + return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, __spreadProps(__spreadValues({}, options), { + numeric: "auto", + units: ["years", "months", "days"], + calendary: true + })); + } + static min(...dateTimes) { + if (!dateTimes.every(DateTime.isDateTime)) { + throw new InvalidArgumentError("min requires all arguments be DateTimes"); + } + return bestBy(dateTimes, (i) => i.valueOf(), Math.min); + } + static max(...dateTimes) { + if (!dateTimes.every(DateTime.isDateTime)) { + throw new InvalidArgumentError("max requires all arguments be DateTimes"); + } + return bestBy(dateTimes, (i) => i.valueOf(), Math.max); + } + static fromFormatExplain(text, fmt, options = {}) { + const { locale = null, numberingSystem = null } = options, localeToUse = Locale.fromOpts({ + locale, + numberingSystem, + defaultToEN: true + }); + return explainFromTokens(localeToUse, text, fmt); + } + static fromStringExplain(text, fmt, options = {}) { + return DateTime.fromFormatExplain(text, fmt, options); + } + static get DATE_SHORT() { + return DATE_SHORT; + } + static get DATE_MED() { + return DATE_MED; + } + static get DATE_MED_WITH_WEEKDAY() { + return DATE_MED_WITH_WEEKDAY; + } + static get DATE_FULL() { + return DATE_FULL; + } + static get DATE_HUGE() { + return DATE_HUGE; + } + static get TIME_SIMPLE() { + return TIME_SIMPLE; + } + static get TIME_WITH_SECONDS() { + return TIME_WITH_SECONDS; + } + static get TIME_WITH_SHORT_OFFSET() { + return TIME_WITH_SHORT_OFFSET; + } + static get TIME_WITH_LONG_OFFSET() { + return TIME_WITH_LONG_OFFSET; + } + static get TIME_24_SIMPLE() { + return TIME_24_SIMPLE; + } + static get TIME_24_WITH_SECONDS() { + return TIME_24_WITH_SECONDS; + } + static get TIME_24_WITH_SHORT_OFFSET() { + return TIME_24_WITH_SHORT_OFFSET; + } + static get TIME_24_WITH_LONG_OFFSET() { + return TIME_24_WITH_LONG_OFFSET; + } + static get DATETIME_SHORT() { + return DATETIME_SHORT; + } + static get DATETIME_SHORT_WITH_SECONDS() { + return DATETIME_SHORT_WITH_SECONDS; + } + static get DATETIME_MED() { + return DATETIME_MED; + } + static get DATETIME_MED_WITH_SECONDS() { + return DATETIME_MED_WITH_SECONDS; + } + static get DATETIME_MED_WITH_WEEKDAY() { + return DATETIME_MED_WITH_WEEKDAY; + } + static get DATETIME_FULL() { + return DATETIME_FULL; + } + static get DATETIME_FULL_WITH_SECONDS() { + return DATETIME_FULL_WITH_SECONDS; + } + static get DATETIME_HUGE() { + return DATETIME_HUGE; + } + static get DATETIME_HUGE_WITH_SECONDS() { + return DATETIME_HUGE_WITH_SECONDS; + } + }; + function friendlyDateTime(dateTimeish) { + if (DateTime.isDateTime(dateTimeish)) { + return dateTimeish; + } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) { + return DateTime.fromJSDate(dateTimeish); + } else if (dateTimeish && typeof dateTimeish === "object") { + return DateTime.fromObject(dateTimeish); + } else { + throw new InvalidArgumentError(`Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`); + } + } + var DEFAULT_QUERY_SETTINGS = { + renderNullAs: "\\-", + taskCompletionTracking: false, + taskCompletionUseEmojiShorthand: false, + taskCompletionText: "completion", + taskCompletionDateFormat: "yyyy-MM-dd", + recursiveSubTaskCompletion: false, + warnOnEmptyResult: true, + refreshEnabled: true, + refreshInterval: 2500, + defaultDateFormat: "MMMM dd, yyyy", + defaultDateTimeFormat: "h:mm a - MMMM dd, yyyy", + maxRecursiveRenderDepth: 4, + tableIdColumnName: "File", + tableGroupColumnName: "Group", + showResultCount: true + }; + var DEFAULT_EXPORT_SETTINGS = { + allowHtml: true + }; + __spreadValues(__spreadValues(__spreadValues({}, DEFAULT_QUERY_SETTINGS), DEFAULT_EXPORT_SETTINGS), { + inlineQueryPrefix: "=", + inlineJsQueryPrefix: "$=", + inlineQueriesInCodeblocks: true, + enableInlineDataview: true, + enableDataviewJs: false, + enableInlineDataviewJs: false, + prettyRenderInlineFields: true, + prettyRenderInlineFieldsInLivePreview: true, + dataviewJsKeyword: "dataviewjs" + }); + var Success = class { + constructor(value) { + __publicField(this, "value"); + __publicField(this, "successful"); + this.value = value; + this.successful = true; + } + map(f) { + return new Success(f(this.value)); + } + flatMap(f) { + return f(this.value); + } + mapErr(f) { + return this; + } + bimap(succ, _fail) { + return this.map(succ); + } + orElse(_value) { + return this.value; + } + cast() { + return this; + } + orElseThrow(_message) { + return this.value; + } + }; + var Failure = class { + constructor(error) { + __publicField(this, "error"); + __publicField(this, "successful"); + this.error = error; + this.successful = false; + } + map(_f) { + return this; + } + flatMap(_f) { + return this; + } + mapErr(f) { + return new Failure(f(this.error)); + } + bimap(_succ, fail) { + return this.mapErr(fail); + } + orElse(value) { + return value; + } + cast() { + return this; + } + orElseThrow(message) { + if (message) + throw new Error(message(this.error)); + else + throw new Error("" + this.error); + } + }; + var Result; + (function(Result2) { + function success(value) { + return new Success(value); + } + Result2.success = success; + function failure(error) { + return new Failure(error); + } + Result2.failure = failure; + function flatMap2(first, second, f) { + if (first.successful) { + if (second.successful) + return f(first.value, second.value); + else + return failure(second.error); + } else { + return failure(first.error); + } + } + Result2.flatMap2 = flatMap2; + function map2(first, second, f) { + return flatMap2(first, second, (a, b) => success(f(a, b))); + } + Result2.map2 = map2; + })(Result || (Result = {})); + var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; + var parsimmon_umd_min = { exports: {} }; + parsimmon_umd_min.exports; + (function(module3, exports2) { + !function(n2, t) { + module3.exports = t(); + }(typeof self != "undefined" ? self : commonjsGlobal, function() { + return function(n2) { + var t = {}; + function r(e) { + if (t[e]) + return t[e].exports; + var u = t[e] = { i: e, l: false, exports: {} }; + return n2[e].call(u.exports, u, u.exports, r), u.l = true, u.exports; + } + return r.m = n2, r.c = t, r.d = function(n3, t2, e) { + r.o(n3, t2) || Object.defineProperty(n3, t2, { configurable: false, enumerable: true, get: e }); + }, r.r = function(n3) { + Object.defineProperty(n3, "__esModule", { value: true }); + }, r.n = function(n3) { + var t2 = n3 && n3.__esModule ? function() { + return n3.default; + } : function() { + return n3; + }; + return r.d(t2, "a", t2), t2; + }, r.o = function(n3, t2) { + return Object.prototype.hasOwnProperty.call(n3, t2); + }, r.p = "", r(r.s = 0); + }([function(n2, t, r) { + function e(n3) { + if (!(this instanceof e)) + return new e(n3); + this._ = n3; + } + var u = e.prototype; + function o(n3, t2) { + for (var r2 = 0; r2 < n3; r2++) + t2(r2); + } + function i(n3, t2, r2) { + return function(n4, t3) { + o(t3.length, function(r3) { + n4(t3[r3], r3, t3); + }); + }(function(r3, e2, u2) { + t2 = n3(t2, r3, e2, u2); + }, r2), t2; + } + function a(n3, t2) { + return i(function(t3, r2, e2, u2) { + return t3.concat([n3(r2, e2, u2)]); + }, [], t2); + } + function f(n3, t2) { + var r2 = { v: 0, buf: t2 }; + return o(n3, function() { + var n4; + r2 = { v: r2.v << 1 | (n4 = r2.buf, n4[0] >> 7), buf: function(n5) { + var t3 = i(function(n6, t4, r3, e2) { + return n6.concat(r3 === e2.length - 1 ? Buffer.from([t4, 0]).readUInt16BE(0) : e2.readUInt16BE(r3)); + }, [], n5); + return Buffer.from(a(function(n6) { + return (n6 << 1 & 65535) >> 8; + }, t3)); + }(r2.buf) }; + }), r2; + } + function c() { + return typeof Buffer != "undefined"; + } + function s2() { + if (!c()) + throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser."); + } + function l2(n3) { + s2(); + var t2 = i(function(n4, t3) { + return n4 + t3; + }, 0, n3); + if (t2 % 8 != 0) + throw new Error("The bits [" + n3.join(", ") + "] add up to " + t2 + " which is not an even number of bytes; the total should be divisible by 8"); + var r2, u2 = t2 / 8, o2 = (r2 = function(n4) { + return n4 > 48; + }, i(function(n4, t3) { + return n4 || (r2(t3) ? t3 : n4); + }, null, n3)); + if (o2) + throw new Error(o2 + " bit range requested exceeds 48 bit (6 byte) Number max."); + return new e(function(t3, r3) { + var e2 = u2 + r3; + return e2 > t3.length ? x(r3, u2.toString() + " bytes") : b(e2, i(function(n4, t4) { + var r4 = f(t4, n4.buf); + return { coll: n4.coll.concat(r4.v), buf: r4.buf }; + }, { coll: [], buf: t3.slice(r3, e2) }, n3).coll); + }); + } + function h(n3, t2) { + return new e(function(r2, e2) { + return s2(), e2 + t2 > r2.length ? x(e2, t2 + " bytes for " + n3) : b(e2 + t2, r2.slice(e2, e2 + t2)); + }); + } + function p(n3, t2) { + if (typeof (r2 = t2) != "number" || Math.floor(r2) !== r2 || t2 < 0 || t2 > 6) + throw new Error(n3 + " requires integer length in range [0, 6]."); + var r2; + } + function d(n3) { + return p("uintBE", n3), h("uintBE(" + n3 + ")", n3).map(function(t2) { + return t2.readUIntBE(0, n3); + }); + } + function v(n3) { + return p("uintLE", n3), h("uintLE(" + n3 + ")", n3).map(function(t2) { + return t2.readUIntLE(0, n3); + }); + } + function g(n3) { + return p("intBE", n3), h("intBE(" + n3 + ")", n3).map(function(t2) { + return t2.readIntBE(0, n3); + }); + } + function m(n3) { + return p("intLE", n3), h("intLE(" + n3 + ")", n3).map(function(t2) { + return t2.readIntLE(0, n3); + }); + } + function y(n3) { + return n3 instanceof e; + } + function E(n3) { + return {}.toString.call(n3) === "[object Array]"; + } + function w(n3) { + return c() && Buffer.isBuffer(n3); + } + function b(n3, t2) { + return { status: true, index: n3, value: t2, furthest: -1, expected: [] }; + } + function x(n3, t2) { + return E(t2) || (t2 = [t2]), { status: false, index: -1, value: null, furthest: n3, expected: t2 }; + } + function B(n3, t2) { + if (!t2) + return n3; + if (n3.furthest > t2.furthest) + return n3; + var r2 = n3.furthest === t2.furthest ? function(n4, t3) { + if (function() { + if (e._supportsSet !== void 0) + return e._supportsSet; + var n5 = typeof Set != "undefined"; + return e._supportsSet = n5, n5; + }() && Array.from) { + for (var r3 = new Set(n4), u2 = 0; u2 < t3.length; u2++) + r3.add(t3[u2]); + var o2 = Array.from(r3); + return o2.sort(), o2; + } + for (var i2 = {}, a2 = 0; a2 < n4.length; a2++) + i2[n4[a2]] = true; + for (var f2 = 0; f2 < t3.length; f2++) + i2[t3[f2]] = true; + var c2 = []; + for (var s3 in i2) + ({}).hasOwnProperty.call(i2, s3) && c2.push(s3); + return c2.sort(), c2; + }(n3.expected, t2.expected) : t2.expected; + return { status: n3.status, index: n3.index, value: n3.value, furthest: t2.furthest, expected: r2 }; + } + var j = {}; + function S(n3, t2) { + if (w(n3)) + return { offset: t2, line: -1, column: -1 }; + n3 in j || (j[n3] = {}); + for (var r2 = j[n3], e2 = 0, u2 = 0, o2 = 0, i2 = t2; i2 >= 0; ) { + if (i2 in r2) { + e2 = r2[i2].line, o2 === 0 && (o2 = r2[i2].lineStart); + break; + } + (n3.charAt(i2) === "\n" || n3.charAt(i2) === "\r" && n3.charAt(i2 + 1) !== "\n") && (u2++, o2 === 0 && (o2 = i2 + 1)), i2--; + } + var a2 = e2 + u2, f2 = t2 - o2; + return r2[t2] = { line: a2, lineStart: o2 }, { offset: t2, line: a2 + 1, column: f2 + 1 }; + } + function _(n3) { + if (!y(n3)) + throw new Error("not a parser: " + n3); + } + function L(n3, t2) { + return typeof n3 == "string" ? n3.charAt(t2) : n3[t2]; + } + function O(n3) { + if (typeof n3 != "number") + throw new Error("not a number: " + n3); + } + function k(n3) { + if (typeof n3 != "function") + throw new Error("not a function: " + n3); + } + function P(n3) { + if (typeof n3 != "string") + throw new Error("not a string: " + n3); + } + var q = 2, A = 3, I = 8, F = 5 * I, M = 4 * I, z = " "; + function R(n3, t2) { + return new Array(t2 + 1).join(n3); + } + function U(n3, t2, r2) { + var e2 = t2 - n3.length; + return e2 <= 0 ? n3 : R(r2, e2) + n3; + } + function W(n3, t2, r2, e2) { + return { from: n3 - t2 > 0 ? n3 - t2 : 0, to: n3 + r2 > e2 ? e2 : n3 + r2 }; + } + function D(n3, t2) { + var r2, e2, u2, o2, f2, c2 = t2.index, s3 = c2.offset, l3 = 1; + if (s3 === n3.length) + return "Got the end of the input"; + if (w(n3)) { + var h2 = s3 - s3 % I, p2 = s3 - h2, d2 = W(h2, F, M + I, n3.length), v2 = a(function(n4) { + return a(function(n5) { + return U(n5.toString(16), 2, "0"); + }, n4); + }, function(n4, t3) { + var r3 = n4.length, e3 = [], u3 = 0; + if (r3 <= t3) + return [n4.slice()]; + for (var o3 = 0; o3 < r3; o3++) + e3[u3] || e3.push([]), e3[u3].push(n4[o3]), (o3 + 1) % t3 == 0 && u3++; + return e3; + }(n3.slice(d2.from, d2.to).toJSON().data, I)); + o2 = function(n4) { + return n4.from === 0 && n4.to === 1 ? { from: n4.from, to: n4.to } : { from: n4.from / I, to: Math.floor(n4.to / I) }; + }(d2), e2 = h2 / I, r2 = 3 * p2, p2 >= 4 && (r2 += 1), l3 = 2, u2 = a(function(n4) { + return n4.length <= 4 ? n4.join(" ") : n4.slice(0, 4).join(" ") + " " + n4.slice(4).join(" "); + }, v2), (f2 = (8 * (o2.to > 0 ? o2.to - 1 : o2.to)).toString(16).length) < 2 && (f2 = 2); + } else { + var g2 = n3.split(/\r\n|[\n\r\u2028\u2029]/); + r2 = c2.column - 1, e2 = c2.line - 1, o2 = W(e2, q, A, g2.length), u2 = g2.slice(o2.from, o2.to), f2 = o2.to.toString().length; + } + var m2 = e2 - o2.from; + return w(n3) && (f2 = (8 * (o2.to > 0 ? o2.to - 1 : o2.to)).toString(16).length) < 2 && (f2 = 2), i(function(t3, e3, u3) { + var i2, a2 = u3 === m2, c3 = a2 ? "> " : z; + return i2 = w(n3) ? U((8 * (o2.from + u3)).toString(16), f2, "0") : U((o2.from + u3 + 1).toString(), f2, " "), [].concat(t3, [c3 + i2 + " | " + e3], a2 ? [z + R(" ", f2) + " | " + U("", r2, " ") + R("^", l3)] : []); + }, [], u2).join("\n"); + } + function N(n3, t2) { + return ["\n", "-- PARSING FAILED " + R("-", 50), "\n\n", D(n3, t2), "\n\n", (r2 = t2.expected, r2.length === 1 ? "Expected:\n\n" + r2[0] : "Expected one of the following: \n\n" + r2.join(", ")), "\n"].join(""); + var r2; + } + function G(n3) { + return n3.flags !== void 0 ? n3.flags : [n3.global ? "g" : "", n3.ignoreCase ? "i" : "", n3.multiline ? "m" : "", n3.unicode ? "u" : "", n3.sticky ? "y" : ""].join(""); + } + function C() { + for (var n3 = [].slice.call(arguments), t2 = n3.length, r2 = 0; r2 < t2; r2 += 1) + _(n3[r2]); + return e(function(r3, e2) { + for (var u2, o2 = new Array(t2), i2 = 0; i2 < t2; i2 += 1) { + if (!(u2 = B(n3[i2]._(r3, e2), u2)).status) + return u2; + o2[i2] = u2.value, e2 = u2.index; + } + return B(b(e2, o2), u2); + }); + } + function J() { + var n3 = [].slice.call(arguments); + if (n3.length === 0) + throw new Error("seqMap needs at least one argument"); + var t2 = n3.pop(); + return k(t2), C.apply(null, n3).map(function(n4) { + return t2.apply(null, n4); + }); + } + function T() { + var n3 = [].slice.call(arguments), t2 = n3.length; + if (t2 === 0) + return Y("zero alternates"); + for (var r2 = 0; r2 < t2; r2 += 1) + _(n3[r2]); + return e(function(t3, r3) { + for (var e2, u2 = 0; u2 < n3.length; u2 += 1) + if ((e2 = B(n3[u2]._(t3, r3), e2)).status) + return e2; + return e2; + }); + } + function V(n3, t2) { + return H(n3, t2).or(X([])); + } + function H(n3, t2) { + return _(n3), _(t2), J(n3, t2.then(n3).many(), function(n4, t3) { + return [n4].concat(t3); + }); + } + function K(n3) { + P(n3); + var t2 = "'" + n3 + "'"; + return e(function(r2, e2) { + var u2 = e2 + n3.length, o2 = r2.slice(e2, u2); + return o2 === n3 ? b(u2, o2) : x(e2, t2); + }); + } + function Q(n3, t2) { + !function(n4) { + if (!(n4 instanceof RegExp)) + throw new Error("not a regexp: " + n4); + for (var t3 = G(n4), r3 = 0; r3 < t3.length; r3++) { + var e2 = t3.charAt(r3); + if (e2 !== "i" && e2 !== "m" && e2 !== "u" && e2 !== "s") + throw new Error('unsupported regexp flag "' + e2 + '": ' + n4); + } + }(n3), arguments.length >= 2 ? O(t2) : t2 = 0; + var r2 = function(n4) { + return RegExp("^(?:" + n4.source + ")", G(n4)); + }(n3), u2 = "" + n3; + return e(function(n4, e2) { + var o2 = r2.exec(n4.slice(e2)); + if (o2) { + if (0 <= t2 && t2 <= o2.length) { + var i2 = o2[0], a2 = o2[t2]; + return b(e2 + i2.length, a2); + } + return x(e2, "valid match group (0 to " + o2.length + ") in " + u2); + } + return x(e2, u2); + }); + } + function X(n3) { + return e(function(t2, r2) { + return b(r2, n3); + }); + } + function Y(n3) { + return e(function(t2, r2) { + return x(r2, n3); + }); + } + function Z(n3) { + if (y(n3)) + return e(function(t2, r2) { + var e2 = n3._(t2, r2); + return e2.index = r2, e2.value = "", e2; + }); + if (typeof n3 == "string") + return Z(K(n3)); + if (n3 instanceof RegExp) + return Z(Q(n3)); + throw new Error("not a string, regexp, or parser: " + n3); + } + function $(n3) { + return _(n3), e(function(t2, r2) { + var e2 = n3._(t2, r2), u2 = t2.slice(r2, e2.index); + return e2.status ? x(r2, 'not "' + u2 + '"') : b(r2, null); + }); + } + function nn(n3) { + return k(n3), e(function(t2, r2) { + var e2 = L(t2, r2); + return r2 < t2.length && n3(e2) ? b(r2 + 1, e2) : x(r2, "a character/byte matching " + n3); + }); + } + function tn(n3, t2) { + arguments.length < 2 && (t2 = n3, n3 = void 0); + var r2 = e(function(n4, e2) { + return r2._ = t2()._, r2._(n4, e2); + }); + return n3 ? r2.desc(n3) : r2; + } + function rn() { + return Y("fantasy-land/empty"); + } + u.parse = function(n3) { + if (typeof n3 != "string" && !w(n3)) + throw new Error(".parse must be called with a string or Buffer as its argument"); + var t2, r2 = this.skip(an)._(n3, 0); + return t2 = r2.status ? { status: true, value: r2.value } : { status: false, index: S(n3, r2.furthest), expected: r2.expected }, delete j[n3], t2; + }, u.tryParse = function(n3) { + var t2 = this.parse(n3); + if (t2.status) + return t2.value; + var r2 = N(n3, t2), e2 = new Error(r2); + throw e2.type = "ParsimmonError", e2.result = t2, e2; + }, u.assert = function(n3, t2) { + return this.chain(function(r2) { + return n3(r2) ? X(r2) : Y(t2); + }); + }, u.or = function(n3) { + return T(this, n3); + }, u.trim = function(n3) { + return this.wrap(n3, n3); + }, u.wrap = function(n3, t2) { + return J(n3, this, t2, function(n4, t3) { + return t3; + }); + }, u.thru = function(n3) { + return n3(this); + }, u.then = function(n3) { + return _(n3), C(this, n3).map(function(n4) { + return n4[1]; + }); + }, u.many = function() { + var n3 = this; + return e(function(t2, r2) { + for (var e2 = [], u2 = void 0; ; ) { + if (!(u2 = B(n3._(t2, r2), u2)).status) + return B(b(r2, e2), u2); + if (r2 === u2.index) + throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause"); + r2 = u2.index, e2.push(u2.value); + } + }); + }, u.tieWith = function(n3) { + return P(n3), this.map(function(t2) { + if (function(n4) { + if (!E(n4)) + throw new Error("not an array: " + n4); + }(t2), t2.length) { + P(t2[0]); + for (var r2 = t2[0], e2 = 1; e2 < t2.length; e2++) + P(t2[e2]), r2 += n3 + t2[e2]; + return r2; + } + return ""; + }); + }, u.tie = function() { + return this.tieWith(""); + }, u.times = function(n3, t2) { + var r2 = this; + return arguments.length < 2 && (t2 = n3), O(n3), O(t2), e(function(e2, u2) { + for (var o2 = [], i2 = void 0, a2 = void 0, f2 = 0; f2 < n3; f2 += 1) { + if (a2 = B(i2 = r2._(e2, u2), a2), !i2.status) + return a2; + u2 = i2.index, o2.push(i2.value); + } + for (; f2 < t2 && (a2 = B(i2 = r2._(e2, u2), a2), i2.status); f2 += 1) + u2 = i2.index, o2.push(i2.value); + return B(b(u2, o2), a2); + }); + }, u.result = function(n3) { + return this.map(function() { + return n3; + }); + }, u.atMost = function(n3) { + return this.times(0, n3); + }, u.atLeast = function(n3) { + return J(this.times(n3), this.many(), function(n4, t2) { + return n4.concat(t2); + }); + }, u.map = function(n3) { + k(n3); + var t2 = this; + return e(function(r2, e2) { + var u2 = t2._(r2, e2); + return u2.status ? B(b(u2.index, n3(u2.value)), u2) : u2; + }); + }, u.contramap = function(n3) { + k(n3); + var t2 = this; + return e(function(r2, e2) { + var u2 = t2.parse(n3(r2.slice(e2))); + return u2.status ? b(e2 + r2.length, u2.value) : u2; + }); + }, u.promap = function(n3, t2) { + return k(n3), k(t2), this.contramap(n3).map(t2); + }, u.skip = function(n3) { + return C(this, n3).map(function(n4) { + return n4[0]; + }); + }, u.mark = function() { + return J(en, this, en, function(n3, t2, r2) { + return { start: n3, value: t2, end: r2 }; + }); + }, u.node = function(n3) { + return J(en, this, en, function(t2, r2, e2) { + return { name: n3, value: r2, start: t2, end: e2 }; + }); + }, u.sepBy = function(n3) { + return V(this, n3); + }, u.sepBy1 = function(n3) { + return H(this, n3); + }, u.lookahead = function(n3) { + return this.skip(Z(n3)); + }, u.notFollowedBy = function(n3) { + return this.skip($(n3)); + }, u.desc = function(n3) { + E(n3) || (n3 = [n3]); + var t2 = this; + return e(function(r2, e2) { + var u2 = t2._(r2, e2); + return u2.status || (u2.expected = n3), u2; + }); + }, u.fallback = function(n3) { + return this.or(X(n3)); + }, u.ap = function(n3) { + return J(n3, this, function(n4, t2) { + return n4(t2); + }); + }, u.chain = function(n3) { + var t2 = this; + return e(function(r2, e2) { + var u2 = t2._(r2, e2); + return u2.status ? B(n3(u2.value)._(r2, u2.index), u2) : u2; + }); + }, u.concat = u.or, u.empty = rn, u.of = X, u["fantasy-land/ap"] = u.ap, u["fantasy-land/chain"] = u.chain, u["fantasy-land/concat"] = u.concat, u["fantasy-land/empty"] = u.empty, u["fantasy-land/of"] = u.of, u["fantasy-land/map"] = u.map; + var en = e(function(n3, t2) { + return b(t2, S(n3, t2)); + }), un = e(function(n3, t2) { + return t2 >= n3.length ? x(t2, "any character/byte") : b(t2 + 1, L(n3, t2)); + }), on = e(function(n3, t2) { + return b(n3.length, n3.slice(t2)); + }), an = e(function(n3, t2) { + return t2 < n3.length ? x(t2, "EOF") : b(t2, null); + }), fn = Q(/[0-9]/).desc("a digit"), cn = Q(/[0-9]*/).desc("optional digits"), sn = Q(/[a-z]/i).desc("a letter"), ln = Q(/[a-z]*/i).desc("optional letters"), hn = Q(/\s*/).desc("optional whitespace"), pn = Q(/\s+/).desc("whitespace"), dn = K("\r"), vn = K("\n"), gn = K("\r\n"), mn = T(gn, vn, dn).desc("newline"), yn = T(mn, an); + e.all = on, e.alt = T, e.any = un, e.cr = dn, e.createLanguage = function(n3) { + var t2 = {}; + for (var r2 in n3) + ({}).hasOwnProperty.call(n3, r2) && function(r3) { + t2[r3] = tn(function() { + return n3[r3](t2); + }); + }(r2); + return t2; + }, e.crlf = gn, e.custom = function(n3) { + return e(n3(b, x)); + }, e.digit = fn, e.digits = cn, e.empty = rn, e.end = yn, e.eof = an, e.fail = Y, e.formatError = N, e.index = en, e.isParser = y, e.lazy = tn, e.letter = sn, e.letters = ln, e.lf = vn, e.lookahead = Z, e.makeFailure = x, e.makeSuccess = b, e.newline = mn, e.noneOf = function(n3) { + return nn(function(t2) { + return n3.indexOf(t2) < 0; + }).desc("none of '" + n3 + "'"); + }, e.notFollowedBy = $, e.of = X, e.oneOf = function(n3) { + for (var t2 = n3.split(""), r2 = 0; r2 < t2.length; r2++) + t2[r2] = "'" + t2[r2] + "'"; + return nn(function(t3) { + return n3.indexOf(t3) >= 0; + }).desc(t2); + }, e.optWhitespace = hn, e.Parser = e, e.range = function(n3, t2) { + return nn(function(r2) { + return n3 <= r2 && r2 <= t2; + }).desc(n3 + "-" + t2); + }, e.regex = Q, e.regexp = Q, e.sepBy = V, e.sepBy1 = H, e.seq = C, e.seqMap = J, e.seqObj = function() { + for (var n3, t2 = {}, r2 = 0, u2 = (n3 = arguments, Array.prototype.slice.call(n3)), o2 = u2.length, i2 = 0; i2 < o2; i2 += 1) { + var a2 = u2[i2]; + if (!y(a2)) { + if (E(a2) && a2.length === 2 && typeof a2[0] == "string" && y(a2[1])) { + var f2 = a2[0]; + if (Object.prototype.hasOwnProperty.call(t2, f2)) + throw new Error("seqObj: duplicate key " + f2); + t2[f2] = true, r2++; + continue; + } + throw new Error("seqObj arguments must be parsers or [string, parser] array pairs."); + } + } + if (r2 === 0) + throw new Error("seqObj expects at least one named parser, found zero"); + return e(function(n4, t3) { + for (var r3, e2 = {}, i3 = 0; i3 < o2; i3 += 1) { + var a3, f3; + if (E(u2[i3]) ? (a3 = u2[i3][0], f3 = u2[i3][1]) : (a3 = null, f3 = u2[i3]), !(r3 = B(f3._(n4, t3), r3)).status) + return r3; + a3 && (e2[a3] = r3.value), t3 = r3.index; + } + return B(b(t3, e2), r3); + }); + }, e.string = K, e.succeed = X, e.takeWhile = function(n3) { + return k(n3), e(function(t2, r2) { + for (var e2 = r2; e2 < t2.length && n3(L(t2, e2)); ) + e2++; + return b(e2, t2.slice(r2, e2)); + }); + }, e.test = nn, e.whitespace = pn, e["fantasy-land/empty"] = rn, e["fantasy-land/of"] = X, e.Binary = { bitSeq: l2, bitSeqObj: function(n3) { + s2(); + var t2 = {}, r2 = 0, e2 = a(function(n4) { + if (E(n4)) { + var e3 = n4; + if (e3.length !== 2) + throw new Error("[" + e3.join(", ") + "] should be length 2, got length " + e3.length); + if (P(e3[0]), O(e3[1]), Object.prototype.hasOwnProperty.call(t2, e3[0])) + throw new Error("duplicate key in bitSeqObj: " + e3[0]); + return t2[e3[0]] = true, r2++, e3; + } + return O(n4), [null, n4]; + }, n3); + if (r2 < 1) + throw new Error("bitSeqObj expects at least one named pair, got [" + n3.join(", ") + "]"); + var u2 = a(function(n4) { + return n4[0]; + }, e2); + return l2(a(function(n4) { + return n4[1]; + }, e2)).map(function(n4) { + return i(function(n5, t3) { + return t3[0] !== null && (n5[t3[0]] = t3[1]), n5; + }, {}, a(function(t3, r3) { + return [t3, n4[r3]]; + }, u2)); + }); + }, byte: function(n3) { + if (s2(), O(n3), n3 > 255) + throw new Error("Value specified to byte constructor (" + n3 + "=0x" + n3.toString(16) + ") is larger in value than a single byte."); + var t2 = (n3 > 15 ? "0x" : "0x0") + n3.toString(16); + return e(function(r2, e2) { + var u2 = L(r2, e2); + return u2 === n3 ? b(e2 + 1, u2) : x(e2, t2); + }); + }, buffer: function(n3) { + return h("buffer", n3).map(function(n4) { + return Buffer.from(n4); + }); + }, encodedString: function(n3, t2) { + return h("string", t2).map(function(t3) { + return t3.toString(n3); + }); + }, uintBE: d, uint8BE: d(1), uint16BE: d(2), uint32BE: d(4), uintLE: v, uint8LE: v(1), uint16LE: v(2), uint32LE: v(4), intBE: g, int8BE: g(1), int16BE: g(2), int32BE: g(4), intLE: m, int8LE: m(1), int16LE: m(2), int32LE: m(4), floatBE: h("floatBE", 4).map(function(n3) { + return n3.readFloatBE(0); + }), floatLE: h("floatLE", 4).map(function(n3) { + return n3.readFloatLE(0); + }), doubleBE: h("doubleBE", 8).map(function(n3) { + return n3.readDoubleBE(0); + }), doubleLE: h("doubleLE", 8).map(function(n3) { + return n3.readDoubleLE(0); + }) }, n2.exports = e; + }]); + }); + })(parsimmon_umd_min, parsimmon_umd_min.exports); + var parsimmon_umd_minExports = parsimmon_umd_min.exports; + var emojiRegex = () => { + return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; + }; + function normalizeDuration(dur) { + if (dur === void 0 || dur === null) + return dur; + return dur.shiftToAll().normalize(); + } + function getFileTitle(path2) { + if (path2.includes("/")) + path2 = path2.substring(path2.lastIndexOf("/") + 1); + if (path2.endsWith(".md")) + path2 = path2.substring(0, path2.length - 3); + return path2; + } + parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_minExports.regex(/[0-9\p{Letter}_-]+/u).map((str) => str.toLocaleLowerCase()), parsimmon_umd_minExports.whitespace.map((_) => "-"), parsimmon_umd_minExports.any.map((_) => "")).many().map((result) => result.join("")); + var HEADER_CANONICALIZER = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_minExports.regex(/[0-9\p{Letter}_-]+/u), parsimmon_umd_minExports.whitespace.map((_) => " "), parsimmon_umd_minExports.any.map((_) => " ")).many().map((result) => { + return result.join("").split(/\s+/).join(" ").trim(); + }); + function normalizeHeaderForLink(header) { + return HEADER_CANONICALIZER.tryParse(header); + } + function renderMinimalDuration(dur) { + dur = normalizeDuration(dur); + dur = Duration.fromObject(Object.fromEntries(Object.entries(dur.toObject()).filter(([, quantity]) => quantity != 0))); + return dur.toHuman(); + } + var Values; + (function(Values2) { + function toString(field, setting = DEFAULT_QUERY_SETTINGS, recursive = false) { + let wrapped = wrapValue(field); + if (!wrapped) + return setting.renderNullAs; + switch (wrapped.type) { + case "null": + return setting.renderNullAs; + case "string": + return wrapped.value; + case "number": + case "boolean": + return "" + wrapped.value; + case "html": + return wrapped.value.outerHTML; + case "widget": + return wrapped.value.markdown(); + case "link": + return wrapped.value.markdown(); + case "function": + return ""; + case "array": + let result = ""; + if (recursive) + result += "["; + result += wrapped.value.map((f) => toString(f, setting, true)).join(", "); + if (recursive) + result += "]"; + return result; + case "object": + return "{ " + Object.entries(wrapped.value).map((e) => e[0] + ": " + toString(e[1], setting, true)).join(", ") + " }"; + case "date": + if (wrapped.value.second == 0 && wrapped.value.hour == 0 && wrapped.value.minute == 0) { + return wrapped.value.toFormat(setting.defaultDateFormat); + } + return wrapped.value.toFormat(setting.defaultDateTimeFormat); + case "duration": + return renderMinimalDuration(wrapped.value); + } + } + Values2.toString = toString; + function wrapValue(val) { + if (isNull(val)) + return { type: "null", value: val }; + else if (isNumber2(val)) + return { type: "number", value: val }; + else if (isString2(val)) + return { type: "string", value: val }; + else if (isBoolean(val)) + return { type: "boolean", value: val }; + else if (isDuration(val)) + return { type: "duration", value: val }; + else if (isDate2(val)) + return { type: "date", value: val }; + else if (isWidget(val)) + return { type: "widget", value: val }; + else if (isArray(val)) + return { type: "array", value: val }; + else if (isLink(val)) + return { type: "link", value: val }; + else if (isFunction(val)) + return { type: "function", value: val }; + else if (isHtml(val)) + return { type: "html", value: val }; + else if (isObject(val)) + return { type: "object", value: val }; + else + return void 0; + } + Values2.wrapValue = wrapValue; + function mapLeaves(val, func) { + if (isObject(val)) { + let result = {}; + for (let [key, value] of Object.entries(val)) + result[key] = mapLeaves(value, func); + return result; + } else if (isArray(val)) { + let result = []; + for (let value of val) + result.push(mapLeaves(value, func)); + return result; + } else { + return func(val); + } + } + Values2.mapLeaves = mapLeaves; + function compareValue(val1, val2, linkNormalizer) { + var _a, _b; + if (val1 === void 0) + val1 = null; + if (val2 === void 0) + val2 = null; + if (val1 === null && val2 === null) + return 0; + else if (val1 === null) + return -1; + else if (val2 === null) + return 1; + let wrap1 = wrapValue(val1); + let wrap2 = wrapValue(val2); + if (wrap1 === void 0 && wrap2 === void 0) + return 0; + else if (wrap1 === void 0) + return -1; + else if (wrap2 === void 0) + return 1; + if (wrap1.type != wrap2.type) + return wrap1.type.localeCompare(wrap2.type); + if (wrap1.value === wrap2.value) + return 0; + switch (wrap1.type) { + case "string": + return wrap1.value.localeCompare(wrap2.value); + case "number": + if (wrap1.value < wrap2.value) + return -1; + else if (wrap1.value == wrap2.value) + return 0; + return 1; + case "null": + return 0; + case "boolean": + if (wrap1.value == wrap2.value) + return 0; + else + return wrap1.value ? 1 : -1; + case "link": + let link1 = wrap1.value; + let link2 = wrap2.value; + let normalize = linkNormalizer != null ? linkNormalizer : (x) => x; + let pathCompare = normalize(link1.path).localeCompare(normalize(link2.path)); + if (pathCompare != 0) + return pathCompare; + let typeCompare = link1.type.localeCompare(link2.type); + if (typeCompare != 0) + return typeCompare; + if (link1.subpath && !link2.subpath) + return 1; + if (!link1.subpath && link2.subpath) + return -1; + if (!link1.subpath && !link2.subpath) + return 0; + return ((_a = link1.subpath) != null ? _a : "").localeCompare((_b = link2.subpath) != null ? _b : ""); + case "date": + return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1; + case "duration": + return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1; + case "array": + let f1 = wrap1.value; + let f2 = wrap2.value; + for (let index = 0; index < Math.min(f1.length, f2.length); index++) { + let comp = compareValue(f1[index], f2[index]); + if (comp != 0) + return comp; + } + return f1.length - f2.length; + case "object": + let o1 = wrap1.value; + let o2 = wrap2.value; + let k1 = Array.from(Object.keys(o1)); + let k2 = Array.from(Object.keys(o2)); + k1.sort(); + k2.sort(); + let keyCompare = compareValue(k1, k2); + if (keyCompare != 0) + return keyCompare; + for (let key of k1) { + let comp = compareValue(o1[key], o2[key]); + if (comp != 0) + return comp; + } + return 0; + case "widget": + case "html": + case "function": + return 0; + } + } + Values2.compareValue = compareValue; + function typeOf(val) { + var _a; + return (_a = wrapValue(val)) == null ? void 0 : _a.type; + } + Values2.typeOf = typeOf; + function isTruthy(field) { + let wrapped = wrapValue(field); + if (!wrapped) + return false; + switch (wrapped.type) { + case "number": + return wrapped.value != 0; + case "string": + return wrapped.value.length > 0; + case "boolean": + return wrapped.value; + case "link": + return !!wrapped.value.path; + case "date": + return wrapped.value.toMillis() != 0; + case "duration": + return wrapped.value.as("seconds") != 0; + case "object": + return Object.keys(wrapped.value).length > 0; + case "array": + return wrapped.value.length > 0; + case "null": + return false; + case "html": + case "widget": + case "function": + return true; + } + } + Values2.isTruthy = isTruthy; + function deepCopy(field) { + if (field === null || field === void 0) + return field; + if (Values2.isArray(field)) { + return [].concat(field.map((v) => deepCopy(v))); + } else if (Values2.isObject(field)) { + let result = {}; + for (let [key, value] of Object.entries(field)) + result[key] = deepCopy(value); + return result; + } else { + return field; + } + } + Values2.deepCopy = deepCopy; + function isString2(val) { + return typeof val == "string"; + } + Values2.isString = isString2; + function isNumber2(val) { + return typeof val == "number"; + } + Values2.isNumber = isNumber2; + function isDate2(val) { + return val instanceof DateTime; + } + Values2.isDate = isDate2; + function isDuration(val) { + return val instanceof Duration; + } + Values2.isDuration = isDuration; + function isNull(val) { + return val === null || val === void 0; + } + Values2.isNull = isNull; + function isArray(val) { + return Array.isArray(val); + } + Values2.isArray = isArray; + function isBoolean(val) { + return typeof val === "boolean"; + } + Values2.isBoolean = isBoolean; + function isLink(val) { + return val instanceof Link; + } + Values2.isLink = isLink; + function isWidget(val) { + return val instanceof Widget; + } + Values2.isWidget = isWidget; + function isHtml(val) { + if (typeof HTMLElement !== "undefined") { + return val instanceof HTMLElement; + } else { + return false; + } + } + Values2.isHtml = isHtml; + function isObject(val) { + return typeof val == "object" && !isHtml(val) && !isWidget(val) && !isArray(val) && !isDuration(val) && !isDate2(val) && !isLink(val) && val !== void 0 && !isNull(val); + } + Values2.isObject = isObject; + function isFunction(val) { + return typeof val == "function"; + } + Values2.isFunction = isFunction; + })(Values || (Values = {})); + var Groupings; + (function(Groupings2) { + function isElementGroup(entry) { + return Values.isObject(entry) && Object.keys(entry).length == 2 && "key" in entry && "rows" in entry; + } + Groupings2.isElementGroup = isElementGroup; + function isGrouping(entry) { + for (let element of entry) + if (!isElementGroup(element)) + return false; + return true; + } + Groupings2.isGrouping = isGrouping; + function count(elements) { + if (isGrouping(elements)) { + let result = 0; + for (let subgroup of elements) + result += count(subgroup.rows); + return result; + } else { + return elements.length; + } + } + Groupings2.count = count; + })(Groupings || (Groupings = {})); + var Link = class { + constructor(fields) { + __publicField(this, "path"); + __publicField(this, "display"); + __publicField(this, "subpath"); + __publicField(this, "embed"); + __publicField(this, "type"); + Object.assign(this, fields); + } + static file(path2, embed = false, display) { + return new Link({ + path: path2, + embed, + display, + subpath: void 0, + type: "file" + }); + } + static infer(linkpath, embed = false, display) { + if (linkpath.includes("#^")) { + let split = linkpath.split("#^"); + return Link.block(split[0], split[1], embed, display); + } else if (linkpath.includes("#")) { + let split = linkpath.split("#"); + return Link.header(split[0], split[1], embed, display); + } else + return Link.file(linkpath, embed, display); + } + static header(path2, header, embed, display) { + return new Link({ + path: path2, + embed, + display, + subpath: normalizeHeaderForLink(header), + type: "header" + }); + } + static block(path2, blockId, embed, display) { + return new Link({ + path: path2, + embed, + display, + subpath: blockId, + type: "block" + }); + } + static fromObject(object) { + return new Link(object); + } + equals(other) { + if (other == void 0 || other == null) + return false; + return this.path == other.path && this.type == other.type && this.subpath == other.subpath; + } + toString() { + return this.markdown(); + } + toObject() { + return { path: this.path, type: this.type, subpath: this.subpath, display: this.display, embed: this.embed }; + } + withPath(path2) { + return new Link(Object.assign({}, this, { path: path2 })); + } + withDisplay(display) { + return new Link(Object.assign({}, this, { display })); + } + withHeader(header) { + return Link.header(this.path, header, this.embed, this.display); + } + toFile() { + return Link.file(this.path, this.embed, this.display); + } + toEmbed() { + if (this.embed) { + return this; + } else { + let link = new Link(this); + link.embed = true; + return link; + } + } + fromEmbed() { + if (!this.embed) { + return this; + } else { + let link = new Link(this); + link.embed = false; + return link; + } + } + markdown() { + let result = (this.embed ? "!" : "") + "[[" + this.obsidianLink(); + if (this.display) { + result += "|" + this.display; + } else { + result += "|" + getFileTitle(this.path); + if (this.type == "header" || this.type == "block") + result += " > " + this.subpath; + } + result += "]]"; + return result; + } + obsidianLink() { + var _a, _b; + const escaped = this.path.replaceAll("|", "\\|"); + if (this.type == "header") + return escaped + "#" + ((_a = this.subpath) == null ? void 0 : _a.replaceAll("|", "\\|")); + if (this.type == "block") + return escaped + "#^" + ((_b = this.subpath) == null ? void 0 : _b.replaceAll("|", "\\|")); + else + return escaped; + } + fileName() { + return getFileTitle(this.path).replace(".md", ""); + } + }; + var Widget = class { + constructor($widget) { + __publicField(this, "$widget"); + this.$widget = $widget; + } + }; + var ListPairWidget = class extends Widget { + constructor(key, value) { + super("dataview:list-pair"); + __publicField(this, "key"); + __publicField(this, "value"); + this.key = key; + this.value = value; + } + markdown() { + return `${Values.toString(this.key)}: ${Values.toString(this.value)}`; + } + }; + var ExternalLinkWidget = class extends Widget { + constructor(url, display) { + super("dataview:external-link"); + __publicField(this, "url"); + __publicField(this, "display"); + this.url = url; + this.display = display; + } + markdown() { + var _a; + return `[${(_a = this.display) != null ? _a : this.url}](${this.url})`; + } + }; + var Widgets; + (function(Widgets2) { + function listPair(key, value) { + return new ListPairWidget(key, value); + } + Widgets2.listPair = listPair; + function externalLink(url, display) { + return new ExternalLinkWidget(url, display); + } + Widgets2.externalLink = externalLink; + function isListPair(widget) { + return widget.$widget === "dataview:list-pair"; + } + Widgets2.isListPair = isListPair; + function isExternalLink(widget) { + return widget.$widget === "dataview:external-link"; + } + Widgets2.isExternalLink = isExternalLink; + function isBuiltin(widget) { + return isListPair(widget) || isExternalLink(widget); + } + Widgets2.isBuiltin = isBuiltin; + })(Widgets || (Widgets = {})); + var Fields; + (function(Fields2) { + function variable(name) { + return { type: "variable", name }; + } + Fields2.variable = variable; + function literal(value) { + return { type: "literal", value }; + } + Fields2.literal = literal; + function binaryOp(left, op, right) { + return { type: "binaryop", left, op, right }; + } + Fields2.binaryOp = binaryOp; + function index(obj, index2) { + return { type: "index", object: obj, index: index2 }; + } + Fields2.index = index; + function indexVariable(name) { + let parts = name.split("."); + let result = Fields2.variable(parts[0]); + for (let index2 = 1; index2 < parts.length; index2++) { + result = Fields2.index(result, Fields2.literal(parts[index2])); + } + return result; + } + Fields2.indexVariable = indexVariable; + function lambda(args, value) { + return { type: "lambda", arguments: args, value }; + } + Fields2.lambda = lambda; + function func(func2, args) { + return { type: "function", func: func2, arguments: args }; + } + Fields2.func = func; + function list(values) { + return { type: "list", values }; + } + Fields2.list = list; + function object(values) { + return { type: "object", values }; + } + Fields2.object = object; + function negate(child) { + return { type: "negated", child }; + } + Fields2.negate = negate; + function isCompareOp(op) { + return op == "<=" || op == "<" || op == ">" || op == ">=" || op == "!=" || op == "="; + } + Fields2.isCompareOp = isCompareOp; + Fields2.NULL = Fields2.literal(null); + })(Fields || (Fields = {})); + var Sources; + (function(Sources2) { + function tag(tag2) { + return { type: "tag", tag: tag2 }; + } + Sources2.tag = tag; + function csv(path2) { + return { type: "csv", path: path2 }; + } + Sources2.csv = csv; + function folder(prefix) { + return { type: "folder", folder: prefix }; + } + Sources2.folder = folder; + function link(file, incoming) { + return { type: "link", file, direction: incoming ? "incoming" : "outgoing" }; + } + Sources2.link = link; + function binaryOp(left, op, right) { + return { type: "binaryop", left, op, right }; + } + Sources2.binaryOp = binaryOp; + function and(left, right) { + return { type: "binaryop", left, op: "&", right }; + } + Sources2.and = and; + function or(left, right) { + return { type: "binaryop", left, op: "|", right }; + } + Sources2.or = or; + function negate(child) { + return { type: "negate", child }; + } + Sources2.negate = negate; + function empty() { + return { type: "empty" }; + } + Sources2.empty = empty; + })(Sources || (Sources = {})); + var EMOJI_REGEX = new RegExp(emojiRegex(), ""); + var DURATION_TYPES = { + year: Duration.fromObject({ years: 1 }), + years: Duration.fromObject({ years: 1 }), + yr: Duration.fromObject({ years: 1 }), + yrs: Duration.fromObject({ years: 1 }), + month: Duration.fromObject({ months: 1 }), + months: Duration.fromObject({ months: 1 }), + mo: Duration.fromObject({ months: 1 }), + mos: Duration.fromObject({ months: 1 }), + week: Duration.fromObject({ weeks: 1 }), + weeks: Duration.fromObject({ weeks: 1 }), + wk: Duration.fromObject({ weeks: 1 }), + wks: Duration.fromObject({ weeks: 1 }), + w: Duration.fromObject({ weeks: 1 }), + day: Duration.fromObject({ days: 1 }), + days: Duration.fromObject({ days: 1 }), + d: Duration.fromObject({ days: 1 }), + hour: Duration.fromObject({ hours: 1 }), + hours: Duration.fromObject({ hours: 1 }), + hr: Duration.fromObject({ hours: 1 }), + hrs: Duration.fromObject({ hours: 1 }), + h: Duration.fromObject({ hours: 1 }), + minute: Duration.fromObject({ minutes: 1 }), + minutes: Duration.fromObject({ minutes: 1 }), + min: Duration.fromObject({ minutes: 1 }), + mins: Duration.fromObject({ minutes: 1 }), + m: Duration.fromObject({ minutes: 1 }), + second: Duration.fromObject({ seconds: 1 }), + seconds: Duration.fromObject({ seconds: 1 }), + sec: Duration.fromObject({ seconds: 1 }), + secs: Duration.fromObject({ seconds: 1 }), + s: Duration.fromObject({ seconds: 1 }) + }; + var DATE_SHORTHANDS = { + now: () => DateTime.local(), + today: () => DateTime.local().startOf("day"), + yesterday: () => DateTime.local().startOf("day").minus(Duration.fromObject({ days: 1 })), + tomorrow: () => DateTime.local().startOf("day").plus(Duration.fromObject({ days: 1 })), + sow: () => DateTime.local().startOf("week"), + "start-of-week": () => DateTime.local().startOf("week"), + eow: () => DateTime.local().endOf("week"), + "end-of-week": () => DateTime.local().endOf("week"), + soy: () => DateTime.local().startOf("year"), + "start-of-year": () => DateTime.local().startOf("year"), + eoy: () => DateTime.local().endOf("year"), + "end-of-year": () => DateTime.local().endOf("year"), + som: () => DateTime.local().startOf("month"), + "start-of-month": () => DateTime.local().startOf("month"), + eom: () => DateTime.local().endOf("month"), + "end-of-month": () => DateTime.local().endOf("month") + }; + var KEYWORDS = ["FROM", "WHERE", "LIMIT", "GROUP", "FLATTEN"]; + function splitOnUnescapedPipe(link) { + let pipe = -1; + while ((pipe = link.indexOf("|", pipe + 1)) >= 0) { + if (pipe > 0 && link[pipe - 1] == "\\") + continue; + return [link.substring(0, pipe).replace(/\\\|/g, "|"), link.substring(pipe + 1)]; + } + return [link.replace(/\\\|/g, "|"), void 0]; + } + function parseInnerLink(rawlink) { + let [link, display] = splitOnUnescapedPipe(rawlink); + return Link.infer(link, false, display); + } + function createBinaryParser(child, sep, combine) { + return parsimmon_umd_minExports.seqMap(child, parsimmon_umd_minExports.seq(parsimmon_umd_minExports.optWhitespace, sep, parsimmon_umd_minExports.optWhitespace, child).many(), (first, rest) => { + if (rest.length == 0) + return first; + let node = combine(first, rest[0][1], rest[0][3]); + for (let index = 1; index < rest.length; index++) { + node = combine(node, rest[index][1], rest[index][3]); + } + return node; + }); + } + function chainOpt(base, ...funcs) { + return parsimmon_umd_minExports.custom((success, failure) => { + return (input, i) => { + let result = base._(input, i); + if (!result.status) + return result; + for (let func of funcs) { + let next = func(result.value)._(input, result.index); + if (!next.status) + return result; + result = next; + } + return result; + }; + }); + } + var EXPRESSION = parsimmon_umd_minExports.createLanguage({ + number: (q) => parsimmon_umd_minExports.regexp(/-?[0-9]+(\.[0-9]+)?/).map((str) => Number.parseFloat(str)).desc("number"), + string: (q) => parsimmon_umd_minExports.string('"').then(parsimmon_umd_minExports.alt(q.escapeCharacter, parsimmon_umd_minExports.noneOf('"\\')).atLeast(0).map((chars) => chars.join(""))).skip(parsimmon_umd_minExports.string('"')).desc("string"), + escapeCharacter: (_) => parsimmon_umd_minExports.string("\\").then(parsimmon_umd_minExports.any).map((escaped) => { + if (escaped === '"') + return '"'; + if (escaped === "\\") + return "\\"; + else + return "\\" + escaped; + }), + bool: (_) => parsimmon_umd_minExports.regexp(/true|false|True|False/).map((str) => str.toLowerCase() == "true").desc("boolean ('true' or 'false')"), + tag: (_) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("#"), parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(), (start, rest) => start + rest.join("")).desc("tag ('#hello/stuff')"), + identifier: (_) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/\p{Letter}/u), parsimmon_umd_minExports.regexp(EMOJI_REGEX).desc("text")), parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/[0-9\p{Letter}_-]/u), parsimmon_umd_minExports.regexp(EMOJI_REGEX).desc("text")).many(), (first, rest) => first + rest.join("")).desc("variable identifier"), + link: (_) => parsimmon_umd_minExports.regexp(/\[\[([^\[\]]*?)\]\]/u, 1).map((linkInner) => parseInnerLink(linkInner)).desc("file link"), + embedLink: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("!").atMost(1), q.link, (p, l2) => { + if (p.length > 0) + l2.embed = true; + return l2; + }).desc("file link"), + binaryPlusMinus: (_) => parsimmon_umd_minExports.regexp(/\+|-/).map((str) => str).desc("'+' or '-'"), + binaryMulDiv: (_) => parsimmon_umd_minExports.regexp(/\*|\/|%/).map((str) => str).desc("'*' or '/' or '%'"), + binaryCompareOp: (_) => parsimmon_umd_minExports.regexp(/>=|<=|!=|>|<|=/).map((str) => str).desc("'>=' or '<=' or '!=' or '=' or '>' or '<'"), + binaryBooleanOp: (_) => parsimmon_umd_minExports.regexp(/and|or|&|\|/i).map((str) => { + if (str.toLowerCase() == "and") + return "&"; + else if (str.toLowerCase() == "or") + return "|"; + else + return str; + }).desc("'and' or 'or'"), + rootDate: (_) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/\d{4}/), parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.regexp(/\d{2}/), (year, _2, month) => { + return DateTime.fromObject({ year: Number.parseInt(year), month: Number.parseInt(month) }); + }).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), + dateShorthand: (_) => parsimmon_umd_minExports.alt(...Object.keys(DATE_SHORTHANDS).sort((a, b) => b.length - a.length).map(parsimmon_umd_minExports.string)), + date: (q) => chainOpt(q.rootDate, (ym) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("T"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string(":"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string(":"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("."), parsimmon_umd_minExports.regexp(/\d{3}/), (_, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })), parsimmon_umd_minExports.succeed(ymdhms)), (dt) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("+").or(parsimmon_umd_minExports.string("-")), parsimmon_umd_minExports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("["), parsimmon_umd_minExports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_minExports.string("]"), (_a, zone, _b) => dt.setZone(zone, { keepLocalTime: true })))).assert((dt) => dt.isValid, "valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), + datePlus: (q) => parsimmon_umd_minExports.alt(q.dateShorthand.map((d) => DATE_SHORTHANDS[d]()), q.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"), + durationType: (_) => parsimmon_umd_minExports.alt(...Object.keys(DURATION_TYPES).sort((a, b) => b.length - a.length).map(parsimmon_umd_minExports.string)), + duration: (q) => parsimmon_umd_minExports.seqMap(q.number, parsimmon_umd_minExports.optWhitespace, q.durationType, (count, _, t) => DURATION_TYPES[t].mapUnits((x) => x * count)).sepBy1(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).or(parsimmon_umd_minExports.optWhitespace)).map((durations) => durations.reduce((p, c) => p.plus(c))).desc("duration like 4hr2min"), + rawNull: (_) => parsimmon_umd_minExports.string("null"), + tagSource: (q) => q.tag.map((tag) => Sources.tag(tag)), + csvSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("csv(").skip(parsimmon_umd_minExports.optWhitespace), q.string, parsimmon_umd_minExports.string(")"), (_1, path2, _2) => Sources.csv(path2)), + linkIncomingSource: (q) => q.link.map((link) => Sources.link(link.path, true)), + linkOutgoingSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("outgoing(").skip(parsimmon_umd_minExports.optWhitespace), q.link, parsimmon_umd_minExports.string(")"), (_1, link, _2) => Sources.link(link.path, false)), + folderSource: (q) => q.string.map((str) => Sources.folder(str)), + parensSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.source, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_1, _2, field, _3, _4) => field), + negateSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.alt(parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.string("!")), q.atomSource, (_, source) => Sources.negate(source)), + atomSource: (q) => parsimmon_umd_minExports.alt(q.parensSource, q.negateSource, q.linkOutgoingSource, q.linkIncomingSource, q.folderSource, q.tagSource, q.csvSource), + binaryOpSource: (q) => createBinaryParser(q.atomSource, q.binaryBooleanOp.map((s2) => s2), Sources.binaryOp), + source: (q) => q.binaryOpSource, + variableField: (q) => q.identifier.chain((r) => { + if (KEYWORDS.includes(r.toUpperCase())) { + return parsimmon_umd_minExports.fail("Variable fields cannot be a keyword (" + KEYWORDS.join(" or ") + ")"); + } else { + return parsimmon_umd_minExports.succeed(Fields.variable(r)); + } + }).desc("variable"), + numberField: (q) => q.number.map((val) => Fields.literal(val)).desc("number"), + stringField: (q) => q.string.map((val) => Fields.literal(val)).desc("string"), + boolField: (q) => q.bool.map((val) => Fields.literal(val)).desc("boolean"), + dateField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("date("), parsimmon_umd_minExports.optWhitespace, q.datePlus, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (prefix, _1, date, _2, postfix) => Fields.literal(date)).desc("date"), + durationField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("dur("), parsimmon_umd_minExports.optWhitespace, q.duration, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (prefix, _1, dur, _2, postfix) => Fields.literal(dur)).desc("duration"), + nullField: (q) => q.rawNull.map((_) => Fields.NULL), + linkField: (q) => q.link.map((f) => Fields.literal(f)), + listField: (q) => q.field.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)).wrap(parsimmon_umd_minExports.string("[").skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.optWhitespace.then(parsimmon_umd_minExports.string("]"))).map((l2) => Fields.list(l2)).desc("list ('[1, 2, 3]')"), + objectField: (q) => parsimmon_umd_minExports.seqMap(q.identifier.or(q.string), parsimmon_umd_minExports.string(":").trim(parsimmon_umd_minExports.optWhitespace), q.field, (name, _sep, value) => { + return { name, value }; + }).sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)).wrap(parsimmon_umd_minExports.string("{").skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.optWhitespace.then(parsimmon_umd_minExports.string("}"))).map((vals) => { + let res = {}; + for (let entry of vals) + res[entry.name] = entry.value; + return Fields.object(res); + }).desc("object ('{ a: 1, b: 2 }')"), + atomInlineField: (q) => parsimmon_umd_minExports.alt(q.date, q.duration.map((d) => normalizeDuration(d)), q.string, q.tag, q.embedLink, q.bool, q.number, q.rawNull), + inlineFieldList: (q) => q.atomInlineField.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).lookahead(q.atomInlineField)), + inlineField: (q) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(q.atomInlineField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace), q.inlineFieldList, (f, _s, l2) => [f].concat(l2)), q.atomInlineField), + atomField: (q) => parsimmon_umd_minExports.alt(q.embedLink.map((l2) => Fields.literal(l2)), q.negatedField, q.linkField, q.listField, q.objectField, q.lambdaField, q.parensField, q.boolField, q.numberField, q.stringField, q.dateField, q.durationField, q.nullField, q.variableField), + indexField: (q) => parsimmon_umd_minExports.seqMap(q.atomField, parsimmon_umd_minExports.alt(q.dotPostfix, q.indexPostfix, q.functionPostfix).many(), (obj, postfixes) => { + let result = obj; + for (let post of postfixes) { + switch (post.type) { + case "dot": + result = Fields.index(result, Fields.literal(post.field)); + break; + case "index": + result = Fields.index(result, post.field); + break; + case "function": + result = Fields.func(result, post.fields); + break; + } + } + return result; + }), + negatedField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("!"), q.indexField, (_, field) => Fields.negate(field)).desc("negated field"), + parensField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.field, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_1, _2, field, _3, _4) => field), + lambdaField: (q) => parsimmon_umd_minExports.seqMap(q.identifier.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)).wrap(parsimmon_umd_minExports.string("(").trim(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.string(")").trim(parsimmon_umd_minExports.optWhitespace)), parsimmon_umd_minExports.string("=>").trim(parsimmon_umd_minExports.optWhitespace), q.field, (ident, _ignore, value) => { + return { type: "lambda", arguments: ident, value }; + }), + dotPostfix: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("."), q.identifier, (_, field) => { + return { type: "dot", field }; + }), + indexPostfix: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("["), parsimmon_umd_minExports.optWhitespace, q.field, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string("]"), (_, _2, field, _3, _4) => { + return { type: "index", field }; + }), + functionPostfix: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.field.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_, _1, fields, _2, _3) => { + return { type: "function", fields }; + }), + binaryMulDivField: (q) => createBinaryParser(q.indexField, q.binaryMulDiv, Fields.binaryOp), + binaryPlusMinusField: (q) => createBinaryParser(q.binaryMulDivField, q.binaryPlusMinus, Fields.binaryOp), + binaryCompareField: (q) => createBinaryParser(q.binaryPlusMinusField, q.binaryCompareOp, Fields.binaryOp), + binaryBooleanField: (q) => createBinaryParser(q.binaryCompareField, q.binaryBooleanOp, Fields.binaryOp), + binaryOpField: (q) => q.binaryBooleanField, + field: (q) => q.binaryOpField + }); + function parseField(text) { + try { + return Result.success(EXPRESSION.field.tryParse(text)); + } catch (error) { + return Result.failure("" + error); + } + } + var QueryFields; + (function(QueryFields2) { + function named(name, field) { + return { name, field }; + } + QueryFields2.named = named; + function sortBy(field, dir) { + return { field, direction: dir }; + } + QueryFields2.sortBy = sortBy; + })(QueryFields || (QueryFields = {})); + function captureRaw(base) { + return parsimmon_umd_minExports.custom((success, failure) => { + return (input, i) => { + let result = base._(input, i); + if (!result.status) + return result; + return Object.assign({}, result, { value: [result.value, input.substring(i, result.index)] }); + }; + }); + } + function stripNewlines(text) { + return text.split(/[\r\n]+/).map((t) => t.trim()).join(""); + } + function precededByWhitespaceIfNotEof(if_eof, parser) { + return parsimmon_umd_minExports.eof.map(if_eof).or(parsimmon_umd_minExports.whitespace.then(parser)); + } + var QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ + queryType: (q) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/TABLE|LIST|TASK|CALENDAR/i)).map((str) => str.toLowerCase()).desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), + explicitNamedField: (q) => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.whitespace), parsimmon_umd_minExports.regexp(/AS/i).skip(parsimmon_umd_minExports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), + comment: () => parsimmon_umd_minExports.Parser((input, i) => { + let line = input.substring(i); + if (!line.startsWith("//")) + return parsimmon_umd_minExports.makeFailure(i, "Not a comment"); + line = line.split("\n")[0]; + let comment = line.substring(2).trim(); + return parsimmon_umd_minExports.makeSuccess(i + line.length, comment); + }), + namedField: (q) => parsimmon_umd_minExports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text]) => QueryFields.named(stripNewlines(text), value))), + sortField: (q) => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { + let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); + if (direction == "desc") + direction = "descending"; + if (direction == "asc") + direction = "ascending"; + return { + field, + direction + }; + }), + headerClause: (q) => q.queryType.chain((type) => { + switch (type) { + case "table": { + return precededByWhitespaceIfNotEof(() => ({ type, fields: [], showId: true }), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_minExports.optWhitespace).atMost(1), parsimmon_umd_minExports.sepBy(q.namedField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), (withoutId, fields) => { + return { type, fields, showId: withoutId.length == 0 }; + })); + } + case "list": + return precededByWhitespaceIfNotEof(() => ({ type, format: void 0, showId: true }), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_minExports.optWhitespace).atMost(1), EXPRESSION.field.atMost(1), (withoutId, format) => { + return { + type, + format: format.length == 1 ? format[0] : void 0, + showId: withoutId.length == 0 + }; + })); + case "task": + return parsimmon_umd_minExports.succeed({ type }); + case "calendar": + return parsimmon_umd_minExports.whitespace.then(parsimmon_umd_minExports.seqMap(q.namedField, (field) => { + return { + type, + showId: true, + field + }; + })); + default: + return parsimmon_umd_minExports.fail(`Unrecognized query type '${type}'`); + } + }).desc("TABLE or LIST or TASK or CALENDAR"), + fromClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/FROM/i), parsimmon_umd_minExports.whitespace, EXPRESSION.source, (_1, _2, source) => source), + whereClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WHERE/i), parsimmon_umd_minExports.whitespace, EXPRESSION.field, (where, _, field) => { + return { type: "where", clause: field }; + }).desc("WHERE "), + sortByClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/SORT/i), parsimmon_umd_minExports.whitespace, q.sortField.sepBy1(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), (sort, _1, fields) => { + return { type: "sort", fields }; + }).desc("SORT field [ASC/DESC]"), + limitClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/LIMIT/i), parsimmon_umd_minExports.whitespace, EXPRESSION.field, (limit, _1, field) => { + return { type: "limit", amount: field }; + }).desc("LIMIT "), + flattenClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/FLATTEN/i).skip(parsimmon_umd_minExports.whitespace), q.namedField, (_, field) => { + return { type: "flatten", field }; + }).desc("FLATTEN [AS ]"), + groupByClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/GROUP BY/i).skip(parsimmon_umd_minExports.whitespace), q.namedField, (_, field) => { + return { type: "group", field }; + }).desc("GROUP BY [AS ]"), + clause: (q) => parsimmon_umd_minExports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause), + query: (q) => parsimmon_umd_minExports.seqMap(q.headerClause.trim(optionalWhitespaceOrComment), q.fromClause.trim(optionalWhitespaceOrComment).atMost(1), q.clause.trim(optionalWhitespaceOrComment).many(), (header, from, clauses) => { + return { + header, + source: from.length == 0 ? Sources.folder("") : from[0], + operations: clauses, + settings: DEFAULT_QUERY_SETTINGS + }; + }) + }); + var optionalWhitespaceOrComment = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.whitespace, QUERY_LANGUAGE.comment).many().map((arr) => arr.join("")); + var getAPI2 = (app) => { + var _a; + if (app) + return (_a = app.plugins.plugins.dataview) == null ? void 0 : _a.api; + else + return window.DataviewAPI; + }; + var isPluginEnabled = (app) => app.plugins.enabledPlugins.has("dataview"); + exports.DATE_SHORTHANDS = DATE_SHORTHANDS; + exports.DURATION_TYPES = DURATION_TYPES; + exports.EXPRESSION = EXPRESSION; + exports.KEYWORDS = KEYWORDS; + exports.QUERY_LANGUAGE = QUERY_LANGUAGE; + exports.getAPI = getAPI2; + exports.isPluginEnabled = isPluginEnabled; + exports.parseField = parseField; + } +}); + +// node_modules/depd/index.js +var require_depd = __commonJS({ + "node_modules/depd/index.js"(exports, module2) { + var relative = require("path").relative; + module2.exports = depd; + var basePath = process.cwd(); + function containsNamespace(str, namespace) { + var vals = str.split(/[ ,]+/); + var ns = String(namespace).toLowerCase(); + for (var i = 0; i < vals.length; i++) { + var val = vals[i]; + if (val && (val === "*" || val.toLowerCase() === ns)) { + return true; + } + } + return false; + } + function convertDataDescriptorToAccessor(obj, prop, message) { + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + var value = descriptor.value; + descriptor.get = function getter() { + return value; + }; + if (descriptor.writable) { + descriptor.set = function setter(val) { + return value = val; + }; + } + delete descriptor.value; + delete descriptor.writable; + Object.defineProperty(obj, prop, descriptor); + return descriptor; + } + function createArgumentsString(arity) { + var str = ""; + for (var i = 0; i < arity; i++) { + str += ", arg" + i; + } + return str.substr(2); + } + function createStackString(stack) { + var str = this.name + ": " + this.namespace; + if (this.message) { + str += " deprecated " + this.message; + } + for (var i = 0; i < stack.length; i++) { + str += "\n at " + stack[i].toString(); + } + return str; + } + function depd(namespace) { + if (!namespace) { + throw new TypeError("argument namespace is required"); + } + var stack = getStack(); + var site = callSiteLocation(stack[1]); + var file = site[0]; + function deprecate(message) { + log.call(deprecate, message); + } + deprecate._file = file; + deprecate._ignored = isignored(namespace); + deprecate._namespace = namespace; + deprecate._traced = istraced(namespace); + deprecate._warned = Object.create(null); + deprecate.function = wrapfunction; + deprecate.property = wrapproperty; + return deprecate; + } + function eehaslisteners(emitter, type) { + var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); + return count > 0; + } + function isignored(namespace) { + if (process.noDeprecation) { + return true; + } + var str = process.env.NO_DEPRECATION || ""; + return containsNamespace(str, namespace); + } + function istraced(namespace) { + if (process.traceDeprecation) { + return true; + } + var str = process.env.TRACE_DEPRECATION || ""; + return containsNamespace(str, namespace); + } + function log(message, site) { + var haslisteners = eehaslisteners(process, "deprecation"); + if (!haslisteners && this._ignored) { + return; + } + var caller; + var callFile; + var callSite; + var depSite; + var i = 0; + var seen = false; + var stack = getStack(); + var file = this._file; + if (site) { + depSite = site; + callSite = callSiteLocation(stack[1]); + callSite.name = depSite.name; + file = callSite[0]; + } else { + i = 2; + depSite = callSiteLocation(stack[i]); + callSite = depSite; + } + for (; i < stack.length; i++) { + caller = callSiteLocation(stack[i]); + callFile = caller[0]; + if (callFile === file) { + seen = true; + } else if (callFile === this._file) { + file = this._file; + } else if (seen) { + break; + } + } + var key = caller ? depSite.join(":") + "__" + caller.join(":") : void 0; + if (key !== void 0 && key in this._warned) { + return; + } + this._warned[key] = true; + var msg = message; + if (!msg) { + msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite); + } + if (haslisteners) { + var err = DeprecationError(this._namespace, msg, stack.slice(i)); + process.emit("deprecation", err); + return; + } + var format = process.stderr.isTTY ? formatColor : formatPlain; + var output = format.call(this, msg, caller, stack.slice(i)); + process.stderr.write(output + "\n", "utf8"); + } + function callSiteLocation(callSite) { + var file = callSite.getFileName() || ""; + var line = callSite.getLineNumber(); + var colm = callSite.getColumnNumber(); + if (callSite.isEval()) { + file = callSite.getEvalOrigin() + ", " + file; + } + var site = [file, line, colm]; + site.callSite = callSite; + site.name = callSite.getFunctionName(); + return site; + } + function defaultMessage(site) { + var callSite = site.callSite; + var funcName = site.name; + if (!funcName) { + funcName = ""; + } + var context = callSite.getThis(); + var typeName = context && callSite.getTypeName(); + if (typeName === "Object") { + typeName = void 0; + } + if (typeName === "Function") { + typeName = context.name || typeName; + } + return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName; + } + function formatPlain(msg, caller, stack) { + var timestamp = new Date().toUTCString(); + var formatted = timestamp + " " + this._namespace + " deprecated " + msg; + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += "\n at " + stack[i].toString(); + } + return formatted; + } + if (caller) { + formatted += " at " + formatLocation(caller); + } + return formatted; + } + function formatColor(msg, caller, stack) { + var formatted = "" + this._namespace + " deprecated " + msg + ""; + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += "\n at " + stack[i].toString() + ""; + } + return formatted; + } + if (caller) { + formatted += " " + formatLocation(caller) + ""; + } + return formatted; + } + function formatLocation(callSite) { + return relative(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2]; + } + function getStack() { + var limit = Error.stackTraceLimit; + var obj = {}; + var prep = Error.prepareStackTrace; + Error.prepareStackTrace = prepareObjectStackTrace; + Error.stackTraceLimit = Math.max(10, limit); + Error.captureStackTrace(obj); + var stack = obj.stack.slice(1); + Error.prepareStackTrace = prep; + Error.stackTraceLimit = limit; + return stack; + } + function prepareObjectStackTrace(obj, stack) { + return stack; + } + function wrapfunction(fn, message) { + if (typeof fn !== "function") { + throw new TypeError("argument fn must be a function"); + } + var args = createArgumentsString(fn.length); + var stack = getStack(); + var site = callSiteLocation(stack[1]); + site.name = fn.name; + var deprecatedfn = new Function("fn", "log", "deprecate", "message", "site", '"use strict"\nreturn function (' + args + ") {log.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n}")(fn, log, this, message, site); + return deprecatedfn; + } + function wrapproperty(obj, prop, message) { + if (!obj || typeof obj !== "object" && typeof obj !== "function") { + throw new TypeError("argument obj must be object"); + } + var descriptor = Object.getOwnPropertyDescriptor(obj, prop); + if (!descriptor) { + throw new TypeError("must call property on owner object"); + } + if (!descriptor.configurable) { + throw new TypeError("property must be configurable"); + } + var deprecate = this; + var stack = getStack(); + var site = callSiteLocation(stack[1]); + site.name = prop; + if ("value" in descriptor) { + descriptor = convertDataDescriptorToAccessor(obj, prop, message); + } + var get = descriptor.get; + var set = descriptor.set; + if (typeof get === "function") { + descriptor.get = function getter() { + log.call(deprecate, message, site); + return get.apply(this, arguments); + }; + } + if (typeof set === "function") { + descriptor.set = function setter() { + log.call(deprecate, message, site); + return set.apply(this, arguments); + }; + } + Object.defineProperty(obj, prop, descriptor); + } + function DeprecationError(namespace, message, stack) { + var error = new Error(); + var stackString; + Object.defineProperty(error, "constructor", { + value: DeprecationError + }); + Object.defineProperty(error, "message", { + configurable: true, + enumerable: false, + value: message, + writable: true + }); + Object.defineProperty(error, "name", { + enumerable: false, + configurable: true, + value: "DeprecationError", + writable: true + }); + Object.defineProperty(error, "namespace", { + configurable: true, + enumerable: false, + value: namespace, + writable: true + }); + Object.defineProperty(error, "stack", { + configurable: true, + enumerable: false, + get: function() { + if (stackString !== void 0) { + return stackString; + } + return stackString = createStackString.call(this, stack); + }, + set: function setter(val) { + stackString = val; + } + }); + return error; + } + } +}); + +// node_modules/bytes/index.js +var require_bytes = __commonJS({ + "node_modules/bytes/index.js"(exports, module2) { + "use strict"; + module2.exports = bytes; + module2.exports.format = format; + module2.exports.parse = parse; + var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5) + }; + var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + function bytes(value, options) { + if (typeof value === "string") { + return parse(value); + } + if (typeof value === "number") { + return format(value, options); + } + return null; + } + function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + var mag = Math.abs(value); + var thousandsSeparator = options && options.thousandsSeparator || ""; + var unitSeparator = options && options.unitSeparator || ""; + var decimalPlaces = options && options.decimalPlaces !== void 0 ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = options && options.unit || ""; + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.pb) { + unit = "PB"; + } else if (mag >= map.tb) { + unit = "TB"; + } else if (mag >= map.gb) { + unit = "GB"; + } else if (mag >= map.mb) { + unit = "MB"; + } else if (mag >= map.kb) { + unit = "KB"; + } else { + unit = "B"; + } + } + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, "$1"); + } + if (thousandsSeparator) { + str = str.split(".").map(function(s, i) { + return i === 0 ? s.replace(formatThousandsRegExp, thousandsSeparator) : s; + }).join("."); + } + return str + unitSeparator + unit; + } + function parse(val) { + if (typeof val === "number" && !isNaN(val)) { + return val; + } + if (typeof val !== "string") { + return null; + } + var results = parseRegExp.exec(val); + var floatValue; + var unit = "b"; + if (!results) { + floatValue = parseInt(val, 10); + unit = "b"; + } else { + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + if (isNaN(floatValue)) { + return null; + } + return Math.floor(map[unit] * floatValue); + } + } +}); + +// node_modules/content-type/index.js +var require_content_type = __commonJS({ + "node_modules/content-type/index.js"(exports) { + "use strict"; + var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g; + var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/; + var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g; + var QUOTE_REGEXP = /([\\"])/g; + var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; + exports.format = format; + exports.parse = parse; + function format(obj) { + if (!obj || typeof obj !== "object") { + throw new TypeError("argument obj is required"); + } + var parameters = obj.parameters; + var type = obj.type; + if (!type || !TYPE_REGEXP.test(type)) { + throw new TypeError("invalid type"); + } + var string = type; + if (parameters && typeof parameters === "object") { + var param; + var params = Object.keys(parameters).sort(); + for (var i = 0; i < params.length; i++) { + param = params[i]; + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError("invalid parameter name"); + } + string += "; " + param + "=" + qstring(parameters[param]); + } + } + return string; + } + function parse(string) { + if (!string) { + throw new TypeError("argument string is required"); + } + var header = typeof string === "object" ? getcontenttype(string) : string; + if (typeof header !== "string") { + throw new TypeError("argument string is required to be a string"); + } + var index = header.indexOf(";"); + var type = index !== -1 ? header.slice(0, index).trim() : header.trim(); + if (!TYPE_REGEXP.test(type)) { + throw new TypeError("invalid media type"); + } + var obj = new ContentType2(type.toLowerCase()); + if (index !== -1) { + var key; + var match; + var value; + PARAM_REGEXP.lastIndex = index; + while (match = PARAM_REGEXP.exec(header)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value.charCodeAt(0) === 34) { + value = value.slice(1, -1); + if (value.indexOf("\\") !== -1) { + value = value.replace(QESC_REGEXP, "$1"); + } + } + obj.parameters[key] = value; + } + if (index !== header.length) { + throw new TypeError("invalid parameter format"); + } + } + return obj; + } + function getcontenttype(obj) { + var header; + if (typeof obj.getHeader === "function") { + header = obj.getHeader("content-type"); + } else if (typeof obj.headers === "object") { + header = obj.headers && obj.headers["content-type"]; + } + if (typeof header !== "string") { + throw new TypeError("content-type header is missing from object"); + } + return header; + } + function qstring(val) { + var str = String(val); + if (TOKEN_REGEXP.test(str)) { + return str; + } + if (str.length > 0 && !TEXT_REGEXP.test(str)) { + throw new TypeError("invalid parameter value"); + } + return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; + } + function ContentType2(type) { + this.parameters = Object.create(null); + this.type = type; + } + } +}); + +// node_modules/setprototypeof/index.js +var require_setprototypeof = __commonJS({ + "node_modules/setprototypeof/index.js"(exports, module2) { + "use strict"; + module2.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); + function setProtoOf(obj, proto) { + obj.__proto__ = proto; + return obj; + } + function mixinProperties(obj, proto) { + for (var prop in proto) { + if (!Object.prototype.hasOwnProperty.call(obj, prop)) { + obj[prop] = proto[prop]; + } + } + return obj; + } + } +}); + +// node_modules/statuses/codes.json +var require_codes = __commonJS({ + "node_modules/statuses/codes.json"(exports, module2) { + module2.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "103": "Early Hints", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a Teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Too Early", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" + }; + } +}); + +// node_modules/statuses/index.js +var require_statuses = __commonJS({ + "node_modules/statuses/index.js"(exports, module2) { + "use strict"; + var codes = require_codes(); + module2.exports = status; + status.message = codes; + status.code = createMessageToStatusCodeMap(codes); + status.codes = createStatusCodeList(codes); + status.redirect = { + 300: true, + 301: true, + 302: true, + 303: true, + 305: true, + 307: true, + 308: true + }; + status.empty = { + 204: true, + 205: true, + 304: true + }; + status.retry = { + 502: true, + 503: true, + 504: true + }; + function createMessageToStatusCodeMap(codes2) { + var map = {}; + Object.keys(codes2).forEach(function forEachCode(code) { + var message = codes2[code]; + var status2 = Number(code); + map[message.toLowerCase()] = status2; + }); + return map; + } + function createStatusCodeList(codes2) { + return Object.keys(codes2).map(function mapCode(code) { + return Number(code); + }); + } + function getStatusCode(message) { + var msg = message.toLowerCase(); + if (!Object.prototype.hasOwnProperty.call(status.code, msg)) { + throw new Error('invalid status message: "' + message + '"'); + } + return status.code[msg]; + } + function getStatusMessage(code) { + if (!Object.prototype.hasOwnProperty.call(status.message, code)) { + throw new Error("invalid status code: " + code); + } + return status.message[code]; + } + function status(code) { + if (typeof code === "number") { + return getStatusMessage(code); + } + if (typeof code !== "string") { + throw new TypeError("code must be a number or string"); + } + var n = parseInt(code, 10); + if (!isNaN(n)) { + return getStatusMessage(n); + } + return getStatusCode(code); + } + } +}); + +// node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS({ + "node_modules/inherits/inherits_browser.js"(exports, module2) { + if (typeof Object.create === "function") { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; + } + } +}); + +// node_modules/inherits/inherits.js +var require_inherits = __commonJS({ + "node_modules/inherits/inherits.js"(exports, module2) { + try { + util = require("util"); + if (typeof util.inherits !== "function") + throw ""; + module2.exports = util.inherits; + } catch (e) { + module2.exports = require_inherits_browser(); + } + var util; + } +}); + +// node_modules/toidentifier/index.js +var require_toidentifier = __commonJS({ + "node_modules/toidentifier/index.js"(exports, module2) { + "use strict"; + module2.exports = toIdentifier; + function toIdentifier(str) { + return str.split(" ").map(function(token) { + return token.slice(0, 1).toUpperCase() + token.slice(1); + }).join("").replace(/[^ _0-9a-z]/gi, ""); + } + } +}); + +// node_modules/http-errors/index.js +var require_http_errors = __commonJS({ + "node_modules/http-errors/index.js"(exports, module2) { + "use strict"; + var deprecate = require_depd()("http-errors"); + var setPrototypeOf = require_setprototypeof(); + var statuses = require_statuses(); + var inherits = require_inherits(); + var toIdentifier = require_toidentifier(); + module2.exports = createError; + module2.exports.HttpError = createHttpErrorConstructor(); + module2.exports.isHttpError = createIsHttpErrorFunction(module2.exports.HttpError); + populateConstructorExports(module2.exports, statuses.codes, module2.exports.HttpError); + function codeClass(status) { + return Number(String(status).charAt(0) + "00"); + } + function createError() { + var err; + var msg; + var status = 500; + var props = {}; + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + var type = typeof arg; + if (type === "object" && arg instanceof Error) { + err = arg; + status = err.status || err.statusCode || status; + } else if (type === "number" && i === 0) { + status = arg; + } else if (type === "string") { + msg = arg; + } else if (type === "object") { + props = arg; + } else { + throw new TypeError("argument #" + (i + 1) + " unsupported type " + type); + } + } + if (typeof status === "number" && (status < 400 || status >= 600)) { + deprecate("non-error status code; use only 4xx or 5xx status codes"); + } + if (typeof status !== "number" || !statuses.message[status] && (status < 400 || status >= 600)) { + status = 500; + } + var HttpError = createError[status] || createError[codeClass(status)]; + if (!err) { + err = HttpError ? new HttpError(msg) : new Error(msg || statuses.message[status]); + Error.captureStackTrace(err, createError); + } + if (!HttpError || !(err instanceof HttpError) || err.status !== status) { + err.expose = status < 500; + err.status = err.statusCode = status; + } + for (var key in props) { + if (key !== "status" && key !== "statusCode") { + err[key] = props[key]; + } + } + return err; + } + function createHttpErrorConstructor() { + function HttpError() { + throw new TypeError("cannot construct abstract class"); + } + inherits(HttpError, Error); + return HttpError; + } + function createClientErrorConstructor(HttpError, name, code) { + var className = toClassName(name); + function ClientError(message) { + var msg = message != null ? message : statuses.message[code]; + var err = new Error(msg); + Error.captureStackTrace(err, ClientError); + setPrototypeOf(err, ClientError.prototype); + Object.defineProperty(err, "message", { + enumerable: true, + configurable: true, + value: msg, + writable: true + }); + Object.defineProperty(err, "name", { + enumerable: false, + configurable: true, + value: className, + writable: true + }); + return err; + } + inherits(ClientError, HttpError); + nameFunc(ClientError, className); + ClientError.prototype.status = code; + ClientError.prototype.statusCode = code; + ClientError.prototype.expose = true; + return ClientError; + } + function createIsHttpErrorFunction(HttpError) { + return function isHttpError(val) { + if (!val || typeof val !== "object") { + return false; + } + if (val instanceof HttpError) { + return true; + } + return val instanceof Error && typeof val.expose === "boolean" && typeof val.statusCode === "number" && val.status === val.statusCode; + }; + } + function createServerErrorConstructor(HttpError, name, code) { + var className = toClassName(name); + function ServerError(message) { + var msg = message != null ? message : statuses.message[code]; + var err = new Error(msg); + Error.captureStackTrace(err, ServerError); + setPrototypeOf(err, ServerError.prototype); + Object.defineProperty(err, "message", { + enumerable: true, + configurable: true, + value: msg, + writable: true + }); + Object.defineProperty(err, "name", { + enumerable: false, + configurable: true, + value: className, + writable: true + }); + return err; + } + inherits(ServerError, HttpError); + nameFunc(ServerError, className); + ServerError.prototype.status = code; + ServerError.prototype.statusCode = code; + ServerError.prototype.expose = false; + return ServerError; + } + function nameFunc(func, name) { + var desc = Object.getOwnPropertyDescriptor(func, "name"); + if (desc && desc.configurable) { + desc.value = name; + Object.defineProperty(func, "name", desc); + } + } + function populateConstructorExports(exports2, codes, HttpError) { + codes.forEach(function forEachCode(code) { + var CodeError; + var name = toIdentifier(statuses.message[code]); + switch (codeClass(code)) { + case 400: + CodeError = createClientErrorConstructor(HttpError, name, code); + break; + case 500: + CodeError = createServerErrorConstructor(HttpError, name, code); + break; + } + if (CodeError) { + exports2[code] = CodeError; + exports2[name] = CodeError; + } + }); + } + function toClassName(name) { + return name.substr(-5) !== "Error" ? name + "Error" : name; + } + } +}); + +// node_modules/body-parser/node_modules/ms/index.js +var require_ms = __commonJS({ + "node_modules/body-parser/node_modules/ms/index.js"(exports, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + "d"; + } + if (ms >= h) { + return Math.round(ms / h) + "h"; + } + if (ms >= m) { + return Math.round(ms / m) + "m"; + } + if (ms >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms"; + } + function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + " " + name; + } + return Math.ceil(ms / n) + " " + name + "s"; + } + } +}); + +// node_modules/body-parser/node_modules/debug/src/debug.js +var require_debug = __commonJS({ + "node_modules/body-parser/node_modules/debug/src/debug.js"(exports, module2) { + exports = module2.exports = createDebug.debug = createDebug["default"] = createDebug; + exports.coerce = coerce; + exports.disable = disable; + exports.enable = enable; + exports.enabled = enabled; + exports.humanize = require_ms(); + exports.names = []; + exports.skips = []; + exports.formatters = {}; + var prevTime; + function selectColor(namespace) { + var hash = 0, i; + for (i in namespace) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return exports.colors[Math.abs(hash) % exports.colors.length]; + } + function createDebug(namespace) { + function debug() { + if (!debug.enabled) + return; + var self2 = debug; + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + args[0] = exports.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + if (match === "%%") + return match; + index++; + var formatter = exports.formatters[format]; + if (typeof formatter === "function") { + var val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + exports.formatArgs.call(self2, args); + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self2, args); + } + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + if (typeof exports.init === "function") { + exports.init(debug); + } + return debug; + } + function enable(namespaces) { + exports.save(namespaces); + exports.names = []; + exports.skips = []; + var split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); + var len = split.length; + for (var i = 0; i < len; i++) { + if (!split[i]) + continue; + namespaces = split[i].replace(/\*/g, ".*?"); + if (namespaces[0] === "-") { + exports.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); + } else { + exports.names.push(new RegExp("^" + namespaces + "$")); + } + } + } + function disable() { + exports.enable(""); + } + function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) + return val.stack || val.message; + return val; + } + } +}); + +// node_modules/body-parser/node_modules/debug/src/browser.js +var require_browser = __commonJS({ + "node_modules/body-parser/node_modules/debug/src/browser.js"(exports, module2) { + exports = module2.exports = require_debug(); + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = typeof chrome != "undefined" && typeof chrome.storage != "undefined" ? chrome.storage.local : localstorage(); + exports.colors = [ + "lightseagreen", + "forestgreen", + "goldenrod", + "dodgerblue", + "darkorchid", + "crimson" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { + return true; + } + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return "[UnexpectedJSONParseError]: " + err.message; + } + }; + function formatArgs(args) { + var useColors2 = this.useColors; + args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports.humanize(this.diff); + if (!useColors2) + return; + var c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if (match === "%%") + return; + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + function log() { + return typeof console === "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function save(namespaces) { + try { + if (namespaces == null) { + exports.storage.removeItem("debug"); + } else { + exports.storage.debug = namespaces; + } + } catch (e) { + } + } + function load() { + var r; + try { + r = exports.storage.debug; + } catch (e) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + exports.enable(load()); + function localstorage() { + try { + return window.localStorage; + } catch (e) { + } + } + } +}); + +// node_modules/body-parser/node_modules/debug/src/node.js +var require_node = __commonJS({ + "node_modules/body-parser/node_modules/debug/src/node.js"(exports, module2) { + var tty = require("tty"); + var util = require("util"); + exports = module2.exports = require_debug(); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.colors = [6, 2, 3, 4, 5, 1]; + exports.inspectOpts = Object.keys(process.env).filter(function(key) { + return /^debug_/i.test(key); + }).reduce(function(obj, key) { + var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function(_, k) { + return k.toUpperCase(); + }); + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) + val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) + val = false; + else if (val === "null") + val = null; + else + val = Number(val); + obj[prop] = val; + return obj; + }, {}); + var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + if (fd !== 1 && fd !== 2) { + util.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + } + var stream = fd === 1 ? process.stdout : fd === 2 ? process.stderr : createWritableStdioStream(fd); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(fd); + } + exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map(function(str) { + return str.trim(); + }).join(" "); + }; + exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + function formatArgs(args) { + var name = this.namespace; + var useColors2 = this.useColors; + if (useColors2) { + var c = this.color; + var prefix = " [3" + c + ";1m" + name + " "; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push("[3" + c + "m+" + exports.humanize(this.diff) + ""); + } else { + args[0] = new Date().toUTCString() + " " + name + " " + args[0]; + } + } + function log() { + return stream.write(util.format.apply(util, arguments) + "\n"); + } + function save(namespaces) { + if (namespaces == null) { + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } + } + function load() { + return process.env.DEBUG; + } + function createWritableStdioStream(fd2) { + var stream2; + var tty_wrap = process.binding("tty_wrap"); + switch (tty_wrap.guessHandleType(fd2)) { + case "TTY": + stream2 = new tty.WriteStream(fd2); + stream2._type = "tty"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + case "FILE": + var fs = require("fs"); + stream2 = new fs.SyncWriteStream(fd2, { autoClose: false }); + stream2._type = "fs"; + break; + case "PIPE": + case "TCP": + var net = require("net"); + stream2 = new net.Socket({ + fd: fd2, + readable: false, + writable: true + }); + stream2.readable = false; + stream2.read = null; + stream2._type = "pipe"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + stream2.fd = fd2; + stream2._isStdio = true; + return stream2; + } + function init(debug) { + debug.inspectOpts = {}; + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } + } + exports.enable(load()); + } +}); + +// node_modules/body-parser/node_modules/debug/src/index.js +var require_src = __commonJS({ + "node_modules/body-parser/node_modules/debug/src/index.js"(exports, module2) { + if (typeof process !== "undefined" && process.type === "renderer") { + module2.exports = require_browser(); + } else { + module2.exports = require_node(); + } + } +}); + +// node_modules/destroy/index.js +var require_destroy = __commonJS({ + "node_modules/destroy/index.js"(exports, module2) { + "use strict"; + var EventEmitter = require("events").EventEmitter; + var ReadStream = require("fs").ReadStream; + var Stream = require("stream"); + var Zlib = require("zlib"); + module2.exports = destroy; + function destroy(stream, suppress) { + if (isFsReadStream(stream)) { + destroyReadStream(stream); + } else if (isZlibStream(stream)) { + destroyZlibStream(stream); + } else if (hasDestroy(stream)) { + stream.destroy(); + } + if (isEventEmitter(stream) && suppress) { + stream.removeAllListeners("error"); + stream.addListener("error", noop); + } + return stream; + } + function destroyReadStream(stream) { + stream.destroy(); + if (typeof stream.close === "function") { + stream.on("open", onOpenClose); + } + } + function closeZlibStream(stream) { + if (stream._hadError === true) { + var prop = stream._binding === null ? "_binding" : "_handle"; + stream[prop] = { + close: function() { + this[prop] = null; + } + }; + } + stream.close(); + } + function destroyZlibStream(stream) { + if (typeof stream.destroy === "function") { + if (stream._binding) { + stream.destroy(); + if (stream._processing) { + stream._needDrain = true; + stream.once("drain", onDrainClearBinding); + } else { + stream._binding.clear(); + } + } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) { + stream.destroy(); + } else if (stream._destroy && typeof stream.close === "function") { + stream.destroyed = true; + stream.close(); + } else { + stream.destroy(); + } + } else if (typeof stream.close === "function") { + closeZlibStream(stream); + } + } + function hasDestroy(stream) { + return stream instanceof Stream && typeof stream.destroy === "function"; + } + function isEventEmitter(val) { + return val instanceof EventEmitter; + } + function isFsReadStream(stream) { + return stream instanceof ReadStream; + } + function isZlibStream(stream) { + return stream instanceof Zlib.Gzip || stream instanceof Zlib.Gunzip || stream instanceof Zlib.Deflate || stream instanceof Zlib.DeflateRaw || stream instanceof Zlib.Inflate || stream instanceof Zlib.InflateRaw || stream instanceof Zlib.Unzip; + } + function noop() { + } + function onDrainClearBinding() { + this._binding.clear(); + } + function onOpenClose() { + if (typeof this.fd === "number") { + this.close(); + } + } + } +}); + +// node_modules/safer-buffer/safer.js +var require_safer = __commonJS({ + "node_modules/safer-buffer/safer.js"(exports, module2) { + "use strict"; + var buffer = require("buffer"); + var Buffer2 = buffer.Buffer; + var safer = {}; + var key; + for (key in buffer) { + if (!buffer.hasOwnProperty(key)) + continue; + if (key === "SlowBuffer" || key === "Buffer") + continue; + safer[key] = buffer[key]; + } + var Safer = safer.Buffer = {}; + for (key in Buffer2) { + if (!Buffer2.hasOwnProperty(key)) + continue; + if (key === "allocUnsafe" || key === "allocUnsafeSlow") + continue; + Safer[key] = Buffer2[key]; + } + safer.Buffer.prototype = Buffer2.prototype; + if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function(value, encodingOrOffset, length) { + if (typeof value === "number") { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); + } + if (value && typeof value.length === "undefined") { + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + return Buffer2(value, encodingOrOffset, length); + }; + } + if (!Safer.alloc) { + Safer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + var buf = Buffer2(size); + if (!fill || fill.length === 0) { + buf.fill(0); + } else if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + return buf; + }; + } + if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding("buffer").kStringMaxLength; + } catch (e) { + } + } + if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + }; + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; + } + } + module2.exports = safer; + } +}); + +// node_modules/iconv-lite/lib/bom-handling.js +var require_bom_handling = __commonJS({ + "node_modules/iconv-lite/lib/bom-handling.js"(exports) { + "use strict"; + var BOMChar = "\uFEFF"; + exports.PrependBOM = PrependBOMWrapper; + function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; + } + PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + return this.encoder.write(str); + }; + PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); + }; + exports.StripBOM = StripBOMWrapper; + function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; + } + StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === "function") + this.options.stripBOM(); + } + this.pass = true; + return res; + }; + StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); + }; + } +}); + +// node_modules/iconv-lite/encodings/internal.js +var require_internal = __commonJS({ + "node_modules/iconv-lite/encodings/internal.js"(exports, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module2.exports = { + utf8: { type: "_internal", bomAware: true }, + cesu8: { type: "_internal", bomAware: true }, + unicode11utf8: "utf8", + ucs2: { type: "_internal", bomAware: true }, + utf16le: "ucs2", + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + _internal: InternalCodec + }; + function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; + this.encoder = InternalEncoderCesu8; + if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } + } + InternalCodec.prototype.encoder = InternalEncoder; + InternalCodec.prototype.decoder = InternalDecoder; + var StringDecoder = require("string_decoder").StringDecoder; + if (!StringDecoder.prototype.end) + StringDecoder.prototype.end = function() { + }; + function InternalDecoder(options, codec) { + StringDecoder.call(this, codec.enc); + } + InternalDecoder.prototype = StringDecoder.prototype; + function InternalEncoder(options, codec) { + this.enc = codec.enc; + } + InternalEncoder.prototype.write = function(str) { + return Buffer2.from(str, this.enc); + }; + InternalEncoder.prototype.end = function() { + }; + function InternalEncoderBase64(options, codec) { + this.prevStr = ""; + } + InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - str.length % 4; + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + return Buffer2.from(str, "base64"); + }; + InternalEncoderBase64.prototype.end = function() { + return Buffer2.from(this.prevStr, "base64"); + }; + function InternalEncoderCesu8(options, codec) { + } + InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + if (charCode < 128) + buf[bufIdx++] = charCode; + else if (charCode < 2048) { + buf[bufIdx++] = 192 + (charCode >>> 6); + buf[bufIdx++] = 128 + (charCode & 63); + } else { + buf[bufIdx++] = 224 + (charCode >>> 12); + buf[bufIdx++] = 128 + (charCode >>> 6 & 63); + buf[bufIdx++] = 128 + (charCode & 63); + } + } + return buf.slice(0, bufIdx); + }; + InternalEncoderCesu8.prototype.end = function() { + }; + function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; + } + InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, res = ""; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 192) !== 128) { + if (contBytes > 0) { + res += this.defaultCharUnicode; + contBytes = 0; + } + if (curByte < 128) { + res += String.fromCharCode(curByte); + } else if (curByte < 224) { + acc = curByte & 31; + contBytes = 1; + accBytes = 1; + } else if (curByte < 240) { + acc = curByte & 15; + contBytes = 2; + accBytes = 1; + } else { + res += this.defaultCharUnicode; + } + } else { + if (contBytes > 0) { + acc = acc << 6 | curByte & 63; + contBytes--; + accBytes++; + if (contBytes === 0) { + if (accBytes === 2 && acc < 128 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 2048) + res += this.defaultCharUnicode; + else + res += String.fromCharCode(acc); + } + } else { + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; + this.contBytes = contBytes; + this.accBytes = accBytes; + return res; + }; + InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; + }; + } +}); + +// node_modules/iconv-lite/encodings/utf16.js +var require_utf16 = __commonJS({ + "node_modules/iconv-lite/encodings/utf16.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports.utf16be = Utf16BECodec; + function Utf16BECodec() { + } + Utf16BECodec.prototype.encoder = Utf16BEEncoder; + Utf16BECodec.prototype.decoder = Utf16BEDecoder; + Utf16BECodec.prototype.bomAware = true; + function Utf16BEEncoder() { + } + Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer2.from(str, "ucs2"); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; + buf[i] = buf[i + 1]; + buf[i + 1] = tmp; + } + return buf; + }; + Utf16BEEncoder.prototype.end = function() { + }; + function Utf16BEDecoder() { + this.overflowByte = -1; + } + Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ""; + var buf2 = Buffer2.alloc(buf.length + 1), i = 0, j = 0; + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; + j = 2; + } + for (; i < buf.length - 1; i += 2, j += 2) { + buf2[j] = buf[i + 1]; + buf2[j + 1] = buf[i]; + } + this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; + return buf2.slice(0, j).toString("ucs2"); + }; + Utf16BEDecoder.prototype.end = function() { + }; + exports.utf16 = Utf16Codec; + function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf16Codec.prototype.encoder = Utf16Encoder; + Utf16Codec.prototype.decoder = Utf16Decoder; + function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder("utf-16le", options); + } + Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf16Encoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBytes = []; + this.initialBytesLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBytes.push(buf); + this.initialBytesLen += buf.length; + if (this.initialBytesLen < 16) + return ""; + var buf = Buffer2.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + this.initialBytes.length = this.initialBytesLen = 0; + } + return this.decoder.write(buf); + }; + Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var buf = Buffer2.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var res = this.decoder.write(buf), trail = this.decoder.end(); + return trail ? res + trail : res; + } + return this.decoder.end(); + }; + function detectEncoding(buf, defaultEncoding) { + var enc = defaultEncoding || "utf-16le"; + if (buf.length >= 2) { + if (buf[0] == 254 && buf[1] == 255) + enc = "utf-16be"; + else if (buf[0] == 255 && buf[1] == 254) + enc = "utf-16le"; + else { + var asciiCharsLE = 0, asciiCharsBE = 0, _len = Math.min(buf.length - buf.length % 2, 64); + for (var i = 0; i < _len; i += 2) { + if (buf[i] === 0 && buf[i + 1] !== 0) + asciiCharsBE++; + if (buf[i] !== 0 && buf[i + 1] === 0) + asciiCharsLE++; + } + if (asciiCharsBE > asciiCharsLE) + enc = "utf-16be"; + else if (asciiCharsBE < asciiCharsLE) + enc = "utf-16le"; + } + } + return enc; + } + } +}); + +// node_modules/iconv-lite/encodings/utf7.js +var require_utf7 = __commonJS({ + "node_modules/iconv-lite/encodings/utf7.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports.utf7 = Utf7Codec; + exports.unicode11utf7 = "utf7"; + function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7Codec.prototype.encoder = Utf7Encoder; + Utf7Codec.prototype.decoder = Utf7Decoder; + Utf7Codec.prototype.bomAware = true; + var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; + } + Utf7Encoder.prototype.write = function(str) { + return Buffer2.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; + }.bind(this))); + }; + Utf7Encoder.prototype.end = function() { + }; + function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64Regex = /[A-Za-z0-9\/+]/; + var base64Chars = []; + for (i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + var i; + var plusChar = "+".charCodeAt(0); + var minusChar = "-".charCodeAt(0); + var andChar = "&".charCodeAt(0); + Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64Chars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "+"; + } else { + var b64str = base64Accum + buf.slice(lastI, i2).toString(); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) + i2--; + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + buf.slice(lastI).toString(); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + exports.utf7imap = Utf7IMAPCodec; + function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; + Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; + Utf7IMAPCodec.prototype.bomAware = true; + function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer2.alloc(6); + this.base64AccumIdx = 0; + } + Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, base64Accum = this.base64Accum, base64AccumIdx = this.base64AccumIdx, buf = Buffer2.alloc(str.length * 5 + 10), bufIdx = 0; + for (var i2 = 0; i2 < str.length; i2++) { + var uChar = str.charCodeAt(i2); + if (32 <= uChar && uChar <= 126) { + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + inBase64 = false; + } + if (!inBase64) { + buf[bufIdx++] = uChar; + if (uChar === andChar) + buf[bufIdx++] = minusChar; + } + } else { + if (!inBase64) { + buf[bufIdx++] = andChar; + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 255; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); + base64AccumIdx = 0; + } + } + } + } + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + return buf.slice(0, bufIdx); + }; + Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer2.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + this.base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + this.inBase64 = false; + } + return buf.slice(0, bufIdx); + }; + function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64IMAPChars = base64Chars.slice(); + base64IMAPChars[",".charCodeAt(0)] = true; + Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64IMAPChars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "&"; + } else { + var b64str = base64Accum + buf.slice(lastI, i2).toString().replace(/,/g, "/"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) + i2--; + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, "/"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + } +}); + +// node_modules/iconv-lite/encodings/sbcs-codec.js +var require_sbcs_codec = __commonJS({ + "node_modules/iconv-lite/encodings/sbcs-codec.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._sbcs = SBCSCodec; + function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data."); + if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) + throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; + } + this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2"); + var encodeBuf = Buffer2.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + this.encodeBuf = encodeBuf; + } + SBCSCodec.prototype.encoder = SBCSEncoder; + SBCSCodec.prototype.decoder = SBCSDecoder; + function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; + } + SBCSEncoder.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + return buf; + }; + SBCSEncoder.prototype.end = function() { + }; + function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; + } + SBCSDecoder.prototype.write = function(buf) { + var decodeBuf = this.decodeBuf; + var newBuf = Buffer2.alloc(buf.length * 2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i] * 2; + idx2 = i * 2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; + } + return newBuf.toString("ucs2"); + }; + SBCSDecoder.prototype.end = function() { + }; + } +}); + +// node_modules/iconv-lite/encodings/sbcs-data.js +var require_sbcs_data = __commonJS({ + "node_modules/iconv-lite/encodings/sbcs-data.js"(exports, module2) { + "use strict"; + module2.exports = { + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" + }, + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" + }, + "mik": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek": "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", + "cp819": "iso88591", + "ibm819": "iso88591", + "cyrillic": "iso88595", + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", + "greek": "iso88597", + "greek8": "iso88597", + "ecma118": "iso88597", + "elot928": "iso88597", + "hebrew": "iso88598", + "hebrew8": "iso88598", + "turkish": "iso88599", + "turkish8": "iso88599", + "thai": "iso885911", + "thai8": "iso885911", + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", + "strk10482002": "rk1048", + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", + "gb198880": "iso646cn", + "cn": "iso646cn", + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", + "mac": "macintosh", + "csmacintosh": "macintosh" + }; + } +}); + +// node_modules/iconv-lite/encodings/sbcs-data-generated.js +var require_sbcs_data_generated = __commonJS({ + "node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports, module2) { + "use strict"; + module2.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "macgreek": { + "type": "_sbcs", + "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" + }, + "maciceland": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macroman": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macromania": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macthai": { + "type": "_sbcs", + "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "macturkish": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macukraine": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "koi8r": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8u": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8t": { + "type": "_sbcs", + "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "armscii8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" + }, + "rk1048": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "georgianps": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "pt154": { + "type": "_sbcs", + "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "viscii": { + "type": "_sbcs", + "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "hproman8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" + }, + "macintosh": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "ascii": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "tis620": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + } + }; + } +}); + +// node_modules/iconv-lite/encodings/dbcs-codec.js +var require_dbcs_codec = __commonJS({ + "node_modules/iconv-lite/encodings/dbcs-codec.js"(exports) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports._dbcs = DBCSCodec; + var UNASSIGNED = -1; + var GB18030_CODE = -2; + var SEQ_START = -10; + var NODE_START = -1e3; + var UNASSIGNED_NODE = new Array(256); + var DEF_CHAR = -1; + for (i = 0; i < 256; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; + var i; + function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data."); + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); + var mappingTable = codecOptions.table(); + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); + this.decodeTableSeq = []; + for (var i2 = 0; i2 < mappingTable.length; i2++) + this._addDecodeChunk(mappingTable[i2]); + this.defaultCharUnicode = iconv.defaultCharUnicode; + this.encodeTable = []; + this.encodeTableSeq = []; + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { + var val = codecOptions.encodeSkipVals[i2]; + if (typeof val === "number") + skipEncodeChars[val] = true; + else + for (var j = val.from; j <= val.to; j++) + skipEncodeChars[j] = true; + } + this._fillEncodeTable(0, 0, skipEncodeChars); + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) + this.defCharSB = this.encodeTable[0]["?"]; + if (this.defCharSB === UNASSIGNED) + this.defCharSB = "?".charCodeAt(0); + if (typeof codecOptions.gb18030 === "function") { + this.gb18030 = codecOptions.gb18030(); + var thirdByteNodeIdx = this.decodeTables.length; + var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); + var fourthByteNodeIdx = this.decodeTables.length; + var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); + for (var i2 = 129; i2 <= 254; i2++) { + var secondByteNodeIdx = NODE_START - this.decodeTables[0][i2]; + var secondByteNode = this.decodeTables[secondByteNodeIdx]; + for (var j = 48; j <= 57; j++) + secondByteNode[j] = NODE_START - thirdByteNodeIdx; + } + for (var i2 = 129; i2 <= 254; i2++) + thirdByteNode[i2] = NODE_START - fourthByteNodeIdx; + for (var i2 = 48; i2 <= 57; i2++) + fourthByteNode[i2] = GB18030_CODE; + } + } + DBCSCodec.prototype.encoder = DBCSEncoder; + DBCSCodec.prototype.decoder = DBCSDecoder; + DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>= 8) + bytes.push(addr & 255); + if (bytes.length == 0) + bytes.push(0); + var node = this.decodeTables[0]; + for (var i2 = bytes.length - 1; i2 > 0; i2--) { + var val = node[bytes[i2]]; + if (val == UNASSIGNED) { + node[bytes[i2]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } else if (val <= NODE_START) { + node = this.decodeTables[NODE_START - val]; + } else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; + }; + DBCSCodec.prototype._addDecodeChunk = function(chunk) { + var curAddr = parseInt(chunk[0], 16); + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 255; + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { + for (var l = 0; l < part.length; ) { + var code = part.charCodeAt(l++); + if (55296 <= code && code < 56320) { + var codeTrail = part.charCodeAt(l++); + if (56320 <= codeTrail && codeTrail < 57344) + writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } else if (4080 < code && code <= 4095) { + var len = 4095 - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } else + writeTable[curAddr++] = code; + } + } else if (typeof part === "number") { + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + if (curAddr > 255) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); + }; + DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; + if (this.encodeTable[high] === void 0) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); + return this.encodeTable[high]; + }; + DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; + }; + DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + var node; + if (bucket[low] <= SEQ_START) { + node = this.encodeTableSeq[SEQ_START - bucket[low]]; + } else { + node = {}; + if (bucket[low] !== UNASSIGNED) + node[DEF_CHAR] = bucket[low]; + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + for (var j = 1; j < seq.length - 1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === "object") + node = oldVal; + else { + node = node[uCode] = {}; + if (oldVal !== void 0) + node[DEF_CHAR] = oldVal; + } + } + uCode = seq[seq.length - 1]; + node[uCode] = dbcsCode; + }; + DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + for (var i2 = 0; i2 < 256; i2++) { + var uCode = node[i2]; + var mbCode = prefix + i2; + if (skipEncodeChars[mbCode]) + continue; + if (uCode >= 0) + this._setEncodeChar(uCode, mbCode); + else if (uCode <= NODE_START) + this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); + else if (uCode <= SEQ_START) + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + } + }; + function DBCSEncoder(options, codec) { + this.leadSurrogate = -1; + this.seqObj = void 0; + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; + } + DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i2 = 0, j = 0; + while (true) { + if (nextChar === -1) { + if (i2 == str.length) + break; + var uCode = str.charCodeAt(i2++); + } else { + var uCode = nextChar; + nextChar = -1; + } + if (55296 <= uCode && uCode < 57344) { + if (uCode < 56320) { + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + uCode = UNASSIGNED; + } + } else { + if (leadSurrogate !== -1) { + uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); + leadSurrogate = -1; + } else { + uCode = UNASSIGNED; + } + } + } else if (leadSurrogate !== -1) { + nextChar = uCode; + uCode = UNASSIGNED; + leadSurrogate = -1; + } + var dbcsCode = UNASSIGNED; + if (seqObj !== void 0 && uCode != UNASSIGNED) { + var resCode = seqObj[uCode]; + if (typeof resCode === "object") { + seqObj = resCode; + continue; + } else if (typeof resCode == "number") { + dbcsCode = resCode; + } else if (resCode == void 0) { + resCode = seqObj[DEF_CHAR]; + if (resCode !== void 0) { + dbcsCode = resCode; + nextChar = uCode; + } else { + } + } + seqObj = void 0; + } else if (uCode >= 0) { + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== void 0) + dbcsCode = subtable[uCode & 255]; + if (dbcsCode <= SEQ_START) { + seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; + continue; + } + if (dbcsCode == UNASSIGNED && this.gb18030) { + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); + dbcsCode = dbcsCode % 12600; + newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); + dbcsCode = dbcsCode % 1260; + newBuf[j++] = 129 + Math.floor(dbcsCode / 10); + dbcsCode = dbcsCode % 10; + newBuf[j++] = 48 + dbcsCode; + continue; + } + } + } + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else if (dbcsCode < 65536) { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } else { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = dbcsCode >> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } + } + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === void 0) + return; + var newBuf = Buffer2.alloc(10), j = 0; + if (this.seqObj) { + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== void 0) { + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } + } else { + } + this.seqObj = void 0; + } + if (this.leadSurrogate !== -1) { + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.findIdx = findIdx; + function DBCSDecoder(options, codec) { + this.nodeIdx = 0; + this.prevBuf = Buffer2.alloc(0); + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; + } + DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer2.alloc(buf.length * 2), nodeIdx = this.nodeIdx, prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, seqStart = -this.prevBuf.length, uCode; + if (prevBufOffset > 0) + prevBuf = Buffer2.concat([prevBuf, buf.slice(0, 10)]); + for (var i2 = 0, j = 0; i2 < buf.length; i2++) { + var curByte = i2 >= 0 ? buf[i2] : prevBuf[i2 + prevBufOffset]; + var uCode = this.decodeTables[nodeIdx][curByte]; + if (uCode >= 0) { + } else if (uCode === UNASSIGNED) { + i2 = seqStart; + uCode = this.defaultCharUnicode.charCodeAt(0); + } else if (uCode === GB18030_CODE) { + var curSeq = seqStart >= 0 ? buf.slice(seqStart, i2 + 1) : prevBuf.slice(seqStart + prevBufOffset, i2 + 1 + prevBufOffset); + var ptr = (curSeq[0] - 129) * 12600 + (curSeq[1] - 48) * 1260 + (curSeq[2] - 129) * 10 + (curSeq[3] - 48); + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } else if (uCode <= NODE_START) { + nodeIdx = NODE_START - uCode; + continue; + } else if (uCode <= SEQ_START) { + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length - 1]; + } else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + if (uCode > 65535) { + uCode -= 65536; + var uCodeLead = 55296 + Math.floor(uCode / 1024); + newBuf[j++] = uCodeLead & 255; + newBuf[j++] = uCodeLead >> 8; + uCode = 56320 + uCode % 1024; + } + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + nodeIdx = 0; + seqStart = i2 + 1; + } + this.nodeIdx = nodeIdx; + this.prevBuf = seqStart >= 0 ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); + return newBuf.slice(0, j).toString("ucs2"); + }; + DBCSDecoder.prototype.end = function() { + var ret = ""; + while (this.prevBuf.length > 0) { + ret += this.defaultCharUnicode; + var buf = this.prevBuf.slice(1); + this.prevBuf = Buffer2.alloc(0); + this.nodeIdx = 0; + if (buf.length > 0) + ret += this.write(buf); + } + this.nodeIdx = 0; + return ret; + }; + function findIdx(table, val) { + if (table[0] > val) + return -1; + var l = 0, r = table.length; + while (l < r - 1) { + var mid = l + Math.floor((r - l + 1) / 2); + if (table[mid] <= val) + l = mid; + else + r = mid; + } + return l; + } + } +}); + +// node_modules/iconv-lite/encodings/tables/shiftjis.json +var require_shiftjis = __commonJS({ + "node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 128], + ["a1", "\uFF61", 62], + ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], + ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["81fc", "\u25EF"], + ["824f", "\uFF10", 9], + ["8260", "\uFF21", 25], + ["8281", "\uFF41", 25], + ["829f", "\u3041", 82], + ["8340", "\u30A1", 62], + ["8380", "\u30E0", 22], + ["839f", "\u0391", 16, "\u03A3", 6], + ["83bf", "\u03B1", 16, "\u03C3", 6], + ["8440", "\u0410", 5, "\u0401\u0416", 25], + ["8470", "\u0430", 5, "\u0451\u0436", 7], + ["8480", "\u043E", 17], + ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["8740", "\u2460", 19, "\u2160", 9], + ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["877e", "\u337B"], + ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], + ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], + ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], + ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], + ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], + ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], + ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], + ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], + ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], + ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], + ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], + ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], + ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], + ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], + ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], + ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], + ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], + ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], + ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], + ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], + ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], + ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], + ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], + ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], + ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], + ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], + ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], + ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], + ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], + ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], + ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], + ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], + ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], + ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], + ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], + ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["f040", "\uE000", 62], + ["f080", "\uE03F", 124], + ["f140", "\uE0BC", 62], + ["f180", "\uE0FB", 124], + ["f240", "\uE178", 62], + ["f280", "\uE1B7", 124], + ["f340", "\uE234", 62], + ["f380", "\uE273", 124], + ["f440", "\uE2F0", 62], + ["f480", "\uE32F", 124], + ["f540", "\uE3AC", 62], + ["f580", "\uE3EB", 124], + ["f640", "\uE468", 62], + ["f680", "\uE4A7", 124], + ["f740", "\uE524", 62], + ["f780", "\uE563", 124], + ["f840", "\uE5E0", 62], + ["f880", "\uE61F", 124], + ["f940", "\uE69C"], + ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], + ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], + ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], + ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], + ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/eucjp.json +var require_eucjp = __commonJS({ + "node_modules/iconv-lite/encodings/tables/eucjp.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8ea1", "\uFF61", 62], + ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], + ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["a2fe", "\u25EF"], + ["a3b0", "\uFF10", 9], + ["a3c1", "\uFF21", 25], + ["a3e1", "\uFF41", 25], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["ada1", "\u2460", 19, "\u2160", 9], + ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], + ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], + ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], + ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], + ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], + ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], + ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], + ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], + ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], + ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], + ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], + ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], + ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], + ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], + ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], + ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], + ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], + ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], + ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], + ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], + ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], + ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], + ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], + ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], + ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], + ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], + ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], + ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], + ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], + ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], + ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], + ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], + ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], + ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], + ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], + ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], + ["8fa2c2", "\xA1\xA6\xBF"], + ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], + ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], + ["8fa6e7", "\u038C"], + ["8fa6e9", "\u038E\u03AB"], + ["8fa6ec", "\u038F"], + ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], + ["8fa7c2", "\u0402", 10, "\u040E\u040F"], + ["8fa7f2", "\u0452", 10, "\u045E\u045F"], + ["8fa9a1", "\xC6\u0110"], + ["8fa9a4", "\u0126"], + ["8fa9a6", "\u0132"], + ["8fa9a8", "\u0141\u013F"], + ["8fa9ab", "\u014A\xD8\u0152"], + ["8fa9af", "\u0166\xDE"], + ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], + ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], + ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], + ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], + ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], + ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], + ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], + ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], + ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], + ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], + ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], + ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], + ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], + ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], + ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], + ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], + ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], + ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], + ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], + ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], + ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], + ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], + ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], + ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], + ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], + ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], + ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], + ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], + ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], + ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], + ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], + ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], + ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], + ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], + ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], + ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], + ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], + ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], + ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], + ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], + ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], + ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], + ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], + ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], + ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], + ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], + ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], + ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], + ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], + ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], + ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], + ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], + ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], + ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], + ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], + ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], + ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], + ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], + ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], + ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], + ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], + ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], + ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], + ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], + ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], + ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], + ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], + ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/cp936.json +var require_cp936 = __commonJS({ + "node_modules/iconv-lite/encodings/tables/cp936.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127, "\u20AC"], + ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], + ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], + ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], + ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], + ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], + ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], + ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], + ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], + ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], + ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], + ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], + ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], + ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], + ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], + ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], + ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], + ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], + ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], + ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], + ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], + ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], + ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], + ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], + ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], + ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], + ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], + ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], + ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], + ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], + ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], + ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], + ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], + ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], + ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], + ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], + ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], + ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], + ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], + ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], + ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], + ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], + ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], + ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], + ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], + ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], + ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], + ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], + ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], + ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], + ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], + ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], + ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], + ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], + ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], + ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], + ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], + ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], + ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], + ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], + ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], + ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], + ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], + ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], + ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], + ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], + ["a2a1", "\u2170", 9], + ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], + ["a2e5", "\u3220", 9], + ["a2f1", "\u2160", 11], + ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], + ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], + ["a6f4", "\uFE33\uFE34"], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], + ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], + ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], + ["a8bd", "\u0144\u0148"], + ["a8c0", "\u0261"], + ["a8c5", "\u3105", 36], + ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], + ["a959", "\u2121\u3231"], + ["a95c", "\u2010"], + ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], + ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], + ["a996", "\u3007"], + ["a9a4", "\u2500", 75], + ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], + ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], + ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], + ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], + ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], + ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], + ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], + ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], + ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], + ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], + ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], + ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], + ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], + ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], + ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], + ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], + ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], + ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], + ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], + ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], + ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], + ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], + ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], + ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], + ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], + ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], + ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], + ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], + ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], + ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], + ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], + ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], + ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], + ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], + ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], + ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], + ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], + ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], + ["bd40", "\u7D37", 54, "\u7D6F", 7], + ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], + ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], + ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], + ["bf40", "\u7DFB", 62], + ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], + ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], + ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], + ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], + ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], + ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], + ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], + ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], + ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], + ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], + ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], + ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], + ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], + ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], + ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], + ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], + ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], + ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], + ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], + ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], + ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], + ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], + ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], + ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], + ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], + ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], + ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], + ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], + ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], + ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], + ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], + ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], + ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], + ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], + ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], + ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], + ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], + ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], + ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], + ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], + ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], + ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], + ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], + ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], + ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], + ["d640", "\u8AE4", 34, "\u8B08", 27], + ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], + ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], + ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], + ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], + ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], + ["d940", "\u8CAE", 62], + ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], + ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], + ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], + ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], + ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], + ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], + ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], + ["dd40", "\u8EE5", 62], + ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], + ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], + ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], + ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], + ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], + ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], + ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], + ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], + ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], + ["e240", "\u91E6", 62], + ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], + ["e340", "\u9246", 45, "\u9275", 16], + ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], + ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], + ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], + ["e540", "\u930A", 51, "\u933F", 10], + ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], + ["e640", "\u936C", 34, "\u9390", 27], + ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], + ["e740", "\u93CE", 7, "\u93D7", 54], + ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], + ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], + ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], + ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], + ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], + ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], + ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], + ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], + ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], + ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], + ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], + ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], + ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], + ["ee40", "\u980F", 62], + ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], + ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], + ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], + ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], + ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], + ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], + ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], + ["f240", "\u99FA", 62], + ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], + ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], + ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], + ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], + ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], + ["f540", "\u9B7C", 62], + ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], + ["f640", "\u9BDC", 62], + ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], + ["f740", "\u9C3C", 62], + ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], + ["f840", "\u9CE3", 62], + ["f880", "\u9D22", 32], + ["f940", "\u9D43", 62], + ["f980", "\u9D82", 32], + ["fa40", "\u9DA3", 62], + ["fa80", "\u9DE2", 32], + ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], + ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], + ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], + ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], + ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], + ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], + ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/gbk-added.json +var require_gbk_added = __commonJS({ + "node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports, module2) { + module2.exports = [ + ["a140", "\uE4C6", 62], + ["a180", "\uE505", 32], + ["a240", "\uE526", 62], + ["a280", "\uE565", 32], + ["a2ab", "\uE766", 5], + ["a2e3", "\u20AC\uE76D"], + ["a2ef", "\uE76E\uE76F"], + ["a2fd", "\uE770\uE771"], + ["a340", "\uE586", 62], + ["a380", "\uE5C5", 31, "\u3000"], + ["a440", "\uE5E6", 62], + ["a480", "\uE625", 32], + ["a4f4", "\uE772", 10], + ["a540", "\uE646", 62], + ["a580", "\uE685", 32], + ["a5f7", "\uE77D", 7], + ["a640", "\uE6A6", 62], + ["a680", "\uE6E5", 32], + ["a6b9", "\uE785", 7], + ["a6d9", "\uE78D", 6], + ["a6ec", "\uE794\uE795"], + ["a6f3", "\uE796"], + ["a6f6", "\uE797", 8], + ["a740", "\uE706", 62], + ["a780", "\uE745", 32], + ["a7c2", "\uE7A0", 14], + ["a7f2", "\uE7AF", 12], + ["a896", "\uE7BC", 10], + ["a8bc", "\uE7C7"], + ["a8bf", "\u01F9"], + ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], + ["a8ea", "\uE7CD", 20], + ["a958", "\uE7E2"], + ["a95b", "\uE7E3"], + ["a95d", "\uE7E4\uE7E5\uE7E6"], + ["a989", "\u303E\u2FF0", 11], + ["a997", "\uE7F4", 12], + ["a9f0", "\uE801", 14], + ["aaa1", "\uE000", 93], + ["aba1", "\uE05E", 93], + ["aca1", "\uE0BC", 93], + ["ada1", "\uE11A", 93], + ["aea1", "\uE178", 93], + ["afa1", "\uE1D6", 93], + ["d7fa", "\uE810", 4], + ["f8a1", "\uE234", 93], + ["f9a1", "\uE292", 93], + ["faa1", "\uE2F0", 93], + ["fba1", "\uE34E", 93], + ["fca1", "\uE3AC", 93], + ["fda1", "\uE40A", 93], + ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], + ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +var require_gb18030_ranges = __commonJS({ + "node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports, module2) { + module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; + } +}); + +// node_modules/iconv-lite/encodings/tables/cp949.json +var require_cp949 = __commonJS({ + "node_modules/iconv-lite/encodings/tables/cp949.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], + ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], + ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], + ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], + ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], + ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], + ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], + ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], + ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], + ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], + ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], + ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], + ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], + ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], + ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], + ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], + ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], + ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], + ["8741", "\uB19E", 9, "\uB1A9", 15], + ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], + ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], + ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], + ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], + ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], + ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], + ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], + ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], + ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], + ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], + ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], + ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], + ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], + ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], + ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], + ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], + ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], + ["8d41", "\uB6C3", 16, "\uB6D5", 8], + ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], + ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], + ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], + ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], + ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], + ["8f41", "\uB885", 7, "\uB88E", 17], + ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], + ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], + ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], + ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], + ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], + ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], + ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], + ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], + ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], + ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], + ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], + ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], + ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], + ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], + ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], + ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], + ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], + ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], + ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], + ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], + ["9641", "\uBEB8", 23, "\uBED2\uBED3"], + ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], + ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], + ["9741", "\uBF83", 16, "\uBF95", 8], + ["9761", "\uBF9E", 17, "\uBFB1", 7], + ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], + ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], + ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], + ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], + ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], + ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], + ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], + ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], + ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], + ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], + ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], + ["9b61", "\uC333", 17, "\uC346", 7], + ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], + ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], + ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], + ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], + ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], + ["9d61", "\uC4C6", 25], + ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], + ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], + ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], + ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], + ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], + ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], + ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], + ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], + ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], + ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], + ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], + ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], + ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], + ["a241", "\uC910\uC912", 5, "\uC919", 18], + ["a261", "\uC92D", 6, "\uC935", 18], + ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], + ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], + ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], + ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], + ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], + ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], + ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], + ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], + ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], + ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], + ["a5b0", "\u2160", 9], + ["a5c1", "\u0391", 16, "\u03A3", 6], + ["a5e1", "\u03B1", 16, "\u03C3", 6], + ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], + ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], + ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], + ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], + ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], + ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], + ["a841", "\uCB6D", 10, "\uCB7A", 14], + ["a861", "\uCB89", 18, "\uCB9D", 6], + ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], + ["a8a6", "\u0132"], + ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], + ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], + ["a941", "\uCBC5", 14, "\uCBD5", 10], + ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], + ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], + ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], + ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], + ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], + ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], + ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], + ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], + ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], + ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], + ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], + ["acd1", "\u0430", 5, "\u0451\u0436", 25], + ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], + ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], + ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], + ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], + ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], + ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], + ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], + ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], + ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], + ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], + ["b061", "\uCEBB", 5, "\uCEC2", 19], + ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], + ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], + ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], + ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], + ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], + ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], + ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], + ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], + ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], + ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], + ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], + ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], + ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], + ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], + ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], + ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], + ["b641", "\uD105", 7, "\uD10E", 17], + ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], + ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], + ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], + ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], + ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], + ["b841", "\uD1D0", 7, "\uD1D9", 17], + ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], + ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], + ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], + ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], + ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], + ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], + ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], + ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], + ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], + ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], + ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], + ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], + ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], + ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], + ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], + ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], + ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], + ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], + ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], + ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], + ["bf41", "\uD49E", 10, "\uD4AA", 14], + ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], + ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], + ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], + ["c061", "\uD51E", 25], + ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], + ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], + ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], + ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], + ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], + ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], + ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], + ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], + ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], + ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], + ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], + ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], + ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], + ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], + ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], + ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], + ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], + ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], + ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], + ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], + ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], + ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], + ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], + ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], + ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], + ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], + ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], + ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], + ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], + ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], + ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], + ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], + ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], + ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], + ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], + ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], + ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], + ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], + ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], + ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], + ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], + ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], + ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], + ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], + ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], + ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], + ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], + ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], + ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], + ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], + ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], + ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], + ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], + ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], + ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], + ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], + ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], + ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], + ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], + ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], + ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], + ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], + ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], + ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], + ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], + ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], + ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], + ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], + ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], + ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], + ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], + ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/cp950.json +var require_cp950 = __commonJS({ + "node_modules/iconv-lite/encodings/tables/cp950.json"(exports, module2) { + module2.exports = [ + ["0", "\0", 127], + ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], + ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], + ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], + ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], + ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], + ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], + ["a3e1", "\u20AC"], + ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], + ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], + ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], + ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], + ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], + ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], + ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], + ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], + ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], + ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], + ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], + ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], + ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], + ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], + ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], + ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], + ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], + ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], + ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], + ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], + ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], + ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], + ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], + ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], + ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], + ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], + ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], + ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], + ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], + ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], + ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], + ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], + ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], + ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], + ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], + ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], + ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], + ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], + ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], + ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], + ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], + ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], + ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], + ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], + ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], + ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], + ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], + ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], + ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], + ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], + ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], + ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], + ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], + ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], + ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], + ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], + ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], + ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], + ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], + ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], + ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], + ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], + ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], + ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], + ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], + ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], + ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], + ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], + ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], + ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], + ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], + ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], + ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], + ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], + ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], + ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], + ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], + ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], + ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], + ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], + ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], + ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], + ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], + ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], + ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], + ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], + ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], + ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], + ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], + ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], + ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], + ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], + ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], + ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], + ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], + ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], + ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], + ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], + ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], + ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], + ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], + ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], + ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], + ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], + ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], + ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], + ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], + ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], + ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], + ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], + ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], + ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], + ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], + ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], + ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], + ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], + ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], + ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], + ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], + ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], + ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], + ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], + ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], + ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], + ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], + ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], + ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], + ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], + ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], + ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], + ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], + ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], + ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], + ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], + ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], + ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], + ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], + ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], + ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], + ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], + ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], + ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], + ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], + ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], + ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], + ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], + ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], + ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], + ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], + ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], + ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], + ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], + ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], + ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], + ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], + ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], + ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], + ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], + ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], + ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], + ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], + ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], + ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], + ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], + ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], + ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], + ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/tables/big5-added.json +var require_big5_added = __commonJS({ + "node_modules/iconv-lite/encodings/tables/big5-added.json"(exports, module2) { + module2.exports = [ + ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], + ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], + ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], + ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], + ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], + ["8940", "\u{2A3A9}\u{21145}"], + ["8943", "\u650A"], + ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], + ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], + ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], + ["89ab", "\u918C\u78B8\u915E\u80BC"], + ["89b0", "\u8D0B\u80F6\u{209E7}"], + ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], + ["89c1", "\u6E9A\u823E\u7519"], + ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], + ["8a40", "\u{27D84}\u5525"], + ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], + ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], + ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], + ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], + ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], + ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], + ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], + ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], + ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], + ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], + ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], + ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], + ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], + ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], + ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], + ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], + ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], + ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], + ["8cc9", "\u9868\u676B\u4276\u573D"], + ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], + ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], + ["8d40", "\u{20B9F}"], + ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], + ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], + ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], + ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], + ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], + ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], + ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], + ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], + ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], + ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], + ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], + ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], + ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], + ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], + ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], + ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], + ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], + ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], + ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], + ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], + ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], + ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], + ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], + ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], + ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], + ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], + ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], + ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], + ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], + ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], + ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], + ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], + ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], + ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], + ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], + ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], + ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], + ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], + ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], + ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], + ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], + ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], + ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], + ["9fae", "\u9159\u9681\u915C"], + ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], + ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], + ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], + ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], + ["9fe7", "\u6BFA\u8818\u7F78"], + ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], + ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], + ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], + ["a055", "\u{2183B}\u{26E05}"], + ["a058", "\u8A7E\u{2251B}"], + ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], + ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], + ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], + ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], + ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], + ["a0ae", "\u77FE"], + ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], + ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], + ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], + ["a3c0", "\u2400", 31, "\u2421"], + ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], + ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], + ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], + ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], + ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], + ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], + ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], + ["f9fe", "\uFFED"], + ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], + ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], + ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], + ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], + ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], + ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], + ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], + ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], + ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], + ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] + ]; + } +}); + +// node_modules/iconv-lite/encodings/dbcs-data.js +var require_dbcs_data = __commonJS({ + "node_modules/iconv-lite/encodings/dbcs-data.js"(exports, module2) { + "use strict"; + module2.exports = { + "shiftjis": { + type: "_dbcs", + table: function() { + return require_shiftjis(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 }, + encodeSkipVals: [{ from: 60736, to: 63808 }] + }, + "csshiftjis": "shiftjis", + "mskanji": "shiftjis", + "sjis": "shiftjis", + "windows31j": "shiftjis", + "ms31j": "shiftjis", + "xsjis": "shiftjis", + "windows932": "shiftjis", + "ms932": "shiftjis", + "932": "shiftjis", + "cp932": "shiftjis", + "eucjp": { + type: "_dbcs", + table: function() { + return require_eucjp(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 } + }, + "gb2312": "cp936", + "gb231280": "cp936", + "gb23121980": "cp936", + "csgb2312": "cp936", + "csiso58gb231280": "cp936", + "euccn": "cp936", + "windows936": "cp936", + "ms936": "cp936", + "936": "cp936", + "cp936": { + type: "_dbcs", + table: function() { + return require_cp936(); + } + }, + "gbk": { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + } + }, + "xgbk": "gbk", + "isoir58": "gbk", + "gb18030": { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + }, + gb18030: function() { + return require_gb18030_ranges(); + }, + encodeSkipVals: [128], + encodeAdd: { "\u20AC": 41699 } + }, + "chinese": "gb18030", + "windows949": "cp949", + "ms949": "cp949", + "949": "cp949", + "cp949": { + type: "_dbcs", + table: function() { + return require_cp949(); + } + }, + "cseuckr": "cp949", + "csksc56011987": "cp949", + "euckr": "cp949", + "isoir149": "cp949", + "korean": "cp949", + "ksc56011987": "cp949", + "ksc56011989": "cp949", + "ksc5601": "cp949", + "windows950": "cp950", + "ms950": "cp950", + "950": "cp950", + "cp950": { + type: "_dbcs", + table: function() { + return require_cp950(); + } + }, + "big5": "big5hkscs", + "big5hkscs": { + type: "_dbcs", + table: function() { + return require_cp950().concat(require_big5_added()); + }, + encodeSkipVals: [41676] + }, + "cnbig5": "big5hkscs", + "csbig5": "big5hkscs", + "xxbig5": "big5hkscs" + }; + } +}); + +// node_modules/iconv-lite/encodings/index.js +var require_encodings = __commonJS({ + "node_modules/iconv-lite/encodings/index.js"(exports, module2) { + "use strict"; + var modules = [ + require_internal(), + require_utf16(), + require_utf7(), + require_sbcs_codec(), + require_sbcs_data(), + require_sbcs_data_generated(), + require_dbcs_codec(), + require_dbcs_data() + ]; + for (i = 0; i < modules.length; i++) { + module2 = modules[i]; + for (enc in module2) + if (Object.prototype.hasOwnProperty.call(module2, enc)) + exports[enc] = module2[enc]; + } + var module2; + var enc; + var i; + } +}); + +// node_modules/iconv-lite/lib/streams.js +var require_streams = __commonJS({ + "node_modules/iconv-lite/lib/streams.js"(exports, module2) { + "use strict"; + var Buffer2 = require("buffer").Buffer; + var Transform = require("stream").Transform; + module2.exports = function(iconv) { + iconv.encodeStream = function encodeStream(encoding, options) { + return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + }; + iconv.decodeStream = function decodeStream(encoding, options) { + return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + }; + iconv.supportsStreams = true; + iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; + iconv._collect = IconvLiteDecoderStream.prototype.collect; + }; + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; + Transform.call(this, options); + } + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != "string") + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) + this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) + this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on("error", cb); + this.on("data", function(chunk) { + chunks.push(chunk); + }); + this.on("end", function() { + cb(null, Buffer2.concat(chunks)); + }); + return this; + }; + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = "utf8"; + Transform.call(this, options); + } + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer2.isBuffer(chunk)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) + this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) + this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ""; + this.on("error", cb); + this.on("data", function(chunk) { + res += chunk; + }); + this.on("end", function() { + cb(null, res); + }); + return this; + }; + } +}); + +// node_modules/iconv-lite/lib/extend-node.js +var require_extend_node = __commonJS({ + "node_modules/iconv-lite/lib/extend-node.js"(exports, module2) { + "use strict"; + var Buffer2 = require("buffer").Buffer; + module2.exports = function(iconv) { + var original = void 0; + iconv.supportsNodeEncodingsExtension = !(Buffer2.from || new Buffer2(0) instanceof Uint8Array); + iconv.extendNodeEncodings = function extendNodeEncodings() { + if (original) + return; + original = {}; + if (!iconv.supportsNodeEncodingsExtension) { + console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); + console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); + return; + } + var nodeNativeEncodings = { + "hex": true, + "utf8": true, + "utf-8": true, + "ascii": true, + "binary": true, + "base64": true, + "ucs2": true, + "ucs-2": true, + "utf16le": true, + "utf-16le": true + }; + Buffer2.isNativeEncoding = function(enc) { + return enc && nodeNativeEncodings[enc.toLowerCase()]; + }; + var SlowBuffer = require("buffer").SlowBuffer; + original.SlowBufferToString = SlowBuffer.prototype.toString; + SlowBuffer.prototype.toString = function(encoding, start, end) { + encoding = String(encoding || "utf8").toLowerCase(); + if (Buffer2.isNativeEncoding(encoding)) + return original.SlowBufferToString.call(this, encoding, start, end); + if (typeof start == "undefined") + start = 0; + if (typeof end == "undefined") + end = this.length; + return iconv.decode(this.slice(start, end), encoding); + }; + original.SlowBufferWrite = SlowBuffer.prototype.write; + SlowBuffer.prototype.write = function(string, offset, length, encoding) { + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length; + length = void 0; + } + } else { + var swap = encoding; + encoding = offset; + offset = length; + length = swap; + } + offset = +offset || 0; + var remaining = this.length - offset; + if (!length) { + length = remaining; + } else { + length = +length; + if (length > remaining) { + length = remaining; + } + } + encoding = String(encoding || "utf8").toLowerCase(); + if (Buffer2.isNativeEncoding(encoding)) + return original.SlowBufferWrite.call(this, string, offset, length, encoding); + if (string.length > 0 && (length < 0 || offset < 0)) + throw new RangeError("attempt to write beyond buffer bounds"); + var buf = iconv.encode(string, encoding); + if (buf.length < length) + length = buf.length; + buf.copy(this, offset, 0, length); + return length; + }; + original.BufferIsEncoding = Buffer2.isEncoding; + Buffer2.isEncoding = function(encoding) { + return Buffer2.isNativeEncoding(encoding) || iconv.encodingExists(encoding); + }; + original.BufferByteLength = Buffer2.byteLength; + Buffer2.byteLength = SlowBuffer.byteLength = function(str, encoding) { + encoding = String(encoding || "utf8").toLowerCase(); + if (Buffer2.isNativeEncoding(encoding)) + return original.BufferByteLength.call(this, str, encoding); + return iconv.encode(str, encoding).length; + }; + original.BufferToString = Buffer2.prototype.toString; + Buffer2.prototype.toString = function(encoding, start, end) { + encoding = String(encoding || "utf8").toLowerCase(); + if (Buffer2.isNativeEncoding(encoding)) + return original.BufferToString.call(this, encoding, start, end); + if (typeof start == "undefined") + start = 0; + if (typeof end == "undefined") + end = this.length; + return iconv.decode(this.slice(start, end), encoding); + }; + original.BufferWrite = Buffer2.prototype.write; + Buffer2.prototype.write = function(string, offset, length, encoding) { + var _offset = offset, _length = length, _encoding = encoding; + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length; + length = void 0; + } + } else { + var swap = encoding; + encoding = offset; + offset = length; + length = swap; + } + encoding = String(encoding || "utf8").toLowerCase(); + if (Buffer2.isNativeEncoding(encoding)) + return original.BufferWrite.call(this, string, _offset, _length, _encoding); + offset = +offset || 0; + var remaining = this.length - offset; + if (!length) { + length = remaining; + } else { + length = +length; + if (length > remaining) { + length = remaining; + } + } + if (string.length > 0 && (length < 0 || offset < 0)) + throw new RangeError("attempt to write beyond buffer bounds"); + var buf = iconv.encode(string, encoding); + if (buf.length < length) + length = buf.length; + buf.copy(this, offset, 0, length); + return length; + }; + if (iconv.supportsStreams) { + var Readable = require("stream").Readable; + original.ReadableSetEncoding = Readable.prototype.setEncoding; + Readable.prototype.setEncoding = function setEncoding(enc, options) { + this._readableState.decoder = iconv.getDecoder(enc, options); + this._readableState.encoding = enc; + }; + Readable.prototype.collect = iconv._collect; + } + }; + iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { + if (!iconv.supportsNodeEncodingsExtension) + return; + if (!original) + throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called."); + delete Buffer2.isNativeEncoding; + var SlowBuffer = require("buffer").SlowBuffer; + SlowBuffer.prototype.toString = original.SlowBufferToString; + SlowBuffer.prototype.write = original.SlowBufferWrite; + Buffer2.isEncoding = original.BufferIsEncoding; + Buffer2.byteLength = original.BufferByteLength; + Buffer2.prototype.toString = original.BufferToString; + Buffer2.prototype.write = original.BufferWrite; + if (iconv.supportsStreams) { + var Readable = require("stream").Readable; + Readable.prototype.setEncoding = original.ReadableSetEncoding; + delete Readable.prototype.collect; + } + original = void 0; + }; + }; + } +}); + +// node_modules/iconv-lite/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/iconv-lite/lib/index.js"(exports, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + var bomHandling = require_bom_handling(); + var iconv = module2.exports; + iconv.encodings = null; + iconv.defaultCharUnicode = "\uFFFD"; + iconv.defaultCharSingleByte = "?"; + iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); + var encoder = iconv.getEncoder(encoding, options); + var res = encoder.write(str); + var trail = encoder.end(); + return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res; + }; + iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === "string") { + if (!iconv.skipDecodeWarning) { + console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); + iconv.skipDecodeWarning = true; + } + buf = Buffer2.from("" + (buf || ""), "binary"); + } + var decoder = iconv.getDecoder(encoding, options); + var res = decoder.write(buf); + var trail = decoder.end(); + return trail ? res + trail : res; + }; + iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; + } + }; + iconv.toEncoding = iconv.encode; + iconv.fromEncoding = iconv.decode; + iconv._codecDataCache = {}; + iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = require_encodings(); + var enc = iconv._canonicalizeEncoding(encoding); + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; + var codecDef = iconv.encodings[enc]; + switch (typeof codecDef) { + case "string": + enc = codecDef; + break; + case "object": + for (var key in codecDef) + codecOptions[key] = codecDef[key]; + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + enc = codecDef.type; + break; + case "function": + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + codec = new codecDef(codecOptions, iconv); + iconv._codecDataCache[codecOptions.encodingName] = codec; + return codec; + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); + } + } + }; + iconv._canonicalizeEncoding = function(encoding) { + return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); + }; + iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), encoder = new codec.encoder(options, codec); + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); + return encoder; + }; + iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), decoder = new codec.decoder(options, codec); + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); + return decoder; + }; + var nodeVer = typeof process !== "undefined" && process.versions && process.versions.node; + if (nodeVer) { + nodeVerArr = nodeVer.split(".").map(Number); + if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { + require_streams()(iconv); + } + require_extend_node()(iconv); + } + var nodeVerArr; + if (false) { + console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); + } + } +}); + +// node_modules/unpipe/index.js +var require_unpipe = __commonJS({ + "node_modules/unpipe/index.js"(exports, module2) { + "use strict"; + module2.exports = unpipe; + function hasPipeDataListeners(stream) { + var listeners = stream.listeners("data"); + for (var i = 0; i < listeners.length; i++) { + if (listeners[i].name === "ondata") { + return true; + } + } + return false; + } + function unpipe(stream) { + if (!stream) { + throw new TypeError("argument stream is required"); + } + if (typeof stream.unpipe === "function") { + stream.unpipe(); + return; + } + if (!hasPipeDataListeners(stream)) { + return; + } + var listener; + var listeners = stream.listeners("close"); + for (var i = 0; i < listeners.length; i++) { + listener = listeners[i]; + if (listener.name !== "cleanup" && listener.name !== "onclose") { + continue; + } + listener.call(stream); + } + } + } +}); + +// node_modules/raw-body/index.js +var require_raw_body = __commonJS({ + "node_modules/raw-body/index.js"(exports, module2) { + "use strict"; + var asyncHooks = tryRequireAsyncHooks(); + var bytes = require_bytes(); + var createError = require_http_errors(); + var iconv = require_lib3(); + var unpipe = require_unpipe(); + module2.exports = getRawBody; + var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /; + function getDecoder(encoding) { + if (!encoding) + return null; + try { + return iconv.getDecoder(encoding); + } catch (e) { + if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) + throw e; + throw createError(415, "specified encoding unsupported", { + encoding, + type: "encoding.unsupported" + }); + } + } + function getRawBody(stream, options, callback) { + var done = callback; + var opts = options || {}; + if (stream === void 0) { + throw new TypeError("argument stream is required"); + } else if (typeof stream !== "object" || stream === null || typeof stream.on !== "function") { + throw new TypeError("argument stream must be a stream"); + } + if (options === true || typeof options === "string") { + opts = { + encoding: options + }; + } + if (typeof options === "function") { + done = options; + opts = {}; + } + if (done !== void 0 && typeof done !== "function") { + throw new TypeError("argument callback must be a function"); + } + if (!done && !global.Promise) { + throw new TypeError("argument callback is required"); + } + var encoding = opts.encoding !== true ? opts.encoding : "utf-8"; + var limit = bytes.parse(opts.limit); + var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null; + if (done) { + return readStream(stream, encoding, length, limit, wrap(done)); + } + return new Promise(function executor(resolve, reject) { + readStream(stream, encoding, length, limit, function onRead(err, buf) { + if (err) + return reject(err); + resolve(buf); + }); + }); + } + function halt(stream) { + unpipe(stream); + if (typeof stream.pause === "function") { + stream.pause(); + } + } + function readStream(stream, encoding, length, limit, callback) { + var complete = false; + var sync = true; + if (limit !== null && length !== null && length > limit) { + return done(createError(413, "request entity too large", { + expected: length, + length, + limit, + type: "entity.too.large" + })); + } + var state = stream._readableState; + if (stream._decoder || state && (state.encoding || state.decoder)) { + return done(createError(500, "stream encoding should not be set", { + type: "stream.encoding.set" + })); + } + if (typeof stream.readable !== "undefined" && !stream.readable) { + return done(createError(500, "stream is not readable", { + type: "stream.not.readable" + })); + } + var received = 0; + var decoder; + try { + decoder = getDecoder(encoding); + } catch (err) { + return done(err); + } + var buffer = decoder ? "" : []; + stream.on("aborted", onAborted); + stream.on("close", cleanup); + stream.on("data", onData); + stream.on("end", onEnd); + stream.on("error", onEnd); + sync = false; + function done() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + complete = true; + if (sync) { + process.nextTick(invokeCallback); + } else { + invokeCallback(); + } + function invokeCallback() { + cleanup(); + if (args[0]) { + halt(stream); + } + callback.apply(null, args); + } + } + function onAborted() { + if (complete) + return; + done(createError(400, "request aborted", { + code: "ECONNABORTED", + expected: length, + length, + received, + type: "request.aborted" + })); + } + function onData(chunk) { + if (complete) + return; + received += chunk.length; + if (limit !== null && received > limit) { + done(createError(413, "request entity too large", { + limit, + received, + type: "entity.too.large" + })); + } else if (decoder) { + buffer += decoder.write(chunk); + } else { + buffer.push(chunk); + } + } + function onEnd(err) { + if (complete) + return; + if (err) + return done(err); + if (length !== null && received !== length) { + done(createError(400, "request size did not match content length", { + expected: length, + length, + received, + type: "request.size.invalid" + })); + } else { + var string = decoder ? buffer + (decoder.end() || "") : Buffer.concat(buffer); + done(null, string); + } + } + function cleanup() { + buffer = null; + stream.removeListener("aborted", onAborted); + stream.removeListener("data", onData); + stream.removeListener("end", onEnd); + stream.removeListener("error", onEnd); + stream.removeListener("close", cleanup); + } + } + function tryRequireAsyncHooks() { + try { + return require("async_hooks"); + } catch (e) { + return {}; + } + } + function wrap(fn) { + var res; + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); + } + if (!res || !res.runInAsyncScope) { + return fn; + } + return res.runInAsyncScope.bind(res, fn, null); + } + } +}); + +// node_modules/ee-first/index.js +var require_ee_first = __commonJS({ + "node_modules/ee-first/index.js"(exports, module2) { + "use strict"; + module2.exports = first; + function first(stuff, done) { + if (!Array.isArray(stuff)) + throw new TypeError("arg must be an array of [ee, events...] arrays"); + var cleanups = []; + for (var i = 0; i < stuff.length; i++) { + var arr = stuff[i]; + if (!Array.isArray(arr) || arr.length < 2) + throw new TypeError("each array member must be [ee, events...]"); + var ee = arr[0]; + for (var j = 1; j < arr.length; j++) { + var event = arr[j]; + var fn = listener(event, callback); + ee.on(event, fn); + cleanups.push({ + ee, + event, + fn + }); + } + } + function callback() { + cleanup(); + done.apply(null, arguments); + } + function cleanup() { + var x; + for (var i2 = 0; i2 < cleanups.length; i2++) { + x = cleanups[i2]; + x.ee.removeListener(x.event, x.fn); + } + } + function thunk(fn2) { + done = fn2; + } + thunk.cancel = cleanup; + return thunk; + } + function listener(event, done) { + return function onevent(arg1) { + var args = new Array(arguments.length); + var ee = this; + var err = event === "error" ? arg1 : null; + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + done(err, ee, event, args); + }; + } + } +}); + +// node_modules/on-finished/index.js +var require_on_finished = __commonJS({ + "node_modules/on-finished/index.js"(exports, module2) { + "use strict"; + module2.exports = onFinished; + module2.exports.isFinished = isFinished; + var asyncHooks = tryRequireAsyncHooks(); + var first = require_ee_first(); + var defer = typeof setImmediate === "function" ? setImmediate : function(fn) { + process.nextTick(fn.bind.apply(fn, arguments)); + }; + function onFinished(msg, listener) { + if (isFinished(msg) !== false) { + defer(listener, null, msg); + return msg; + } + attachListener(msg, wrap(listener)); + return msg; + } + function isFinished(msg) { + var socket = msg.socket; + if (typeof msg.finished === "boolean") { + return Boolean(msg.finished || socket && !socket.writable); + } + if (typeof msg.complete === "boolean") { + return Boolean(msg.upgrade || !socket || !socket.readable || msg.complete && !msg.readable); + } + return void 0; + } + function attachFinishedListener(msg, callback) { + var eeMsg; + var eeSocket; + var finished = false; + function onFinish(error) { + eeMsg.cancel(); + eeSocket.cancel(); + finished = true; + callback(error); + } + eeMsg = eeSocket = first([[msg, "end", "finish"]], onFinish); + function onSocket(socket) { + msg.removeListener("socket", onSocket); + if (finished) + return; + if (eeMsg !== eeSocket) + return; + eeSocket = first([[socket, "error", "close"]], onFinish); + } + if (msg.socket) { + onSocket(msg.socket); + return; + } + msg.on("socket", onSocket); + if (msg.socket === void 0) { + patchAssignSocket(msg, onSocket); + } + } + function attachListener(msg, listener) { + var attached = msg.__onFinished; + if (!attached || !attached.queue) { + attached = msg.__onFinished = createListener(msg); + attachFinishedListener(msg, attached); + } + attached.queue.push(listener); + } + function createListener(msg) { + function listener(err) { + if (msg.__onFinished === listener) + msg.__onFinished = null; + if (!listener.queue) + return; + var queue = listener.queue; + listener.queue = null; + for (var i = 0; i < queue.length; i++) { + queue[i](err, msg); + } + } + listener.queue = []; + return listener; + } + function patchAssignSocket(res, callback) { + var assignSocket = res.assignSocket; + if (typeof assignSocket !== "function") + return; + res.assignSocket = function _assignSocket(socket) { + assignSocket.call(this, socket); + callback(socket); + }; + } + function tryRequireAsyncHooks() { + try { + return require("async_hooks"); + } catch (e) { + return {}; + } + } + function wrap(fn) { + var res; + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); + } + if (!res || !res.runInAsyncScope) { + return fn; + } + return res.runInAsyncScope.bind(res, fn, null); + } + } +}); + +// node_modules/body-parser/lib/read.js +var require_read = __commonJS({ + "node_modules/body-parser/lib/read.js"(exports, module2) { + "use strict"; + var createError = require_http_errors(); + var destroy = require_destroy(); + var getBody = require_raw_body(); + var iconv = require_lib3(); + var onFinished = require_on_finished(); + var unpipe = require_unpipe(); + var zlib = require("zlib"); + module2.exports = read; + function read(req, res, next, parse, debug, options) { + var length; + var opts = options; + var stream; + req._body = true; + var encoding = opts.encoding !== null ? opts.encoding : null; + var verify = opts.verify; + try { + stream = contentstream(req, debug, opts.inflate); + length = stream.length; + stream.length = void 0; + } catch (err) { + return next(err); + } + opts.length = length; + opts.encoding = verify ? null : encoding; + if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { + return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: "charset.unsupported" + })); + } + debug("read body"); + getBody(stream, opts, function(error, body) { + if (error) { + var _error; + if (error.type === "encoding.unsupported") { + _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: "charset.unsupported" + }); + } else { + _error = createError(400, error); + } + if (stream !== req) { + unpipe(req); + destroy(stream, true); + } + dump(req, function onfinished() { + next(createError(400, _error)); + }); + return; + } + if (verify) { + try { + debug("verify body"); + verify(req, res, body, encoding); + } catch (err) { + next(createError(403, err, { + body, + type: err.type || "entity.verify.failed" + })); + return; + } + } + var str = body; + try { + debug("parse body"); + str = typeof body !== "string" && encoding !== null ? iconv.decode(body, encoding) : body; + req.body = parse(str); + } catch (err) { + next(createError(400, err, { + body: str, + type: err.type || "entity.parse.failed" + })); + return; + } + next(); + }); + } + function contentstream(req, debug, inflate) { + var encoding = (req.headers["content-encoding"] || "identity").toLowerCase(); + var length = req.headers["content-length"]; + var stream; + debug('content-encoding "%s"', encoding); + if (inflate === false && encoding !== "identity") { + throw createError(415, "content encoding unsupported", { + encoding, + type: "encoding.unsupported" + }); + } + switch (encoding) { + case "deflate": + stream = zlib.createInflate(); + debug("inflate body"); + req.pipe(stream); + break; + case "gzip": + stream = zlib.createGunzip(); + debug("gunzip body"); + req.pipe(stream); + break; + case "identity": + stream = req; + stream.length = length; + break; + default: + throw createError(415, 'unsupported content encoding "' + encoding + '"', { + encoding, + type: "encoding.unsupported" + }); + } + return stream; + } + function dump(req, callback) { + if (onFinished.isFinished(req)) { + callback(null); + } else { + onFinished(req, callback); + req.resume(); + } + } + } +}); + +// node_modules/media-typer/index.js +var require_media_typer = __commonJS({ + "node_modules/media-typer/index.js"(exports) { + var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; + var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/; + var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/; + var qescRegExp = /\\([\u0000-\u007f])/g; + var quoteRegExp = /([\\"])/g; + var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; + var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; + var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + exports.format = format; + exports.parse = parse; + function format(obj) { + if (!obj || typeof obj !== "object") { + throw new TypeError("argument obj is required"); + } + var parameters = obj.parameters; + var subtype = obj.subtype; + var suffix = obj.suffix; + var type = obj.type; + if (!type || !typeNameRegExp.test(type)) { + throw new TypeError("invalid type"); + } + if (!subtype || !subtypeNameRegExp.test(subtype)) { + throw new TypeError("invalid subtype"); + } + var string = type + "/" + subtype; + if (suffix) { + if (!typeNameRegExp.test(suffix)) { + throw new TypeError("invalid suffix"); + } + string += "+" + suffix; + } + if (parameters && typeof parameters === "object") { + var param; + var params = Object.keys(parameters).sort(); + for (var i = 0; i < params.length; i++) { + param = params[i]; + if (!tokenRegExp.test(param)) { + throw new TypeError("invalid parameter name"); + } + string += "; " + param + "=" + qstring(parameters[param]); + } + } + return string; + } + function parse(string) { + if (!string) { + throw new TypeError("argument string is required"); + } + if (typeof string === "object") { + string = getcontenttype(string); + } + if (typeof string !== "string") { + throw new TypeError("argument string is required to be a string"); + } + var index = string.indexOf(";"); + var type = index !== -1 ? string.substr(0, index) : string; + var key; + var match; + var obj = splitType(type); + var params = {}; + var value; + paramRegExp.lastIndex = index; + while (match = paramRegExp.exec(string)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (value[0] === '"') { + value = value.substr(1, value.length - 2).replace(qescRegExp, "$1"); + } + params[key] = value; + } + if (index !== -1 && index !== string.length) { + throw new TypeError("invalid parameter format"); + } + obj.parameters = params; + return obj; + } + function getcontenttype(obj) { + if (typeof obj.getHeader === "function") { + return obj.getHeader("content-type"); + } + if (typeof obj.headers === "object") { + return obj.headers && obj.headers["content-type"]; + } + } + function qstring(val) { + var str = String(val); + if (tokenRegExp.test(str)) { + return str; + } + if (str.length > 0 && !textRegExp.test(str)) { + throw new TypeError("invalid parameter value"); + } + return '"' + str.replace(quoteRegExp, "\\$1") + '"'; + } + function splitType(string) { + var match = typeRegExp.exec(string.toLowerCase()); + if (!match) { + throw new TypeError("invalid media type"); + } + var type = match[1]; + var subtype = match[2]; + var suffix; + var index = subtype.lastIndexOf("+"); + if (index !== -1) { + suffix = subtype.substr(index + 1); + subtype = subtype.substr(0, index); + } + var obj = { + type, + subtype, + suffix + }; + return obj; + } + } +}); + +// node_modules/mime-db/db.json +var require_db = __commonJS({ + "node_modules/mime-db/db.json"(exports, module2) { + module2.exports = { + "application/1d-interleaved-parityfec": { + source: "iana" + }, + "application/3gpdash-qoe-report+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/3gpp-ims+xml": { + source: "iana", + compressible: true + }, + "application/3gpphal+json": { + source: "iana", + compressible: true + }, + "application/3gpphalforms+json": { + source: "iana", + compressible: true + }, + "application/a2l": { + source: "iana" + }, + "application/ace+cbor": { + source: "iana" + }, + "application/activemessage": { + source: "iana" + }, + "application/activity+json": { + source: "iana", + compressible: true + }, + "application/alto-costmap+json": { + source: "iana", + compressible: true + }, + "application/alto-costmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-directory+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcost+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcostparams+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointprop+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointpropparams+json": { + source: "iana", + compressible: true + }, + "application/alto-error+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmap+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamcontrol+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamparams+json": { + source: "iana", + compressible: true + }, + "application/aml": { + source: "iana" + }, + "application/andrew-inset": { + source: "iana", + extensions: ["ez"] + }, + "application/applefile": { + source: "iana" + }, + "application/applixware": { + source: "apache", + extensions: ["aw"] + }, + "application/at+jwt": { + source: "iana" + }, + "application/atf": { + source: "iana" + }, + "application/atfx": { + source: "iana" + }, + "application/atom+xml": { + source: "iana", + compressible: true, + extensions: ["atom"] + }, + "application/atomcat+xml": { + source: "iana", + compressible: true, + extensions: ["atomcat"] + }, + "application/atomdeleted+xml": { + source: "iana", + compressible: true, + extensions: ["atomdeleted"] + }, + "application/atomicmail": { + source: "iana" + }, + "application/atomsvc+xml": { + source: "iana", + compressible: true, + extensions: ["atomsvc"] + }, + "application/atsc-dwd+xml": { + source: "iana", + compressible: true, + extensions: ["dwd"] + }, + "application/atsc-dynamic-event-message": { + source: "iana" + }, + "application/atsc-held+xml": { + source: "iana", + compressible: true, + extensions: ["held"] + }, + "application/atsc-rdt+json": { + source: "iana", + compressible: true + }, + "application/atsc-rsat+xml": { + source: "iana", + compressible: true, + extensions: ["rsat"] + }, + "application/atxml": { + source: "iana" + }, + "application/auth-policy+xml": { + source: "iana", + compressible: true + }, + "application/bacnet-xdd+zip": { + source: "iana", + compressible: false + }, + "application/batch-smtp": { + source: "iana" + }, + "application/bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/beep+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/calendar+json": { + source: "iana", + compressible: true + }, + "application/calendar+xml": { + source: "iana", + compressible: true, + extensions: ["xcs"] + }, + "application/call-completion": { + source: "iana" + }, + "application/cals-1840": { + source: "iana" + }, + "application/captive+json": { + source: "iana", + compressible: true + }, + "application/cbor": { + source: "iana" + }, + "application/cbor-seq": { + source: "iana" + }, + "application/cccex": { + source: "iana" + }, + "application/ccmp+xml": { + source: "iana", + compressible: true + }, + "application/ccxml+xml": { + source: "iana", + compressible: true, + extensions: ["ccxml"] + }, + "application/cdfx+xml": { + source: "iana", + compressible: true, + extensions: ["cdfx"] + }, + "application/cdmi-capability": { + source: "iana", + extensions: ["cdmia"] + }, + "application/cdmi-container": { + source: "iana", + extensions: ["cdmic"] + }, + "application/cdmi-domain": { + source: "iana", + extensions: ["cdmid"] + }, + "application/cdmi-object": { + source: "iana", + extensions: ["cdmio"] + }, + "application/cdmi-queue": { + source: "iana", + extensions: ["cdmiq"] + }, + "application/cdni": { + source: "iana" + }, + "application/cea": { + source: "iana" + }, + "application/cea-2018+xml": { + source: "iana", + compressible: true + }, + "application/cellml+xml": { + source: "iana", + compressible: true + }, + "application/cfw": { + source: "iana" + }, + "application/city+json": { + source: "iana", + compressible: true + }, + "application/clr": { + source: "iana" + }, + "application/clue+xml": { + source: "iana", + compressible: true + }, + "application/clue_info+xml": { + source: "iana", + compressible: true + }, + "application/cms": { + source: "iana" + }, + "application/cnrp+xml": { + source: "iana", + compressible: true + }, + "application/coap-group+json": { + source: "iana", + compressible: true + }, + "application/coap-payload": { + source: "iana" + }, + "application/commonground": { + source: "iana" + }, + "application/conference-info+xml": { + source: "iana", + compressible: true + }, + "application/cose": { + source: "iana" + }, + "application/cose-key": { + source: "iana" + }, + "application/cose-key-set": { + source: "iana" + }, + "application/cpl+xml": { + source: "iana", + compressible: true, + extensions: ["cpl"] + }, + "application/csrattrs": { + source: "iana" + }, + "application/csta+xml": { + source: "iana", + compressible: true + }, + "application/cstadata+xml": { + source: "iana", + compressible: true + }, + "application/csvm+json": { + source: "iana", + compressible: true + }, + "application/cu-seeme": { + source: "apache", + extensions: ["cu"] + }, + "application/cwt": { + source: "iana" + }, + "application/cybercash": { + source: "iana" + }, + "application/dart": { + compressible: true + }, + "application/dash+xml": { + source: "iana", + compressible: true, + extensions: ["mpd"] + }, + "application/dash-patch+xml": { + source: "iana", + compressible: true, + extensions: ["mpp"] + }, + "application/dashdelta": { + source: "iana" + }, + "application/davmount+xml": { + source: "iana", + compressible: true, + extensions: ["davmount"] + }, + "application/dca-rft": { + source: "iana" + }, + "application/dcd": { + source: "iana" + }, + "application/dec-dx": { + source: "iana" + }, + "application/dialog-info+xml": { + source: "iana", + compressible: true + }, + "application/dicom": { + source: "iana" + }, + "application/dicom+json": { + source: "iana", + compressible: true + }, + "application/dicom+xml": { + source: "iana", + compressible: true + }, + "application/dii": { + source: "iana" + }, + "application/dit": { + source: "iana" + }, + "application/dns": { + source: "iana" + }, + "application/dns+json": { + source: "iana", + compressible: true + }, + "application/dns-message": { + source: "iana" + }, + "application/docbook+xml": { + source: "apache", + compressible: true, + extensions: ["dbk"] + }, + "application/dots+cbor": { + source: "iana" + }, + "application/dskpp+xml": { + source: "iana", + compressible: true + }, + "application/dssc+der": { + source: "iana", + extensions: ["dssc"] + }, + "application/dssc+xml": { + source: "iana", + compressible: true, + extensions: ["xdssc"] + }, + "application/dvcs": { + source: "iana" + }, + "application/ecmascript": { + source: "iana", + compressible: true, + extensions: ["es", "ecma"] + }, + "application/edi-consent": { + source: "iana" + }, + "application/edi-x12": { + source: "iana", + compressible: false + }, + "application/edifact": { + source: "iana", + compressible: false + }, + "application/efi": { + source: "iana" + }, + "application/elm+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/elm+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.cap+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/emergencycalldata.comment+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.control+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.deviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.ecall.msd": { + source: "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.serviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.subscriberinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.veds+xml": { + source: "iana", + compressible: true + }, + "application/emma+xml": { + source: "iana", + compressible: true, + extensions: ["emma"] + }, + "application/emotionml+xml": { + source: "iana", + compressible: true, + extensions: ["emotionml"] + }, + "application/encaprtp": { + source: "iana" + }, + "application/epp+xml": { + source: "iana", + compressible: true + }, + "application/epub+zip": { + source: "iana", + compressible: false, + extensions: ["epub"] + }, + "application/eshop": { + source: "iana" + }, + "application/exi": { + source: "iana", + extensions: ["exi"] + }, + "application/expect-ct-report+json": { + source: "iana", + compressible: true + }, + "application/express": { + source: "iana", + extensions: ["exp"] + }, + "application/fastinfoset": { + source: "iana" + }, + "application/fastsoap": { + source: "iana" + }, + "application/fdt+xml": { + source: "iana", + compressible: true, + extensions: ["fdt"] + }, + "application/fhir+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fhir+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fido.trusted-apps+json": { + compressible: true + }, + "application/fits": { + source: "iana" + }, + "application/flexfec": { + source: "iana" + }, + "application/font-sfnt": { + source: "iana" + }, + "application/font-tdpfr": { + source: "iana", + extensions: ["pfr"] + }, + "application/font-woff": { + source: "iana", + compressible: false + }, + "application/framework-attributes+xml": { + source: "iana", + compressible: true + }, + "application/geo+json": { + source: "iana", + compressible: true, + extensions: ["geojson"] + }, + "application/geo+json-seq": { + source: "iana" + }, + "application/geopackage+sqlite3": { + source: "iana" + }, + "application/geoxacml+xml": { + source: "iana", + compressible: true + }, + "application/gltf-buffer": { + source: "iana" + }, + "application/gml+xml": { + source: "iana", + compressible: true, + extensions: ["gml"] + }, + "application/gpx+xml": { + source: "apache", + compressible: true, + extensions: ["gpx"] + }, + "application/gxf": { + source: "apache", + extensions: ["gxf"] + }, + "application/gzip": { + source: "iana", + compressible: false, + extensions: ["gz"] + }, + "application/h224": { + source: "iana" + }, + "application/held+xml": { + source: "iana", + compressible: true + }, + "application/hjson": { + extensions: ["hjson"] + }, + "application/http": { + source: "iana" + }, + "application/hyperstudio": { + source: "iana", + extensions: ["stk"] + }, + "application/ibe-key-request+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pkg-reply+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pp-data": { + source: "iana" + }, + "application/iges": { + source: "iana" + }, + "application/im-iscomposing+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/index": { + source: "iana" + }, + "application/index.cmd": { + source: "iana" + }, + "application/index.obj": { + source: "iana" + }, + "application/index.response": { + source: "iana" + }, + "application/index.vnd": { + source: "iana" + }, + "application/inkml+xml": { + source: "iana", + compressible: true, + extensions: ["ink", "inkml"] + }, + "application/iotp": { + source: "iana" + }, + "application/ipfix": { + source: "iana", + extensions: ["ipfix"] + }, + "application/ipp": { + source: "iana" + }, + "application/isup": { + source: "iana" + }, + "application/its+xml": { + source: "iana", + compressible: true, + extensions: ["its"] + }, + "application/java-archive": { + source: "apache", + compressible: false, + extensions: ["jar", "war", "ear"] + }, + "application/java-serialized-object": { + source: "apache", + compressible: false, + extensions: ["ser"] + }, + "application/java-vm": { + source: "apache", + compressible: false, + extensions: ["class"] + }, + "application/javascript": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["js", "mjs"] + }, + "application/jf2feed+json": { + source: "iana", + compressible: true + }, + "application/jose": { + source: "iana" + }, + "application/jose+json": { + source: "iana", + compressible: true + }, + "application/jrd+json": { + source: "iana", + compressible: true + }, + "application/jscalendar+json": { + source: "iana", + compressible: true + }, + "application/json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["json", "map"] + }, + "application/json-patch+json": { + source: "iana", + compressible: true + }, + "application/json-seq": { + source: "iana" + }, + "application/json5": { + extensions: ["json5"] + }, + "application/jsonml+json": { + source: "apache", + compressible: true, + extensions: ["jsonml"] + }, + "application/jwk+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+json": { + source: "iana", + compressible: true + }, + "application/jwt": { + source: "iana" + }, + "application/kpml-request+xml": { + source: "iana", + compressible: true + }, + "application/kpml-response+xml": { + source: "iana", + compressible: true + }, + "application/ld+json": { + source: "iana", + compressible: true, + extensions: ["jsonld"] + }, + "application/lgr+xml": { + source: "iana", + compressible: true, + extensions: ["lgr"] + }, + "application/link-format": { + source: "iana" + }, + "application/load-control+xml": { + source: "iana", + compressible: true + }, + "application/lost+xml": { + source: "iana", + compressible: true, + extensions: ["lostxml"] + }, + "application/lostsync+xml": { + source: "iana", + compressible: true + }, + "application/lpf+zip": { + source: "iana", + compressible: false + }, + "application/lxf": { + source: "iana" + }, + "application/mac-binhex40": { + source: "iana", + extensions: ["hqx"] + }, + "application/mac-compactpro": { + source: "apache", + extensions: ["cpt"] + }, + "application/macwriteii": { + source: "iana" + }, + "application/mads+xml": { + source: "iana", + compressible: true, + extensions: ["mads"] + }, + "application/manifest+json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["webmanifest"] + }, + "application/marc": { + source: "iana", + extensions: ["mrc"] + }, + "application/marcxml+xml": { + source: "iana", + compressible: true, + extensions: ["mrcx"] + }, + "application/mathematica": { + source: "iana", + extensions: ["ma", "nb", "mb"] + }, + "application/mathml+xml": { + source: "iana", + compressible: true, + extensions: ["mathml"] + }, + "application/mathml-content+xml": { + source: "iana", + compressible: true + }, + "application/mathml-presentation+xml": { + source: "iana", + compressible: true + }, + "application/mbms-associated-procedure-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-deregister+xml": { + source: "iana", + compressible: true + }, + "application/mbms-envelope+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-protection-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-reception-report+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-schedule+xml": { + source: "iana", + compressible: true + }, + "application/mbms-user-service-description+xml": { + source: "iana", + compressible: true + }, + "application/mbox": { + source: "iana", + extensions: ["mbox"] + }, + "application/media-policy-dataset+xml": { + source: "iana", + compressible: true, + extensions: ["mpf"] + }, + "application/media_control+xml": { + source: "iana", + compressible: true + }, + "application/mediaservercontrol+xml": { + source: "iana", + compressible: true, + extensions: ["mscml"] + }, + "application/merge-patch+json": { + source: "iana", + compressible: true + }, + "application/metalink+xml": { + source: "apache", + compressible: true, + extensions: ["metalink"] + }, + "application/metalink4+xml": { + source: "iana", + compressible: true, + extensions: ["meta4"] + }, + "application/mets+xml": { + source: "iana", + compressible: true, + extensions: ["mets"] + }, + "application/mf4": { + source: "iana" + }, + "application/mikey": { + source: "iana" + }, + "application/mipc": { + source: "iana" + }, + "application/missing-blocks+cbor-seq": { + source: "iana" + }, + "application/mmt-aei+xml": { + source: "iana", + compressible: true, + extensions: ["maei"] + }, + "application/mmt-usd+xml": { + source: "iana", + compressible: true, + extensions: ["musd"] + }, + "application/mods+xml": { + source: "iana", + compressible: true, + extensions: ["mods"] + }, + "application/moss-keys": { + source: "iana" + }, + "application/moss-signature": { + source: "iana" + }, + "application/mosskey-data": { + source: "iana" + }, + "application/mosskey-request": { + source: "iana" + }, + "application/mp21": { + source: "iana", + extensions: ["m21", "mp21"] + }, + "application/mp4": { + source: "iana", + extensions: ["mp4s", "m4p"] + }, + "application/mpeg4-generic": { + source: "iana" + }, + "application/mpeg4-iod": { + source: "iana" + }, + "application/mpeg4-iod-xmt": { + source: "iana" + }, + "application/mrb-consumer+xml": { + source: "iana", + compressible: true + }, + "application/mrb-publish+xml": { + source: "iana", + compressible: true + }, + "application/msc-ivr+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msc-mixer+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msword": { + source: "iana", + compressible: false, + extensions: ["doc", "dot"] + }, + "application/mud+json": { + source: "iana", + compressible: true + }, + "application/multipart-core": { + source: "iana" + }, + "application/mxf": { + source: "iana", + extensions: ["mxf"] + }, + "application/n-quads": { + source: "iana", + extensions: ["nq"] + }, + "application/n-triples": { + source: "iana", + extensions: ["nt"] + }, + "application/nasdata": { + source: "iana" + }, + "application/news-checkgroups": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-groupinfo": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-transmission": { + source: "iana" + }, + "application/nlsml+xml": { + source: "iana", + compressible: true + }, + "application/node": { + source: "iana", + extensions: ["cjs"] + }, + "application/nss": { + source: "iana" + }, + "application/oauth-authz-req+jwt": { + source: "iana" + }, + "application/oblivious-dns-message": { + source: "iana" + }, + "application/ocsp-request": { + source: "iana" + }, + "application/ocsp-response": { + source: "iana" + }, + "application/octet-stream": { + source: "iana", + compressible: false, + extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] + }, + "application/oda": { + source: "iana", + extensions: ["oda"] + }, + "application/odm+xml": { + source: "iana", + compressible: true + }, + "application/odx": { + source: "iana" + }, + "application/oebps-package+xml": { + source: "iana", + compressible: true, + extensions: ["opf"] + }, + "application/ogg": { + source: "iana", + compressible: false, + extensions: ["ogx"] + }, + "application/omdoc+xml": { + source: "apache", + compressible: true, + extensions: ["omdoc"] + }, + "application/onenote": { + source: "apache", + extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] + }, + "application/opc-nodeset+xml": { + source: "iana", + compressible: true + }, + "application/oscore": { + source: "iana" + }, + "application/oxps": { + source: "iana", + extensions: ["oxps"] + }, + "application/p21": { + source: "iana" + }, + "application/p21+zip": { + source: "iana", + compressible: false + }, + "application/p2p-overlay+xml": { + source: "iana", + compressible: true, + extensions: ["relo"] + }, + "application/parityfec": { + source: "iana" + }, + "application/passport": { + source: "iana" + }, + "application/patch-ops-error+xml": { + source: "iana", + compressible: true, + extensions: ["xer"] + }, + "application/pdf": { + source: "iana", + compressible: false, + extensions: ["pdf"] + }, + "application/pdx": { + source: "iana" + }, + "application/pem-certificate-chain": { + source: "iana" + }, + "application/pgp-encrypted": { + source: "iana", + compressible: false, + extensions: ["pgp"] + }, + "application/pgp-keys": { + source: "iana", + extensions: ["asc"] + }, + "application/pgp-signature": { + source: "iana", + extensions: ["asc", "sig"] + }, + "application/pics-rules": { + source: "apache", + extensions: ["prf"] + }, + "application/pidf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pidf-diff+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pkcs10": { + source: "iana", + extensions: ["p10"] + }, + "application/pkcs12": { + source: "iana" + }, + "application/pkcs7-mime": { + source: "iana", + extensions: ["p7m", "p7c"] + }, + "application/pkcs7-signature": { + source: "iana", + extensions: ["p7s"] + }, + "application/pkcs8": { + source: "iana", + extensions: ["p8"] + }, + "application/pkcs8-encrypted": { + source: "iana" + }, + "application/pkix-attr-cert": { + source: "iana", + extensions: ["ac"] + }, + "application/pkix-cert": { + source: "iana", + extensions: ["cer"] + }, + "application/pkix-crl": { + source: "iana", + extensions: ["crl"] + }, + "application/pkix-pkipath": { + source: "iana", + extensions: ["pkipath"] + }, + "application/pkixcmp": { + source: "iana", + extensions: ["pki"] + }, + "application/pls+xml": { + source: "iana", + compressible: true, + extensions: ["pls"] + }, + "application/poc-settings+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/postscript": { + source: "iana", + compressible: true, + extensions: ["ai", "eps", "ps"] + }, + "application/ppsp-tracker+json": { + source: "iana", + compressible: true + }, + "application/problem+json": { + source: "iana", + compressible: true + }, + "application/problem+xml": { + source: "iana", + compressible: true + }, + "application/provenance+xml": { + source: "iana", + compressible: true, + extensions: ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + source: "iana" + }, + "application/prs.cww": { + source: "iana", + extensions: ["cww"] + }, + "application/prs.cyn": { + source: "iana", + charset: "7-BIT" + }, + "application/prs.hpub+zip": { + source: "iana", + compressible: false + }, + "application/prs.nprend": { + source: "iana" + }, + "application/prs.plucker": { + source: "iana" + }, + "application/prs.rdf-xml-crypt": { + source: "iana" + }, + "application/prs.xsf+xml": { + source: "iana", + compressible: true + }, + "application/pskc+xml": { + source: "iana", + compressible: true, + extensions: ["pskcxml"] + }, + "application/pvd+json": { + source: "iana", + compressible: true + }, + "application/qsig": { + source: "iana" + }, + "application/raml+yaml": { + compressible: true, + extensions: ["raml"] + }, + "application/raptorfec": { + source: "iana" + }, + "application/rdap+json": { + source: "iana", + compressible: true + }, + "application/rdf+xml": { + source: "iana", + compressible: true, + extensions: ["rdf", "owl"] + }, + "application/reginfo+xml": { + source: "iana", + compressible: true, + extensions: ["rif"] + }, + "application/relax-ng-compact-syntax": { + source: "iana", + extensions: ["rnc"] + }, + "application/remote-printing": { + source: "iana" + }, + "application/reputon+json": { + source: "iana", + compressible: true + }, + "application/resource-lists+xml": { + source: "iana", + compressible: true, + extensions: ["rl"] + }, + "application/resource-lists-diff+xml": { + source: "iana", + compressible: true, + extensions: ["rld"] + }, + "application/rfc+xml": { + source: "iana", + compressible: true + }, + "application/riscos": { + source: "iana" + }, + "application/rlmi+xml": { + source: "iana", + compressible: true + }, + "application/rls-services+xml": { + source: "iana", + compressible: true, + extensions: ["rs"] + }, + "application/route-apd+xml": { + source: "iana", + compressible: true, + extensions: ["rapd"] + }, + "application/route-s-tsid+xml": { + source: "iana", + compressible: true, + extensions: ["sls"] + }, + "application/route-usd+xml": { + source: "iana", + compressible: true, + extensions: ["rusd"] + }, + "application/rpki-ghostbusters": { + source: "iana", + extensions: ["gbr"] + }, + "application/rpki-manifest": { + source: "iana", + extensions: ["mft"] + }, + "application/rpki-publication": { + source: "iana" + }, + "application/rpki-roa": { + source: "iana", + extensions: ["roa"] + }, + "application/rpki-updown": { + source: "iana" + }, + "application/rsd+xml": { + source: "apache", + compressible: true, + extensions: ["rsd"] + }, + "application/rss+xml": { + source: "apache", + compressible: true, + extensions: ["rss"] + }, + "application/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "application/rtploopback": { + source: "iana" + }, + "application/rtx": { + source: "iana" + }, + "application/samlassertion+xml": { + source: "iana", + compressible: true + }, + "application/samlmetadata+xml": { + source: "iana", + compressible: true + }, + "application/sarif+json": { + source: "iana", + compressible: true + }, + "application/sarif-external-properties+json": { + source: "iana", + compressible: true + }, + "application/sbe": { + source: "iana" + }, + "application/sbml+xml": { + source: "iana", + compressible: true, + extensions: ["sbml"] + }, + "application/scaip+xml": { + source: "iana", + compressible: true + }, + "application/scim+json": { + source: "iana", + compressible: true + }, + "application/scvp-cv-request": { + source: "iana", + extensions: ["scq"] + }, + "application/scvp-cv-response": { + source: "iana", + extensions: ["scs"] + }, + "application/scvp-vp-request": { + source: "iana", + extensions: ["spq"] + }, + "application/scvp-vp-response": { + source: "iana", + extensions: ["spp"] + }, + "application/sdp": { + source: "iana", + extensions: ["sdp"] + }, + "application/secevent+jwt": { + source: "iana" + }, + "application/senml+cbor": { + source: "iana" + }, + "application/senml+json": { + source: "iana", + compressible: true + }, + "application/senml+xml": { + source: "iana", + compressible: true, + extensions: ["senmlx"] + }, + "application/senml-etch+cbor": { + source: "iana" + }, + "application/senml-etch+json": { + source: "iana", + compressible: true + }, + "application/senml-exi": { + source: "iana" + }, + "application/sensml+cbor": { + source: "iana" + }, + "application/sensml+json": { + source: "iana", + compressible: true + }, + "application/sensml+xml": { + source: "iana", + compressible: true, + extensions: ["sensmlx"] + }, + "application/sensml-exi": { + source: "iana" + }, + "application/sep+xml": { + source: "iana", + compressible: true + }, + "application/sep-exi": { + source: "iana" + }, + "application/session-info": { + source: "iana" + }, + "application/set-payment": { + source: "iana" + }, + "application/set-payment-initiation": { + source: "iana", + extensions: ["setpay"] + }, + "application/set-registration": { + source: "iana" + }, + "application/set-registration-initiation": { + source: "iana", + extensions: ["setreg"] + }, + "application/sgml": { + source: "iana" + }, + "application/sgml-open-catalog": { + source: "iana" + }, + "application/shf+xml": { + source: "iana", + compressible: true, + extensions: ["shf"] + }, + "application/sieve": { + source: "iana", + extensions: ["siv", "sieve"] + }, + "application/simple-filter+xml": { + source: "iana", + compressible: true + }, + "application/simple-message-summary": { + source: "iana" + }, + "application/simplesymbolcontainer": { + source: "iana" + }, + "application/sipc": { + source: "iana" + }, + "application/slate": { + source: "iana" + }, + "application/smil": { + source: "iana" + }, + "application/smil+xml": { + source: "iana", + compressible: true, + extensions: ["smi", "smil"] + }, + "application/smpte336m": { + source: "iana" + }, + "application/soap+fastinfoset": { + source: "iana" + }, + "application/soap+xml": { + source: "iana", + compressible: true + }, + "application/sparql-query": { + source: "iana", + extensions: ["rq"] + }, + "application/sparql-results+xml": { + source: "iana", + compressible: true, + extensions: ["srx"] + }, + "application/spdx+json": { + source: "iana", + compressible: true + }, + "application/spirits-event+xml": { + source: "iana", + compressible: true + }, + "application/sql": { + source: "iana" + }, + "application/srgs": { + source: "iana", + extensions: ["gram"] + }, + "application/srgs+xml": { + source: "iana", + compressible: true, + extensions: ["grxml"] + }, + "application/sru+xml": { + source: "iana", + compressible: true, + extensions: ["sru"] + }, + "application/ssdl+xml": { + source: "apache", + compressible: true, + extensions: ["ssdl"] + }, + "application/ssml+xml": { + source: "iana", + compressible: true, + extensions: ["ssml"] + }, + "application/stix+json": { + source: "iana", + compressible: true + }, + "application/swid+xml": { + source: "iana", + compressible: true, + extensions: ["swidtag"] + }, + "application/tamp-apex-update": { + source: "iana" + }, + "application/tamp-apex-update-confirm": { + source: "iana" + }, + "application/tamp-community-update": { + source: "iana" + }, + "application/tamp-community-update-confirm": { + source: "iana" + }, + "application/tamp-error": { + source: "iana" + }, + "application/tamp-sequence-adjust": { + source: "iana" + }, + "application/tamp-sequence-adjust-confirm": { + source: "iana" + }, + "application/tamp-status-query": { + source: "iana" + }, + "application/tamp-status-response": { + source: "iana" + }, + "application/tamp-update": { + source: "iana" + }, + "application/tamp-update-confirm": { + source: "iana" + }, + "application/tar": { + compressible: true + }, + "application/taxii+json": { + source: "iana", + compressible: true + }, + "application/td+json": { + source: "iana", + compressible: true + }, + "application/tei+xml": { + source: "iana", + compressible: true, + extensions: ["tei", "teicorpus"] + }, + "application/tetra_isi": { + source: "iana" + }, + "application/thraud+xml": { + source: "iana", + compressible: true, + extensions: ["tfi"] + }, + "application/timestamp-query": { + source: "iana" + }, + "application/timestamp-reply": { + source: "iana" + }, + "application/timestamped-data": { + source: "iana", + extensions: ["tsd"] + }, + "application/tlsrpt+gzip": { + source: "iana" + }, + "application/tlsrpt+json": { + source: "iana", + compressible: true + }, + "application/tnauthlist": { + source: "iana" + }, + "application/token-introspection+jwt": { + source: "iana" + }, + "application/toml": { + compressible: true, + extensions: ["toml"] + }, + "application/trickle-ice-sdpfrag": { + source: "iana" + }, + "application/trig": { + source: "iana", + extensions: ["trig"] + }, + "application/ttml+xml": { + source: "iana", + compressible: true, + extensions: ["ttml"] + }, + "application/tve-trigger": { + source: "iana" + }, + "application/tzif": { + source: "iana" + }, + "application/tzif-leap": { + source: "iana" + }, + "application/ubjson": { + compressible: false, + extensions: ["ubj"] + }, + "application/ulpfec": { + source: "iana" + }, + "application/urc-grpsheet+xml": { + source: "iana", + compressible: true + }, + "application/urc-ressheet+xml": { + source: "iana", + compressible: true, + extensions: ["rsheet"] + }, + "application/urc-targetdesc+xml": { + source: "iana", + compressible: true, + extensions: ["td"] + }, + "application/urc-uisocketdesc+xml": { + source: "iana", + compressible: true + }, + "application/vcard+json": { + source: "iana", + compressible: true + }, + "application/vcard+xml": { + source: "iana", + compressible: true + }, + "application/vemmi": { + source: "iana" + }, + "application/vividence.scriptfile": { + source: "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + source: "iana", + compressible: true, + extensions: ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-v2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gnas": { + source: "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.bsf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gmop+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gtpc": { + source: "iana" + }, + "application/vnd.3gpp.interworking-data": { + source: "iana" + }, + "application/vnd.3gpp.lpp": { + source: "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-payload": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-signalling": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mid-call+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ngap": { + source: "iana" + }, + "application/vnd.3gpp.pfcp": { + source: "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + source: "iana", + extensions: ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + source: "iana", + extensions: ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + source: "iana", + extensions: ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + source: "iana" + }, + "application/vnd.3gpp.sms": { + source: "iana" + }, + "application/vnd.3gpp.sms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ussd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.sms": { + source: "iana" + }, + "application/vnd.3gpp2.tcap": { + source: "iana", + extensions: ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + source: "iana" + }, + "application/vnd.3m.post-it-notes": { + source: "iana", + extensions: ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + source: "iana", + extensions: ["aso"] + }, + "application/vnd.accpac.simply.imp": { + source: "iana", + extensions: ["imp"] + }, + "application/vnd.acucobol": { + source: "iana", + extensions: ["acu"] + }, + "application/vnd.acucorp": { + source: "iana", + extensions: ["atc", "acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + source: "apache", + compressible: false, + extensions: ["air"] + }, + "application/vnd.adobe.flash.movie": { + source: "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + source: "iana", + extensions: ["fcdt"] + }, + "application/vnd.adobe.fxp": { + source: "iana", + extensions: ["fxp", "fxpl"] + }, + "application/vnd.adobe.partial-upload": { + source: "iana" + }, + "application/vnd.adobe.xdp+xml": { + source: "iana", + compressible: true, + extensions: ["xdp"] + }, + "application/vnd.adobe.xfdf": { + source: "iana", + extensions: ["xfdf"] + }, + "application/vnd.aether.imp": { + source: "iana" + }, + "application/vnd.afpc.afplinedata": { + source: "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + source: "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + source: "iana" + }, + "application/vnd.afpc.foca-charset": { + source: "iana" + }, + "application/vnd.afpc.foca-codedfont": { + source: "iana" + }, + "application/vnd.afpc.foca-codepage": { + source: "iana" + }, + "application/vnd.afpc.modca": { + source: "iana" + }, + "application/vnd.afpc.modca-cmtable": { + source: "iana" + }, + "application/vnd.afpc.modca-formdef": { + source: "iana" + }, + "application/vnd.afpc.modca-mediummap": { + source: "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + source: "iana" + }, + "application/vnd.afpc.modca-overlay": { + source: "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + source: "iana" + }, + "application/vnd.age": { + source: "iana", + extensions: ["age"] + }, + "application/vnd.ah-barcode": { + source: "iana" + }, + "application/vnd.ahead.space": { + source: "iana", + extensions: ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + source: "iana", + extensions: ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + source: "iana", + extensions: ["azs"] + }, + "application/vnd.amadeus+json": { + source: "iana", + compressible: true + }, + "application/vnd.amazon.ebook": { + source: "apache", + extensions: ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + source: "iana" + }, + "application/vnd.americandynamics.acc": { + source: "iana", + extensions: ["acc"] + }, + "application/vnd.amiga.ami": { + source: "iana", + extensions: ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + source: "iana", + compressible: true + }, + "application/vnd.android.ota": { + source: "iana" + }, + "application/vnd.android.package-archive": { + source: "apache", + compressible: false, + extensions: ["apk"] + }, + "application/vnd.anki": { + source: "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + source: "iana", + extensions: ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + source: "apache", + extensions: ["fti"] + }, + "application/vnd.antix.game-component": { + source: "iana", + extensions: ["atx"] + }, + "application/vnd.apache.arrow.file": { + source: "iana" + }, + "application/vnd.apache.arrow.stream": { + source: "iana" + }, + "application/vnd.apache.thrift.binary": { + source: "iana" + }, + "application/vnd.apache.thrift.compact": { + source: "iana" + }, + "application/vnd.apache.thrift.json": { + source: "iana" + }, + "application/vnd.api+json": { + source: "iana", + compressible: true + }, + "application/vnd.aplextor.warrp+json": { + source: "iana", + compressible: true + }, + "application/vnd.apothekende.reservation+json": { + source: "iana", + compressible: true + }, + "application/vnd.apple.installer+xml": { + source: "iana", + compressible: true, + extensions: ["mpkg"] + }, + "application/vnd.apple.keynote": { + source: "iana", + extensions: ["key"] + }, + "application/vnd.apple.mpegurl": { + source: "iana", + extensions: ["m3u8"] + }, + "application/vnd.apple.numbers": { + source: "iana", + extensions: ["numbers"] + }, + "application/vnd.apple.pages": { + source: "iana", + extensions: ["pages"] + }, + "application/vnd.apple.pkpass": { + compressible: false, + extensions: ["pkpass"] + }, + "application/vnd.arastra.swi": { + source: "iana" + }, + "application/vnd.aristanetworks.swi": { + source: "iana", + extensions: ["swi"] + }, + "application/vnd.artisan+json": { + source: "iana", + compressible: true + }, + "application/vnd.artsquare": { + source: "iana" + }, + "application/vnd.astraea-software.iota": { + source: "iana", + extensions: ["iota"] + }, + "application/vnd.audiograph": { + source: "iana", + extensions: ["aep"] + }, + "application/vnd.autopackage": { + source: "iana" + }, + "application/vnd.avalon+json": { + source: "iana", + compressible: true + }, + "application/vnd.avistar+xml": { + source: "iana", + compressible: true + }, + "application/vnd.balsamiq.bmml+xml": { + source: "iana", + compressible: true, + extensions: ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + source: "iana" + }, + "application/vnd.banana-accounting": { + source: "iana" + }, + "application/vnd.bbf.usp.error": { + source: "iana" + }, + "application/vnd.bbf.usp.msg": { + source: "iana" + }, + "application/vnd.bbf.usp.msg+json": { + source: "iana", + compressible: true + }, + "application/vnd.bekitzur-stech+json": { + source: "iana", + compressible: true + }, + "application/vnd.bint.med-content": { + source: "iana" + }, + "application/vnd.biopax.rdf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.blink-idb-value-wrapper": { + source: "iana" + }, + "application/vnd.blueice.multipass": { + source: "iana", + extensions: ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + source: "iana" + }, + "application/vnd.bluetooth.le.oob": { + source: "iana" + }, + "application/vnd.bmi": { + source: "iana", + extensions: ["bmi"] + }, + "application/vnd.bpf": { + source: "iana" + }, + "application/vnd.bpf3": { + source: "iana" + }, + "application/vnd.businessobjects": { + source: "iana", + extensions: ["rep"] + }, + "application/vnd.byu.uapi+json": { + source: "iana", + compressible: true + }, + "application/vnd.cab-jscript": { + source: "iana" + }, + "application/vnd.canon-cpdl": { + source: "iana" + }, + "application/vnd.canon-lips": { + source: "iana" + }, + "application/vnd.capasystems-pg+json": { + source: "iana", + compressible: true + }, + "application/vnd.cendio.thinlinc.clientconf": { + source: "iana" + }, + "application/vnd.century-systems.tcp_stream": { + source: "iana" + }, + "application/vnd.chemdraw+xml": { + source: "iana", + compressible: true, + extensions: ["cdxml"] + }, + "application/vnd.chess-pgn": { + source: "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + source: "iana", + extensions: ["mmd"] + }, + "application/vnd.ciedi": { + source: "iana" + }, + "application/vnd.cinderella": { + source: "iana", + extensions: ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + source: "iana" + }, + "application/vnd.citationstyles.style+xml": { + source: "iana", + compressible: true, + extensions: ["csl"] + }, + "application/vnd.claymore": { + source: "iana", + extensions: ["cla"] + }, + "application/vnd.cloanto.rp9": { + source: "iana", + extensions: ["rp9"] + }, + "application/vnd.clonk.c4group": { + source: "iana", + extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + source: "iana", + extensions: ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + source: "iana", + extensions: ["c11amz"] + }, + "application/vnd.coffeescript": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + source: "iana" + }, + "application/vnd.collection+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.doc+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.next+json": { + source: "iana", + compressible: true + }, + "application/vnd.comicbook+zip": { + source: "iana", + compressible: false + }, + "application/vnd.comicbook-rar": { + source: "iana" + }, + "application/vnd.commerce-battelle": { + source: "iana" + }, + "application/vnd.commonspace": { + source: "iana", + extensions: ["csp"] + }, + "application/vnd.contact.cmsg": { + source: "iana", + extensions: ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + source: "iana", + compressible: true + }, + "application/vnd.cosmocaller": { + source: "iana", + extensions: ["cmc"] + }, + "application/vnd.crick.clicker": { + source: "iana", + extensions: ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + source: "iana", + extensions: ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + source: "iana", + extensions: ["clkp"] + }, + "application/vnd.crick.clicker.template": { + source: "iana", + extensions: ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + source: "iana", + extensions: ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + source: "iana", + compressible: true, + extensions: ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + source: "iana", + compressible: true + }, + "application/vnd.crypto-shade-file": { + source: "iana" + }, + "application/vnd.cryptomator.encrypted": { + source: "iana" + }, + "application/vnd.cryptomator.vault": { + source: "iana" + }, + "application/vnd.ctc-posml": { + source: "iana", + extensions: ["pml"] + }, + "application/vnd.ctct.ws+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cups-pdf": { + source: "iana" + }, + "application/vnd.cups-postscript": { + source: "iana" + }, + "application/vnd.cups-ppd": { + source: "iana", + extensions: ["ppd"] + }, + "application/vnd.cups-raster": { + source: "iana" + }, + "application/vnd.cups-raw": { + source: "iana" + }, + "application/vnd.curl": { + source: "iana" + }, + "application/vnd.curl.car": { + source: "apache", + extensions: ["car"] + }, + "application/vnd.curl.pcurl": { + source: "apache", + extensions: ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cybank": { + source: "iana" + }, + "application/vnd.cyclonedx+json": { + source: "iana", + compressible: true + }, + "application/vnd.cyclonedx+xml": { + source: "iana", + compressible: true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + source: "iana", + compressible: false + }, + "application/vnd.d3m-dataset": { + source: "iana" + }, + "application/vnd.d3m-problem": { + source: "iana" + }, + "application/vnd.dart": { + source: "iana", + compressible: true, + extensions: ["dart"] + }, + "application/vnd.data-vision.rdz": { + source: "iana", + extensions: ["rdz"] + }, + "application/vnd.datapackage+json": { + source: "iana", + compressible: true + }, + "application/vnd.dataresource+json": { + source: "iana", + compressible: true + }, + "application/vnd.dbf": { + source: "iana", + extensions: ["dbf"] + }, + "application/vnd.debian.binary-package": { + source: "iana" + }, + "application/vnd.dece.data": { + source: "iana", + extensions: ["uvf", "uvvf", "uvd", "uvvd"] + }, + "application/vnd.dece.ttml+xml": { + source: "iana", + compressible: true, + extensions: ["uvt", "uvvt"] + }, + "application/vnd.dece.unspecified": { + source: "iana", + extensions: ["uvx", "uvvx"] + }, + "application/vnd.dece.zip": { + source: "iana", + extensions: ["uvz", "uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + source: "iana", + extensions: ["fe_launch"] + }, + "application/vnd.desmume.movie": { + source: "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + source: "iana" + }, + "application/vnd.dm.delegation+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dna": { + source: "iana", + extensions: ["dna"] + }, + "application/vnd.document+json": { + source: "iana", + compressible: true + }, + "application/vnd.dolby.mlp": { + source: "apache", + extensions: ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + source: "iana" + }, + "application/vnd.dolby.mobile.2": { + source: "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + source: "iana" + }, + "application/vnd.dpgraph": { + source: "iana", + extensions: ["dpg"] + }, + "application/vnd.dreamfactory": { + source: "iana", + extensions: ["dfac"] + }, + "application/vnd.drive+json": { + source: "iana", + compressible: true + }, + "application/vnd.ds-keypoint": { + source: "apache", + extensions: ["kpxx"] + }, + "application/vnd.dtg.local": { + source: "iana" + }, + "application/vnd.dtg.local.flash": { + source: "iana" + }, + "application/vnd.dtg.local.html": { + source: "iana" + }, + "application/vnd.dvb.ait": { + source: "iana", + extensions: ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.dvbj": { + source: "iana" + }, + "application/vnd.dvb.esgcontainer": { + source: "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + source: "iana" + }, + "application/vnd.dvb.ipdcroaming": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + source: "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-container+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-generic+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-init+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.pfr": { + source: "iana" + }, + "application/vnd.dvb.service": { + source: "iana", + extensions: ["svc"] + }, + "application/vnd.dxr": { + source: "iana" + }, + "application/vnd.dynageo": { + source: "iana", + extensions: ["geo"] + }, + "application/vnd.dzr": { + source: "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + source: "iana" + }, + "application/vnd.ecdis-update": { + source: "iana" + }, + "application/vnd.ecip.rlp": { + source: "iana" + }, + "application/vnd.eclipse.ditto+json": { + source: "iana", + compressible: true + }, + "application/vnd.ecowin.chart": { + source: "iana", + extensions: ["mag"] + }, + "application/vnd.ecowin.filerequest": { + source: "iana" + }, + "application/vnd.ecowin.fileupdate": { + source: "iana" + }, + "application/vnd.ecowin.series": { + source: "iana" + }, + "application/vnd.ecowin.seriesrequest": { + source: "iana" + }, + "application/vnd.ecowin.seriesupdate": { + source: "iana" + }, + "application/vnd.efi.img": { + source: "iana" + }, + "application/vnd.efi.iso": { + source: "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + source: "iana", + compressible: true + }, + "application/vnd.enliven": { + source: "iana", + extensions: ["nml"] + }, + "application/vnd.enphase.envoy": { + source: "iana" + }, + "application/vnd.eprints.data+xml": { + source: "iana", + compressible: true + }, + "application/vnd.epson.esf": { + source: "iana", + extensions: ["esf"] + }, + "application/vnd.epson.msf": { + source: "iana", + extensions: ["msf"] + }, + "application/vnd.epson.quickanime": { + source: "iana", + extensions: ["qam"] + }, + "application/vnd.epson.salt": { + source: "iana", + extensions: ["slt"] + }, + "application/vnd.epson.ssf": { + source: "iana", + extensions: ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + source: "iana" + }, + "application/vnd.espass-espass+zip": { + source: "iana", + compressible: false + }, + "application/vnd.eszigno3+xml": { + source: "iana", + compressible: true, + extensions: ["es3", "et3"] + }, + "application/vnd.etsi.aoc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.asic-e+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.asic-s+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.cug+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvcommand+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvservice+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsync+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mcid+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mheg5": { + source: "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.pstn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.sci+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.simservs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.timestamp-token": { + source: "iana" + }, + "application/vnd.etsi.tsl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.tsl.der": { + source: "iana" + }, + "application/vnd.eu.kasparian.car+json": { + source: "iana", + compressible: true + }, + "application/vnd.eudora.data": { + source: "iana" + }, + "application/vnd.evolv.ecig.profile": { + source: "iana" + }, + "application/vnd.evolv.ecig.settings": { + source: "iana" + }, + "application/vnd.evolv.ecig.theme": { + source: "iana" + }, + "application/vnd.exstream-empower+zip": { + source: "iana", + compressible: false + }, + "application/vnd.exstream-package": { + source: "iana" + }, + "application/vnd.ezpix-album": { + source: "iana", + extensions: ["ez2"] + }, + "application/vnd.ezpix-package": { + source: "iana", + extensions: ["ez3"] + }, + "application/vnd.f-secure.mobile": { + source: "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + source: "iana", + compressible: false + }, + "application/vnd.fastcopy-disk-image": { + source: "iana" + }, + "application/vnd.fdf": { + source: "iana", + extensions: ["fdf"] + }, + "application/vnd.fdsn.mseed": { + source: "iana", + extensions: ["mseed"] + }, + "application/vnd.fdsn.seed": { + source: "iana", + extensions: ["seed", "dataless"] + }, + "application/vnd.ffsns": { + source: "iana" + }, + "application/vnd.ficlab.flb+zip": { + source: "iana", + compressible: false + }, + "application/vnd.filmit.zfc": { + source: "iana" + }, + "application/vnd.fints": { + source: "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + source: "iana" + }, + "application/vnd.flographit": { + source: "iana", + extensions: ["gph"] + }, + "application/vnd.fluxtime.clip": { + source: "iana", + extensions: ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + source: "iana" + }, + "application/vnd.framemaker": { + source: "iana", + extensions: ["fm", "frame", "maker", "book"] + }, + "application/vnd.frogans.fnc": { + source: "iana", + extensions: ["fnc"] + }, + "application/vnd.frogans.ltf": { + source: "iana", + extensions: ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + source: "iana", + extensions: ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + source: "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.fujitsu.oasys": { + source: "iana", + extensions: ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + source: "iana", + extensions: ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + source: "iana", + extensions: ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + source: "iana", + extensions: ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + source: "iana", + extensions: ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + source: "iana" + }, + "application/vnd.fujixerox.art4": { + source: "iana" + }, + "application/vnd.fujixerox.ddd": { + source: "iana", + extensions: ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + source: "iana", + extensions: ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + source: "iana", + extensions: ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + source: "iana" + }, + "application/vnd.fujixerox.hbpl": { + source: "iana" + }, + "application/vnd.fut-misnet": { + source: "iana" + }, + "application/vnd.futoin+cbor": { + source: "iana" + }, + "application/vnd.futoin+json": { + source: "iana", + compressible: true + }, + "application/vnd.fuzzysheet": { + source: "iana", + extensions: ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + source: "iana", + extensions: ["txd"] + }, + "application/vnd.gentics.grd+json": { + source: "iana", + compressible: true + }, + "application/vnd.geo+json": { + source: "iana", + compressible: true + }, + "application/vnd.geocube+xml": { + source: "iana", + compressible: true + }, + "application/vnd.geogebra.file": { + source: "iana", + extensions: ["ggb"] + }, + "application/vnd.geogebra.slides": { + source: "iana" + }, + "application/vnd.geogebra.tool": { + source: "iana", + extensions: ["ggt"] + }, + "application/vnd.geometry-explorer": { + source: "iana", + extensions: ["gex", "gre"] + }, + "application/vnd.geonext": { + source: "iana", + extensions: ["gxt"] + }, + "application/vnd.geoplan": { + source: "iana", + extensions: ["g2w"] + }, + "application/vnd.geospace": { + source: "iana", + extensions: ["g3w"] + }, + "application/vnd.gerber": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + source: "iana" + }, + "application/vnd.gmx": { + source: "iana", + extensions: ["gmx"] + }, + "application/vnd.google-apps.document": { + compressible: false, + extensions: ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + compressible: false, + extensions: ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + compressible: false, + extensions: ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + source: "iana", + compressible: true, + extensions: ["kml"] + }, + "application/vnd.google-earth.kmz": { + source: "iana", + compressible: false, + extensions: ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gov.sk.e-form+zip": { + source: "iana", + compressible: false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.grafeq": { + source: "iana", + extensions: ["gqf", "gqs"] + }, + "application/vnd.gridmp": { + source: "iana" + }, + "application/vnd.groove-account": { + source: "iana", + extensions: ["gac"] + }, + "application/vnd.groove-help": { + source: "iana", + extensions: ["ghf"] + }, + "application/vnd.groove-identity-message": { + source: "iana", + extensions: ["gim"] + }, + "application/vnd.groove-injector": { + source: "iana", + extensions: ["grv"] + }, + "application/vnd.groove-tool-message": { + source: "iana", + extensions: ["gtm"] + }, + "application/vnd.groove-tool-template": { + source: "iana", + extensions: ["tpl"] + }, + "application/vnd.groove-vcard": { + source: "iana", + extensions: ["vcg"] + }, + "application/vnd.hal+json": { + source: "iana", + compressible: true + }, + "application/vnd.hal+xml": { + source: "iana", + compressible: true, + extensions: ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + source: "iana", + compressible: true, + extensions: ["zmm"] + }, + "application/vnd.hbci": { + source: "iana", + extensions: ["hbci"] + }, + "application/vnd.hc+json": { + source: "iana", + compressible: true + }, + "application/vnd.hcl-bireports": { + source: "iana" + }, + "application/vnd.hdt": { + source: "iana" + }, + "application/vnd.heroku+json": { + source: "iana", + compressible: true + }, + "application/vnd.hhe.lesson-player": { + source: "iana", + extensions: ["les"] + }, + "application/vnd.hl7cda+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hl7v2+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hp-hpgl": { + source: "iana", + extensions: ["hpgl"] + }, + "application/vnd.hp-hpid": { + source: "iana", + extensions: ["hpid"] + }, + "application/vnd.hp-hps": { + source: "iana", + extensions: ["hps"] + }, + "application/vnd.hp-jlyt": { + source: "iana", + extensions: ["jlt"] + }, + "application/vnd.hp-pcl": { + source: "iana", + extensions: ["pcl"] + }, + "application/vnd.hp-pclxl": { + source: "iana", + extensions: ["pclxl"] + }, + "application/vnd.httphone": { + source: "iana" + }, + "application/vnd.hydrostatix.sof-data": { + source: "iana", + extensions: ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyper-item+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyperdrive+json": { + source: "iana", + compressible: true + }, + "application/vnd.hzn-3d-crossword": { + source: "iana" + }, + "application/vnd.ibm.afplinedata": { + source: "iana" + }, + "application/vnd.ibm.electronic-media": { + source: "iana" + }, + "application/vnd.ibm.minipay": { + source: "iana", + extensions: ["mpy"] + }, + "application/vnd.ibm.modcap": { + source: "iana", + extensions: ["afp", "listafp", "list3820"] + }, + "application/vnd.ibm.rights-management": { + source: "iana", + extensions: ["irm"] + }, + "application/vnd.ibm.secure-container": { + source: "iana", + extensions: ["sc"] + }, + "application/vnd.iccprofile": { + source: "iana", + extensions: ["icc", "icm"] + }, + "application/vnd.ieee.1905": { + source: "iana" + }, + "application/vnd.igloader": { + source: "iana", + extensions: ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + source: "iana", + compressible: false + }, + "application/vnd.imagemeter.image+zip": { + source: "iana", + compressible: false + }, + "application/vnd.immervision-ivp": { + source: "iana", + extensions: ["ivp"] + }, + "application/vnd.immervision-ivu": { + source: "iana", + extensions: ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + source: "iana" + }, + "application/vnd.ims.imsccv1p2": { + source: "iana" + }, + "application/vnd.ims.imsccv1p3": { + source: "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + source: "iana", + compressible: true + }, + "application/vnd.informedcontrol.rms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.informix-visionary": { + source: "iana" + }, + "application/vnd.infotech.project": { + source: "iana" + }, + "application/vnd.infotech.project+xml": { + source: "iana", + compressible: true + }, + "application/vnd.innopath.wamp.notification": { + source: "iana" + }, + "application/vnd.insors.igm": { + source: "iana", + extensions: ["igm"] + }, + "application/vnd.intercon.formnet": { + source: "iana", + extensions: ["xpw", "xpx"] + }, + "application/vnd.intergeo": { + source: "iana", + extensions: ["i2g"] + }, + "application/vnd.intertrust.digibox": { + source: "iana" + }, + "application/vnd.intertrust.nncp": { + source: "iana" + }, + "application/vnd.intu.qbo": { + source: "iana", + extensions: ["qbo"] + }, + "application/vnd.intu.qfx": { + source: "iana", + extensions: ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.packageitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.planningitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ipunplugged.rcprofile": { + source: "iana", + extensions: ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + source: "iana", + compressible: true, + extensions: ["irp"] + }, + "application/vnd.is-xpr": { + source: "iana", + extensions: ["xpr"] + }, + "application/vnd.isac.fcs": { + source: "iana", + extensions: ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + source: "iana", + compressible: false + }, + "application/vnd.jam": { + source: "iana", + extensions: ["jam"] + }, + "application/vnd.japannet-directory-service": { + source: "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-payment-wakeup": { + source: "iana" + }, + "application/vnd.japannet-registration": { + source: "iana" + }, + "application/vnd.japannet-registration-wakeup": { + source: "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-verification": { + source: "iana" + }, + "application/vnd.japannet-verification-wakeup": { + source: "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + source: "iana", + extensions: ["rms"] + }, + "application/vnd.jisp": { + source: "iana", + extensions: ["jisp"] + }, + "application/vnd.joost.joda-archive": { + source: "iana", + extensions: ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + source: "iana" + }, + "application/vnd.kahootz": { + source: "iana", + extensions: ["ktz", "ktr"] + }, + "application/vnd.kde.karbon": { + source: "iana", + extensions: ["karbon"] + }, + "application/vnd.kde.kchart": { + source: "iana", + extensions: ["chrt"] + }, + "application/vnd.kde.kformula": { + source: "iana", + extensions: ["kfo"] + }, + "application/vnd.kde.kivio": { + source: "iana", + extensions: ["flw"] + }, + "application/vnd.kde.kontour": { + source: "iana", + extensions: ["kon"] + }, + "application/vnd.kde.kpresenter": { + source: "iana", + extensions: ["kpr", "kpt"] + }, + "application/vnd.kde.kspread": { + source: "iana", + extensions: ["ksp"] + }, + "application/vnd.kde.kword": { + source: "iana", + extensions: ["kwd", "kwt"] + }, + "application/vnd.kenameaapp": { + source: "iana", + extensions: ["htke"] + }, + "application/vnd.kidspiration": { + source: "iana", + extensions: ["kia"] + }, + "application/vnd.kinar": { + source: "iana", + extensions: ["kne", "knp"] + }, + "application/vnd.koan": { + source: "iana", + extensions: ["skp", "skd", "skt", "skm"] + }, + "application/vnd.kodak-descriptor": { + source: "iana", + extensions: ["sse"] + }, + "application/vnd.las": { + source: "iana" + }, + "application/vnd.las.las+json": { + source: "iana", + compressible: true + }, + "application/vnd.las.las+xml": { + source: "iana", + compressible: true, + extensions: ["lasxml"] + }, + "application/vnd.laszip": { + source: "iana" + }, + "application/vnd.leap+json": { + source: "iana", + compressible: true + }, + "application/vnd.liberty-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + source: "iana", + extensions: ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + source: "iana", + compressible: true, + extensions: ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + source: "iana", + compressible: false + }, + "application/vnd.loom": { + source: "iana" + }, + "application/vnd.lotus-1-2-3": { + source: "iana", + extensions: ["123"] + }, + "application/vnd.lotus-approach": { + source: "iana", + extensions: ["apr"] + }, + "application/vnd.lotus-freelance": { + source: "iana", + extensions: ["pre"] + }, + "application/vnd.lotus-notes": { + source: "iana", + extensions: ["nsf"] + }, + "application/vnd.lotus-organizer": { + source: "iana", + extensions: ["org"] + }, + "application/vnd.lotus-screencam": { + source: "iana", + extensions: ["scm"] + }, + "application/vnd.lotus-wordpro": { + source: "iana", + extensions: ["lwp"] + }, + "application/vnd.macports.portpkg": { + source: "iana", + extensions: ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + source: "iana", + extensions: ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.conftoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.license+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.mdcf": { + source: "iana" + }, + "application/vnd.mason+json": { + source: "iana", + compressible: true + }, + "application/vnd.maxar.archive.3tz+zip": { + source: "iana", + compressible: false + }, + "application/vnd.maxmind.maxmind-db": { + source: "iana" + }, + "application/vnd.mcd": { + source: "iana", + extensions: ["mcd"] + }, + "application/vnd.medcalcdata": { + source: "iana", + extensions: ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + source: "iana", + extensions: ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + source: "iana" + }, + "application/vnd.mfer": { + source: "iana", + extensions: ["mwf"] + }, + "application/vnd.mfmp": { + source: "iana", + extensions: ["mfm"] + }, + "application/vnd.micro+json": { + source: "iana", + compressible: true + }, + "application/vnd.micrografx.flo": { + source: "iana", + extensions: ["flo"] + }, + "application/vnd.micrografx.igx": { + source: "iana", + extensions: ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + source: "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + source: "iana" + }, + "application/vnd.miele+json": { + source: "iana", + compressible: true + }, + "application/vnd.mif": { + source: "iana", + extensions: ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + source: "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + source: "iana" + }, + "application/vnd.mobius.daf": { + source: "iana", + extensions: ["daf"] + }, + "application/vnd.mobius.dis": { + source: "iana", + extensions: ["dis"] + }, + "application/vnd.mobius.mbk": { + source: "iana", + extensions: ["mbk"] + }, + "application/vnd.mobius.mqy": { + source: "iana", + extensions: ["mqy"] + }, + "application/vnd.mobius.msl": { + source: "iana", + extensions: ["msl"] + }, + "application/vnd.mobius.plc": { + source: "iana", + extensions: ["plc"] + }, + "application/vnd.mobius.txf": { + source: "iana", + extensions: ["txf"] + }, + "application/vnd.mophun.application": { + source: "iana", + extensions: ["mpn"] + }, + "application/vnd.mophun.certificate": { + source: "iana", + extensions: ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + source: "iana" + }, + "application/vnd.motorola.iprm": { + source: "iana" + }, + "application/vnd.mozilla.xul+xml": { + source: "iana", + compressible: true, + extensions: ["xul"] + }, + "application/vnd.ms-3mfdocument": { + source: "iana" + }, + "application/vnd.ms-artgalry": { + source: "iana", + extensions: ["cil"] + }, + "application/vnd.ms-asf": { + source: "iana" + }, + "application/vnd.ms-cab-compressed": { + source: "iana", + extensions: ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + source: "apache" + }, + "application/vnd.ms-excel": { + source: "iana", + compressible: false, + extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + source: "iana", + extensions: ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + source: "iana", + extensions: ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + source: "iana", + extensions: ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + source: "iana", + extensions: ["xltm"] + }, + "application/vnd.ms-fontobject": { + source: "iana", + compressible: true, + extensions: ["eot"] + }, + "application/vnd.ms-htmlhelp": { + source: "iana", + extensions: ["chm"] + }, + "application/vnd.ms-ims": { + source: "iana", + extensions: ["ims"] + }, + "application/vnd.ms-lrm": { + source: "iana", + extensions: ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-officetheme": { + source: "iana", + extensions: ["thmx"] + }, + "application/vnd.ms-opentype": { + source: "apache", + compressible: true + }, + "application/vnd.ms-outlook": { + compressible: false, + extensions: ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + source: "apache" + }, + "application/vnd.ms-pki.seccat": { + source: "apache", + extensions: ["cat"] + }, + "application/vnd.ms-pki.stl": { + source: "apache", + extensions: ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-powerpoint": { + source: "iana", + compressible: false, + extensions: ["ppt", "pps", "pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + source: "iana", + extensions: ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + source: "iana", + extensions: ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + source: "iana", + extensions: ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + source: "iana", + extensions: ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + source: "iana", + extensions: ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-printing.printticket+xml": { + source: "apache", + compressible: true + }, + "application/vnd.ms-printschematicket+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-project": { + source: "iana", + extensions: ["mpp", "mpt"] + }, + "application/vnd.ms-tnef": { + source: "iana" + }, + "application/vnd.ms-windows.devicepairing": { + source: "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + source: "iana" + }, + "application/vnd.ms-windows.printerpairing": { + source: "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + source: "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + source: "iana", + extensions: ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + source: "iana", + extensions: ["dotm"] + }, + "application/vnd.ms-works": { + source: "iana", + extensions: ["wps", "wks", "wcm", "wdb"] + }, + "application/vnd.ms-wpl": { + source: "iana", + extensions: ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + source: "iana", + compressible: false, + extensions: ["xps"] + }, + "application/vnd.msa-disk-image": { + source: "iana" + }, + "application/vnd.mseq": { + source: "iana", + extensions: ["mseq"] + }, + "application/vnd.msign": { + source: "iana" + }, + "application/vnd.multiad.creator": { + source: "iana" + }, + "application/vnd.multiad.creator.cif": { + source: "iana" + }, + "application/vnd.music-niff": { + source: "iana" + }, + "application/vnd.musician": { + source: "iana", + extensions: ["mus"] + }, + "application/vnd.muvee.style": { + source: "iana", + extensions: ["msty"] + }, + "application/vnd.mynfc": { + source: "iana", + extensions: ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + source: "iana", + compressible: true + }, + "application/vnd.ncd.control": { + source: "iana" + }, + "application/vnd.ncd.reference": { + source: "iana" + }, + "application/vnd.nearst.inv+json": { + source: "iana", + compressible: true + }, + "application/vnd.nebumind.line": { + source: "iana" + }, + "application/vnd.nervana": { + source: "iana" + }, + "application/vnd.netfpx": { + source: "iana" + }, + "application/vnd.neurolanguage.nlu": { + source: "iana", + extensions: ["nlu"] + }, + "application/vnd.nimn": { + source: "iana" + }, + "application/vnd.nintendo.nitro.rom": { + source: "iana" + }, + "application/vnd.nintendo.snes.rom": { + source: "iana" + }, + "application/vnd.nitf": { + source: "iana", + extensions: ["ntf", "nitf"] + }, + "application/vnd.noblenet-directory": { + source: "iana", + extensions: ["nnd"] + }, + "application/vnd.noblenet-sealer": { + source: "iana", + extensions: ["nns"] + }, + "application/vnd.noblenet-web": { + source: "iana", + extensions: ["nnw"] + }, + "application/vnd.nokia.catalogs": { + source: "iana" + }, + "application/vnd.nokia.conml+wbxml": { + source: "iana" + }, + "application/vnd.nokia.conml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.iptv.config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.isds-radio-presets": { + source: "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + source: "iana" + }, + "application/vnd.nokia.landmark+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.landmarkcollection+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.n-gage.ac+xml": { + source: "iana", + compressible: true, + extensions: ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + source: "iana", + extensions: ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + source: "iana", + extensions: ["n-gage"] + }, + "application/vnd.nokia.ncd": { + source: "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + source: "iana" + }, + "application/vnd.nokia.pcd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.radio-preset": { + source: "iana", + extensions: ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + source: "iana", + extensions: ["rpss"] + }, + "application/vnd.novadigm.edm": { + source: "iana", + extensions: ["edm"] + }, + "application/vnd.novadigm.edx": { + source: "iana", + extensions: ["edx"] + }, + "application/vnd.novadigm.ext": { + source: "iana", + extensions: ["ext"] + }, + "application/vnd.ntt-local.content-share": { + source: "iana" + }, + "application/vnd.ntt-local.file-transfer": { + source: "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + source: "iana" + }, + "application/vnd.oasis.opendocument.chart": { + source: "iana", + extensions: ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + source: "iana", + extensions: ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + source: "iana", + extensions: ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + source: "iana", + extensions: ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + source: "iana", + extensions: ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + source: "iana", + compressible: false, + extensions: ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + source: "iana", + extensions: ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + source: "iana", + extensions: ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + source: "iana", + extensions: ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + source: "iana", + compressible: false, + extensions: ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + source: "iana", + extensions: ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + source: "iana", + compressible: false, + extensions: ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + source: "iana", + extensions: ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + source: "iana", + compressible: false, + extensions: ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + source: "iana", + extensions: ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + source: "iana", + extensions: ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + source: "iana", + extensions: ["oth"] + }, + "application/vnd.obn": { + source: "iana" + }, + "application/vnd.ocf+cbor": { + source: "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.oftn.l10n+json": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.cspg-hexbinary": { + source: "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.dae.xhtml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.pae.gem": { + source: "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.spdlist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.ueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.userprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.olpc-sugar": { + source: "iana", + extensions: ["xo"] + }, + "application/vnd.oma-scws-config": { + source: "iana" + }, + "application/vnd.oma-scws-http-request": { + source: "iana" + }, + "application/vnd.oma-scws-http-response": { + source: "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.imd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.ltkm": { + source: "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + source: "iana" + }, + "application/vnd.oma.bcast.sgboot": { + source: "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sgdu": { + source: "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + source: "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sprov+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.stkm": { + source: "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-feature-handler+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-pcc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-subs-invite+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-user-prefs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.dcd": { + source: "iana" + }, + "application/vnd.oma.dcdc": { + source: "iana" + }, + "application/vnd.oma.dd2+xml": { + source: "iana", + compressible: true, + extensions: ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.group-usage-list+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+cbor": { + source: "iana" + }, + "application/vnd.oma.lwm2m+json": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+tlv": { + source: "iana" + }, + "application/vnd.oma.pal+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.final-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.groups+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.push": { + source: "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.xcap-directory+xml": { + source: "iana", + compressible: true + }, + "application/vnd.omads-email+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-file+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-folder+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omaloc-supl-init": { + source: "iana" + }, + "application/vnd.onepager": { + source: "iana" + }, + "application/vnd.onepagertamp": { + source: "iana" + }, + "application/vnd.onepagertamx": { + source: "iana" + }, + "application/vnd.onepagertat": { + source: "iana" + }, + "application/vnd.onepagertatp": { + source: "iana" + }, + "application/vnd.onepagertatx": { + source: "iana" + }, + "application/vnd.openblox.game+xml": { + source: "iana", + compressible: true, + extensions: ["obgx"] + }, + "application/vnd.openblox.game-binary": { + source: "iana" + }, + "application/vnd.openeye.oeb": { + source: "iana" + }, + "application/vnd.openofficeorg.extension": { + source: "apache", + extensions: ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + source: "iana", + compressible: true, + extensions: ["osm"] + }, + "application/vnd.opentimestamps.ots": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + source: "iana", + compressible: false, + extensions: ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + source: "iana", + extensions: ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + source: "iana", + extensions: ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + source: "iana", + extensions: ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + source: "iana", + compressible: false, + extensions: ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + source: "iana", + extensions: ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + source: "iana", + compressible: false, + extensions: ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + source: "iana", + extensions: ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oracle.resource+json": { + source: "iana", + compressible: true + }, + "application/vnd.orange.indata": { + source: "iana" + }, + "application/vnd.osa.netdeploy": { + source: "iana" + }, + "application/vnd.osgeo.mapguide.package": { + source: "iana", + extensions: ["mgp"] + }, + "application/vnd.osgi.bundle": { + source: "iana" + }, + "application/vnd.osgi.dp": { + source: "iana", + extensions: ["dp"] + }, + "application/vnd.osgi.subsystem": { + source: "iana", + extensions: ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oxli.countgraph": { + source: "iana" + }, + "application/vnd.pagerduty+json": { + source: "iana", + compressible: true + }, + "application/vnd.palm": { + source: "iana", + extensions: ["pdb", "pqa", "oprc"] + }, + "application/vnd.panoply": { + source: "iana" + }, + "application/vnd.paos.xml": { + source: "iana" + }, + "application/vnd.patentdive": { + source: "iana" + }, + "application/vnd.patientecommsdoc": { + source: "iana" + }, + "application/vnd.pawaafile": { + source: "iana", + extensions: ["paw"] + }, + "application/vnd.pcos": { + source: "iana" + }, + "application/vnd.pg.format": { + source: "iana", + extensions: ["str"] + }, + "application/vnd.pg.osasli": { + source: "iana", + extensions: ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + source: "iana" + }, + "application/vnd.picsel": { + source: "iana", + extensions: ["efif"] + }, + "application/vnd.pmi.widget": { + source: "iana", + extensions: ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + source: "iana", + compressible: true + }, + "application/vnd.pocketlearn": { + source: "iana", + extensions: ["plf"] + }, + "application/vnd.powerbuilder6": { + source: "iana", + extensions: ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + source: "iana" + }, + "application/vnd.powerbuilder7": { + source: "iana" + }, + "application/vnd.powerbuilder7-s": { + source: "iana" + }, + "application/vnd.powerbuilder75": { + source: "iana" + }, + "application/vnd.powerbuilder75-s": { + source: "iana" + }, + "application/vnd.preminet": { + source: "iana" + }, + "application/vnd.previewsystems.box": { + source: "iana", + extensions: ["box"] + }, + "application/vnd.proteus.magazine": { + source: "iana", + extensions: ["mgz"] + }, + "application/vnd.psfs": { + source: "iana" + }, + "application/vnd.publishare-delta-tree": { + source: "iana", + extensions: ["qps"] + }, + "application/vnd.pvi.ptid1": { + source: "iana", + extensions: ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + source: "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + source: "iana", + compressible: true + }, + "application/vnd.qualcomm.brew-app-res": { + source: "iana" + }, + "application/vnd.quarantainenet": { + source: "iana" + }, + "application/vnd.quark.quarkxpress": { + source: "iana", + extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] + }, + "application/vnd.quobject-quoxdocument": { + source: "iana" + }, + "application/vnd.radisys.moml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + source: "iana", + compressible: true + }, + "application/vnd.rainstor.data": { + source: "iana" + }, + "application/vnd.rapid": { + source: "iana" + }, + "application/vnd.rar": { + source: "iana", + extensions: ["rar"] + }, + "application/vnd.realvnc.bed": { + source: "iana", + extensions: ["bed"] + }, + "application/vnd.recordare.musicxml": { + source: "iana", + extensions: ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + source: "iana", + compressible: true, + extensions: ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + source: "iana" + }, + "application/vnd.resilient.logic": { + source: "iana" + }, + "application/vnd.restful+json": { + source: "iana", + compressible: true + }, + "application/vnd.rig.cryptonote": { + source: "iana", + extensions: ["cryptonote"] + }, + "application/vnd.rim.cod": { + source: "apache", + extensions: ["cod"] + }, + "application/vnd.rn-realmedia": { + source: "apache", + extensions: ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + source: "apache", + extensions: ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + source: "iana", + compressible: true, + extensions: ["link66"] + }, + "application/vnd.rs-274x": { + source: "iana" + }, + "application/vnd.ruckus.download": { + source: "iana" + }, + "application/vnd.s3sms": { + source: "iana" + }, + "application/vnd.sailingtracker.track": { + source: "iana", + extensions: ["st"] + }, + "application/vnd.sar": { + source: "iana" + }, + "application/vnd.sbm.cid": { + source: "iana" + }, + "application/vnd.sbm.mid2": { + source: "iana" + }, + "application/vnd.scribus": { + source: "iana" + }, + "application/vnd.sealed.3df": { + source: "iana" + }, + "application/vnd.sealed.csf": { + source: "iana" + }, + "application/vnd.sealed.doc": { + source: "iana" + }, + "application/vnd.sealed.eml": { + source: "iana" + }, + "application/vnd.sealed.mht": { + source: "iana" + }, + "application/vnd.sealed.net": { + source: "iana" + }, + "application/vnd.sealed.ppt": { + source: "iana" + }, + "application/vnd.sealed.tiff": { + source: "iana" + }, + "application/vnd.sealed.xls": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + source: "iana" + }, + "application/vnd.seemail": { + source: "iana", + extensions: ["see"] + }, + "application/vnd.seis+json": { + source: "iana", + compressible: true + }, + "application/vnd.sema": { + source: "iana", + extensions: ["sema"] + }, + "application/vnd.semd": { + source: "iana", + extensions: ["semd"] + }, + "application/vnd.semf": { + source: "iana", + extensions: ["semf"] + }, + "application/vnd.shade-save-file": { + source: "iana" + }, + "application/vnd.shana.informed.formdata": { + source: "iana", + extensions: ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + source: "iana", + extensions: ["itp"] + }, + "application/vnd.shana.informed.interchange": { + source: "iana", + extensions: ["iif"] + }, + "application/vnd.shana.informed.package": { + source: "iana", + extensions: ["ipk"] + }, + "application/vnd.shootproof+json": { + source: "iana", + compressible: true + }, + "application/vnd.shopkick+json": { + source: "iana", + compressible: true + }, + "application/vnd.shp": { + source: "iana" + }, + "application/vnd.shx": { + source: "iana" + }, + "application/vnd.sigrok.session": { + source: "iana" + }, + "application/vnd.simtech-mindmapper": { + source: "iana", + extensions: ["twd", "twds"] + }, + "application/vnd.siren+json": { + source: "iana", + compressible: true + }, + "application/vnd.smaf": { + source: "iana", + extensions: ["mmf"] + }, + "application/vnd.smart.notebook": { + source: "iana" + }, + "application/vnd.smart.teacher": { + source: "iana", + extensions: ["teacher"] + }, + "application/vnd.snesdev-page-table": { + source: "iana" + }, + "application/vnd.software602.filler.form+xml": { + source: "iana", + compressible: true, + extensions: ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + source: "iana" + }, + "application/vnd.solent.sdkm+xml": { + source: "iana", + compressible: true, + extensions: ["sdkm", "sdkd"] + }, + "application/vnd.spotfire.dxp": { + source: "iana", + extensions: ["dxp"] + }, + "application/vnd.spotfire.sfs": { + source: "iana", + extensions: ["sfs"] + }, + "application/vnd.sqlite3": { + source: "iana" + }, + "application/vnd.sss-cod": { + source: "iana" + }, + "application/vnd.sss-dtf": { + source: "iana" + }, + "application/vnd.sss-ntf": { + source: "iana" + }, + "application/vnd.stardivision.calc": { + source: "apache", + extensions: ["sdc"] + }, + "application/vnd.stardivision.draw": { + source: "apache", + extensions: ["sda"] + }, + "application/vnd.stardivision.impress": { + source: "apache", + extensions: ["sdd"] + }, + "application/vnd.stardivision.math": { + source: "apache", + extensions: ["smf"] + }, + "application/vnd.stardivision.writer": { + source: "apache", + extensions: ["sdw", "vor"] + }, + "application/vnd.stardivision.writer-global": { + source: "apache", + extensions: ["sgl"] + }, + "application/vnd.stepmania.package": { + source: "iana", + extensions: ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + source: "iana", + extensions: ["sm"] + }, + "application/vnd.street-stream": { + source: "iana" + }, + "application/vnd.sun.wadl+xml": { + source: "iana", + compressible: true, + extensions: ["wadl"] + }, + "application/vnd.sun.xml.calc": { + source: "apache", + extensions: ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + source: "apache", + extensions: ["stc"] + }, + "application/vnd.sun.xml.draw": { + source: "apache", + extensions: ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + source: "apache", + extensions: ["std"] + }, + "application/vnd.sun.xml.impress": { + source: "apache", + extensions: ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + source: "apache", + extensions: ["sti"] + }, + "application/vnd.sun.xml.math": { + source: "apache", + extensions: ["sxm"] + }, + "application/vnd.sun.xml.writer": { + source: "apache", + extensions: ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + source: "apache", + extensions: ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + source: "apache", + extensions: ["stw"] + }, + "application/vnd.sus-calendar": { + source: "iana", + extensions: ["sus", "susp"] + }, + "application/vnd.svd": { + source: "iana", + extensions: ["svd"] + }, + "application/vnd.swiftview-ics": { + source: "iana" + }, + "application/vnd.sycle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.syft+json": { + source: "iana", + compressible: true + }, + "application/vnd.symbian.install": { + source: "apache", + extensions: ["sis", "sisx"] + }, + "application/vnd.syncml+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + source: "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmddf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.syncml.ds.notification": { + source: "iana" + }, + "application/vnd.tableschema+json": { + source: "iana", + compressible: true + }, + "application/vnd.tao.intent-module-archive": { + source: "iana", + extensions: ["tao"] + }, + "application/vnd.tcpdump.pcap": { + source: "iana", + extensions: ["pcap", "cap", "dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + source: "iana", + compressible: true + }, + "application/vnd.tmd.mediaflex.api+xml": { + source: "iana", + compressible: true + }, + "application/vnd.tml": { + source: "iana" + }, + "application/vnd.tmobile-livetv": { + source: "iana", + extensions: ["tmo"] + }, + "application/vnd.tri.onesource": { + source: "iana" + }, + "application/vnd.trid.tpt": { + source: "iana", + extensions: ["tpt"] + }, + "application/vnd.triscape.mxs": { + source: "iana", + extensions: ["mxs"] + }, + "application/vnd.trueapp": { + source: "iana", + extensions: ["tra"] + }, + "application/vnd.truedoc": { + source: "iana" + }, + "application/vnd.ubisoft.webplayer": { + source: "iana" + }, + "application/vnd.ufdl": { + source: "iana", + extensions: ["ufd", "ufdl"] + }, + "application/vnd.uiq.theme": { + source: "iana", + extensions: ["utz"] + }, + "application/vnd.umajin": { + source: "iana", + extensions: ["umj"] + }, + "application/vnd.unity": { + source: "iana", + extensions: ["unityweb"] + }, + "application/vnd.uoml+xml": { + source: "iana", + compressible: true, + extensions: ["uoml"] + }, + "application/vnd.uplanet.alert": { + source: "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.cacheop": { + source: "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.channel": { + source: "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.list": { + source: "iana" + }, + "application/vnd.uplanet.list-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.listcmd": { + source: "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.signal": { + source: "iana" + }, + "application/vnd.uri-map": { + source: "iana" + }, + "application/vnd.valve.source.material": { + source: "iana" + }, + "application/vnd.vcx": { + source: "iana", + extensions: ["vcx"] + }, + "application/vnd.vd-study": { + source: "iana" + }, + "application/vnd.vectorworks": { + source: "iana" + }, + "application/vnd.vel+json": { + source: "iana", + compressible: true + }, + "application/vnd.verimatrix.vcas": { + source: "iana" + }, + "application/vnd.veritone.aion+json": { + source: "iana", + compressible: true + }, + "application/vnd.veryant.thin": { + source: "iana" + }, + "application/vnd.ves.encrypted": { + source: "iana" + }, + "application/vnd.vidsoft.vidconference": { + source: "iana" + }, + "application/vnd.visio": { + source: "iana", + extensions: ["vsd", "vst", "vss", "vsw"] + }, + "application/vnd.visionary": { + source: "iana", + extensions: ["vis"] + }, + "application/vnd.vividence.scriptfile": { + source: "iana" + }, + "application/vnd.vsf": { + source: "iana", + extensions: ["vsf"] + }, + "application/vnd.wap.sic": { + source: "iana" + }, + "application/vnd.wap.slc": { + source: "iana" + }, + "application/vnd.wap.wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["wbxml"] + }, + "application/vnd.wap.wmlc": { + source: "iana", + extensions: ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + source: "iana", + extensions: ["wmlsc"] + }, + "application/vnd.webturbo": { + source: "iana", + extensions: ["wtb"] + }, + "application/vnd.wfa.dpp": { + source: "iana" + }, + "application/vnd.wfa.p2p": { + source: "iana" + }, + "application/vnd.wfa.wsc": { + source: "iana" + }, + "application/vnd.windows.devicepairing": { + source: "iana" + }, + "application/vnd.wmc": { + source: "iana" + }, + "application/vnd.wmf.bootstrap": { + source: "iana" + }, + "application/vnd.wolfram.mathematica": { + source: "iana" + }, + "application/vnd.wolfram.mathematica.package": { + source: "iana" + }, + "application/vnd.wolfram.player": { + source: "iana", + extensions: ["nbp"] + }, + "application/vnd.wordperfect": { + source: "iana", + extensions: ["wpd"] + }, + "application/vnd.wqd": { + source: "iana", + extensions: ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + source: "iana" + }, + "application/vnd.wt.stf": { + source: "iana", + extensions: ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + source: "iana" + }, + "application/vnd.wv.csp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.wv.ssp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xacml+json": { + source: "iana", + compressible: true + }, + "application/vnd.xara": { + source: "iana", + extensions: ["xar"] + }, + "application/vnd.xfdl": { + source: "iana", + extensions: ["xfdl"] + }, + "application/vnd.xfdl.webform": { + source: "iana" + }, + "application/vnd.xmi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xmpie.cpkg": { + source: "iana" + }, + "application/vnd.xmpie.dpkg": { + source: "iana" + }, + "application/vnd.xmpie.plan": { + source: "iana" + }, + "application/vnd.xmpie.ppkg": { + source: "iana" + }, + "application/vnd.xmpie.xlim": { + source: "iana" + }, + "application/vnd.yamaha.hv-dic": { + source: "iana", + extensions: ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + source: "iana", + extensions: ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + source: "iana", + extensions: ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + source: "iana", + extensions: ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + source: "iana", + compressible: true, + extensions: ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + source: "iana" + }, + "application/vnd.yamaha.smaf-audio": { + source: "iana", + extensions: ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + source: "iana", + extensions: ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + source: "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + source: "iana" + }, + "application/vnd.yaoweme": { + source: "iana" + }, + "application/vnd.yellowriver-custom-menu": { + source: "iana", + extensions: ["cmp"] + }, + "application/vnd.youtube.yt": { + source: "iana" + }, + "application/vnd.zul": { + source: "iana", + extensions: ["zir", "zirz"] + }, + "application/vnd.zzazz.deck+xml": { + source: "iana", + compressible: true, + extensions: ["zaz"] + }, + "application/voicexml+xml": { + source: "iana", + compressible: true, + extensions: ["vxml"] + }, + "application/voucher-cms+json": { + source: "iana", + compressible: true + }, + "application/vq-rtcpxr": { + source: "iana" + }, + "application/wasm": { + source: "iana", + compressible: true, + extensions: ["wasm"] + }, + "application/watcherinfo+xml": { + source: "iana", + compressible: true, + extensions: ["wif"] + }, + "application/webpush-options+json": { + source: "iana", + compressible: true + }, + "application/whoispp-query": { + source: "iana" + }, + "application/whoispp-response": { + source: "iana" + }, + "application/widget": { + source: "iana", + extensions: ["wgt"] + }, + "application/winhlp": { + source: "apache", + extensions: ["hlp"] + }, + "application/wita": { + source: "iana" + }, + "application/wordperfect5.1": { + source: "iana" + }, + "application/wsdl+xml": { + source: "iana", + compressible: true, + extensions: ["wsdl"] + }, + "application/wspolicy+xml": { + source: "iana", + compressible: true, + extensions: ["wspolicy"] + }, + "application/x-7z-compressed": { + source: "apache", + compressible: false, + extensions: ["7z"] + }, + "application/x-abiword": { + source: "apache", + extensions: ["abw"] + }, + "application/x-ace-compressed": { + source: "apache", + extensions: ["ace"] + }, + "application/x-amf": { + source: "apache" + }, + "application/x-apple-diskimage": { + source: "apache", + extensions: ["dmg"] + }, + "application/x-arj": { + compressible: false, + extensions: ["arj"] + }, + "application/x-authorware-bin": { + source: "apache", + extensions: ["aab", "x32", "u32", "vox"] + }, + "application/x-authorware-map": { + source: "apache", + extensions: ["aam"] + }, + "application/x-authorware-seg": { + source: "apache", + extensions: ["aas"] + }, + "application/x-bcpio": { + source: "apache", + extensions: ["bcpio"] + }, + "application/x-bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/x-bittorrent": { + source: "apache", + extensions: ["torrent"] + }, + "application/x-blorb": { + source: "apache", + extensions: ["blb", "blorb"] + }, + "application/x-bzip": { + source: "apache", + compressible: false, + extensions: ["bz"] + }, + "application/x-bzip2": { + source: "apache", + compressible: false, + extensions: ["bz2", "boz"] + }, + "application/x-cbr": { + source: "apache", + extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] + }, + "application/x-cdlink": { + source: "apache", + extensions: ["vcd"] + }, + "application/x-cfs-compressed": { + source: "apache", + extensions: ["cfs"] + }, + "application/x-chat": { + source: "apache", + extensions: ["chat"] + }, + "application/x-chess-pgn": { + source: "apache", + extensions: ["pgn"] + }, + "application/x-chrome-extension": { + extensions: ["crx"] + }, + "application/x-cocoa": { + source: "nginx", + extensions: ["cco"] + }, + "application/x-compress": { + source: "apache" + }, + "application/x-conference": { + source: "apache", + extensions: ["nsc"] + }, + "application/x-cpio": { + source: "apache", + extensions: ["cpio"] + }, + "application/x-csh": { + source: "apache", + extensions: ["csh"] + }, + "application/x-deb": { + compressible: false + }, + "application/x-debian-package": { + source: "apache", + extensions: ["deb", "udeb"] + }, + "application/x-dgc-compressed": { + source: "apache", + extensions: ["dgc"] + }, + "application/x-director": { + source: "apache", + extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] + }, + "application/x-doom": { + source: "apache", + extensions: ["wad"] + }, + "application/x-dtbncx+xml": { + source: "apache", + compressible: true, + extensions: ["ncx"] + }, + "application/x-dtbook+xml": { + source: "apache", + compressible: true, + extensions: ["dtb"] + }, + "application/x-dtbresource+xml": { + source: "apache", + compressible: true, + extensions: ["res"] + }, + "application/x-dvi": { + source: "apache", + compressible: false, + extensions: ["dvi"] + }, + "application/x-envoy": { + source: "apache", + extensions: ["evy"] + }, + "application/x-eva": { + source: "apache", + extensions: ["eva"] + }, + "application/x-font-bdf": { + source: "apache", + extensions: ["bdf"] + }, + "application/x-font-dos": { + source: "apache" + }, + "application/x-font-framemaker": { + source: "apache" + }, + "application/x-font-ghostscript": { + source: "apache", + extensions: ["gsf"] + }, + "application/x-font-libgrx": { + source: "apache" + }, + "application/x-font-linux-psf": { + source: "apache", + extensions: ["psf"] + }, + "application/x-font-pcf": { + source: "apache", + extensions: ["pcf"] + }, + "application/x-font-snf": { + source: "apache", + extensions: ["snf"] + }, + "application/x-font-speedo": { + source: "apache" + }, + "application/x-font-sunos-news": { + source: "apache" + }, + "application/x-font-type1": { + source: "apache", + extensions: ["pfa", "pfb", "pfm", "afm"] + }, + "application/x-font-vfont": { + source: "apache" + }, + "application/x-freearc": { + source: "apache", + extensions: ["arc"] + }, + "application/x-futuresplash": { + source: "apache", + extensions: ["spl"] + }, + "application/x-gca-compressed": { + source: "apache", + extensions: ["gca"] + }, + "application/x-glulx": { + source: "apache", + extensions: ["ulx"] + }, + "application/x-gnumeric": { + source: "apache", + extensions: ["gnumeric"] + }, + "application/x-gramps-xml": { + source: "apache", + extensions: ["gramps"] + }, + "application/x-gtar": { + source: "apache", + extensions: ["gtar"] + }, + "application/x-gzip": { + source: "apache" + }, + "application/x-hdf": { + source: "apache", + extensions: ["hdf"] + }, + "application/x-httpd-php": { + compressible: true, + extensions: ["php"] + }, + "application/x-install-instructions": { + source: "apache", + extensions: ["install"] + }, + "application/x-iso9660-image": { + source: "apache", + extensions: ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + extensions: ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + extensions: ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + extensions: ["pages"] + }, + "application/x-java-archive-diff": { + source: "nginx", + extensions: ["jardiff"] + }, + "application/x-java-jnlp-file": { + source: "apache", + compressible: false, + extensions: ["jnlp"] + }, + "application/x-javascript": { + compressible: true + }, + "application/x-keepass2": { + extensions: ["kdbx"] + }, + "application/x-latex": { + source: "apache", + compressible: false, + extensions: ["latex"] + }, + "application/x-lua-bytecode": { + extensions: ["luac"] + }, + "application/x-lzh-compressed": { + source: "apache", + extensions: ["lzh", "lha"] + }, + "application/x-makeself": { + source: "nginx", + extensions: ["run"] + }, + "application/x-mie": { + source: "apache", + extensions: ["mie"] + }, + "application/x-mobipocket-ebook": { + source: "apache", + extensions: ["prc", "mobi"] + }, + "application/x-mpegurl": { + compressible: false + }, + "application/x-ms-application": { + source: "apache", + extensions: ["application"] + }, + "application/x-ms-shortcut": { + source: "apache", + extensions: ["lnk"] + }, + "application/x-ms-wmd": { + source: "apache", + extensions: ["wmd"] + }, + "application/x-ms-wmz": { + source: "apache", + extensions: ["wmz"] + }, + "application/x-ms-xbap": { + source: "apache", + extensions: ["xbap"] + }, + "application/x-msaccess": { + source: "apache", + extensions: ["mdb"] + }, + "application/x-msbinder": { + source: "apache", + extensions: ["obd"] + }, + "application/x-mscardfile": { + source: "apache", + extensions: ["crd"] + }, + "application/x-msclip": { + source: "apache", + extensions: ["clp"] + }, + "application/x-msdos-program": { + extensions: ["exe"] + }, + "application/x-msdownload": { + source: "apache", + extensions: ["exe", "dll", "com", "bat", "msi"] + }, + "application/x-msmediaview": { + source: "apache", + extensions: ["mvb", "m13", "m14"] + }, + "application/x-msmetafile": { + source: "apache", + extensions: ["wmf", "wmz", "emf", "emz"] + }, + "application/x-msmoney": { + source: "apache", + extensions: ["mny"] + }, + "application/x-mspublisher": { + source: "apache", + extensions: ["pub"] + }, + "application/x-msschedule": { + source: "apache", + extensions: ["scd"] + }, + "application/x-msterminal": { + source: "apache", + extensions: ["trm"] + }, + "application/x-mswrite": { + source: "apache", + extensions: ["wri"] + }, + "application/x-netcdf": { + source: "apache", + extensions: ["nc", "cdf"] + }, + "application/x-ns-proxy-autoconfig": { + compressible: true, + extensions: ["pac"] + }, + "application/x-nzb": { + source: "apache", + extensions: ["nzb"] + }, + "application/x-perl": { + source: "nginx", + extensions: ["pl", "pm"] + }, + "application/x-pilot": { + source: "nginx", + extensions: ["prc", "pdb"] + }, + "application/x-pkcs12": { + source: "apache", + compressible: false, + extensions: ["p12", "pfx"] + }, + "application/x-pkcs7-certificates": { + source: "apache", + extensions: ["p7b", "spc"] + }, + "application/x-pkcs7-certreqresp": { + source: "apache", + extensions: ["p7r"] + }, + "application/x-pki-message": { + source: "iana" + }, + "application/x-rar-compressed": { + source: "apache", + compressible: false, + extensions: ["rar"] + }, + "application/x-redhat-package-manager": { + source: "nginx", + extensions: ["rpm"] + }, + "application/x-research-info-systems": { + source: "apache", + extensions: ["ris"] + }, + "application/x-sea": { + source: "nginx", + extensions: ["sea"] + }, + "application/x-sh": { + source: "apache", + compressible: true, + extensions: ["sh"] + }, + "application/x-shar": { + source: "apache", + extensions: ["shar"] + }, + "application/x-shockwave-flash": { + source: "apache", + compressible: false, + extensions: ["swf"] + }, + "application/x-silverlight-app": { + source: "apache", + extensions: ["xap"] + }, + "application/x-sql": { + source: "apache", + extensions: ["sql"] + }, + "application/x-stuffit": { + source: "apache", + compressible: false, + extensions: ["sit"] + }, + "application/x-stuffitx": { + source: "apache", + extensions: ["sitx"] + }, + "application/x-subrip": { + source: "apache", + extensions: ["srt"] + }, + "application/x-sv4cpio": { + source: "apache", + extensions: ["sv4cpio"] + }, + "application/x-sv4crc": { + source: "apache", + extensions: ["sv4crc"] + }, + "application/x-t3vm-image": { + source: "apache", + extensions: ["t3"] + }, + "application/x-tads": { + source: "apache", + extensions: ["gam"] + }, + "application/x-tar": { + source: "apache", + compressible: true, + extensions: ["tar"] + }, + "application/x-tcl": { + source: "apache", + extensions: ["tcl", "tk"] + }, + "application/x-tex": { + source: "apache", + extensions: ["tex"] + }, + "application/x-tex-tfm": { + source: "apache", + extensions: ["tfm"] + }, + "application/x-texinfo": { + source: "apache", + extensions: ["texinfo", "texi"] + }, + "application/x-tgif": { + source: "apache", + extensions: ["obj"] + }, + "application/x-ustar": { + source: "apache", + extensions: ["ustar"] + }, + "application/x-virtualbox-hdd": { + compressible: true, + extensions: ["hdd"] + }, + "application/x-virtualbox-ova": { + compressible: true, + extensions: ["ova"] + }, + "application/x-virtualbox-ovf": { + compressible: true, + extensions: ["ovf"] + }, + "application/x-virtualbox-vbox": { + compressible: true, + extensions: ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + compressible: false, + extensions: ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + compressible: true, + extensions: ["vdi"] + }, + "application/x-virtualbox-vhd": { + compressible: true, + extensions: ["vhd"] + }, + "application/x-virtualbox-vmdk": { + compressible: true, + extensions: ["vmdk"] + }, + "application/x-wais-source": { + source: "apache", + extensions: ["src"] + }, + "application/x-web-app-manifest+json": { + compressible: true, + extensions: ["webapp"] + }, + "application/x-www-form-urlencoded": { + source: "iana", + compressible: true + }, + "application/x-x509-ca-cert": { + source: "iana", + extensions: ["der", "crt", "pem"] + }, + "application/x-x509-ca-ra-cert": { + source: "iana" + }, + "application/x-x509-next-ca-cert": { + source: "iana" + }, + "application/x-xfig": { + source: "apache", + extensions: ["fig"] + }, + "application/x-xliff+xml": { + source: "apache", + compressible: true, + extensions: ["xlf"] + }, + "application/x-xpinstall": { + source: "apache", + compressible: false, + extensions: ["xpi"] + }, + "application/x-xz": { + source: "apache", + extensions: ["xz"] + }, + "application/x-zmachine": { + source: "apache", + extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] + }, + "application/x400-bp": { + source: "iana" + }, + "application/xacml+xml": { + source: "iana", + compressible: true + }, + "application/xaml+xml": { + source: "apache", + compressible: true, + extensions: ["xaml"] + }, + "application/xcap-att+xml": { + source: "iana", + compressible: true, + extensions: ["xav"] + }, + "application/xcap-caps+xml": { + source: "iana", + compressible: true, + extensions: ["xca"] + }, + "application/xcap-diff+xml": { + source: "iana", + compressible: true, + extensions: ["xdf"] + }, + "application/xcap-el+xml": { + source: "iana", + compressible: true, + extensions: ["xel"] + }, + "application/xcap-error+xml": { + source: "iana", + compressible: true + }, + "application/xcap-ns+xml": { + source: "iana", + compressible: true, + extensions: ["xns"] + }, + "application/xcon-conference-info+xml": { + source: "iana", + compressible: true + }, + "application/xcon-conference-info-diff+xml": { + source: "iana", + compressible: true + }, + "application/xenc+xml": { + source: "iana", + compressible: true, + extensions: ["xenc"] + }, + "application/xhtml+xml": { + source: "iana", + compressible: true, + extensions: ["xhtml", "xht"] + }, + "application/xhtml-voice+xml": { + source: "apache", + compressible: true + }, + "application/xliff+xml": { + source: "iana", + compressible: true, + extensions: ["xlf"] + }, + "application/xml": { + source: "iana", + compressible: true, + extensions: ["xml", "xsl", "xsd", "rng"] + }, + "application/xml-dtd": { + source: "iana", + compressible: true, + extensions: ["dtd"] + }, + "application/xml-external-parsed-entity": { + source: "iana" + }, + "application/xml-patch+xml": { + source: "iana", + compressible: true + }, + "application/xmpp+xml": { + source: "iana", + compressible: true + }, + "application/xop+xml": { + source: "iana", + compressible: true, + extensions: ["xop"] + }, + "application/xproc+xml": { + source: "apache", + compressible: true, + extensions: ["xpl"] + }, + "application/xslt+xml": { + source: "iana", + compressible: true, + extensions: ["xsl", "xslt"] + }, + "application/xspf+xml": { + source: "apache", + compressible: true, + extensions: ["xspf"] + }, + "application/xv+xml": { + source: "iana", + compressible: true, + extensions: ["mxml", "xhvml", "xvml", "xvm"] + }, + "application/yang": { + source: "iana", + extensions: ["yang"] + }, + "application/yang-data+json": { + source: "iana", + compressible: true + }, + "application/yang-data+xml": { + source: "iana", + compressible: true + }, + "application/yang-patch+json": { + source: "iana", + compressible: true + }, + "application/yang-patch+xml": { + source: "iana", + compressible: true + }, + "application/yin+xml": { + source: "iana", + compressible: true, + extensions: ["yin"] + }, + "application/zip": { + source: "iana", + compressible: false, + extensions: ["zip"] + }, + "application/zlib": { + source: "iana" + }, + "application/zstd": { + source: "iana" + }, + "audio/1d-interleaved-parityfec": { + source: "iana" + }, + "audio/32kadpcm": { + source: "iana" + }, + "audio/3gpp": { + source: "iana", + compressible: false, + extensions: ["3gpp"] + }, + "audio/3gpp2": { + source: "iana" + }, + "audio/aac": { + source: "iana" + }, + "audio/ac3": { + source: "iana" + }, + "audio/adpcm": { + source: "apache", + extensions: ["adp"] + }, + "audio/amr": { + source: "iana", + extensions: ["amr"] + }, + "audio/amr-wb": { + source: "iana" + }, + "audio/amr-wb+": { + source: "iana" + }, + "audio/aptx": { + source: "iana" + }, + "audio/asc": { + source: "iana" + }, + "audio/atrac-advanced-lossless": { + source: "iana" + }, + "audio/atrac-x": { + source: "iana" + }, + "audio/atrac3": { + source: "iana" + }, + "audio/basic": { + source: "iana", + compressible: false, + extensions: ["au", "snd"] + }, + "audio/bv16": { + source: "iana" + }, + "audio/bv32": { + source: "iana" + }, + "audio/clearmode": { + source: "iana" + }, + "audio/cn": { + source: "iana" + }, + "audio/dat12": { + source: "iana" + }, + "audio/dls": { + source: "iana" + }, + "audio/dsr-es201108": { + source: "iana" + }, + "audio/dsr-es202050": { + source: "iana" + }, + "audio/dsr-es202211": { + source: "iana" + }, + "audio/dsr-es202212": { + source: "iana" + }, + "audio/dv": { + source: "iana" + }, + "audio/dvi4": { + source: "iana" + }, + "audio/eac3": { + source: "iana" + }, + "audio/encaprtp": { + source: "iana" + }, + "audio/evrc": { + source: "iana" + }, + "audio/evrc-qcp": { + source: "iana" + }, + "audio/evrc0": { + source: "iana" + }, + "audio/evrc1": { + source: "iana" + }, + "audio/evrcb": { + source: "iana" + }, + "audio/evrcb0": { + source: "iana" + }, + "audio/evrcb1": { + source: "iana" + }, + "audio/evrcnw": { + source: "iana" + }, + "audio/evrcnw0": { + source: "iana" + }, + "audio/evrcnw1": { + source: "iana" + }, + "audio/evrcwb": { + source: "iana" + }, + "audio/evrcwb0": { + source: "iana" + }, + "audio/evrcwb1": { + source: "iana" + }, + "audio/evs": { + source: "iana" + }, + "audio/flexfec": { + source: "iana" + }, + "audio/fwdred": { + source: "iana" + }, + "audio/g711-0": { + source: "iana" + }, + "audio/g719": { + source: "iana" + }, + "audio/g722": { + source: "iana" + }, + "audio/g7221": { + source: "iana" + }, + "audio/g723": { + source: "iana" + }, + "audio/g726-16": { + source: "iana" + }, + "audio/g726-24": { + source: "iana" + }, + "audio/g726-32": { + source: "iana" + }, + "audio/g726-40": { + source: "iana" + }, + "audio/g728": { + source: "iana" + }, + "audio/g729": { + source: "iana" + }, + "audio/g7291": { + source: "iana" + }, + "audio/g729d": { + source: "iana" + }, + "audio/g729e": { + source: "iana" + }, + "audio/gsm": { + source: "iana" + }, + "audio/gsm-efr": { + source: "iana" + }, + "audio/gsm-hr-08": { + source: "iana" + }, + "audio/ilbc": { + source: "iana" + }, + "audio/ip-mr_v2.5": { + source: "iana" + }, + "audio/isac": { + source: "apache" + }, + "audio/l16": { + source: "iana" + }, + "audio/l20": { + source: "iana" + }, + "audio/l24": { + source: "iana", + compressible: false + }, + "audio/l8": { + source: "iana" + }, + "audio/lpc": { + source: "iana" + }, + "audio/melp": { + source: "iana" + }, + "audio/melp1200": { + source: "iana" + }, + "audio/melp2400": { + source: "iana" + }, + "audio/melp600": { + source: "iana" + }, + "audio/mhas": { + source: "iana" + }, + "audio/midi": { + source: "apache", + extensions: ["mid", "midi", "kar", "rmi"] + }, + "audio/mobile-xmf": { + source: "iana", + extensions: ["mxmf"] + }, + "audio/mp3": { + compressible: false, + extensions: ["mp3"] + }, + "audio/mp4": { + source: "iana", + compressible: false, + extensions: ["m4a", "mp4a"] + }, + "audio/mp4a-latm": { + source: "iana" + }, + "audio/mpa": { + source: "iana" + }, + "audio/mpa-robust": { + source: "iana" + }, + "audio/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] + }, + "audio/mpeg4-generic": { + source: "iana" + }, + "audio/musepack": { + source: "apache" + }, + "audio/ogg": { + source: "iana", + compressible: false, + extensions: ["oga", "ogg", "spx", "opus"] + }, + "audio/opus": { + source: "iana" + }, + "audio/parityfec": { + source: "iana" + }, + "audio/pcma": { + source: "iana" + }, + "audio/pcma-wb": { + source: "iana" + }, + "audio/pcmu": { + source: "iana" + }, + "audio/pcmu-wb": { + source: "iana" + }, + "audio/prs.sid": { + source: "iana" + }, + "audio/qcelp": { + source: "iana" + }, + "audio/raptorfec": { + source: "iana" + }, + "audio/red": { + source: "iana" + }, + "audio/rtp-enc-aescm128": { + source: "iana" + }, + "audio/rtp-midi": { + source: "iana" + }, + "audio/rtploopback": { + source: "iana" + }, + "audio/rtx": { + source: "iana" + }, + "audio/s3m": { + source: "apache", + extensions: ["s3m"] + }, + "audio/scip": { + source: "iana" + }, + "audio/silk": { + source: "apache", + extensions: ["sil"] + }, + "audio/smv": { + source: "iana" + }, + "audio/smv-qcp": { + source: "iana" + }, + "audio/smv0": { + source: "iana" + }, + "audio/sofa": { + source: "iana" + }, + "audio/sp-midi": { + source: "iana" + }, + "audio/speex": { + source: "iana" + }, + "audio/t140c": { + source: "iana" + }, + "audio/t38": { + source: "iana" + }, + "audio/telephone-event": { + source: "iana" + }, + "audio/tetra_acelp": { + source: "iana" + }, + "audio/tetra_acelp_bb": { + source: "iana" + }, + "audio/tone": { + source: "iana" + }, + "audio/tsvcis": { + source: "iana" + }, + "audio/uemclip": { + source: "iana" + }, + "audio/ulpfec": { + source: "iana" + }, + "audio/usac": { + source: "iana" + }, + "audio/vdvi": { + source: "iana" + }, + "audio/vmr-wb": { + source: "iana" + }, + "audio/vnd.3gpp.iufp": { + source: "iana" + }, + "audio/vnd.4sb": { + source: "iana" + }, + "audio/vnd.audiokoz": { + source: "iana" + }, + "audio/vnd.celp": { + source: "iana" + }, + "audio/vnd.cisco.nse": { + source: "iana" + }, + "audio/vnd.cmles.radio-events": { + source: "iana" + }, + "audio/vnd.cns.anp1": { + source: "iana" + }, + "audio/vnd.cns.inf1": { + source: "iana" + }, + "audio/vnd.dece.audio": { + source: "iana", + extensions: ["uva", "uvva"] + }, + "audio/vnd.digital-winds": { + source: "iana", + extensions: ["eol"] + }, + "audio/vnd.dlna.adts": { + source: "iana" + }, + "audio/vnd.dolby.heaac.1": { + source: "iana" + }, + "audio/vnd.dolby.heaac.2": { + source: "iana" + }, + "audio/vnd.dolby.mlp": { + source: "iana" + }, + "audio/vnd.dolby.mps": { + source: "iana" + }, + "audio/vnd.dolby.pl2": { + source: "iana" + }, + "audio/vnd.dolby.pl2x": { + source: "iana" + }, + "audio/vnd.dolby.pl2z": { + source: "iana" + }, + "audio/vnd.dolby.pulse.1": { + source: "iana" + }, + "audio/vnd.dra": { + source: "iana", + extensions: ["dra"] + }, + "audio/vnd.dts": { + source: "iana", + extensions: ["dts"] + }, + "audio/vnd.dts.hd": { + source: "iana", + extensions: ["dtshd"] + }, + "audio/vnd.dts.uhd": { + source: "iana" + }, + "audio/vnd.dvb.file": { + source: "iana" + }, + "audio/vnd.everad.plj": { + source: "iana" + }, + "audio/vnd.hns.audio": { + source: "iana" + }, + "audio/vnd.lucent.voice": { + source: "iana", + extensions: ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + source: "iana", + extensions: ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + source: "iana" + }, + "audio/vnd.nortel.vbk": { + source: "iana" + }, + "audio/vnd.nuera.ecelp4800": { + source: "iana", + extensions: ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + source: "iana", + extensions: ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + source: "iana", + extensions: ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + source: "iana" + }, + "audio/vnd.presonus.multitrack": { + source: "iana" + }, + "audio/vnd.qcelp": { + source: "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + source: "iana" + }, + "audio/vnd.rip": { + source: "iana", + extensions: ["rip"] + }, + "audio/vnd.rn-realaudio": { + compressible: false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + source: "iana" + }, + "audio/vnd.vmx.cvsd": { + source: "iana" + }, + "audio/vnd.wave": { + compressible: false + }, + "audio/vorbis": { + source: "iana", + compressible: false + }, + "audio/vorbis-config": { + source: "iana" + }, + "audio/wav": { + compressible: false, + extensions: ["wav"] + }, + "audio/wave": { + compressible: false, + extensions: ["wav"] + }, + "audio/webm": { + source: "apache", + compressible: false, + extensions: ["weba"] + }, + "audio/x-aac": { + source: "apache", + compressible: false, + extensions: ["aac"] + }, + "audio/x-aiff": { + source: "apache", + extensions: ["aif", "aiff", "aifc"] + }, + "audio/x-caf": { + source: "apache", + compressible: false, + extensions: ["caf"] + }, + "audio/x-flac": { + source: "apache", + extensions: ["flac"] + }, + "audio/x-m4a": { + source: "nginx", + extensions: ["m4a"] + }, + "audio/x-matroska": { + source: "apache", + extensions: ["mka"] + }, + "audio/x-mpegurl": { + source: "apache", + extensions: ["m3u"] + }, + "audio/x-ms-wax": { + source: "apache", + extensions: ["wax"] + }, + "audio/x-ms-wma": { + source: "apache", + extensions: ["wma"] + }, + "audio/x-pn-realaudio": { + source: "apache", + extensions: ["ram", "ra"] + }, + "audio/x-pn-realaudio-plugin": { + source: "apache", + extensions: ["rmp"] + }, + "audio/x-realaudio": { + source: "nginx", + extensions: ["ra"] + }, + "audio/x-tta": { + source: "apache" + }, + "audio/x-wav": { + source: "apache", + extensions: ["wav"] + }, + "audio/xm": { + source: "apache", + extensions: ["xm"] + }, + "chemical/x-cdx": { + source: "apache", + extensions: ["cdx"] + }, + "chemical/x-cif": { + source: "apache", + extensions: ["cif"] + }, + "chemical/x-cmdf": { + source: "apache", + extensions: ["cmdf"] + }, + "chemical/x-cml": { + source: "apache", + extensions: ["cml"] + }, + "chemical/x-csml": { + source: "apache", + extensions: ["csml"] + }, + "chemical/x-pdb": { + source: "apache" + }, + "chemical/x-xyz": { + source: "apache", + extensions: ["xyz"] + }, + "font/collection": { + source: "iana", + extensions: ["ttc"] + }, + "font/otf": { + source: "iana", + compressible: true, + extensions: ["otf"] + }, + "font/sfnt": { + source: "iana" + }, + "font/ttf": { + source: "iana", + compressible: true, + extensions: ["ttf"] + }, + "font/woff": { + source: "iana", + extensions: ["woff"] + }, + "font/woff2": { + source: "iana", + extensions: ["woff2"] + }, + "image/aces": { + source: "iana", + extensions: ["exr"] + }, + "image/apng": { + compressible: false, + extensions: ["apng"] + }, + "image/avci": { + source: "iana", + extensions: ["avci"] + }, + "image/avcs": { + source: "iana", + extensions: ["avcs"] + }, + "image/avif": { + source: "iana", + compressible: false, + extensions: ["avif"] + }, + "image/bmp": { + source: "iana", + compressible: true, + extensions: ["bmp"] + }, + "image/cgm": { + source: "iana", + extensions: ["cgm"] + }, + "image/dicom-rle": { + source: "iana", + extensions: ["drle"] + }, + "image/emf": { + source: "iana", + extensions: ["emf"] + }, + "image/fits": { + source: "iana", + extensions: ["fits"] + }, + "image/g3fax": { + source: "iana", + extensions: ["g3"] + }, + "image/gif": { + source: "iana", + compressible: false, + extensions: ["gif"] + }, + "image/heic": { + source: "iana", + extensions: ["heic"] + }, + "image/heic-sequence": { + source: "iana", + extensions: ["heics"] + }, + "image/heif": { + source: "iana", + extensions: ["heif"] + }, + "image/heif-sequence": { + source: "iana", + extensions: ["heifs"] + }, + "image/hej2k": { + source: "iana", + extensions: ["hej2"] + }, + "image/hsj2": { + source: "iana", + extensions: ["hsj2"] + }, + "image/ief": { + source: "iana", + extensions: ["ief"] + }, + "image/jls": { + source: "iana", + extensions: ["jls"] + }, + "image/jp2": { + source: "iana", + compressible: false, + extensions: ["jp2", "jpg2"] + }, + "image/jpeg": { + source: "iana", + compressible: false, + extensions: ["jpeg", "jpg", "jpe"] + }, + "image/jph": { + source: "iana", + extensions: ["jph"] + }, + "image/jphc": { + source: "iana", + extensions: ["jhc"] + }, + "image/jpm": { + source: "iana", + compressible: false, + extensions: ["jpm"] + }, + "image/jpx": { + source: "iana", + compressible: false, + extensions: ["jpx", "jpf"] + }, + "image/jxr": { + source: "iana", + extensions: ["jxr"] + }, + "image/jxra": { + source: "iana", + extensions: ["jxra"] + }, + "image/jxrs": { + source: "iana", + extensions: ["jxrs"] + }, + "image/jxs": { + source: "iana", + extensions: ["jxs"] + }, + "image/jxsc": { + source: "iana", + extensions: ["jxsc"] + }, + "image/jxsi": { + source: "iana", + extensions: ["jxsi"] + }, + "image/jxss": { + source: "iana", + extensions: ["jxss"] + }, + "image/ktx": { + source: "iana", + extensions: ["ktx"] + }, + "image/ktx2": { + source: "iana", + extensions: ["ktx2"] + }, + "image/naplps": { + source: "iana" + }, + "image/pjpeg": { + compressible: false + }, + "image/png": { + source: "iana", + compressible: false, + extensions: ["png"] + }, + "image/prs.btif": { + source: "iana", + extensions: ["btif"] + }, + "image/prs.pti": { + source: "iana", + extensions: ["pti"] + }, + "image/pwg-raster": { + source: "iana" + }, + "image/sgi": { + source: "apache", + extensions: ["sgi"] + }, + "image/svg+xml": { + source: "iana", + compressible: true, + extensions: ["svg", "svgz"] + }, + "image/t38": { + source: "iana", + extensions: ["t38"] + }, + "image/tiff": { + source: "iana", + compressible: false, + extensions: ["tif", "tiff"] + }, + "image/tiff-fx": { + source: "iana", + extensions: ["tfx"] + }, + "image/vnd.adobe.photoshop": { + source: "iana", + compressible: true, + extensions: ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + source: "iana", + extensions: ["azv"] + }, + "image/vnd.cns.inf2": { + source: "iana" + }, + "image/vnd.dece.graphic": { + source: "iana", + extensions: ["uvi", "uvvi", "uvg", "uvvg"] + }, + "image/vnd.djvu": { + source: "iana", + extensions: ["djvu", "djv"] + }, + "image/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "image/vnd.dwg": { + source: "iana", + extensions: ["dwg"] + }, + "image/vnd.dxf": { + source: "iana", + extensions: ["dxf"] + }, + "image/vnd.fastbidsheet": { + source: "iana", + extensions: ["fbs"] + }, + "image/vnd.fpx": { + source: "iana", + extensions: ["fpx"] + }, + "image/vnd.fst": { + source: "iana", + extensions: ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + source: "iana", + extensions: ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + source: "iana", + extensions: ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + source: "iana" + }, + "image/vnd.microsoft.icon": { + source: "iana", + compressible: true, + extensions: ["ico"] + }, + "image/vnd.mix": { + source: "iana" + }, + "image/vnd.mozilla.apng": { + source: "iana" + }, + "image/vnd.ms-dds": { + compressible: true, + extensions: ["dds"] + }, + "image/vnd.ms-modi": { + source: "iana", + extensions: ["mdi"] + }, + "image/vnd.ms-photo": { + source: "apache", + extensions: ["wdp"] + }, + "image/vnd.net-fpx": { + source: "iana", + extensions: ["npx"] + }, + "image/vnd.pco.b16": { + source: "iana", + extensions: ["b16"] + }, + "image/vnd.radiance": { + source: "iana" + }, + "image/vnd.sealed.png": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + source: "iana" + }, + "image/vnd.svf": { + source: "iana" + }, + "image/vnd.tencent.tap": { + source: "iana", + extensions: ["tap"] + }, + "image/vnd.valve.source.texture": { + source: "iana", + extensions: ["vtf"] + }, + "image/vnd.wap.wbmp": { + source: "iana", + extensions: ["wbmp"] + }, + "image/vnd.xiff": { + source: "iana", + extensions: ["xif"] + }, + "image/vnd.zbrush.pcx": { + source: "iana", + extensions: ["pcx"] + }, + "image/webp": { + source: "apache", + extensions: ["webp"] + }, + "image/wmf": { + source: "iana", + extensions: ["wmf"] + }, + "image/x-3ds": { + source: "apache", + extensions: ["3ds"] + }, + "image/x-cmu-raster": { + source: "apache", + extensions: ["ras"] + }, + "image/x-cmx": { + source: "apache", + extensions: ["cmx"] + }, + "image/x-freehand": { + source: "apache", + extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] + }, + "image/x-icon": { + source: "apache", + compressible: true, + extensions: ["ico"] + }, + "image/x-jng": { + source: "nginx", + extensions: ["jng"] + }, + "image/x-mrsid-image": { + source: "apache", + extensions: ["sid"] + }, + "image/x-ms-bmp": { + source: "nginx", + compressible: true, + extensions: ["bmp"] + }, + "image/x-pcx": { + source: "apache", + extensions: ["pcx"] + }, + "image/x-pict": { + source: "apache", + extensions: ["pic", "pct"] + }, + "image/x-portable-anymap": { + source: "apache", + extensions: ["pnm"] + }, + "image/x-portable-bitmap": { + source: "apache", + extensions: ["pbm"] + }, + "image/x-portable-graymap": { + source: "apache", + extensions: ["pgm"] + }, + "image/x-portable-pixmap": { + source: "apache", + extensions: ["ppm"] + }, + "image/x-rgb": { + source: "apache", + extensions: ["rgb"] + }, + "image/x-tga": { + source: "apache", + extensions: ["tga"] + }, + "image/x-xbitmap": { + source: "apache", + extensions: ["xbm"] + }, + "image/x-xcf": { + compressible: false + }, + "image/x-xpixmap": { + source: "apache", + extensions: ["xpm"] + }, + "image/x-xwindowdump": { + source: "apache", + extensions: ["xwd"] + }, + "message/cpim": { + source: "iana" + }, + "message/delivery-status": { + source: "iana" + }, + "message/disposition-notification": { + source: "iana", + extensions: [ + "disposition-notification" + ] + }, + "message/external-body": { + source: "iana" + }, + "message/feedback-report": { + source: "iana" + }, + "message/global": { + source: "iana", + extensions: ["u8msg"] + }, + "message/global-delivery-status": { + source: "iana", + extensions: ["u8dsn"] + }, + "message/global-disposition-notification": { + source: "iana", + extensions: ["u8mdn"] + }, + "message/global-headers": { + source: "iana", + extensions: ["u8hdr"] + }, + "message/http": { + source: "iana", + compressible: false + }, + "message/imdn+xml": { + source: "iana", + compressible: true + }, + "message/news": { + source: "iana" + }, + "message/partial": { + source: "iana", + compressible: false + }, + "message/rfc822": { + source: "iana", + compressible: true, + extensions: ["eml", "mime"] + }, + "message/s-http": { + source: "iana" + }, + "message/sip": { + source: "iana" + }, + "message/sipfrag": { + source: "iana" + }, + "message/tracking-status": { + source: "iana" + }, + "message/vnd.si.simp": { + source: "iana" + }, + "message/vnd.wfa.wsc": { + source: "iana", + extensions: ["wsc"] + }, + "model/3mf": { + source: "iana", + extensions: ["3mf"] + }, + "model/e57": { + source: "iana" + }, + "model/gltf+json": { + source: "iana", + compressible: true, + extensions: ["gltf"] + }, + "model/gltf-binary": { + source: "iana", + compressible: true, + extensions: ["glb"] + }, + "model/iges": { + source: "iana", + compressible: false, + extensions: ["igs", "iges"] + }, + "model/mesh": { + source: "iana", + compressible: false, + extensions: ["msh", "mesh", "silo"] + }, + "model/mtl": { + source: "iana", + extensions: ["mtl"] + }, + "model/obj": { + source: "iana", + extensions: ["obj"] + }, + "model/step": { + source: "iana" + }, + "model/step+xml": { + source: "iana", + compressible: true, + extensions: ["stpx"] + }, + "model/step+zip": { + source: "iana", + compressible: false, + extensions: ["stpz"] + }, + "model/step-xml+zip": { + source: "iana", + compressible: false, + extensions: ["stpxz"] + }, + "model/stl": { + source: "iana", + extensions: ["stl"] + }, + "model/vnd.collada+xml": { + source: "iana", + compressible: true, + extensions: ["dae"] + }, + "model/vnd.dwf": { + source: "iana", + extensions: ["dwf"] + }, + "model/vnd.flatland.3dml": { + source: "iana" + }, + "model/vnd.gdl": { + source: "iana", + extensions: ["gdl"] + }, + "model/vnd.gs-gdl": { + source: "apache" + }, + "model/vnd.gs.gdl": { + source: "iana" + }, + "model/vnd.gtw": { + source: "iana", + extensions: ["gtw"] + }, + "model/vnd.moml+xml": { + source: "iana", + compressible: true + }, + "model/vnd.mts": { + source: "iana", + extensions: ["mts"] + }, + "model/vnd.opengex": { + source: "iana", + extensions: ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + source: "iana", + extensions: ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + source: "iana", + extensions: ["x_t"] + }, + "model/vnd.pytha.pyox": { + source: "iana" + }, + "model/vnd.rosette.annotated-data-model": { + source: "iana" + }, + "model/vnd.sap.vds": { + source: "iana", + extensions: ["vds"] + }, + "model/vnd.usdz+zip": { + source: "iana", + compressible: false, + extensions: ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + source: "iana", + extensions: ["bsp"] + }, + "model/vnd.vtu": { + source: "iana", + extensions: ["vtu"] + }, + "model/vrml": { + source: "iana", + compressible: false, + extensions: ["wrl", "vrml"] + }, + "model/x3d+binary": { + source: "apache", + compressible: false, + extensions: ["x3db", "x3dbz"] + }, + "model/x3d+fastinfoset": { + source: "iana", + extensions: ["x3db"] + }, + "model/x3d+vrml": { + source: "apache", + compressible: false, + extensions: ["x3dv", "x3dvz"] + }, + "model/x3d+xml": { + source: "iana", + compressible: true, + extensions: ["x3d", "x3dz"] + }, + "model/x3d-vrml": { + source: "iana", + extensions: ["x3dv"] + }, + "multipart/alternative": { + source: "iana", + compressible: false + }, + "multipart/appledouble": { + source: "iana" + }, + "multipart/byteranges": { + source: "iana" + }, + "multipart/digest": { + source: "iana" + }, + "multipart/encrypted": { + source: "iana", + compressible: false + }, + "multipart/form-data": { + source: "iana", + compressible: false + }, + "multipart/header-set": { + source: "iana" + }, + "multipart/mixed": { + source: "iana" + }, + "multipart/multilingual": { + source: "iana" + }, + "multipart/parallel": { + source: "iana" + }, + "multipart/related": { + source: "iana", + compressible: false + }, + "multipart/report": { + source: "iana" + }, + "multipart/signed": { + source: "iana", + compressible: false + }, + "multipart/vnd.bint.med-plus": { + source: "iana" + }, + "multipart/voice-message": { + source: "iana" + }, + "multipart/x-mixed-replace": { + source: "iana" + }, + "text/1d-interleaved-parityfec": { + source: "iana" + }, + "text/cache-manifest": { + source: "iana", + compressible: true, + extensions: ["appcache", "manifest"] + }, + "text/calendar": { + source: "iana", + extensions: ["ics", "ifb"] + }, + "text/calender": { + compressible: true + }, + "text/cmd": { + compressible: true + }, + "text/coffeescript": { + extensions: ["coffee", "litcoffee"] + }, + "text/cql": { + source: "iana" + }, + "text/cql-expression": { + source: "iana" + }, + "text/cql-identifier": { + source: "iana" + }, + "text/css": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["css"] + }, + "text/csv": { + source: "iana", + compressible: true, + extensions: ["csv"] + }, + "text/csv-schema": { + source: "iana" + }, + "text/directory": { + source: "iana" + }, + "text/dns": { + source: "iana" + }, + "text/ecmascript": { + source: "iana" + }, + "text/encaprtp": { + source: "iana" + }, + "text/enriched": { + source: "iana" + }, + "text/fhirpath": { + source: "iana" + }, + "text/flexfec": { + source: "iana" + }, + "text/fwdred": { + source: "iana" + }, + "text/gff3": { + source: "iana" + }, + "text/grammar-ref-list": { + source: "iana" + }, + "text/html": { + source: "iana", + compressible: true, + extensions: ["html", "htm", "shtml"] + }, + "text/jade": { + extensions: ["jade"] + }, + "text/javascript": { + source: "iana", + compressible: true + }, + "text/jcr-cnd": { + source: "iana" + }, + "text/jsx": { + compressible: true, + extensions: ["jsx"] + }, + "text/less": { + compressible: true, + extensions: ["less"] + }, + "text/markdown": { + source: "iana", + compressible: true, + extensions: ["markdown", "md"] + }, + "text/mathml": { + source: "nginx", + extensions: ["mml"] + }, + "text/mdx": { + compressible: true, + extensions: ["mdx"] + }, + "text/mizar": { + source: "iana" + }, + "text/n3": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["n3"] + }, + "text/parameters": { + source: "iana", + charset: "UTF-8" + }, + "text/parityfec": { + source: "iana" + }, + "text/plain": { + source: "iana", + compressible: true, + extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] + }, + "text/provenance-notation": { + source: "iana", + charset: "UTF-8" + }, + "text/prs.fallenstein.rst": { + source: "iana" + }, + "text/prs.lines.tag": { + source: "iana", + extensions: ["dsc"] + }, + "text/prs.prop.logic": { + source: "iana" + }, + "text/raptorfec": { + source: "iana" + }, + "text/red": { + source: "iana" + }, + "text/rfc822-headers": { + source: "iana" + }, + "text/richtext": { + source: "iana", + compressible: true, + extensions: ["rtx"] + }, + "text/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "text/rtp-enc-aescm128": { + source: "iana" + }, + "text/rtploopback": { + source: "iana" + }, + "text/rtx": { + source: "iana" + }, + "text/sgml": { + source: "iana", + extensions: ["sgml", "sgm"] + }, + "text/shaclc": { + source: "iana" + }, + "text/shex": { + source: "iana", + extensions: ["shex"] + }, + "text/slim": { + extensions: ["slim", "slm"] + }, + "text/spdx": { + source: "iana", + extensions: ["spdx"] + }, + "text/strings": { + source: "iana" + }, + "text/stylus": { + extensions: ["stylus", "styl"] + }, + "text/t140": { + source: "iana" + }, + "text/tab-separated-values": { + source: "iana", + compressible: true, + extensions: ["tsv"] + }, + "text/troff": { + source: "iana", + extensions: ["t", "tr", "roff", "man", "me", "ms"] + }, + "text/turtle": { + source: "iana", + charset: "UTF-8", + extensions: ["ttl"] + }, + "text/ulpfec": { + source: "iana" + }, + "text/uri-list": { + source: "iana", + compressible: true, + extensions: ["uri", "uris", "urls"] + }, + "text/vcard": { + source: "iana", + compressible: true, + extensions: ["vcard"] + }, + "text/vnd.a": { + source: "iana" + }, + "text/vnd.abc": { + source: "iana" + }, + "text/vnd.ascii-art": { + source: "iana" + }, + "text/vnd.curl": { + source: "iana", + extensions: ["curl"] + }, + "text/vnd.curl.dcurl": { + source: "apache", + extensions: ["dcurl"] + }, + "text/vnd.curl.mcurl": { + source: "apache", + extensions: ["mcurl"] + }, + "text/vnd.curl.scurl": { + source: "apache", + extensions: ["scurl"] + }, + "text/vnd.debian.copyright": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.dmclientscript": { + source: "iana" + }, + "text/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + source: "iana", + extensions: ["ged"] + }, + "text/vnd.ficlab.flt": { + source: "iana" + }, + "text/vnd.fly": { + source: "iana", + extensions: ["fly"] + }, + "text/vnd.fmi.flexstor": { + source: "iana", + extensions: ["flx"] + }, + "text/vnd.gml": { + source: "iana" + }, + "text/vnd.graphviz": { + source: "iana", + extensions: ["gv"] + }, + "text/vnd.hans": { + source: "iana" + }, + "text/vnd.hgl": { + source: "iana" + }, + "text/vnd.in3d.3dml": { + source: "iana", + extensions: ["3dml"] + }, + "text/vnd.in3d.spot": { + source: "iana", + extensions: ["spot"] + }, + "text/vnd.iptc.newsml": { + source: "iana" + }, + "text/vnd.iptc.nitf": { + source: "iana" + }, + "text/vnd.latex-z": { + source: "iana" + }, + "text/vnd.motorola.reflex": { + source: "iana" + }, + "text/vnd.ms-mediapackage": { + source: "iana" + }, + "text/vnd.net2phone.commcenter.command": { + source: "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + source: "iana" + }, + "text/vnd.senx.warpscript": { + source: "iana" + }, + "text/vnd.si.uricatalogue": { + source: "iana" + }, + "text/vnd.sosi": { + source: "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + source: "iana", + charset: "UTF-8", + extensions: ["jad"] + }, + "text/vnd.trolltech.linguist": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.wap.si": { + source: "iana" + }, + "text/vnd.wap.sl": { + source: "iana" + }, + "text/vnd.wap.wml": { + source: "iana", + extensions: ["wml"] + }, + "text/vnd.wap.wmlscript": { + source: "iana", + extensions: ["wmls"] + }, + "text/vtt": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["vtt"] + }, + "text/x-asm": { + source: "apache", + extensions: ["s", "asm"] + }, + "text/x-c": { + source: "apache", + extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] + }, + "text/x-component": { + source: "nginx", + extensions: ["htc"] + }, + "text/x-fortran": { + source: "apache", + extensions: ["f", "for", "f77", "f90"] + }, + "text/x-gwt-rpc": { + compressible: true + }, + "text/x-handlebars-template": { + extensions: ["hbs"] + }, + "text/x-java-source": { + source: "apache", + extensions: ["java"] + }, + "text/x-jquery-tmpl": { + compressible: true + }, + "text/x-lua": { + extensions: ["lua"] + }, + "text/x-markdown": { + compressible: true, + extensions: ["mkd"] + }, + "text/x-nfo": { + source: "apache", + extensions: ["nfo"] + }, + "text/x-opml": { + source: "apache", + extensions: ["opml"] + }, + "text/x-org": { + compressible: true, + extensions: ["org"] + }, + "text/x-pascal": { + source: "apache", + extensions: ["p", "pas"] + }, + "text/x-processing": { + compressible: true, + extensions: ["pde"] + }, + "text/x-sass": { + extensions: ["sass"] + }, + "text/x-scss": { + extensions: ["scss"] + }, + "text/x-setext": { + source: "apache", + extensions: ["etx"] + }, + "text/x-sfv": { + source: "apache", + extensions: ["sfv"] + }, + "text/x-suse-ymp": { + compressible: true, + extensions: ["ymp"] + }, + "text/x-uuencode": { + source: "apache", + extensions: ["uu"] + }, + "text/x-vcalendar": { + source: "apache", + extensions: ["vcs"] + }, + "text/x-vcard": { + source: "apache", + extensions: ["vcf"] + }, + "text/xml": { + source: "iana", + compressible: true, + extensions: ["xml"] + }, + "text/xml-external-parsed-entity": { + source: "iana" + }, + "text/yaml": { + compressible: true, + extensions: ["yaml", "yml"] + }, + "video/1d-interleaved-parityfec": { + source: "iana" + }, + "video/3gpp": { + source: "iana", + extensions: ["3gp", "3gpp"] + }, + "video/3gpp-tt": { + source: "iana" + }, + "video/3gpp2": { + source: "iana", + extensions: ["3g2"] + }, + "video/av1": { + source: "iana" + }, + "video/bmpeg": { + source: "iana" + }, + "video/bt656": { + source: "iana" + }, + "video/celb": { + source: "iana" + }, + "video/dv": { + source: "iana" + }, + "video/encaprtp": { + source: "iana" + }, + "video/ffv1": { + source: "iana" + }, + "video/flexfec": { + source: "iana" + }, + "video/h261": { + source: "iana", + extensions: ["h261"] + }, + "video/h263": { + source: "iana", + extensions: ["h263"] + }, + "video/h263-1998": { + source: "iana" + }, + "video/h263-2000": { + source: "iana" + }, + "video/h264": { + source: "iana", + extensions: ["h264"] + }, + "video/h264-rcdo": { + source: "iana" + }, + "video/h264-svc": { + source: "iana" + }, + "video/h265": { + source: "iana" + }, + "video/iso.segment": { + source: "iana", + extensions: ["m4s"] + }, + "video/jpeg": { + source: "iana", + extensions: ["jpgv"] + }, + "video/jpeg2000": { + source: "iana" + }, + "video/jpm": { + source: "apache", + extensions: ["jpm", "jpgm"] + }, + "video/jxsv": { + source: "iana" + }, + "video/mj2": { + source: "iana", + extensions: ["mj2", "mjp2"] + }, + "video/mp1s": { + source: "iana" + }, + "video/mp2p": { + source: "iana" + }, + "video/mp2t": { + source: "iana", + extensions: ["ts"] + }, + "video/mp4": { + source: "iana", + compressible: false, + extensions: ["mp4", "mp4v", "mpg4"] + }, + "video/mp4v-es": { + source: "iana" + }, + "video/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] + }, + "video/mpeg4-generic": { + source: "iana" + }, + "video/mpv": { + source: "iana" + }, + "video/nv": { + source: "iana" + }, + "video/ogg": { + source: "iana", + compressible: false, + extensions: ["ogv"] + }, + "video/parityfec": { + source: "iana" + }, + "video/pointer": { + source: "iana" + }, + "video/quicktime": { + source: "iana", + compressible: false, + extensions: ["qt", "mov"] + }, + "video/raptorfec": { + source: "iana" + }, + "video/raw": { + source: "iana" + }, + "video/rtp-enc-aescm128": { + source: "iana" + }, + "video/rtploopback": { + source: "iana" + }, + "video/rtx": { + source: "iana" + }, + "video/scip": { + source: "iana" + }, + "video/smpte291": { + source: "iana" + }, + "video/smpte292m": { + source: "iana" + }, + "video/ulpfec": { + source: "iana" + }, + "video/vc1": { + source: "iana" + }, + "video/vc2": { + source: "iana" + }, + "video/vnd.cctv": { + source: "iana" + }, + "video/vnd.dece.hd": { + source: "iana", + extensions: ["uvh", "uvvh"] + }, + "video/vnd.dece.mobile": { + source: "iana", + extensions: ["uvm", "uvvm"] + }, + "video/vnd.dece.mp4": { + source: "iana" + }, + "video/vnd.dece.pd": { + source: "iana", + extensions: ["uvp", "uvvp"] + }, + "video/vnd.dece.sd": { + source: "iana", + extensions: ["uvs", "uvvs"] + }, + "video/vnd.dece.video": { + source: "iana", + extensions: ["uvv", "uvvv"] + }, + "video/vnd.directv.mpeg": { + source: "iana" + }, + "video/vnd.directv.mpeg-tts": { + source: "iana" + }, + "video/vnd.dlna.mpeg-tts": { + source: "iana" + }, + "video/vnd.dvb.file": { + source: "iana", + extensions: ["dvb"] + }, + "video/vnd.fvt": { + source: "iana", + extensions: ["fvt"] + }, + "video/vnd.hns.video": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.ttsavc": { + source: "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + source: "iana" + }, + "video/vnd.motorola.video": { + source: "iana" + }, + "video/vnd.motorola.videop": { + source: "iana" + }, + "video/vnd.mpegurl": { + source: "iana", + extensions: ["mxu", "m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + source: "iana", + extensions: ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + source: "iana" + }, + "video/vnd.nokia.mp4vr": { + source: "iana" + }, + "video/vnd.nokia.videovoip": { + source: "iana" + }, + "video/vnd.objectvideo": { + source: "iana" + }, + "video/vnd.radgamettools.bink": { + source: "iana" + }, + "video/vnd.radgamettools.smacker": { + source: "iana" + }, + "video/vnd.sealed.mpeg1": { + source: "iana" + }, + "video/vnd.sealed.mpeg4": { + source: "iana" + }, + "video/vnd.sealed.swf": { + source: "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + source: "iana" + }, + "video/vnd.uvvu.mp4": { + source: "iana", + extensions: ["uvu", "uvvu"] + }, + "video/vnd.vivo": { + source: "iana", + extensions: ["viv"] + }, + "video/vnd.youtube.yt": { + source: "iana" + }, + "video/vp8": { + source: "iana" + }, + "video/vp9": { + source: "iana" + }, + "video/webm": { + source: "apache", + compressible: false, + extensions: ["webm"] + }, + "video/x-f4v": { + source: "apache", + extensions: ["f4v"] + }, + "video/x-fli": { + source: "apache", + extensions: ["fli"] + }, + "video/x-flv": { + source: "apache", + compressible: false, + extensions: ["flv"] + }, + "video/x-m4v": { + source: "apache", + extensions: ["m4v"] + }, + "video/x-matroska": { + source: "apache", + compressible: false, + extensions: ["mkv", "mk3d", "mks"] + }, + "video/x-mng": { + source: "apache", + extensions: ["mng"] + }, + "video/x-ms-asf": { + source: "apache", + extensions: ["asf", "asx"] + }, + "video/x-ms-vob": { + source: "apache", + extensions: ["vob"] + }, + "video/x-ms-wm": { + source: "apache", + extensions: ["wm"] + }, + "video/x-ms-wmv": { + source: "apache", + compressible: false, + extensions: ["wmv"] + }, + "video/x-ms-wmx": { + source: "apache", + extensions: ["wmx"] + }, + "video/x-ms-wvx": { + source: "apache", + extensions: ["wvx"] + }, + "video/x-msvideo": { + source: "apache", + extensions: ["avi"] + }, + "video/x-sgi-movie": { + source: "apache", + extensions: ["movie"] + }, + "video/x-smv": { + source: "apache", + extensions: ["smv"] + }, + "x-conference/x-cooltalk": { + source: "apache", + extensions: ["ice"] + }, + "x-shader/x-fragment": { + compressible: true + }, + "x-shader/x-vertex": { + compressible: true + } + }; + } +}); + +// node_modules/mime-db/index.js +var require_mime_db = __commonJS({ + "node_modules/mime-db/index.js"(exports, module2) { + module2.exports = require_db(); + } +}); + +// node_modules/mime-types/index.js +var require_mime_types = __commonJS({ + "node_modules/mime-types/index.js"(exports) { + "use strict"; + var db = require_mime_db(); + var extname = require("path").extname; + var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; + var TEXT_TYPE_REGEXP = /^text\//i; + exports.charset = charset; + exports.charsets = { lookup: charset }; + exports.contentType = contentType; + exports.extension = extension; + exports.extensions = Object.create(null); + exports.lookup = lookup; + exports.types = Object.create(null); + populateMaps(exports.extensions, exports.types); + function charset(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var mime2 = match && db[match[1].toLowerCase()]; + if (mime2 && mime2.charset) { + return mime2.charset; + } + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return "UTF-8"; + } + return false; + } + function contentType(str) { + if (!str || typeof str !== "string") { + return false; + } + var mime2 = str.indexOf("/") === -1 ? exports.lookup(str) : str; + if (!mime2) { + return false; + } + if (mime2.indexOf("charset") === -1) { + var charset2 = exports.charset(mime2); + if (charset2) + mime2 += "; charset=" + charset2.toLowerCase(); + } + return mime2; + } + function extension(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var exts = match && exports.extensions[match[1].toLowerCase()]; + if (!exts || !exts.length) { + return false; + } + return exts[0]; + } + function lookup(path2) { + if (!path2 || typeof path2 !== "string") { + return false; + } + var extension2 = extname("x." + path2).toLowerCase().substr(1); + if (!extension2) { + return false; + } + return exports.types[extension2] || false; + } + function populateMaps(extensions, types) { + var preference = ["nginx", "apache", void 0, "iana"]; + Object.keys(db).forEach(function forEachMimeType(type) { + var mime2 = db[type]; + var exts = mime2.extensions; + if (!exts || !exts.length) { + return; + } + extensions[type] = exts; + for (var i = 0; i < exts.length; i++) { + var extension2 = exts[i]; + if (types[extension2]) { + var from = preference.indexOf(db[types[extension2]].source); + var to = preference.indexOf(mime2.source); + if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) { + continue; + } + } + types[extension2] = type; + } + }); + } + } +}); + +// node_modules/type-is/index.js +var require_type_is = __commonJS({ + "node_modules/type-is/index.js"(exports, module2) { + "use strict"; + var typer = require_media_typer(); + var mime2 = require_mime_types(); + module2.exports = typeofrequest; + module2.exports.is = typeis; + module2.exports.hasBody = hasbody; + module2.exports.normalize = normalize; + module2.exports.match = mimeMatch; + function typeis(value, types_) { + var i; + var types = types_; + var val = tryNormalizeType(value); + if (!val) { + return false; + } + if (types && !Array.isArray(types)) { + types = new Array(arguments.length - 1); + for (i = 0; i < types.length; i++) { + types[i] = arguments[i + 1]; + } + } + if (!types || !types.length) { + return val; + } + var type; + for (i = 0; i < types.length; i++) { + if (mimeMatch(normalize(type = types[i]), val)) { + return type[0] === "+" || type.indexOf("*") !== -1 ? val : type; + } + } + return false; + } + function hasbody(req) { + return req.headers["transfer-encoding"] !== void 0 || !isNaN(req.headers["content-length"]); + } + function typeofrequest(req, types_) { + var types = types_; + if (!hasbody(req)) { + return null; + } + if (arguments.length > 2) { + types = new Array(arguments.length - 1); + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i + 1]; + } + } + var value = req.headers["content-type"]; + return typeis(value, types); + } + function normalize(type) { + if (typeof type !== "string") { + return false; + } + switch (type) { + case "urlencoded": + return "application/x-www-form-urlencoded"; + case "multipart": + return "multipart/*"; + } + if (type[0] === "+") { + return "*/*" + type; + } + return type.indexOf("/") === -1 ? mime2.lookup(type) : type; + } + function mimeMatch(expected, actual) { + if (expected === false) { + return false; + } + var actualParts = actual.split("/"); + var expectedParts = expected.split("/"); + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false; + } + if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) { + return false; + } + if (expectedParts[1].substr(0, 2) === "*+") { + return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length); + } + if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) { + return false; + } + return true; + } + function normalizeType(value) { + var type = typer.parse(value); + type.parameters = void 0; + return typer.format(type); + } + function tryNormalizeType(value) { + if (!value) { + return null; + } + try { + return normalizeType(value); + } catch (err) { + return null; + } + } + } +}); + +// node_modules/body-parser/lib/types/json.js +var require_json = __commonJS({ + "node_modules/body-parser/lib/types/json.js"(exports, module2) { + "use strict"; + var bytes = require_bytes(); + var contentType = require_content_type(); + var createError = require_http_errors(); + var debug = require_src()("body-parser:json"); + var read = require_read(); + var typeis = require_type_is(); + module2.exports = json; + var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/; + var JSON_SYNTAX_CHAR = "#"; + var JSON_SYNTAX_REGEXP = /#+/g; + function json(options) { + var opts = options || {}; + var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit; + var inflate = opts.inflate !== false; + var reviver = opts.reviver; + var strict = opts.strict !== false; + var type = opts.type || "application/json"; + var verify = opts.verify || false; + if (verify !== false && typeof verify !== "function") { + throw new TypeError("option verify must be function"); + } + var shouldParse = typeof type !== "function" ? typeChecker(type) : type; + function parse(body) { + if (body.length === 0) { + return {}; + } + if (strict) { + var first = firstchar(body); + if (first !== "{" && first !== "[") { + debug("strict violation"); + throw createStrictSyntaxError(body, first); + } + } + try { + debug("parse json"); + return JSON.parse(body, reviver); + } catch (e) { + throw normalizeJsonSyntaxError(e, { + message: e.message, + stack: e.stack + }); + } + } + return function jsonParser(req, res, next) { + if (req._body) { + debug("body already parsed"); + next(); + return; + } + req.body = req.body || {}; + if (!typeis.hasBody(req)) { + debug("skip empty body"); + next(); + return; + } + debug("content-type %j", req.headers["content-type"]); + if (!shouldParse(req)) { + debug("skip parsing"); + next(); + return; + } + var charset = getCharset(req) || "utf-8"; + if (charset.slice(0, 4) !== "utf-") { + debug("invalid charset"); + next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { + charset, + type: "charset.unsupported" + })); + return; + } + read(req, res, next, parse, debug, { + encoding: charset, + inflate, + limit, + verify + }); + }; + } + function createStrictSyntaxError(str, char) { + var index = str.indexOf(char); + var partial = ""; + if (index !== -1) { + partial = str.substring(0, index) + JSON_SYNTAX_CHAR; + for (var i = index + 1; i < str.length; i++) { + partial += JSON_SYNTAX_CHAR; + } + } + try { + JSON.parse(partial); + throw new SyntaxError("strict violation"); + } catch (e) { + return normalizeJsonSyntaxError(e, { + message: e.message.replace(JSON_SYNTAX_REGEXP, function(placeholder) { + return str.substring(index, index + placeholder.length); + }), + stack: e.stack + }); + } + } + function firstchar(str) { + var match = FIRST_CHAR_REGEXP.exec(str); + return match ? match[1] : void 0; + } + function getCharset(req) { + try { + return (contentType.parse(req).parameters.charset || "").toLowerCase(); + } catch (e) { + return void 0; + } + } + function normalizeJsonSyntaxError(error, obj) { + var keys = Object.getOwnPropertyNames(error); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key !== "stack" && key !== "message") { + delete error[key]; + } + } + error.stack = obj.stack.replace(error.message, obj.message); + error.message = obj.message; + return error; + } + function typeChecker(type) { + return function checkType(req) { + return Boolean(typeis(req, type)); + }; + } + } +}); + +// node_modules/body-parser/lib/types/raw.js +var require_raw = __commonJS({ + "node_modules/body-parser/lib/types/raw.js"(exports, module2) { + "use strict"; + var bytes = require_bytes(); + var debug = require_src()("body-parser:raw"); + var read = require_read(); + var typeis = require_type_is(); + module2.exports = raw; + function raw(options) { + var opts = options || {}; + var inflate = opts.inflate !== false; + var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit; + var type = opts.type || "application/octet-stream"; + var verify = opts.verify || false; + if (verify !== false && typeof verify !== "function") { + throw new TypeError("option verify must be function"); + } + var shouldParse = typeof type !== "function" ? typeChecker(type) : type; + function parse(buf) { + return buf; + } + return function rawParser(req, res, next) { + if (req._body) { + debug("body already parsed"); + next(); + return; + } + req.body = req.body || {}; + if (!typeis.hasBody(req)) { + debug("skip empty body"); + next(); + return; + } + debug("content-type %j", req.headers["content-type"]); + if (!shouldParse(req)) { + debug("skip parsing"); + next(); + return; + } + read(req, res, next, parse, debug, { + encoding: null, + inflate, + limit, + verify + }); + }; + } + function typeChecker(type) { + return function checkType(req) { + return Boolean(typeis(req, type)); + }; + } + } +}); + +// node_modules/body-parser/lib/types/text.js +var require_text = __commonJS({ + "node_modules/body-parser/lib/types/text.js"(exports, module2) { + "use strict"; + var bytes = require_bytes(); + var contentType = require_content_type(); + var debug = require_src()("body-parser:text"); + var read = require_read(); + var typeis = require_type_is(); + module2.exports = text; + function text(options) { + var opts = options || {}; + var defaultCharset = opts.defaultCharset || "utf-8"; + var inflate = opts.inflate !== false; + var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit; + var type = opts.type || "text/plain"; + var verify = opts.verify || false; + if (verify !== false && typeof verify !== "function") { + throw new TypeError("option verify must be function"); + } + var shouldParse = typeof type !== "function" ? typeChecker(type) : type; + function parse(buf) { + return buf; + } + return function textParser(req, res, next) { + if (req._body) { + debug("body already parsed"); + next(); + return; + } + req.body = req.body || {}; + if (!typeis.hasBody(req)) { + debug("skip empty body"); + next(); + return; + } + debug("content-type %j", req.headers["content-type"]); + if (!shouldParse(req)) { + debug("skip parsing"); + next(); + return; + } + var charset = getCharset(req) || defaultCharset; + read(req, res, next, parse, debug, { + encoding: charset, + inflate, + limit, + verify + }); + }; + } + function getCharset(req) { + try { + return (contentType.parse(req).parameters.charset || "").toLowerCase(); + } catch (e) { + return void 0; + } + } + function typeChecker(type) { + return function checkType(req) { + return Boolean(typeis(req, type)); + }; + } + } +}); + +// node_modules/es-errors/type.js +var require_type = __commonJS({ + "node_modules/es-errors/type.js"(exports, module2) { + "use strict"; + module2.exports = TypeError; + } +}); + +// node_modules/object-inspect/util.inspect.js +var require_util_inspect = __commonJS({ + "node_modules/object-inspect/util.inspect.js"(exports, module2) { + module2.exports = require("util").inspect; + } +}); + +// node_modules/object-inspect/index.js +var require_object_inspect = __commonJS({ + "node_modules/object-inspect/index.js"(exports, module2) { + var hasMap = typeof Map === "function" && Map.prototype; + var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; + var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; + var mapForEach = hasMap && Map.prototype.forEach; + var hasSet = typeof Set === "function" && Set.prototype; + var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; + var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; + var setForEach = hasSet && Set.prototype.forEach; + var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; + var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; + var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; + var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; + var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; + var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; + var booleanValueOf = Boolean.prototype.valueOf; + var objectToString = Object.prototype.toString; + var functionToString = Function.prototype.toString; + var $match = String.prototype.match; + var $slice = String.prototype.slice; + var $replace = String.prototype.replace; + var $toUpperCase = String.prototype.toUpperCase; + var $toLowerCase = String.prototype.toLowerCase; + var $test = RegExp.prototype.test; + var $concat = Array.prototype.concat; + var $join = Array.prototype.join; + var $arrSlice = Array.prototype.slice; + var $floor = Math.floor; + var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; + var gOPS = Object.getOwnPropertySymbols; + var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; + var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; + var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; + var isEnumerable = Object.prototype.propertyIsEnumerable; + var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { + return O.__proto__; + } : null); + function addNumericSeparator(num, str) { + if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str)) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === "number") { + var int = num < 0 ? -$floor(-num) : $floor(num); + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); + } + } + return $replace.call(str, sepRegex, "$&_"); + } + var utilInspect = require_util_inspect(); + var inspectCustom = utilInspect.custom; + var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + var quotes = { + __proto__: null, + "double": '"', + single: "'" + }; + var quoteREs = { + __proto__: null, + "double": /(["\\])/g, + single: /(['\\])/g + }; + module2.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + if (has(opts, "quoteStyle") && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, "customInspect") ? opts.customInspect : true; + if (typeof customInspect !== "boolean" && customInspect !== "symbol") { + throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); + } + if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + if (typeof obj === "undefined") { + return "undefined"; + } + if (obj === null) { + return "null"; + } + if (typeof obj === "boolean") { + return obj ? "true" : "false"; + } + if (typeof obj === "string") { + return inspectString(obj, opts); + } + if (typeof obj === "number") { + if (obj === 0) { + return Infinity / obj > 0 ? "0" : "-0"; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === "bigint") { + var bigIntStr = String(obj) + "n"; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; + if (typeof depth === "undefined") { + depth = 0; + } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { + return isArray(obj) ? "[Array]" : "[Object]"; + } + var indent = getIndent(opts, depth); + if (typeof seen === "undefined") { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return "[Circular]"; + } + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, "quoteStyle")) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + if (typeof obj === "function" && !isRegExp(obj)) { + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); + return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = "<" + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); + } + s += ">"; + if (obj.childNodes && obj.childNodes.length) { + s += "..."; + } + s += ""; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { + return "[]"; + } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return "[" + indentedJoin(xs, indent) + "]"; + } + return "[ " + $join.call(xs, ", ") + " ]"; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { + return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }"; + } + if (parts.length === 0) { + return "[" + String(obj) + "]"; + } + return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; + } + if (typeof obj === "object" && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== "symbol" && typeof obj.inspect === "function") { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function(value, key) { + mapParts.push(inspect(key, obj, true) + " => " + inspect(value, obj)); + }); + } + return collectionOf("Map", mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function(value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf("Set", setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf("WeakMap"); + } + if (isWeakSet(obj)) { + return weakCollectionOf("WeakSet"); + } + if (isWeakRef(obj)) { + return weakCollectionOf("WeakRef"); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + if (typeof window !== "undefined" && obj === window) { + return "{ [object Window] }"; + } + if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) { + return "{ [object globalThis] }"; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? "" : "null prototype"; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; + var constructorTag = isPlainObject || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; + var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); + if (ys.length === 0) { + return tag + "{}"; + } + if (indent) { + return tag + "{" + indentedJoin(ys, indent) + "}"; + } + return tag + "{ " + $join.call(ys, ", ") + " }"; + } + return String(obj); + }; + function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; + } + function quote(s) { + return $replace.call(String(s), /"/g, """); + } + function canTrustToString(obj) { + return !toStringTag || !(typeof obj === "object" && (toStringTag in obj || typeof obj[toStringTag] !== "undefined")); + } + function isArray(obj) { + return toStr(obj) === "[object Array]" && canTrustToString(obj); + } + function isDate(obj) { + return toStr(obj) === "[object Date]" && canTrustToString(obj); + } + function isRegExp(obj) { + return toStr(obj) === "[object RegExp]" && canTrustToString(obj); + } + function isError(obj) { + return toStr(obj) === "[object Error]" && canTrustToString(obj); + } + function isString(obj) { + return toStr(obj) === "[object String]" && canTrustToString(obj); + } + function isNumber(obj) { + return toStr(obj) === "[object Number]" && canTrustToString(obj); + } + function isBoolean(obj) { + return toStr(obj) === "[object Boolean]" && canTrustToString(obj); + } + function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === "object" && obj instanceof Symbol; + } + if (typeof obj === "symbol") { + return true; + } + if (!obj || typeof obj !== "object" || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) { + } + return false; + } + function isBigInt(obj) { + if (!obj || typeof obj !== "object" || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) { + } + return false; + } + var hasOwn = Object.prototype.hasOwnProperty || function(key) { + return key in this; + }; + function has(obj, key) { + return hasOwn.call(obj, key); + } + function toStr(obj) { + return objectToString.call(obj); + } + function nameOf(f) { + if (f.name) { + return f.name; + } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { + return m[1]; + } + return null; + } + function indexOf(xs, x) { + if (xs.indexOf) { + return xs.indexOf(x); + } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { + return i; + } + } + return -1; + } + function isMap(x) { + if (!mapSize || !x || typeof x !== "object") { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; + } catch (e) { + } + return false; + } + function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== "object") { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; + } catch (e) { + } + return false; + } + function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== "object") { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) { + } + return false; + } + function isSet(x) { + if (!setSize || !x || typeof x !== "object") { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; + } catch (e) { + } + return false; + } + function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== "object") { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; + } catch (e) { + } + return false; + } + function isElement(x) { + if (!x || typeof x !== "object") { + return false; + } + if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; + } + function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || "single"]; + quoteRE.lastIndex = 0; + var s = $replace.call($replace.call(str, quoteRE, "\\$1"), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, "single", opts); + } + function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: "b", + 9: "t", + 10: "n", + 12: "f", + 13: "r" + }[n]; + if (x) { + return "\\" + x; + } + return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); + } + function markBoxed(str) { + return "Object(" + str + ")"; + } + function weakCollectionOf(type) { + return type + " { ? }"; + } + function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ", "); + return type + " (" + size + ") {" + joinedEntries + "}"; + } + function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], "\n") >= 0) { + return false; + } + } + return true; + } + function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === " ") { + baseIndent = " "; + } else if (typeof opts.indent === "number" && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), " "); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; + } + function indentedJoin(xs, indent) { + if (xs.length === 0) { + return ""; + } + var lineJoiner = "\n" + indent.prev + indent.base; + return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent.prev; + } + function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ""; + } + } + var syms = typeof gOPS === "function" ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap["$" + syms[k]] = syms[k]; + } + } + for (var key in obj) { + if (!has(obj, key)) { + continue; + } + if (isArr && String(Number(key)) === key && key < obj.length) { + continue; + } + if (hasShammedSymbols && symMap["$" + key] instanceof Symbol) { + continue; + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ": " + inspect(obj[key], obj)); + } else { + xs.push(key + ": " + inspect(obj[key], obj)); + } + } + if (typeof gOPS === "function") { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj)); + } + } + } + return xs; + } + } +}); + +// node_modules/side-channel-list/index.js +var require_side_channel_list = __commonJS({ + "node_modules/side-channel-list/index.js"(exports, module2) { + "use strict"; + var inspect = require_object_inspect(); + var $TypeError = require_type(); + var listGetNode = function(list, key, isDelete) { + var prev = list; + var curr; + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + curr.next = list.next; + list.next = curr; + } + return curr; + } + } + }; + var listGet = function(objects, key) { + if (!objects) { + return void 0; + } + var node = listGetNode(objects, key); + return node && node.value; + }; + var listSet = function(objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + objects.next = { + key, + next: objects.next, + value + }; + } + }; + var listHas = function(objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); + }; + var listDelete = function(objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } + }; + module2.exports = function getSideChannelList() { + var $o; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, + "delete": function(key) { + var root = $o && $o.next; + var deletedNode = listDelete($o, key); + if (deletedNode && root && root === deletedNode) { + $o = void 0; + } + return !!deletedNode; + }, + get: function(key) { + return listGet($o, key); + }, + has: function(key) { + return listHas($o, key); + }, + set: function(key, value) { + if (!$o) { + $o = { + next: void 0 + }; + } + listSet($o, key, value); + } + }; + return channel; + }; + } +}); + +// node_modules/es-object-atoms/index.js +var require_es_object_atoms = __commonJS({ + "node_modules/es-object-atoms/index.js"(exports, module2) { + "use strict"; + module2.exports = Object; + } +}); + +// node_modules/es-errors/index.js +var require_es_errors = __commonJS({ + "node_modules/es-errors/index.js"(exports, module2) { + "use strict"; + module2.exports = Error; + } +}); + +// node_modules/es-errors/eval.js +var require_eval = __commonJS({ + "node_modules/es-errors/eval.js"(exports, module2) { + "use strict"; + module2.exports = EvalError; + } +}); + +// node_modules/es-errors/range.js +var require_range = __commonJS({ + "node_modules/es-errors/range.js"(exports, module2) { + "use strict"; + module2.exports = RangeError; + } +}); + +// node_modules/es-errors/ref.js +var require_ref = __commonJS({ + "node_modules/es-errors/ref.js"(exports, module2) { + "use strict"; + module2.exports = ReferenceError; + } +}); + +// node_modules/es-errors/syntax.js +var require_syntax = __commonJS({ + "node_modules/es-errors/syntax.js"(exports, module2) { + "use strict"; + module2.exports = SyntaxError; + } +}); + +// node_modules/es-errors/uri.js +var require_uri = __commonJS({ + "node_modules/es-errors/uri.js"(exports, module2) { + "use strict"; + module2.exports = URIError; + } +}); + +// node_modules/math-intrinsics/abs.js +var require_abs = __commonJS({ + "node_modules/math-intrinsics/abs.js"(exports, module2) { + "use strict"; + module2.exports = Math.abs; + } +}); + +// node_modules/math-intrinsics/floor.js +var require_floor = __commonJS({ + "node_modules/math-intrinsics/floor.js"(exports, module2) { + "use strict"; + module2.exports = Math.floor; + } +}); + +// node_modules/math-intrinsics/max.js +var require_max = __commonJS({ + "node_modules/math-intrinsics/max.js"(exports, module2) { + "use strict"; + module2.exports = Math.max; + } +}); + +// node_modules/math-intrinsics/min.js +var require_min = __commonJS({ + "node_modules/math-intrinsics/min.js"(exports, module2) { + "use strict"; + module2.exports = Math.min; + } +}); + +// node_modules/math-intrinsics/pow.js +var require_pow = __commonJS({ + "node_modules/math-intrinsics/pow.js"(exports, module2) { + "use strict"; + module2.exports = Math.pow; + } +}); + +// node_modules/math-intrinsics/round.js +var require_round = __commonJS({ + "node_modules/math-intrinsics/round.js"(exports, module2) { + "use strict"; + module2.exports = Math.round; + } +}); + +// node_modules/math-intrinsics/isNaN.js +var require_isNaN = __commonJS({ + "node_modules/math-intrinsics/isNaN.js"(exports, module2) { + "use strict"; + module2.exports = Number.isNaN || function isNaN2(a) { + return a !== a; + }; + } +}); + +// node_modules/math-intrinsics/sign.js +var require_sign = __commonJS({ + "node_modules/math-intrinsics/sign.js"(exports, module2) { + "use strict"; + var $isNaN = require_isNaN(); + module2.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : 1; + }; + } +}); + +// node_modules/gopd/gOPD.js +var require_gOPD = __commonJS({ + "node_modules/gopd/gOPD.js"(exports, module2) { + "use strict"; + module2.exports = Object.getOwnPropertyDescriptor; + } +}); + +// node_modules/gopd/index.js +var require_gopd = __commonJS({ + "node_modules/gopd/index.js"(exports, module2) { + "use strict"; + var $gOPD = require_gOPD(); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module2.exports = $gOPD; + } +}); + +// node_modules/es-define-property/index.js +var require_es_define_property = __commonJS({ + "node_modules/es-define-property/index.js"(exports, module2) { + "use strict"; + var $defineProperty = Object.defineProperty || false; + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = false; + } + } + module2.exports = $defineProperty; + } +}); + +// node_modules/has-symbols/shams.js +var require_shams = __commonJS({ + "node_modules/has-symbols/shams.js"(exports, module2) { + "use strict"; + module2.exports = function hasSymbols() { + if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { + return false; + } + if (typeof Symbol.iterator === "symbol") { + return true; + } + var obj = {}; + var sym = Symbol("test"); + var symObj = Object(sym); + if (typeof sym === "string") { + return false; + } + if (Object.prototype.toString.call(sym) !== "[object Symbol]") { + return false; + } + if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { + return false; + } + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { + return false; + } + if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { + return false; + } + if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { + return false; + } + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { + return false; + } + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { + return false; + } + if (typeof Object.getOwnPropertyDescriptor === "function") { + var descriptor = Object.getOwnPropertyDescriptor(obj, sym); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { + return false; + } + } + return true; + }; + } +}); + +// node_modules/has-symbols/index.js +var require_has_symbols = __commonJS({ + "node_modules/has-symbols/index.js"(exports, module2) { + "use strict"; + var origSymbol = typeof Symbol !== "undefined" && Symbol; + var hasSymbolSham = require_shams(); + module2.exports = function hasNativeSymbols() { + if (typeof origSymbol !== "function") { + return false; + } + if (typeof Symbol !== "function") { + return false; + } + if (typeof origSymbol("foo") !== "symbol") { + return false; + } + if (typeof Symbol("bar") !== "symbol") { + return false; + } + return hasSymbolSham(); + }; + } +}); + +// node_modules/get-proto/Reflect.getPrototypeOf.js +var require_Reflect_getPrototypeOf = __commonJS({ + "node_modules/get-proto/Reflect.getPrototypeOf.js"(exports, module2) { + "use strict"; + module2.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; + } +}); + +// node_modules/get-proto/Object.getPrototypeOf.js +var require_Object_getPrototypeOf = __commonJS({ + "node_modules/get-proto/Object.getPrototypeOf.js"(exports, module2) { + "use strict"; + var $Object = require_es_object_atoms(); + module2.exports = $Object.getPrototypeOf || null; + } +}); + +// node_modules/function-bind/implementation.js +var require_implementation = __commonJS({ + "node_modules/function-bind/implementation.js"(exports, module2) { + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var toStr = Object.prototype.toString; + var max = Math.max; + var funcType = "[object Function]"; + var concatty = function concatty2(a, b) { + var arr = []; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + return arr; + }; + var slicy = function slicy2(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + var joiny = function(arr, joiner) { + var str = ""; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; + module2.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply(this, concatty(args, arguments)); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply(that, concatty(args, arguments)); + }; + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = "$" + i; + } + bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }; + } +}); + +// node_modules/function-bind/index.js +var require_function_bind = __commonJS({ + "node_modules/function-bind/index.js"(exports, module2) { + "use strict"; + var implementation = require_implementation(); + module2.exports = Function.prototype.bind || implementation; + } +}); + +// node_modules/call-bind-apply-helpers/functionCall.js +var require_functionCall = __commonJS({ + "node_modules/call-bind-apply-helpers/functionCall.js"(exports, module2) { + "use strict"; + module2.exports = Function.prototype.call; + } +}); + +// node_modules/call-bind-apply-helpers/functionApply.js +var require_functionApply = __commonJS({ + "node_modules/call-bind-apply-helpers/functionApply.js"(exports, module2) { + "use strict"; + module2.exports = Function.prototype.apply; + } +}); + +// node_modules/call-bind-apply-helpers/reflectApply.js +var require_reflectApply = __commonJS({ + "node_modules/call-bind-apply-helpers/reflectApply.js"(exports, module2) { + "use strict"; + module2.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; + } +}); + +// node_modules/call-bind-apply-helpers/actualApply.js +var require_actualApply = __commonJS({ + "node_modules/call-bind-apply-helpers/actualApply.js"(exports, module2) { + "use strict"; + var bind = require_function_bind(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var $reflectApply = require_reflectApply(); + module2.exports = $reflectApply || bind.call($call, $apply); + } +}); + +// node_modules/call-bind-apply-helpers/index.js +var require_call_bind_apply_helpers = __commonJS({ + "node_modules/call-bind-apply-helpers/index.js"(exports, module2) { + "use strict"; + var bind = require_function_bind(); + var $TypeError = require_type(); + var $call = require_functionCall(); + var $actualApply = require_actualApply(); + module2.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== "function") { + throw new $TypeError("a function is required"); + } + return $actualApply(bind, $call, args); + }; + } +}); + +// node_modules/dunder-proto/get.js +var require_get = __commonJS({ + "node_modules/dunder-proto/get.js"(exports, module2) { + "use strict"; + var callBind = require_call_bind_apply_helpers(); + var gOPD = require_gopd(); + var hasProtoAccessor; + try { + hasProtoAccessor = [].__proto__ === Array.prototype; + } catch (e) { + if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") { + throw e; + } + } + var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, "__proto__"); + var $Object = Object; + var $getPrototypeOf = $Object.getPrototypeOf; + module2.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? function getDunder(value) { + return $getPrototypeOf(value == null ? value : $Object(value)); + } : false; + } +}); + +// node_modules/get-proto/index.js +var require_get_proto = __commonJS({ + "node_modules/get-proto/index.js"(exports, module2) { + "use strict"; + var reflectGetProto = require_Reflect_getPrototypeOf(); + var originalGetProto = require_Object_getPrototypeOf(); + var getDunderProto = require_get(); + module2.exports = reflectGetProto ? function getProto(O) { + return reflectGetProto(O); + } : originalGetProto ? function getProto(O) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new TypeError("getProto: not an object"); + } + return originalGetProto(O); + } : getDunderProto ? function getProto(O) { + return getDunderProto(O); + } : null; + } +}); + +// node_modules/hasown/index.js +var require_hasown = __commonJS({ + "node_modules/hasown/index.js"(exports, module2) { + "use strict"; + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; + var bind = require_function_bind(); + module2.exports = bind.call(call, $hasOwn); + } +}); + +// node_modules/get-intrinsic/index.js +var require_get_intrinsic = __commonJS({ + "node_modules/get-intrinsic/index.js"(exports, module2) { + "use strict"; + var undefined2; + var $Object = require_es_object_atoms(); + var $Error = require_es_errors(); + var $EvalError = require_eval(); + var $RangeError = require_range(); + var $ReferenceError = require_ref(); + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var $URIError = require_uri(); + var abs = require_abs(); + var floor = require_floor(); + var max = require_max(); + var min = require_min(); + var pow = require_pow(); + var round = require_round(); + var sign = require_sign(); + var $Function = Function; + var getEvalledConstructor = function(expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); + } catch (e) { + } + }; + var $gOPD = require_gopd(); + var $defineProperty = require_es_define_property(); + var throwTypeError = function() { + throw new $TypeError(); + }; + var ThrowTypeError = $gOPD ? function() { + try { + arguments.callee; + return throwTypeError; + } catch (calleeThrows) { + try { + return $gOPD(arguments, "callee").get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }() : throwTypeError; + var hasSymbols = require_has_symbols()(); + var getProto = require_get_proto(); + var $ObjectGPO = require_Object_getPrototypeOf(); + var $ReflectGPO = require_Reflect_getPrototypeOf(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var needsEval = {}; + var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); + var INTRINSICS = { + __proto__: null, + "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, + "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, + "%AsyncFromSyncIteratorPrototype%": undefined2, + "%AsyncFunction%": needsEval, + "%AsyncGenerator%": needsEval, + "%AsyncGeneratorFunction%": needsEval, + "%AsyncIteratorPrototype%": needsEval, + "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, + "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, + "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, + "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, + "%Boolean%": Boolean, + "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": $Error, + "%eval%": eval, + "%EvalError%": $EvalError, + "%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array, + "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, + "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, + "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, + "%Function%": $Function, + "%GeneratorFunction%": needsEval, + "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, + "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, + "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%JSON%": typeof JSON === "object" ? JSON : undefined2, + "%Map%": typeof Map === "undefined" ? undefined2 : Map, + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto(new Map()[Symbol.iterator]()), + "%Math%": Math, + "%Number%": Number, + "%Object%": $Object, + "%Object.getOwnPropertyDescriptor%": $gOPD, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, + "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, + "%RangeError%": $RangeError, + "%ReferenceError%": $ReferenceError, + "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, + "%RegExp%": RegExp, + "%Set%": typeof Set === "undefined" ? undefined2 : Set, + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto(new Set()[Symbol.iterator]()), + "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, + "%Symbol%": hasSymbols ? Symbol : undefined2, + "%SyntaxError%": $SyntaxError, + "%ThrowTypeError%": ThrowTypeError, + "%TypedArray%": TypedArray, + "%TypeError%": $TypeError, + "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, + "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, + "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, + "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, + "%URIError%": $URIError, + "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, + "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, + "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet, + "%Function.prototype.call%": $call, + "%Function.prototype.apply%": $apply, + "%Object.defineProperty%": $defineProperty, + "%Object.getPrototypeOf%": $ObjectGPO, + "%Math.abs%": abs, + "%Math.floor%": floor, + "%Math.max%": max, + "%Math.min%": min, + "%Math.pow%": pow, + "%Math.round%": round, + "%Math.sign%": sign, + "%Reflect.getPrototypeOf%": $ReflectGPO + }; + if (getProto) { + try { + null.error; + } catch (e) { + errorProto = getProto(getProto(e)); + INTRINSICS["%Error.prototype%"] = errorProto; + } + } + var errorProto; + var doEval = function doEval2(name) { + var value; + if (name === "%AsyncFunction%") { + value = getEvalledConstructor("async function () {}"); + } else if (name === "%GeneratorFunction%") { + value = getEvalledConstructor("function* () {}"); + } else if (name === "%AsyncGeneratorFunction%") { + value = getEvalledConstructor("async function* () {}"); + } else if (name === "%AsyncGenerator%") { + var fn = doEval2("%AsyncGeneratorFunction%"); + if (fn) { + value = fn.prototype; + } + } else if (name === "%AsyncIteratorPrototype%") { + var gen = doEval2("%AsyncGenerator%"); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + INTRINSICS[name] = value; + return value; + }; + var LEGACY_ALIASES = { + __proto__: null, + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }; + var bind = require_function_bind(); + var hasOwn = require_hasown(); + var $concat = bind.call($call, Array.prototype.concat); + var $spliceApply = bind.call($apply, Array.prototype.splice); + var $replace = bind.call($call, String.prototype.replace); + var $strSlice = bind.call($call, String.prototype.slice); + var $exec = bind.call($call, RegExp.prototype.exec); + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = function stringToPath2(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === "%" && last !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); + } else if (last === "%" && first !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); + } + var result = []; + $replace(string, rePropName, function(match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; + }); + return result; + }; + var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = "%" + alias[0] + "%"; + } + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === "undefined" && !allowMissing) { + throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); + } + return { + alias, + name: intrinsicName, + value + }; + } + throw new $SyntaxError("intrinsic " + name + " does not exist!"); + }; + module2.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== "string" || name.length === 0) { + throw new $TypeError("intrinsic name must be a non-empty string"); + } + if (arguments.length > 1 && typeof allowMissing !== "boolean") { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; + var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { + throw new $SyntaxError("property names with quotes must have matching quotes"); + } + if (part === "constructor" || !isOwn) { + skipFurtherCaching = true; + } + intrinsicBaseName += "." + part; + intrinsicRealName = "%" + intrinsicBaseName + "%"; + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); + } + return void 0; + } + if ($gOPD && i + 1 >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + if (isOwn && "get" in desc && !("originalValue" in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; + }; + } +}); + +// node_modules/call-bound/index.js +var require_call_bound = __commonJS({ + "node_modules/call-bound/index.js"(exports, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBindBasic = require_call_bind_apply_helpers(); + var $indexOf = callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]); + module2.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { + return callBindBasic([intrinsic]); + } + return intrinsic; + }; + } +}); + +// node_modules/side-channel-map/index.js +var require_side_channel_map = __commonJS({ + "node_modules/side-channel-map/index.js"(exports, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_call_bound(); + var inspect = require_object_inspect(); + var $TypeError = require_type(); + var $Map = GetIntrinsic("%Map%", true); + var $mapGet = callBound("Map.prototype.get", true); + var $mapSet = callBound("Map.prototype.set", true); + var $mapHas = callBound("Map.prototype.has", true); + var $mapDelete = callBound("Map.prototype.delete", true); + var $mapSize = callBound("Map.prototype.size", true); + module2.exports = !!$Map && function getSideChannelMap() { + var $m; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, + "delete": function(key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void 0; + } + return result; + } + return false; + }, + get: function(key) { + if ($m) { + return $mapGet($m, key); + } + }, + has: function(key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, + set: function(key, value) { + if (!$m) { + $m = new $Map(); + } + $mapSet($m, key, value); + } + }; + return channel; + }; + } +}); + +// node_modules/side-channel-weakmap/index.js +var require_side_channel_weakmap = __commonJS({ + "node_modules/side-channel-weakmap/index.js"(exports, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBound = require_call_bound(); + var inspect = require_object_inspect(); + var getSideChannelMap = require_side_channel_map(); + var $TypeError = require_type(); + var $WeakMap = GetIntrinsic("%WeakMap%", true); + var $weakMapGet = callBound("WeakMap.prototype.get", true); + var $weakMapSet = callBound("WeakMap.prototype.set", true); + var $weakMapHas = callBound("WeakMap.prototype.has", true); + var $weakMapDelete = callBound("WeakMap.prototype.delete", true); + module2.exports = $WeakMap ? function getSideChannelWeakMap() { + var $wm; + var $m; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, + "delete": function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m["delete"](key); + } + } + return false; + }, + get: function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, + has: function(key) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, + set: function(key, value) { + if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + $m.set(key, value); + } + } + }; + return channel; + } : getSideChannelMap; + } +}); + +// node_modules/side-channel/index.js +var require_side_channel = __commonJS({ + "node_modules/side-channel/index.js"(exports, module2) { + "use strict"; + var $TypeError = require_type(); + var inspect = require_object_inspect(); + var getSideChannelList = require_side_channel_list(); + var getSideChannelMap = require_side_channel_map(); + var getSideChannelWeakMap = require_side_channel_weakmap(); + var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; + module2.exports = function getSideChannel() { + var $channelData; + var channel = { + assert: function(key) { + if (!channel.has(key)) { + throw new $TypeError("Side channel does not contain " + inspect(key)); + } + }, + "delete": function(key) { + return !!$channelData && $channelData["delete"](key); + }, + get: function(key) { + return $channelData && $channelData.get(key); + }, + has: function(key) { + return !!$channelData && $channelData.has(key); + }, + set: function(key, value) { + if (!$channelData) { + $channelData = makeChannel(); + } + $channelData.set(key, value); + } + }; + return channel; + }; + } +}); + +// node_modules/qs/lib/formats.js +var require_formats = __commonJS({ + "node_modules/qs/lib/formats.js"(exports, module2) { + "use strict"; + var replace = String.prototype.replace; + var percentTwenties = /%20/g; + var Format = { + RFC1738: "RFC1738", + RFC3986: "RFC3986" + }; + module2.exports = { + "default": Format.RFC3986, + formatters: { + RFC1738: function(value) { + return replace.call(value, percentTwenties, "+"); + }, + RFC3986: function(value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 + }; + } +}); + +// node_modules/qs/lib/utils.js +var require_utils = __commonJS({ + "node_modules/qs/lib/utils.js"(exports, module2) { + "use strict"; + var formats = require_formats(); + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + var hexTable = function() { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push("%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase()); + } + return array; + }(); + var compactQueue = function compactQueue2(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + if (isArray(obj)) { + var compacted = []; + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== "undefined") { + compacted.push(obj[j]); + } + } + item.obj[item.prop] = compacted; + } + } + }; + var arrayToObject = function arrayToObject2(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== "undefined") { + obj[i] = source[i]; + } + } + return obj; + }; + var merge = function merge2(target, source, options) { + if (!source) { + return target; + } + if (typeof source !== "object") { + if (isArray(target)) { + target.push(source); + } else if (target && typeof target === "object") { + if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + return target; + } + if (!target || typeof target !== "object") { + return [target].concat(source); + } + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + if (isArray(target) && isArray(source)) { + source.forEach(function(item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === "object" && item && typeof item === "object") { + target[i] = merge2(targetItem, item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + return Object.keys(source).reduce(function(acc, key) { + var value = source[key]; + if (has.call(acc, key)) { + acc[key] = merge2(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); + }; + var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function(acc, key) { + acc[key] = source[key]; + return acc; + }, target); + }; + var decode = function(str, decoder, charset) { + var strWithoutPlus = str.replace(/\+/g, " "); + if (charset === "iso-8859-1") { + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } + }; + var limit = 1024; + var encode = function encode2(str, defaultEncoder, charset, kind, format) { + if (str.length === 0) { + return str; + } + var string = str; + if (typeof str === "symbol") { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== "string") { + string = String(str); + } + if (charset === "iso-8859-1") { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) { + return "%26%23" + parseInt($0.slice(2), 16) + "%3B"; + }); + } + var out = ""; + for (var j = 0; j < string.length; j += limit) { + var segment = string.length >= limit ? string.slice(j, j + limit) : string; + var arr = []; + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) { + arr[arr.length] = segment.charAt(i); + continue; + } + if (c < 128) { + arr[arr.length] = hexTable[c]; + continue; + } + if (c < 2048) { + arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63]; + continue; + } + if (c < 55296 || c >= 57344) { + arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; + continue; + } + i += 1; + c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i) & 1023); + arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; + } + out += arr.join(""); + } + return out; + }; + var compact = function compact2(value) { + var queue = [{ obj: { o: value }, prop: "o" }]; + var refs = []; + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === "object" && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj, prop: key }); + refs.push(val); + } + } + } + compactQueue(queue); + return value; + }; + var isRegExp = function isRegExp2(obj) { + return Object.prototype.toString.call(obj) === "[object RegExp]"; + }; + var isBuffer = function isBuffer2(obj) { + if (!obj || typeof obj !== "object") { + return false; + } + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); + }; + var combine = function combine2(a, b) { + return [].concat(a, b); + }; + var maybeMap = function maybeMap2(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped.push(fn(val[i])); + } + return mapped; + } + return fn(val); + }; + module2.exports = { + arrayToObject, + assign, + combine, + compact, + decode, + encode, + isBuffer, + isRegExp, + maybeMap, + merge + }; + } +}); + +// node_modules/qs/lib/stringify.js +var require_stringify = __commonJS({ + "node_modules/qs/lib/stringify.js"(exports, module2) { + "use strict"; + var getSideChannel = require_side_channel(); + var utils = require_utils(); + var formats = require_formats(); + var has = Object.prototype.hasOwnProperty; + var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + "[]"; + }, + comma: "comma", + indices: function indices(prefix, key) { + return prefix + "[" + key + "]"; + }, + repeat: function repeat(prefix) { + return prefix; + } + }; + var isArray = Array.isArray; + var push = Array.prototype.push; + var pushToArray = function(arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); + }; + var toISO = Date.prototype.toISOString; + var defaultFormat = formats["default"]; + var defaults = { + addQueryPrefix: false, + allowDots: false, + allowEmptyArrays: false, + arrayFormat: "indices", + charset: "utf-8", + charsetSentinel: false, + delimiter: "&", + encode: true, + encodeDotInKeys: false, + encoder: utils.encode, + encodeValuesOnly: false, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false + }; + var isNonNullishPrimitive = function isNonNullishPrimitive2(v) { + return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint"; + }; + var sentinel = {}; + var stringify = function stringify2(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) { + var obj = object; + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) { + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== "undefined") { + if (pos === step) { + throw new RangeError("Cyclic object value"); + } else { + findFlag = true; + } + } + if (typeof tmpSc.get(sentinel) === "undefined") { + step = 0; + } + } + if (typeof filter === "function") { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === "comma" && isArray(obj)) { + obj = utils.maybeMap(obj, function(value2) { + if (value2 instanceof Date) { + return serializeDate(value2); + } + return value2; + }); + } + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, "key", format) : prefix; + } + obj = ""; + } + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, "key", format); + return [formatter(keyValue) + "=" + formatter(encoder(obj, defaults.encoder, charset, "value", format))]; + } + return [formatter(prefix) + "=" + formatter(String(obj))]; + } + var values = []; + if (typeof obj === "undefined") { + return values; + } + var objKeys; + if (generateArrayPrefix === "comma" && isArray(obj)) { + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + var encodedPrefix = encodeDotInKeys ? prefix.replace(/\./g, "%2E") : prefix; + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix; + if (allowEmptyArrays && isArray(obj) && obj.length === 0) { + return adjustedPrefix + "[]"; + } + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === "object" && typeof key.value !== "undefined" ? key.value : obj[key]; + if (skipNulls && value === null) { + continue; + } + var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\./g, "%2E") : key; + var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]"); + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify2(value, keyPrefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, generateArrayPrefix === "comma" && encodeValuesOnly && isArray(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel)); + } + return values; + }; + var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) { + if (!opts) { + return defaults; + } + if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { + throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + } + if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") { + throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided"); + } + if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") { + throw new TypeError("Encoder has to be a function."); + } + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { + throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + } + var format = formats["default"]; + if (typeof opts.format !== "undefined") { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError("Unknown format option provided."); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + var filter = defaults.filter; + if (typeof opts.filter === "function" || isArray(opts.filter)) { + filter = opts.filter; + } + var arrayFormat; + if (opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if ("indices" in opts) { + arrayFormat = opts.indices ? "indices" : "repeat"; + } else { + arrayFormat = defaults.arrayFormat; + } + if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") { + throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); + } + var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { + addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat, + charset, + charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: opts.commaRoundTrip, + delimiter: typeof opts.delimiter === "undefined" ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults.encodeDotInKeys, + encoder: typeof opts.encoder === "function" ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter, + format, + formatter, + serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === "function" ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling + }; + }; + module2.exports = function(object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + var objKeys; + var filter; + if (typeof options.filter === "function") { + filter = options.filter; + obj = filter("", obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + var keys = []; + if (typeof obj !== "object" || obj === null) { + return ""; + } + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip; + if (!objKeys) { + objKeys = Object.keys(obj); + } + if (options.sort) { + objKeys.sort(options.sort); + } + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + if (options.skipNulls && obj[key] === null) { + continue; + } + pushToArray(keys, stringify(obj[key], key, generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel)); + } + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? "?" : ""; + if (options.charsetSentinel) { + if (options.charset === "iso-8859-1") { + prefix += "utf8=%26%2310003%3B&"; + } else { + prefix += "utf8=%E2%9C%93&"; + } + } + return joined.length > 0 ? prefix + joined : ""; + }; + } +}); + +// node_modules/qs/lib/parse.js +var require_parse = __commonJS({ + "node_modules/qs/lib/parse.js"(exports, module2) { + "use strict"; + var utils = require_utils(); + var has = Object.prototype.hasOwnProperty; + var isArray = Array.isArray; + var defaults = { + allowDots: false, + allowEmptyArrays: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: "utf-8", + charsetSentinel: false, + comma: false, + decodeDotInKeys: false, + decoder: utils.decode, + delimiter: "&", + depth: 5, + duplicates: "combine", + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1e3, + parseArrays: true, + plainObjects: false, + strictDepth: false, + strictNullHandling: false + }; + var interpretNumericEntities = function(str) { + return str.replace(/&#(\d+);/g, function($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); + }; + var parseArrayValue = function(val, options) { + if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) { + return val.split(","); + } + return val; + }; + var isoSentinel = "utf8=%26%2310003%3B"; + var charsetSentinel = "utf8=%E2%9C%93"; + var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str; + cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]"); + var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit; + var parts = cleanStr.split(options.delimiter, limit); + var skipIndex = -1; + var i; + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf("utf8=") === 0) { + if (parts[i] === charsetSentinel) { + charset = "utf-8"; + } else if (parts[i] === isoSentinel) { + charset = "iso-8859-1"; + } + skipIndex = i; + i = parts.length; + } + } + } + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + var bracketEqualsPos = part.indexOf("]="); + var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1; + var key, val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, "key"); + val = options.strictNullHandling ? null : ""; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, "key"); + val = utils.maybeMap(parseArrayValue(part.slice(pos + 1), options), function(encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, "value"); + }); + } + if (val && options.interpretNumericEntities && charset === "iso-8859-1") { + val = interpretNumericEntities(val); + } + if (part.indexOf("[]=") > -1) { + val = isArray(val) ? [val] : val; + } + var existing = has.call(obj, key); + if (existing && options.duplicates === "combine") { + obj[key] = utils.combine(obj[key], val); + } else if (!existing || options.duplicates === "last") { + obj[key] = val; + } + } + return obj; + }; + var parseObject = function(chain, val, options, valuesParsed) { + var leaf = valuesParsed ? val : parseArrayValue(val, options); + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + if (root === "[]" && options.parseArrays) { + obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : [].concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root; + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot; + var index = parseInt(decodedRoot, 10); + if (!options.parseArrays && decodedRoot === "") { + obj = { 0: leaf }; + } else if (!isNaN(index) && root !== decodedRoot && String(index) === decodedRoot && index >= 0 && (options.parseArrays && index <= options.arrayLimit)) { + obj = []; + obj[index] = leaf; + } else if (decodedRoot !== "__proto__") { + obj[decodedRoot] = leaf; + } + } + leaf = obj; + } + return leaf; + }; + var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey; + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + var segment = options.depth > 0 && brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + var keys = []; + if (parent) { + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(parent); + } + var i = 0; + while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + if (segment) { + if (options.strictDepth === true) { + throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true"); + } + keys.push("[" + key.slice(segment.index) + "]"); + } + return parseObject(keys, val, options, valuesParsed); + }; + var normalizeParseOptions = function normalizeParseOptions2(opts) { + if (!opts) { + return defaults; + } + if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { + throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); + } + if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") { + throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided"); + } + if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") { + throw new TypeError("Decoder has to be a function."); + } + if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { + throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); + } + var charset = typeof opts.charset === "undefined" ? defaults.charset : opts.charset; + var duplicates = typeof opts.duplicates === "undefined" ? defaults.duplicates : opts.duplicates; + if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") { + throw new TypeError("The duplicates option must be either combine, first, or last"); + } + var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + return { + allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults.arrayLimit, + charset, + charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === "boolean" ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults.decodeDotInKeys, + decoder: typeof opts.decoder === "function" ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults.depth, + duplicates, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults.plainObjects, + strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults.strictDepth, + strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling + }; + }; + module2.exports = function(str, opts) { + var options = normalizeParseOptions(opts); + if (str === "" || str === null || typeof str === "undefined") { + return options.plainObjects ? Object.create(null) : {}; + } + var tempObj = typeof str === "string" ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === "string"); + obj = utils.merge(obj, newObj, options); + } + if (options.allowSparse === true) { + return obj; + } + return utils.compact(obj); + }; + } +}); + +// node_modules/qs/lib/index.js +var require_lib4 = __commonJS({ + "node_modules/qs/lib/index.js"(exports, module2) { + "use strict"; + var stringify = require_stringify(); + var parse = require_parse(); + var formats = require_formats(); + module2.exports = { + formats, + parse, + stringify + }; + } +}); + +// node_modules/body-parser/lib/types/urlencoded.js +var require_urlencoded = __commonJS({ + "node_modules/body-parser/lib/types/urlencoded.js"(exports, module2) { + "use strict"; + var bytes = require_bytes(); + var contentType = require_content_type(); + var createError = require_http_errors(); + var debug = require_src()("body-parser:urlencoded"); + var deprecate = require_depd()("body-parser"); + var read = require_read(); + var typeis = require_type_is(); + module2.exports = urlencoded; + var parsers = Object.create(null); + function urlencoded(options) { + var opts = options || {}; + if (opts.extended === void 0) { + deprecate("undefined extended: provide extended option"); + } + var extended = opts.extended !== false; + var inflate = opts.inflate !== false; + var limit = typeof opts.limit !== "number" ? bytes.parse(opts.limit || "100kb") : opts.limit; + var type = opts.type || "application/x-www-form-urlencoded"; + var verify = opts.verify || false; + var depth = typeof opts.depth !== "number" ? Number(opts.depth || 32) : opts.depth; + if (verify !== false && typeof verify !== "function") { + throw new TypeError("option verify must be function"); + } + var queryparse = extended ? extendedparser(opts) : simpleparser(opts); + var shouldParse = typeof type !== "function" ? typeChecker(type) : type; + function parse(body) { + return body.length ? queryparse(body) : {}; + } + return function urlencodedParser(req, res, next) { + if (req._body) { + debug("body already parsed"); + next(); + return; + } + req.body = req.body || {}; + if (!typeis.hasBody(req)) { + debug("skip empty body"); + next(); + return; + } + debug("content-type %j", req.headers["content-type"]); + if (!shouldParse(req)) { + debug("skip parsing"); + next(); + return; + } + var charset = getCharset(req) || "utf-8"; + if (charset !== "utf-8") { + debug("invalid charset"); + next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { + charset, + type: "charset.unsupported" + })); + return; + } + read(req, res, next, parse, debug, { + debug, + encoding: charset, + inflate, + limit, + verify, + depth + }); + }; + } + function extendedparser(options) { + var parameterLimit = options.parameterLimit !== void 0 ? options.parameterLimit : 1e3; + var depth = typeof options.depth !== "number" ? Number(options.depth || 32) : options.depth; + var parse = parser("qs"); + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError("option parameterLimit must be a positive number"); + } + if (isNaN(depth) || depth < 0) { + throw new TypeError("option depth must be a zero or a positive number"); + } + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0; + } + return function queryparse(body) { + var paramCount = parameterCount(body, parameterLimit); + if (paramCount === void 0) { + debug("too many parameters"); + throw createError(413, "too many parameters", { + type: "parameters.too.many" + }); + } + var arrayLimit = Math.max(100, paramCount); + debug("parse extended urlencoding"); + try { + return parse(body, { + allowPrototypes: true, + arrayLimit, + depth, + strictDepth: true, + parameterLimit + }); + } catch (err) { + if (err instanceof RangeError) { + throw createError(400, "The input exceeded the depth", { + type: "querystring.parse.rangeError" + }); + } else { + throw err; + } + } + }; + } + function getCharset(req) { + try { + return (contentType.parse(req).parameters.charset || "").toLowerCase(); + } catch (e) { + return void 0; + } + } + function parameterCount(body, limit) { + var count = 0; + var index = 0; + while ((index = body.indexOf("&", index)) !== -1) { + count++; + index++; + if (count === limit) { + return void 0; + } + } + return count; + } + function parser(name) { + var mod = parsers[name]; + if (mod !== void 0) { + return mod.parse; + } + switch (name) { + case "qs": + mod = require_lib4(); + break; + case "querystring": + mod = require("querystring"); + break; + } + parsers[name] = mod; + return mod.parse; + } + function simpleparser(options) { + var parameterLimit = options.parameterLimit !== void 0 ? options.parameterLimit : 1e3; + var parse = parser("querystring"); + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError("option parameterLimit must be a positive number"); + } + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0; + } + return function queryparse(body) { + var paramCount = parameterCount(body, parameterLimit); + if (paramCount === void 0) { + debug("too many parameters"); + throw createError(413, "too many parameters", { + type: "parameters.too.many" + }); + } + debug("parse urlencoding"); + return parse(body, void 0, void 0, { maxKeys: parameterLimit }); + }; + } + function typeChecker(type) { + return function checkType(req) { + return Boolean(typeis(req, type)); + }; + } + } +}); + +// node_modules/body-parser/index.js +var require_body_parser = __commonJS({ + "node_modules/body-parser/index.js"(exports, module2) { + "use strict"; + var deprecate = require_depd()("body-parser"); + var parsers = Object.create(null); + exports = module2.exports = deprecate.function(bodyParser2, "bodyParser: use individual json/urlencoded middlewares"); + Object.defineProperty(exports, "json", { + configurable: true, + enumerable: true, + get: createParserGetter("json") + }); + Object.defineProperty(exports, "raw", { + configurable: true, + enumerable: true, + get: createParserGetter("raw") + }); + Object.defineProperty(exports, "text", { + configurable: true, + enumerable: true, + get: createParserGetter("text") + }); + Object.defineProperty(exports, "urlencoded", { + configurable: true, + enumerable: true, + get: createParserGetter("urlencoded") + }); + function bodyParser2(options) { + var opts = Object.create(options || null, { + type: { + configurable: true, + enumerable: true, + value: void 0, + writable: true + } + }); + var _urlencoded = exports.urlencoded(opts); + var _json = exports.json(opts); + return function bodyParser3(req, res, next) { + _json(req, res, function(err) { + if (err) + return next(err); + _urlencoded(req, res, next); + }); + }; + } + function createParserGetter(name) { + return function get() { + return loadParser(name); + }; + } + function loadParser(parserName) { + var parser = parsers[parserName]; + if (parser !== void 0) { + return parser; + } + switch (parserName) { + case "json": + parser = require_json(); + break; + case "raw": + parser = require_raw(); + break; + case "text": + parser = require_text(); + break; + case "urlencoded": + parser = require_urlencoded(); + break; + } + return parsers[parserName] = parser; + } + } +}); + +// node_modules/merge-descriptors/index.js +var require_merge_descriptors = __commonJS({ + "node_modules/merge-descriptors/index.js"(exports, module2) { + "use strict"; + module2.exports = merge; + var hasOwnProperty = Object.prototype.hasOwnProperty; + function merge(dest, src, redefine) { + if (!dest) { + throw new TypeError("argument dest is required"); + } + if (!src) { + throw new TypeError("argument src is required"); + } + if (redefine === void 0) { + redefine = true; + } + Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { + if (!redefine && hasOwnProperty.call(dest, name)) { + return; + } + var descriptor = Object.getOwnPropertyDescriptor(src, name); + Object.defineProperty(dest, name, descriptor); + }); + return dest; + } + } +}); + +// node_modules/finalhandler/node_modules/ms/index.js +var require_ms2 = __commonJS({ + "node_modules/finalhandler/node_modules/ms/index.js"(exports, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + "d"; + } + if (ms >= h) { + return Math.round(ms / h) + "h"; + } + if (ms >= m) { + return Math.round(ms / m) + "m"; + } + if (ms >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms"; + } + function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + " " + name; + } + return Math.ceil(ms / n) + " " + name + "s"; + } + } +}); + +// node_modules/finalhandler/node_modules/debug/src/debug.js +var require_debug2 = __commonJS({ + "node_modules/finalhandler/node_modules/debug/src/debug.js"(exports, module2) { + exports = module2.exports = createDebug.debug = createDebug["default"] = createDebug; + exports.coerce = coerce; + exports.disable = disable; + exports.enable = enable; + exports.enabled = enabled; + exports.humanize = require_ms2(); + exports.names = []; + exports.skips = []; + exports.formatters = {}; + var prevTime; + function selectColor(namespace) { + var hash = 0, i; + for (i in namespace) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return exports.colors[Math.abs(hash) % exports.colors.length]; + } + function createDebug(namespace) { + function debug() { + if (!debug.enabled) + return; + var self2 = debug; + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + args[0] = exports.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + if (match === "%%") + return match; + index++; + var formatter = exports.formatters[format]; + if (typeof formatter === "function") { + var val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + exports.formatArgs.call(self2, args); + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self2, args); + } + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + if (typeof exports.init === "function") { + exports.init(debug); + } + return debug; + } + function enable(namespaces) { + exports.save(namespaces); + exports.names = []; + exports.skips = []; + var split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); + var len = split.length; + for (var i = 0; i < len; i++) { + if (!split[i]) + continue; + namespaces = split[i].replace(/\*/g, ".*?"); + if (namespaces[0] === "-") { + exports.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); + } else { + exports.names.push(new RegExp("^" + namespaces + "$")); + } + } + } + function disable() { + exports.enable(""); + } + function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) + return val.stack || val.message; + return val; + } + } +}); + +// node_modules/finalhandler/node_modules/debug/src/browser.js +var require_browser2 = __commonJS({ + "node_modules/finalhandler/node_modules/debug/src/browser.js"(exports, module2) { + exports = module2.exports = require_debug2(); + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = typeof chrome != "undefined" && typeof chrome.storage != "undefined" ? chrome.storage.local : localstorage(); + exports.colors = [ + "lightseagreen", + "forestgreen", + "goldenrod", + "dodgerblue", + "darkorchid", + "crimson" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { + return true; + } + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return "[UnexpectedJSONParseError]: " + err.message; + } + }; + function formatArgs(args) { + var useColors2 = this.useColors; + args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports.humanize(this.diff); + if (!useColors2) + return; + var c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if (match === "%%") + return; + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + function log() { + return typeof console === "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function save(namespaces) { + try { + if (namespaces == null) { + exports.storage.removeItem("debug"); + } else { + exports.storage.debug = namespaces; + } + } catch (e) { + } + } + function load() { + var r; + try { + r = exports.storage.debug; + } catch (e) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + exports.enable(load()); + function localstorage() { + try { + return window.localStorage; + } catch (e) { + } + } + } +}); + +// node_modules/finalhandler/node_modules/debug/src/node.js +var require_node2 = __commonJS({ + "node_modules/finalhandler/node_modules/debug/src/node.js"(exports, module2) { + var tty = require("tty"); + var util = require("util"); + exports = module2.exports = require_debug2(); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.colors = [6, 2, 3, 4, 5, 1]; + exports.inspectOpts = Object.keys(process.env).filter(function(key) { + return /^debug_/i.test(key); + }).reduce(function(obj, key) { + var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function(_, k) { + return k.toUpperCase(); + }); + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) + val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) + val = false; + else if (val === "null") + val = null; + else + val = Number(val); + obj[prop] = val; + return obj; + }, {}); + var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + if (fd !== 1 && fd !== 2) { + util.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + } + var stream = fd === 1 ? process.stdout : fd === 2 ? process.stderr : createWritableStdioStream(fd); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(fd); + } + exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map(function(str) { + return str.trim(); + }).join(" "); + }; + exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + function formatArgs(args) { + var name = this.namespace; + var useColors2 = this.useColors; + if (useColors2) { + var c = this.color; + var prefix = " [3" + c + ";1m" + name + " "; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push("[3" + c + "m+" + exports.humanize(this.diff) + ""); + } else { + args[0] = new Date().toUTCString() + " " + name + " " + args[0]; + } + } + function log() { + return stream.write(util.format.apply(util, arguments) + "\n"); + } + function save(namespaces) { + if (namespaces == null) { + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } + } + function load() { + return process.env.DEBUG; + } + function createWritableStdioStream(fd2) { + var stream2; + var tty_wrap = process.binding("tty_wrap"); + switch (tty_wrap.guessHandleType(fd2)) { + case "TTY": + stream2 = new tty.WriteStream(fd2); + stream2._type = "tty"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + case "FILE": + var fs = require("fs"); + stream2 = new fs.SyncWriteStream(fd2, { autoClose: false }); + stream2._type = "fs"; + break; + case "PIPE": + case "TCP": + var net = require("net"); + stream2 = new net.Socket({ + fd: fd2, + readable: false, + writable: true + }); + stream2.readable = false; + stream2.read = null; + stream2._type = "pipe"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + stream2.fd = fd2; + stream2._isStdio = true; + return stream2; + } + function init(debug) { + debug.inspectOpts = {}; + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } + } + exports.enable(load()); + } +}); + +// node_modules/finalhandler/node_modules/debug/src/index.js +var require_src2 = __commonJS({ + "node_modules/finalhandler/node_modules/debug/src/index.js"(exports, module2) { + if (typeof process !== "undefined" && process.type === "renderer") { + module2.exports = require_browser2(); + } else { + module2.exports = require_node2(); + } + } +}); + +// node_modules/encodeurl/index.js +var require_encodeurl = __commonJS({ + "node_modules/encodeurl/index.js"(exports, module2) { + "use strict"; + module2.exports = encodeUrl; + var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; + var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; + var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; + function encodeUrl(url) { + return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI); + } + } +}); + +// node_modules/escape-html/index.js +var require_escape_html = __commonJS({ + "node_modules/escape-html/index.js"(exports, module2) { + "use strict"; + var matchHtmlRegExp = /["'&<>]/; + module2.exports = escapeHtml; + function escapeHtml(string) { + var str = "" + string; + var match = matchHtmlRegExp.exec(str); + if (!match) { + return str; + } + var escape2; + var html = ""; + var index = 0; + var lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escape2 = """; + break; + case 38: + escape2 = "&"; + break; + case 39: + escape2 = "'"; + break; + case 60: + escape2 = "<"; + break; + case 62: + escape2 = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + lastIndex = index + 1; + html += escape2; + } + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; + } + } +}); + +// node_modules/parseurl/index.js +var require_parseurl = __commonJS({ + "node_modules/parseurl/index.js"(exports, module2) { + "use strict"; + var url = require("url"); + var parse = url.parse; + var Url = url.Url; + module2.exports = parseurl; + module2.exports.original = originalurl; + function parseurl(req) { + var url2 = req.url; + if (url2 === void 0) { + return void 0; + } + var parsed = req._parsedUrl; + if (fresh(url2, parsed)) { + return parsed; + } + parsed = fastparse(url2); + parsed._raw = url2; + return req._parsedUrl = parsed; + } + function originalurl(req) { + var url2 = req.originalUrl; + if (typeof url2 !== "string") { + return parseurl(req); + } + var parsed = req._parsedOriginalUrl; + if (fresh(url2, parsed)) { + return parsed; + } + parsed = fastparse(url2); + parsed._raw = url2; + return req._parsedOriginalUrl = parsed; + } + function fastparse(str) { + if (typeof str !== "string" || str.charCodeAt(0) !== 47) { + return parse(str); + } + var pathname = str; + var query = null; + var search = null; + for (var i = 1; i < str.length; i++) { + switch (str.charCodeAt(i)) { + case 63: + if (search === null) { + pathname = str.substring(0, i); + query = str.substring(i + 1); + search = str.substring(i); + } + break; + case 9: + case 10: + case 12: + case 13: + case 32: + case 35: + case 160: + case 65279: + return parse(str); + } + } + var url2 = Url !== void 0 ? new Url() : {}; + url2.path = str; + url2.href = str; + url2.pathname = pathname; + if (search !== null) { + url2.query = query; + url2.search = search; + } + return url2; + } + function fresh(url2, parsedUrl) { + return typeof parsedUrl === "object" && parsedUrl !== null && (Url === void 0 || parsedUrl instanceof Url) && parsedUrl._raw === url2; + } + } +}); + +// node_modules/finalhandler/index.js +var require_finalhandler = __commonJS({ + "node_modules/finalhandler/index.js"(exports, module2) { + "use strict"; + var debug = require_src2()("finalhandler"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var onFinished = require_on_finished(); + var parseUrl = require_parseurl(); + var statuses = require_statuses(); + var unpipe = require_unpipe(); + var DOUBLE_SPACE_REGEXP = /\x20{2}/g; + var NEWLINE_REGEXP = /\n/g; + var defer = typeof setImmediate === "function" ? setImmediate : function(fn) { + process.nextTick(fn.bind.apply(fn, arguments)); + }; + var isFinished = onFinished.isFinished; + function createHtmlDocument(message) { + var body = escapeHtml(message).replace(NEWLINE_REGEXP, "
").replace(DOUBLE_SPACE_REGEXP, "  "); + return '\n\n\n\nError\n\n\n
' + body + "
\n\n\n"; + } + module2.exports = finalhandler; + function finalhandler(req, res, options) { + var opts = options || {}; + var env = opts.env || process.env.NODE_ENV || "development"; + var onerror = opts.onerror; + return function(err) { + var headers; + var msg; + var status; + if (!err && headersSent(res)) { + debug("cannot 404 after headers sent"); + return; + } + if (err) { + status = getErrorStatusCode(err); + if (status === void 0) { + status = getResponseStatusCode(res); + } else { + headers = getErrorHeaders(err); + } + msg = getErrorMessage(err, status, env); + } else { + status = 404; + msg = "Cannot " + req.method + " " + encodeUrl(getResourceName(req)); + } + debug("default %s", status); + if (err && onerror) { + defer(onerror, err, req, res); + } + if (headersSent(res)) { + debug("cannot %d after headers sent", status); + if (req.socket) { + req.socket.destroy(); + } + return; + } + send(req, res, status, headers, msg); + }; + } + function getErrorHeaders(err) { + if (!err.headers || typeof err.headers !== "object") { + return void 0; + } + var headers = Object.create(null); + var keys = Object.keys(err.headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + headers[key] = err.headers[key]; + } + return headers; + } + function getErrorMessage(err, status, env) { + var msg; + if (env !== "production") { + msg = err.stack; + if (!msg && typeof err.toString === "function") { + msg = err.toString(); + } + } + return msg || statuses.message[status]; + } + function getErrorStatusCode(err) { + if (typeof err.status === "number" && err.status >= 400 && err.status < 600) { + return err.status; + } + if (typeof err.statusCode === "number" && err.statusCode >= 400 && err.statusCode < 600) { + return err.statusCode; + } + return void 0; + } + function getResourceName(req) { + try { + return parseUrl.original(req).pathname; + } catch (e) { + return "resource"; + } + } + function getResponseStatusCode(res) { + var status = res.statusCode; + if (typeof status !== "number" || status < 400 || status > 599) { + status = 500; + } + return status; + } + function headersSent(res) { + return typeof res.headersSent !== "boolean" ? Boolean(res._header) : res.headersSent; + } + function send(req, res, status, headers, message) { + function write() { + var body = createHtmlDocument(message); + res.statusCode = status; + if (req.httpVersionMajor < 2) { + res.statusMessage = statuses.message[status]; + } + res.removeHeader("Content-Encoding"); + res.removeHeader("Content-Language"); + res.removeHeader("Content-Range"); + setHeaders(res, headers); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Content-Type", "text/html; charset=utf-8"); + res.setHeader("Content-Length", Buffer.byteLength(body, "utf8")); + if (req.method === "HEAD") { + res.end(); + return; + } + res.end(body, "utf8"); + } + if (isFinished(req)) { + write(); + return; + } + unpipe(req); + onFinished(req, write); + req.resume(); + } + function setHeaders(res, headers) { + if (!headers) { + return; + } + var keys = Object.keys(headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + res.setHeader(key, headers[key]); + } + } + } +}); + +// node_modules/express/node_modules/ms/index.js +var require_ms3 = __commonJS({ + "node_modules/express/node_modules/ms/index.js"(exports, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + "d"; + } + if (ms >= h) { + return Math.round(ms / h) + "h"; + } + if (ms >= m) { + return Math.round(ms / m) + "m"; + } + if (ms >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms"; + } + function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + " " + name; + } + return Math.ceil(ms / n) + " " + name + "s"; + } + } +}); + +// node_modules/express/node_modules/debug/src/debug.js +var require_debug3 = __commonJS({ + "node_modules/express/node_modules/debug/src/debug.js"(exports, module2) { + exports = module2.exports = createDebug.debug = createDebug["default"] = createDebug; + exports.coerce = coerce; + exports.disable = disable; + exports.enable = enable; + exports.enabled = enabled; + exports.humanize = require_ms3(); + exports.names = []; + exports.skips = []; + exports.formatters = {}; + var prevTime; + function selectColor(namespace) { + var hash = 0, i; + for (i in namespace) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return exports.colors[Math.abs(hash) % exports.colors.length]; + } + function createDebug(namespace) { + function debug() { + if (!debug.enabled) + return; + var self2 = debug; + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + args[0] = exports.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + if (match === "%%") + return match; + index++; + var formatter = exports.formatters[format]; + if (typeof formatter === "function") { + var val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + exports.formatArgs.call(self2, args); + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self2, args); + } + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + if (typeof exports.init === "function") { + exports.init(debug); + } + return debug; + } + function enable(namespaces) { + exports.save(namespaces); + exports.names = []; + exports.skips = []; + var split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); + var len = split.length; + for (var i = 0; i < len; i++) { + if (!split[i]) + continue; + namespaces = split[i].replace(/\*/g, ".*?"); + if (namespaces[0] === "-") { + exports.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); + } else { + exports.names.push(new RegExp("^" + namespaces + "$")); + } + } + } + function disable() { + exports.enable(""); + } + function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) + return val.stack || val.message; + return val; + } + } +}); + +// node_modules/express/node_modules/debug/src/browser.js +var require_browser3 = __commonJS({ + "node_modules/express/node_modules/debug/src/browser.js"(exports, module2) { + exports = module2.exports = require_debug3(); + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = typeof chrome != "undefined" && typeof chrome.storage != "undefined" ? chrome.storage.local : localstorage(); + exports.colors = [ + "lightseagreen", + "forestgreen", + "goldenrod", + "dodgerblue", + "darkorchid", + "crimson" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { + return true; + } + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return "[UnexpectedJSONParseError]: " + err.message; + } + }; + function formatArgs(args) { + var useColors2 = this.useColors; + args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports.humanize(this.diff); + if (!useColors2) + return; + var c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if (match === "%%") + return; + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + function log() { + return typeof console === "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function save(namespaces) { + try { + if (namespaces == null) { + exports.storage.removeItem("debug"); + } else { + exports.storage.debug = namespaces; + } + } catch (e) { + } + } + function load() { + var r; + try { + r = exports.storage.debug; + } catch (e) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + exports.enable(load()); + function localstorage() { + try { + return window.localStorage; + } catch (e) { + } + } + } +}); + +// node_modules/express/node_modules/debug/src/node.js +var require_node3 = __commonJS({ + "node_modules/express/node_modules/debug/src/node.js"(exports, module2) { + var tty = require("tty"); + var util = require("util"); + exports = module2.exports = require_debug3(); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.colors = [6, 2, 3, 4, 5, 1]; + exports.inspectOpts = Object.keys(process.env).filter(function(key) { + return /^debug_/i.test(key); + }).reduce(function(obj, key) { + var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function(_, k) { + return k.toUpperCase(); + }); + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) + val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) + val = false; + else if (val === "null") + val = null; + else + val = Number(val); + obj[prop] = val; + return obj; + }, {}); + var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + if (fd !== 1 && fd !== 2) { + util.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + } + var stream = fd === 1 ? process.stdout : fd === 2 ? process.stderr : createWritableStdioStream(fd); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(fd); + } + exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map(function(str) { + return str.trim(); + }).join(" "); + }; + exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + function formatArgs(args) { + var name = this.namespace; + var useColors2 = this.useColors; + if (useColors2) { + var c = this.color; + var prefix = " [3" + c + ";1m" + name + " "; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push("[3" + c + "m+" + exports.humanize(this.diff) + ""); + } else { + args[0] = new Date().toUTCString() + " " + name + " " + args[0]; + } + } + function log() { + return stream.write(util.format.apply(util, arguments) + "\n"); + } + function save(namespaces) { + if (namespaces == null) { + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } + } + function load() { + return process.env.DEBUG; + } + function createWritableStdioStream(fd2) { + var stream2; + var tty_wrap = process.binding("tty_wrap"); + switch (tty_wrap.guessHandleType(fd2)) { + case "TTY": + stream2 = new tty.WriteStream(fd2); + stream2._type = "tty"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + case "FILE": + var fs = require("fs"); + stream2 = new fs.SyncWriteStream(fd2, { autoClose: false }); + stream2._type = "fs"; + break; + case "PIPE": + case "TCP": + var net = require("net"); + stream2 = new net.Socket({ + fd: fd2, + readable: false, + writable: true + }); + stream2.readable = false; + stream2.read = null; + stream2._type = "pipe"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + stream2.fd = fd2; + stream2._isStdio = true; + return stream2; + } + function init(debug) { + debug.inspectOpts = {}; + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } + } + exports.enable(load()); + } +}); + +// node_modules/express/node_modules/debug/src/index.js +var require_src3 = __commonJS({ + "node_modules/express/node_modules/debug/src/index.js"(exports, module2) { + if (typeof process !== "undefined" && process.type === "renderer") { + module2.exports = require_browser3(); + } else { + module2.exports = require_node3(); + } + } +}); + +// node_modules/array-flatten/array-flatten.js +var require_array_flatten = __commonJS({ + "node_modules/array-flatten/array-flatten.js"(exports, module2) { + "use strict"; + module2.exports = arrayFlatten; + function flattenWithDepth(array, result, depth) { + for (var i = 0; i < array.length; i++) { + var value = array[i]; + if (depth > 0 && Array.isArray(value)) { + flattenWithDepth(value, result, depth - 1); + } else { + result.push(value); + } + } + return result; + } + function flattenForever(array, result) { + for (var i = 0; i < array.length; i++) { + var value = array[i]; + if (Array.isArray(value)) { + flattenForever(value, result); + } else { + result.push(value); + } + } + return result; + } + function arrayFlatten(array, depth) { + if (depth == null) { + return flattenForever(array, []); + } + return flattenWithDepth(array, [], depth); + } + } +}); + +// node_modules/path-to-regexp/index.js +var require_path_to_regexp = __commonJS({ + "node_modules/path-to-regexp/index.js"(exports, module2) { + module2.exports = pathToRegexp; + var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; + function pathToRegexp(path2, keys, options) { + options = options || {}; + keys = keys || []; + var strict = options.strict; + var end = options.end !== false; + var flags = options.sensitive ? "" : "i"; + var lookahead = options.lookahead !== false; + var extraOffset = 0; + var keysOffset = keys.length; + var i = 0; + var name = 0; + var pos = 0; + var backtrack = ""; + var m; + if (path2 instanceof RegExp) { + while (m = MATCHING_GROUP_REGEXP.exec(path2.source)) { + if (m[0][0] === "\\") + continue; + keys.push({ + name: m[1] || name++, + optional: false, + offset: m.index + }); + } + return path2; + } + if (Array.isArray(path2)) { + path2 = path2.map(function(value) { + return pathToRegexp(value, keys, options).source; + }); + return new RegExp(path2.join("|"), flags); + } + if (typeof path2 !== "string") { + throw new TypeError("path must be a string, array of strings, or regular expression"); + } + path2 = path2.replace(/\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, function(match, slash, format, key, capture, star, optional, offset) { + if (match[0] === "\\") { + backtrack += match; + pos += 2; + return match; + } + if (match === ".") { + backtrack += "\\."; + extraOffset += 1; + pos += 1; + return "\\."; + } + if (slash || format) { + backtrack = ""; + } else { + backtrack += path2.slice(pos, offset); + } + pos = offset + match.length; + if (match === "*") { + extraOffset += 3; + return "(.*)"; + } + if (match === "/(") { + backtrack += "/"; + extraOffset += 2; + return "/(?:"; + } + slash = slash || ""; + format = format ? "\\." : ""; + optional = optional || ""; + capture = capture ? capture.replace(/\\.|\*/, function(m2) { + return m2 === "*" ? "(.*)" : m2; + }) : backtrack ? "((?:(?!/|" + backtrack + ").)+?)" : "([^/" + format + "]+?)"; + keys.push({ + name: key, + optional: !!optional, + offset: offset + extraOffset + }); + var result = "(?:" + format + slash + capture + (star ? "((?:[/" + format + "].+?)?)" : "") + ")" + optional; + extraOffset += result.length - match.length; + return result; + }); + while (m = MATCHING_GROUP_REGEXP.exec(path2)) { + if (m[0][0] === "\\") + continue; + if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { + keys.splice(keysOffset + i, 0, { + name: name++, + optional: false, + offset: m.index + }); + } + i++; + } + path2 += strict ? "" : path2[path2.length - 1] === "/" ? "?" : "/?"; + if (end) { + path2 += "$"; + } else if (path2[path2.length - 1] !== "/") { + path2 += lookahead ? "(?=/|$)" : "(?:/|$)"; + } + return new RegExp("^" + path2, flags); + } + } +}); + +// node_modules/express/lib/router/layer.js +var require_layer = __commonJS({ + "node_modules/express/lib/router/layer.js"(exports, module2) { + "use strict"; + var pathRegexp = require_path_to_regexp(); + var debug = require_src3()("express:router:layer"); + var hasOwnProperty = Object.prototype.hasOwnProperty; + module2.exports = Layer; + function Layer(path2, options, fn) { + if (!(this instanceof Layer)) { + return new Layer(path2, options, fn); + } + debug("new %o", path2); + var opts = options || {}; + this.handle = fn; + this.name = fn.name || ""; + this.params = void 0; + this.path = void 0; + this.regexp = pathRegexp(path2, this.keys = [], opts); + this.regexp.fast_star = path2 === "*"; + this.regexp.fast_slash = path2 === "/" && opts.end === false; + } + Layer.prototype.handle_error = function handle_error(error, req, res, next) { + var fn = this.handle; + if (fn.length !== 4) { + return next(error); + } + try { + fn(error, req, res, next); + } catch (err) { + next(err); + } + }; + Layer.prototype.handle_request = function handle(req, res, next) { + var fn = this.handle; + if (fn.length > 3) { + return next(); + } + try { + fn(req, res, next); + } catch (err) { + next(err); + } + }; + Layer.prototype.match = function match(path2) { + var match2; + if (path2 != null) { + if (this.regexp.fast_slash) { + this.params = {}; + this.path = ""; + return true; + } + if (this.regexp.fast_star) { + this.params = { "0": decode_param(path2) }; + this.path = path2; + return true; + } + match2 = this.regexp.exec(path2); + } + if (!match2) { + this.params = void 0; + this.path = void 0; + return false; + } + this.params = {}; + this.path = match2[0]; + var keys = this.keys; + var params = this.params; + for (var i = 1; i < match2.length; i++) { + var key = keys[i - 1]; + var prop = key.name; + var val = decode_param(match2[i]); + if (val !== void 0 || !hasOwnProperty.call(params, prop)) { + params[prop] = val; + } + } + return true; + }; + function decode_param(val) { + if (typeof val !== "string" || val.length === 0) { + return val; + } + try { + return decodeURIComponent(val); + } catch (err) { + if (err instanceof URIError) { + err.message = "Failed to decode param '" + val + "'"; + err.status = err.statusCode = 400; + } + throw err; + } + } + } +}); + +// node_modules/methods/index.js +var require_methods = __commonJS({ + "node_modules/methods/index.js"(exports, module2) { + "use strict"; + var http3 = require("http"); + module2.exports = getCurrentNodeMethods() || getBasicNodeMethods(); + function getCurrentNodeMethods() { + return http3.METHODS && http3.METHODS.map(function lowerCaseMethod(method) { + return method.toLowerCase(); + }); + } + function getBasicNodeMethods() { + return [ + "get", + "post", + "put", + "head", + "delete", + "options", + "trace", + "copy", + "lock", + "mkcol", + "move", + "purge", + "propfind", + "proppatch", + "unlock", + "report", + "mkactivity", + "checkout", + "merge", + "m-search", + "notify", + "subscribe", + "unsubscribe", + "patch", + "search", + "connect" + ]; + } + } +}); + +// node_modules/express/lib/router/route.js +var require_route = __commonJS({ + "node_modules/express/lib/router/route.js"(exports, module2) { + "use strict"; + var debug = require_src3()("express:router:route"); + var flatten = require_array_flatten(); + var Layer = require_layer(); + var methods = require_methods(); + var slice = Array.prototype.slice; + var toString = Object.prototype.toString; + module2.exports = Route; + function Route(path2) { + this.path = path2; + this.stack = []; + debug("new %o", path2); + this.methods = {}; + } + Route.prototype._handles_method = function _handles_method(method) { + if (this.methods._all) { + return true; + } + var name = typeof method === "string" ? method.toLowerCase() : method; + if (name === "head" && !this.methods["head"]) { + name = "get"; + } + return Boolean(this.methods[name]); + }; + Route.prototype._options = function _options() { + var methods2 = Object.keys(this.methods); + if (this.methods.get && !this.methods.head) { + methods2.push("head"); + } + for (var i = 0; i < methods2.length; i++) { + methods2[i] = methods2[i].toUpperCase(); + } + return methods2; + }; + Route.prototype.dispatch = function dispatch(req, res, done) { + var idx = 0; + var stack = this.stack; + var sync = 0; + if (stack.length === 0) { + return done(); + } + var method = typeof req.method === "string" ? req.method.toLowerCase() : req.method; + if (method === "head" && !this.methods["head"]) { + method = "get"; + } + req.route = this; + next(); + function next(err) { + if (err && err === "route") { + return done(); + } + if (err && err === "router") { + return done(err); + } + if (++sync > 100) { + return setImmediate(next, err); + } + var layer = stack[idx++]; + if (!layer) { + return done(err); + } + if (layer.method && layer.method !== method) { + next(err); + } else if (err) { + layer.handle_error(err, req, res, next); + } else { + layer.handle_request(req, res, next); + } + sync = 0; + } + }; + Route.prototype.all = function all() { + var handles = flatten(slice.call(arguments)); + for (var i = 0; i < handles.length; i++) { + var handle = handles[i]; + if (typeof handle !== "function") { + var type = toString.call(handle); + var msg = "Route.all() requires a callback function but got a " + type; + throw new TypeError(msg); + } + var layer = Layer("/", {}, handle); + layer.method = void 0; + this.methods._all = true; + this.stack.push(layer); + } + return this; + }; + methods.forEach(function(method) { + Route.prototype[method] = function() { + var handles = flatten(slice.call(arguments)); + for (var i = 0; i < handles.length; i++) { + var handle = handles[i]; + if (typeof handle !== "function") { + var type = toString.call(handle); + var msg = "Route." + method + "() requires a callback function but got a " + type; + throw new Error(msg); + } + debug("%s %o", method, this.path); + var layer = Layer("/", {}, handle); + layer.method = method; + this.methods[method] = true; + this.stack.push(layer); + } + return this; + }; + }); + } +}); + +// node_modules/utils-merge/index.js +var require_utils_merge = __commonJS({ + "node_modules/utils-merge/index.js"(exports, module2) { + exports = module2.exports = function(a, b) { + if (a && b) { + for (var key in b) { + a[key] = b[key]; + } + } + return a; + }; + } +}); + +// node_modules/express/lib/router/index.js +var require_router = __commonJS({ + "node_modules/express/lib/router/index.js"(exports, module2) { + "use strict"; + var Route = require_route(); + var Layer = require_layer(); + var methods = require_methods(); + var mixin = require_utils_merge(); + var debug = require_src3()("express:router"); + var deprecate = require_depd()("express"); + var flatten = require_array_flatten(); + var parseUrl = require_parseurl(); + var setPrototypeOf = require_setprototypeof(); + var objectRegExp = /^\[object (\S+)\]$/; + var slice = Array.prototype.slice; + var toString = Object.prototype.toString; + var proto = module2.exports = function(options) { + var opts = options || {}; + function router(req, res, next) { + router.handle(req, res, next); + } + setPrototypeOf(router, proto); + router.params = {}; + router._params = []; + router.caseSensitive = opts.caseSensitive; + router.mergeParams = opts.mergeParams; + router.strict = opts.strict; + router.stack = []; + return router; + }; + proto.param = function param(name, fn) { + if (typeof name === "function") { + deprecate("router.param(fn): Refactor to use path params"); + this._params.push(name); + return; + } + var params = this._params; + var len = params.length; + var ret; + if (name[0] === ":") { + deprecate("router.param(" + JSON.stringify(name) + ", fn): Use router.param(" + JSON.stringify(name.slice(1)) + ", fn) instead"); + name = name.slice(1); + } + for (var i = 0; i < len; ++i) { + if (ret = params[i](name, fn)) { + fn = ret; + } + } + if (typeof fn !== "function") { + throw new Error("invalid param() call for " + name + ", got " + fn); + } + (this.params[name] = this.params[name] || []).push(fn); + return this; + }; + proto.handle = function handle(req, res, out) { + var self2 = this; + debug("dispatching %s %s", req.method, req.url); + var idx = 0; + var protohost = getProtohost(req.url) || ""; + var removed = ""; + var slashAdded = false; + var sync = 0; + var paramcalled = {}; + var options = []; + var stack = self2.stack; + var parentParams = req.params; + var parentUrl = req.baseUrl || ""; + var done = restore(out, req, "baseUrl", "next", "params"); + req.next = next; + if (req.method === "OPTIONS") { + done = wrap(done, function(old, err) { + if (err || options.length === 0) + return old(err); + sendOptionsResponse(res, options, old); + }); + } + req.baseUrl = parentUrl; + req.originalUrl = req.originalUrl || req.url; + next(); + function next(err) { + var layerError = err === "route" ? null : err; + if (slashAdded) { + req.url = req.url.slice(1); + slashAdded = false; + } + if (removed.length !== 0) { + req.baseUrl = parentUrl; + req.url = protohost + removed + req.url.slice(protohost.length); + removed = ""; + } + if (layerError === "router") { + setImmediate(done, null); + return; + } + if (idx >= stack.length) { + setImmediate(done, layerError); + return; + } + if (++sync > 100) { + return setImmediate(next, err); + } + var path2 = getPathname(req); + if (path2 == null) { + return done(layerError); + } + var layer; + var match; + var route; + while (match !== true && idx < stack.length) { + layer = stack[idx++]; + match = matchLayer(layer, path2); + route = layer.route; + if (typeof match !== "boolean") { + layerError = layerError || match; + } + if (match !== true) { + continue; + } + if (!route) { + continue; + } + if (layerError) { + match = false; + continue; + } + var method = req.method; + var has_method = route._handles_method(method); + if (!has_method && method === "OPTIONS") { + appendMethods(options, route._options()); + } + if (!has_method && method !== "HEAD") { + match = false; + } + } + if (match !== true) { + return done(layerError); + } + if (route) { + req.route = route; + } + req.params = self2.mergeParams ? mergeParams(layer.params, parentParams) : layer.params; + var layerPath = layer.path; + self2.process_params(layer, paramcalled, req, res, function(err2) { + if (err2) { + next(layerError || err2); + } else if (route) { + layer.handle_request(req, res, next); + } else { + trim_prefix(layer, layerError, layerPath, path2); + } + sync = 0; + }); + } + function trim_prefix(layer, layerError, layerPath, path2) { + if (layerPath.length !== 0) { + if (layerPath !== path2.slice(0, layerPath.length)) { + next(layerError); + return; + } + var c = path2[layerPath.length]; + if (c && c !== "/" && c !== ".") + return next(layerError); + debug("trim prefix (%s) from url %s", layerPath, req.url); + removed = layerPath; + req.url = protohost + req.url.slice(protohost.length + removed.length); + if (!protohost && req.url[0] !== "/") { + req.url = "/" + req.url; + slashAdded = true; + } + req.baseUrl = parentUrl + (removed[removed.length - 1] === "/" ? removed.substring(0, removed.length - 1) : removed); + } + debug("%s %s : %s", layer.name, layerPath, req.originalUrl); + if (layerError) { + layer.handle_error(layerError, req, res, next); + } else { + layer.handle_request(req, res, next); + } + } + }; + proto.process_params = function process_params(layer, called, req, res, done) { + var params = this.params; + var keys = layer.keys; + if (!keys || keys.length === 0) { + return done(); + } + var i = 0; + var name; + var paramIndex = 0; + var key; + var paramVal; + var paramCallbacks; + var paramCalled; + function param(err) { + if (err) { + return done(err); + } + if (i >= keys.length) { + return done(); + } + paramIndex = 0; + key = keys[i++]; + name = key.name; + paramVal = req.params[name]; + paramCallbacks = params[name]; + paramCalled = called[name]; + if (paramVal === void 0 || !paramCallbacks) { + return param(); + } + if (paramCalled && (paramCalled.match === paramVal || paramCalled.error && paramCalled.error !== "route")) { + req.params[name] = paramCalled.value; + return param(paramCalled.error); + } + called[name] = paramCalled = { + error: null, + match: paramVal, + value: paramVal + }; + paramCallback(); + } + function paramCallback(err) { + var fn = paramCallbacks[paramIndex++]; + paramCalled.value = req.params[key.name]; + if (err) { + paramCalled.error = err; + param(err); + return; + } + if (!fn) + return param(); + try { + fn(req, res, paramCallback, paramVal, key.name); + } catch (e) { + paramCallback(e); + } + } + param(); + }; + proto.use = function use(fn) { + var offset = 0; + var path2 = "/"; + if (typeof fn !== "function") { + var arg = fn; + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + if (typeof arg !== "function") { + offset = 1; + path2 = fn; + } + } + var callbacks = flatten(slice.call(arguments, offset)); + if (callbacks.length === 0) { + throw new TypeError("Router.use() requires a middleware function"); + } + for (var i = 0; i < callbacks.length; i++) { + var fn = callbacks[i]; + if (typeof fn !== "function") { + throw new TypeError("Router.use() requires a middleware function but got a " + gettype(fn)); + } + debug("use %o %s", path2, fn.name || ""); + var layer = new Layer(path2, { + sensitive: this.caseSensitive, + strict: false, + end: false + }, fn); + layer.route = void 0; + this.stack.push(layer); + } + return this; + }; + proto.route = function route(path2) { + var route2 = new Route(path2); + var layer = new Layer(path2, { + sensitive: this.caseSensitive, + strict: this.strict, + end: true + }, route2.dispatch.bind(route2)); + layer.route = route2; + this.stack.push(layer); + return route2; + }; + methods.concat("all").forEach(function(method) { + proto[method] = function(path2) { + var route = this.route(path2); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; + }); + function appendMethods(list, addition) { + for (var i = 0; i < addition.length; i++) { + var method = addition[i]; + if (list.indexOf(method) === -1) { + list.push(method); + } + } + } + function getPathname(req) { + try { + return parseUrl(req).pathname; + } catch (err) { + return void 0; + } + } + function getProtohost(url) { + if (typeof url !== "string" || url.length === 0 || url[0] === "/") { + return void 0; + } + var searchIndex = url.indexOf("?"); + var pathLength = searchIndex !== -1 ? searchIndex : url.length; + var fqdnIndex = url.slice(0, pathLength).indexOf("://"); + return fqdnIndex !== -1 ? url.substring(0, url.indexOf("/", 3 + fqdnIndex)) : void 0; + } + function gettype(obj) { + var type = typeof obj; + if (type !== "object") { + return type; + } + return toString.call(obj).replace(objectRegExp, "$1"); + } + function matchLayer(layer, path2) { + try { + return layer.match(path2); + } catch (err) { + return err; + } + } + function mergeParams(params, parent) { + if (typeof parent !== "object" || !parent) { + return params; + } + var obj = mixin({}, parent); + if (!(0 in params) || !(0 in parent)) { + return mixin(obj, params); + } + var i = 0; + var o = 0; + while (i in params) { + i++; + } + while (o in parent) { + o++; + } + for (i--; i >= 0; i--) { + params[i + o] = params[i]; + if (i < o) { + delete params[i]; + } + } + return mixin(obj, params); + } + function restore(fn, obj) { + var props = new Array(arguments.length - 2); + var vals = new Array(arguments.length - 2); + for (var i = 0; i < props.length; i++) { + props[i] = arguments[i + 2]; + vals[i] = obj[props[i]]; + } + return function() { + for (var i2 = 0; i2 < props.length; i2++) { + obj[props[i2]] = vals[i2]; + } + return fn.apply(this, arguments); + }; + } + function sendOptionsResponse(res, options, next) { + try { + var body = options.join(","); + res.set("Allow", body); + res.send(body); + } catch (err) { + next(err); + } + } + function wrap(old, fn) { + return function proxy() { + var args = new Array(arguments.length + 1); + args[0] = old; + for (var i = 0, len = arguments.length; i < len; i++) { + args[i + 1] = arguments[i]; + } + fn.apply(this, args); + }; + } + } +}); + +// node_modules/express/lib/middleware/init.js +var require_init = __commonJS({ + "node_modules/express/lib/middleware/init.js"(exports) { + "use strict"; + var setPrototypeOf = require_setprototypeof(); + exports.init = function(app) { + return function expressInit(req, res, next) { + if (app.enabled("x-powered-by")) + res.setHeader("X-Powered-By", "Express"); + req.res = res; + res.req = req; + req.next = next; + setPrototypeOf(req, app.request); + setPrototypeOf(res, app.response); + res.locals = res.locals || Object.create(null); + next(); + }; + }; + } +}); + +// node_modules/express/lib/middleware/query.js +var require_query = __commonJS({ + "node_modules/express/lib/middleware/query.js"(exports, module2) { + "use strict"; + var merge = require_utils_merge(); + var parseUrl = require_parseurl(); + var qs = require_lib4(); + module2.exports = function query(options) { + var opts = merge({}, options); + var queryparse = qs.parse; + if (typeof options === "function") { + queryparse = options; + opts = void 0; + } + if (opts !== void 0 && opts.allowPrototypes === void 0) { + opts.allowPrototypes = true; + } + return function query2(req, res, next) { + if (!req.query) { + var val = parseUrl(req).query; + req.query = queryparse(val, opts); + } + next(); + }; + }; + } +}); + +// node_modules/express/lib/view.js +var require_view = __commonJS({ + "node_modules/express/lib/view.js"(exports, module2) { + "use strict"; + var debug = require_src3()("express:view"); + var path2 = require("path"); + var fs = require("fs"); + var dirname = path2.dirname; + var basename = path2.basename; + var extname = path2.extname; + var join = path2.join; + var resolve = path2.resolve; + module2.exports = View; + function View(name, options) { + var opts = options || {}; + this.defaultEngine = opts.defaultEngine; + this.ext = extname(name); + this.name = name; + this.root = opts.root; + if (!this.ext && !this.defaultEngine) { + throw new Error("No default engine was specified and no extension was provided."); + } + var fileName = name; + if (!this.ext) { + this.ext = this.defaultEngine[0] !== "." ? "." + this.defaultEngine : this.defaultEngine; + fileName += this.ext; + } + if (!opts.engines[this.ext]) { + var mod = this.ext.slice(1); + debug('require "%s"', mod); + var fn = require(mod).__express; + if (typeof fn !== "function") { + throw new Error('Module "' + mod + '" does not provide a view engine.'); + } + opts.engines[this.ext] = fn; + } + this.engine = opts.engines[this.ext]; + this.path = this.lookup(fileName); + } + View.prototype.lookup = function lookup(name) { + var path3; + var roots = [].concat(this.root); + debug('lookup "%s"', name); + for (var i = 0; i < roots.length && !path3; i++) { + var root = roots[i]; + var loc = resolve(root, name); + var dir = dirname(loc); + var file = basename(loc); + path3 = this.resolve(dir, file); + } + return path3; + }; + View.prototype.render = function render(options, callback) { + debug('render "%s"', this.path); + this.engine(this.path, options, callback); + }; + View.prototype.resolve = function resolve2(dir, file) { + var ext = this.ext; + var path3 = join(dir, file); + var stat = tryStat(path3); + if (stat && stat.isFile()) { + return path3; + } + path3 = join(dir, basename(file, ext), "index" + ext); + stat = tryStat(path3); + if (stat && stat.isFile()) { + return path3; + } + }; + function tryStat(path3) { + debug('stat "%s"', path3); + try { + return fs.statSync(path3); + } catch (e) { + return void 0; + } + } + } +}); + +// node_modules/safe-buffer/index.js +var require_safe_buffer = __commonJS({ + "node_modules/safe-buffer/index.js"(exports, module2) { + var buffer = require("buffer"); + var Buffer2 = buffer.Buffer; + function copyProps(src, dst) { + for (var key in src) { + dst[key] = src[key]; + } + } + if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) { + module2.exports = buffer; + } else { + copyProps(buffer, exports); + exports.Buffer = SafeBuffer; + } + function SafeBuffer(arg, encodingOrOffset, length) { + return Buffer2(arg, encodingOrOffset, length); + } + SafeBuffer.prototype = Object.create(Buffer2.prototype); + copyProps(Buffer2, SafeBuffer); + SafeBuffer.from = function(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + throw new TypeError("Argument must not be a number"); + } + return Buffer2(arg, encodingOrOffset, length); + }; + SafeBuffer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + var buf = Buffer2(size); + if (fill !== void 0) { + if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf; + }; + SafeBuffer.allocUnsafe = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return Buffer2(size); + }; + SafeBuffer.allocUnsafeSlow = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return buffer.SlowBuffer(size); + }; + } +}); + +// node_modules/content-disposition/index.js +var require_content_disposition = __commonJS({ + "node_modules/content-disposition/index.js"(exports, module2) { + "use strict"; + module2.exports = contentDisposition; + module2.exports.parse = parse; + var basename = require("path").basename; + var Buffer2 = require_safe_buffer().Buffer; + var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g; + var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/; + var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g; + var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g; + var QESC_REGEXP = /\\([\u0000-\u007f])/g; + var QUOTE_REGEXP = /([\\"])/g; + var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g; + var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/; + var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/; + var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/; + var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/; + function contentDisposition(filename, options) { + var opts = options || {}; + var type = opts.type || "attachment"; + var params = createparams(filename, opts.fallback); + return format(new ContentDisposition(type, params)); + } + function createparams(filename, fallback) { + if (filename === void 0) { + return; + } + var params = {}; + if (typeof filename !== "string") { + throw new TypeError("filename must be a string"); + } + if (fallback === void 0) { + fallback = true; + } + if (typeof fallback !== "string" && typeof fallback !== "boolean") { + throw new TypeError("fallback must be a string or boolean"); + } + if (typeof fallback === "string" && NON_LATIN1_REGEXP.test(fallback)) { + throw new TypeError("fallback must be ISO-8859-1 string"); + } + var name = basename(filename); + var isQuotedString = TEXT_REGEXP.test(name); + var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name) : basename(fallback); + var hasFallback = typeof fallbackName === "string" && fallbackName !== name; + if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) { + params["filename*"] = name; + } + if (isQuotedString || hasFallback) { + params.filename = hasFallback ? fallbackName : name; + } + return params; + } + function format(obj) { + var parameters = obj.parameters; + var type = obj.type; + if (!type || typeof type !== "string" || !TOKEN_REGEXP.test(type)) { + throw new TypeError("invalid type"); + } + var string = String(type).toLowerCase(); + if (parameters && typeof parameters === "object") { + var param; + var params = Object.keys(parameters).sort(); + for (var i = 0; i < params.length; i++) { + param = params[i]; + var val = param.substr(-1) === "*" ? ustring(parameters[param]) : qstring(parameters[param]); + string += "; " + param + "=" + val; + } + } + return string; + } + function decodefield(str) { + var match = EXT_VALUE_REGEXP.exec(str); + if (!match) { + throw new TypeError("invalid extended field value"); + } + var charset = match[1].toLowerCase(); + var encoded = match[2]; + var value; + var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode); + switch (charset) { + case "iso-8859-1": + value = getlatin1(binary); + break; + case "utf-8": + value = Buffer2.from(binary, "binary").toString("utf8"); + break; + default: + throw new TypeError("unsupported charset in extended field"); + } + return value; + } + function getlatin1(val) { + return String(val).replace(NON_LATIN1_REGEXP, "?"); + } + function parse(string) { + if (!string || typeof string !== "string") { + throw new TypeError("argument string is required"); + } + var match = DISPOSITION_TYPE_REGEXP.exec(string); + if (!match) { + throw new TypeError("invalid type format"); + } + var index = match[0].length; + var type = match[1].toLowerCase(); + var key; + var names = []; + var params = {}; + var value; + index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ";" ? index - 1 : index; + while (match = PARAM_REGEXP.exec(string)) { + if (match.index !== index) { + throw new TypeError("invalid parameter format"); + } + index += match[0].length; + key = match[1].toLowerCase(); + value = match[2]; + if (names.indexOf(key) !== -1) { + throw new TypeError("invalid duplicate parameter"); + } + names.push(key); + if (key.indexOf("*") + 1 === key.length) { + key = key.slice(0, -1); + value = decodefield(value); + params[key] = value; + continue; + } + if (typeof params[key] === "string") { + continue; + } + if (value[0] === '"') { + value = value.substr(1, value.length - 2).replace(QESC_REGEXP, "$1"); + } + params[key] = value; + } + if (index !== -1 && index !== string.length) { + throw new TypeError("invalid parameter format"); + } + return new ContentDisposition(type, params); + } + function pdecode(str, hex) { + return String.fromCharCode(parseInt(hex, 16)); + } + function pencode(char) { + return "%" + String(char).charCodeAt(0).toString(16).toUpperCase(); + } + function qstring(val) { + var str = String(val); + return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; + } + function ustring(val) { + var str = String(val); + var encoded = encodeURIComponent(str).replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode); + return "UTF-8''" + encoded; + } + function ContentDisposition(type, parameters) { + this.type = type; + this.parameters = parameters; + } + } +}); + +// node_modules/send/node_modules/debug/node_modules/ms/index.js +var require_ms4 = __commonJS({ + "node_modules/send/node_modules/debug/node_modules/ms/index.js"(exports, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + "d"; + } + if (ms >= h) { + return Math.round(ms / h) + "h"; + } + if (ms >= m) { + return Math.round(ms / m) + "m"; + } + if (ms >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms"; + } + function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + " " + name; + } + return Math.ceil(ms / n) + " " + name + "s"; + } + } +}); + +// node_modules/send/node_modules/debug/src/debug.js +var require_debug4 = __commonJS({ + "node_modules/send/node_modules/debug/src/debug.js"(exports, module2) { + exports = module2.exports = createDebug.debug = createDebug["default"] = createDebug; + exports.coerce = coerce; + exports.disable = disable; + exports.enable = enable; + exports.enabled = enabled; + exports.humanize = require_ms4(); + exports.names = []; + exports.skips = []; + exports.formatters = {}; + var prevTime; + function selectColor(namespace) { + var hash = 0, i; + for (i in namespace) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return exports.colors[Math.abs(hash) % exports.colors.length]; + } + function createDebug(namespace) { + function debug() { + if (!debug.enabled) + return; + var self2 = debug; + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + args[0] = exports.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + if (match === "%%") + return match; + index++; + var formatter = exports.formatters[format]; + if (typeof formatter === "function") { + var val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + exports.formatArgs.call(self2, args); + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self2, args); + } + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + if (typeof exports.init === "function") { + exports.init(debug); + } + return debug; + } + function enable(namespaces) { + exports.save(namespaces); + exports.names = []; + exports.skips = []; + var split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); + var len = split.length; + for (var i = 0; i < len; i++) { + if (!split[i]) + continue; + namespaces = split[i].replace(/\*/g, ".*?"); + if (namespaces[0] === "-") { + exports.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); + } else { + exports.names.push(new RegExp("^" + namespaces + "$")); + } + } + } + function disable() { + exports.enable(""); + } + function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) + return val.stack || val.message; + return val; + } + } +}); + +// node_modules/send/node_modules/debug/src/browser.js +var require_browser4 = __commonJS({ + "node_modules/send/node_modules/debug/src/browser.js"(exports, module2) { + exports = module2.exports = require_debug4(); + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.storage = typeof chrome != "undefined" && typeof chrome.storage != "undefined" ? chrome.storage.local : localstorage(); + exports.colors = [ + "lightseagreen", + "forestgreen", + "goldenrod", + "dodgerblue", + "darkorchid", + "crimson" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { + return true; + } + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return "[UnexpectedJSONParseError]: " + err.message; + } + }; + function formatArgs(args) { + var useColors2 = this.useColors; + args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports.humanize(this.diff); + if (!useColors2) + return; + var c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if (match === "%%") + return; + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + function log() { + return typeof console === "object" && console.log && Function.prototype.apply.call(console.log, console, arguments); + } + function save(namespaces) { + try { + if (namespaces == null) { + exports.storage.removeItem("debug"); + } else { + exports.storage.debug = namespaces; + } + } catch (e) { + } + } + function load() { + var r; + try { + r = exports.storage.debug; + } catch (e) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + exports.enable(load()); + function localstorage() { + try { + return window.localStorage; + } catch (e) { + } + } + } +}); + +// node_modules/send/node_modules/debug/src/node.js +var require_node4 = __commonJS({ + "node_modules/send/node_modules/debug/src/node.js"(exports, module2) { + var tty = require("tty"); + var util = require("util"); + exports = module2.exports = require_debug4(); + exports.init = init; + exports.log = log; + exports.formatArgs = formatArgs; + exports.save = save; + exports.load = load; + exports.useColors = useColors; + exports.colors = [6, 2, 3, 4, 5, 1]; + exports.inspectOpts = Object.keys(process.env).filter(function(key) { + return /^debug_/i.test(key); + }).reduce(function(obj, key) { + var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function(_, k) { + return k.toUpperCase(); + }); + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) + val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) + val = false; + else if (val === "null") + val = null; + else + val = Number(val); + obj[prop] = val; + return obj; + }, {}); + var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + if (fd !== 1 && fd !== 2) { + util.deprecate(function() { + }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); + } + var stream = fd === 1 ? process.stdout : fd === 2 ? process.stderr : createWritableStdioStream(fd); + function useColors() { + return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(fd); + } + exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map(function(str) { + return str.trim(); + }).join(" "); + }; + exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + function formatArgs(args) { + var name = this.namespace; + var useColors2 = this.useColors; + if (useColors2) { + var c = this.color; + var prefix = " [3" + c + ";1m" + name + " "; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push("[3" + c + "m+" + exports.humanize(this.diff) + ""); + } else { + args[0] = new Date().toUTCString() + " " + name + " " + args[0]; + } + } + function log() { + return stream.write(util.format.apply(util, arguments) + "\n"); + } + function save(namespaces) { + if (namespaces == null) { + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } + } + function load() { + return process.env.DEBUG; + } + function createWritableStdioStream(fd2) { + var stream2; + var tty_wrap = process.binding("tty_wrap"); + switch (tty_wrap.guessHandleType(fd2)) { + case "TTY": + stream2 = new tty.WriteStream(fd2); + stream2._type = "tty"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + case "FILE": + var fs = require("fs"); + stream2 = new fs.SyncWriteStream(fd2, { autoClose: false }); + stream2._type = "fs"; + break; + case "PIPE": + case "TCP": + var net = require("net"); + stream2 = new net.Socket({ + fd: fd2, + readable: false, + writable: true + }); + stream2.readable = false; + stream2.read = null; + stream2._type = "pipe"; + if (stream2._handle && stream2._handle.unref) { + stream2._handle.unref(); + } + break; + default: + throw new Error("Implement me. Unknown stream file type!"); + } + stream2.fd = fd2; + stream2._isStdio = true; + return stream2; + } + function init(debug) { + debug.inspectOpts = {}; + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } + } + exports.enable(load()); + } +}); + +// node_modules/send/node_modules/debug/src/index.js +var require_src4 = __commonJS({ + "node_modules/send/node_modules/debug/src/index.js"(exports, module2) { + if (typeof process !== "undefined" && process.type === "renderer") { + module2.exports = require_browser4(); + } else { + module2.exports = require_node4(); + } + } +}); + +// node_modules/send/node_modules/encodeurl/index.js +var require_encodeurl2 = __commonJS({ + "node_modules/send/node_modules/encodeurl/index.js"(exports, module2) { + "use strict"; + module2.exports = encodeUrl; + var ENCODE_CHARS_REGEXP = /(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; + var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; + var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; + function encodeUrl(url) { + return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI); + } + } +}); + +// node_modules/etag/index.js +var require_etag = __commonJS({ + "node_modules/etag/index.js"(exports, module2) { + "use strict"; + module2.exports = etag; + var crypto = require("crypto"); + var Stats = require("fs").Stats; + var toString = Object.prototype.toString; + function entitytag(entity) { + if (entity.length === 0) { + return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"'; + } + var hash = crypto.createHash("sha1").update(entity, "utf8").digest("base64").substring(0, 27); + var len = typeof entity === "string" ? Buffer.byteLength(entity, "utf8") : entity.length; + return '"' + len.toString(16) + "-" + hash + '"'; + } + function etag(entity, options) { + if (entity == null) { + throw new TypeError("argument entity is required"); + } + var isStats = isstats(entity); + var weak = options && typeof options.weak === "boolean" ? options.weak : isStats; + if (!isStats && typeof entity !== "string" && !Buffer.isBuffer(entity)) { + throw new TypeError("argument entity must be string, Buffer, or fs.Stats"); + } + var tag = isStats ? stattag(entity) : entitytag(entity); + return weak ? "W/" + tag : tag; + } + function isstats(obj) { + if (typeof Stats === "function" && obj instanceof Stats) { + return true; + } + return obj && typeof obj === "object" && "ctime" in obj && toString.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number"; + } + function stattag(stat) { + var mtime = stat.mtime.getTime().toString(16); + var size = stat.size.toString(16); + return '"' + size + "-" + mtime + '"'; + } + } +}); + +// node_modules/fresh/index.js +var require_fresh = __commonJS({ + "node_modules/fresh/index.js"(exports, module2) { + "use strict"; + var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/; + module2.exports = fresh; + function fresh(reqHeaders, resHeaders) { + var modifiedSince = reqHeaders["if-modified-since"]; + var noneMatch = reqHeaders["if-none-match"]; + if (!modifiedSince && !noneMatch) { + return false; + } + var cacheControl = reqHeaders["cache-control"]; + if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) { + return false; + } + if (noneMatch && noneMatch !== "*") { + var etag = resHeaders["etag"]; + if (!etag) { + return false; + } + var etagStale = true; + var matches = parseTokenList(noneMatch); + for (var i = 0; i < matches.length; i++) { + var match = matches[i]; + if (match === etag || match === "W/" + etag || "W/" + match === etag) { + etagStale = false; + break; + } + } + if (etagStale) { + return false; + } + } + if (modifiedSince) { + var lastModified = resHeaders["last-modified"]; + var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince)); + if (modifiedStale) { + return false; + } + } + return true; + } + function parseHttpDate(date) { + var timestamp = date && Date.parse(date); + return typeof timestamp === "number" ? timestamp : NaN; + } + function parseTokenList(str) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(str.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(str.substring(start, end)); + return list; + } + } +}); + +// node_modules/mime/types.json +var require_types = __commonJS({ + "node_modules/mime/types.json"(exports, module2) { + module2.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomsvc+xml": ["atomsvc"], "application/bdoc": ["bdoc"], "application/ccxml+xml": ["ccxml"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["ecma"], "application/emma+xml": ["emma"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/font-tdpfr": ["pfr"], "application/font-woff": [], "application/font-woff2": [], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/prs.cww": ["cww"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": [], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": [], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": [], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": [], "application/x-msdownload": ["com", "bat"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["wmf", "emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": [], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "application/xaml+xml": ["xaml"], "application/xcap-diff+xml": ["xdf"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": [], "audio/adpcm": ["adp"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mp3": [], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/wav": ["wav"], "audio/wave": [], "audio/webm": ["weba"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": [], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": [], "audio/x-wav": [], "audio/xm": ["xm"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/apng": ["apng"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/ief": ["ief"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/ktx": ["ktx"], "image/png": ["png"], "image/prs.btif": ["btif"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/tiff": ["tiff", "tif"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": [], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/webp": ["webp"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": [], "image/x-pcx": ["pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/rfc822": ["eml", "mime"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.vtu": ["vtu"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["x3db", "x3dbz"], "model/x3d+vrml": ["x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/hjson": ["hjson"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/prs.lines.tag": ["dsc"], "text/richtext": ["rtx"], "text/rtf": [], "text/sgml": ["sgml", "sgm"], "text/slim": ["slim", "slm"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/vtt": ["vtt"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": [], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "text/xml": [], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/jpeg": ["jpgv"], "video/jpm": ["jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/webm": ["webm"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] }; + } +}); + +// node_modules/mime/mime.js +var require_mime = __commonJS({ + "node_modules/mime/mime.js"(exports, module2) { + var path2 = require("path"); + var fs = require("fs"); + function Mime() { + this.types = Object.create(null); + this.extensions = Object.create(null); + } + Mime.prototype.define = function(map) { + for (var type in map) { + var exts = map[type]; + for (var i = 0; i < exts.length; i++) { + if (process.env.DEBUG_MIME && this.types[exts[i]]) { + console.warn((this._loading || "define()").replace(/.*\//, ""), 'changes "' + exts[i] + '" extension type from ' + this.types[exts[i]] + " to " + type); + } + this.types[exts[i]] = type; + } + if (!this.extensions[type]) { + this.extensions[type] = exts[0]; + } + } + }; + Mime.prototype.load = function(file) { + this._loading = file; + var map = {}, content = fs.readFileSync(file, "ascii"), lines = content.split(/[\r\n]+/); + lines.forEach(function(line) { + var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/); + map[fields.shift()] = fields; + }); + this.define(map); + this._loading = null; + }; + Mime.prototype.lookup = function(path3, fallback) { + var ext = path3.replace(/^.*[\.\/\\]/, "").toLowerCase(); + return this.types[ext] || fallback || this.default_type; + }; + Mime.prototype.extension = function(mimeType) { + var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); + return this.extensions[type]; + }; + var mime2 = new Mime(); + mime2.define(require_types()); + mime2.default_type = mime2.lookup("bin"); + mime2.Mime = Mime; + mime2.charsets = { + lookup: function(mimeType, fallback) { + return /^text\/|^application\/(javascript|json)/.test(mimeType) ? "UTF-8" : fallback; + } + }; + module2.exports = mime2; + } +}); + +// node_modules/ms/index.js +var require_ms5 = __commonJS({ + "node_modules/ms/index.js"(exports, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val)); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); + } + } +}); + +// node_modules/range-parser/index.js +var require_range_parser = __commonJS({ + "node_modules/range-parser/index.js"(exports, module2) { + "use strict"; + module2.exports = rangeParser; + function rangeParser(size, str, options) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var index = str.indexOf("="); + if (index === -1) { + return -2; + } + var arr = str.slice(index + 1).split(","); + var ranges = []; + ranges.type = str.slice(0, index); + for (var i = 0; i < arr.length; i++) { + var range = arr[i].split("-"); + var start = parseInt(range[0], 10); + var end = parseInt(range[1], 10); + if (isNaN(start)) { + start = size - end; + end = size - 1; + } else if (isNaN(end)) { + end = size - 1; + } + if (end > size - 1) { + end = size - 1; + } + if (isNaN(start) || isNaN(end) || start > end || start < 0) { + continue; + } + ranges.push({ + start, + end + }); + } + if (ranges.length < 1) { + return -1; + } + return options && options.combine ? combineRanges(ranges) : ranges; + } + function combineRanges(ranges) { + var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart); + for (var j = 0, i = 1; i < ordered.length; i++) { + var range = ordered[i]; + var current = ordered[j]; + if (range.start > current.end + 1) { + ordered[++j] = range; + } else if (range.end > current.end) { + current.end = range.end; + current.index = Math.min(current.index, range.index); + } + } + ordered.length = j + 1; + var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex); + combined.type = ranges.type; + return combined; + } + function mapWithIndex(range, index) { + return { + start: range.start, + end: range.end, + index + }; + } + function mapWithoutIndex(range) { + return { + start: range.start, + end: range.end + }; + } + function sortByRangeIndex(a, b) { + return a.index - b.index; + } + function sortByRangeStart(a, b) { + return a.start - b.start; + } + } +}); + +// node_modules/send/index.js +var require_send = __commonJS({ + "node_modules/send/index.js"(exports, module2) { + "use strict"; + var createError = require_http_errors(); + var debug = require_src4()("send"); + var deprecate = require_depd()("send"); + var destroy = require_destroy(); + var encodeUrl = require_encodeurl2(); + var escapeHtml = require_escape_html(); + var etag = require_etag(); + var fresh = require_fresh(); + var fs = require("fs"); + var mime2 = require_mime(); + var ms = require_ms5(); + var onFinished = require_on_finished(); + var parseRange = require_range_parser(); + var path2 = require("path"); + var statuses = require_statuses(); + var Stream = require("stream"); + var util = require("util"); + var extname = path2.extname; + var join = path2.join; + var normalize = path2.normalize; + var resolve = path2.resolve; + var sep = path2.sep; + var BYTES_RANGE_REGEXP = /^ *bytes=/; + var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3; + var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; + module2.exports = send; + module2.exports.mime = mime2; + function send(req, path3, options) { + return new SendStream(req, path3, options); + } + function SendStream(req, path3, options) { + Stream.call(this); + var opts = options || {}; + this.options = opts; + this.path = path3; + this.req = req; + this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true; + this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true; + this._etag = opts.etag !== void 0 ? Boolean(opts.etag) : true; + this._dotfiles = opts.dotfiles !== void 0 ? opts.dotfiles : "ignore"; + if (this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") { + throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"'); + } + this._hidden = Boolean(opts.hidden); + if (opts.hidden !== void 0) { + deprecate("hidden: use dotfiles: '" + (this._hidden ? "allow" : "ignore") + "' instead"); + } + if (opts.dotfiles === void 0) { + this._dotfiles = void 0; + } + this._extensions = opts.extensions !== void 0 ? normalizeList(opts.extensions, "extensions option") : []; + this._immutable = opts.immutable !== void 0 ? Boolean(opts.immutable) : false; + this._index = opts.index !== void 0 ? normalizeList(opts.index, "index option") : ["index.html"]; + this._lastModified = opts.lastModified !== void 0 ? Boolean(opts.lastModified) : true; + this._maxage = opts.maxAge || opts.maxage; + this._maxage = typeof this._maxage === "string" ? ms(this._maxage) : Number(this._maxage); + this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0; + this._root = opts.root ? resolve(opts.root) : null; + if (!this._root && opts.from) { + this.from(opts.from); + } + } + util.inherits(SendStream, Stream); + SendStream.prototype.etag = deprecate.function(function etag2(val) { + this._etag = Boolean(val); + debug("etag %s", this._etag); + return this; + }, "send.etag: pass etag as option"); + SendStream.prototype.hidden = deprecate.function(function hidden(val) { + this._hidden = Boolean(val); + this._dotfiles = void 0; + debug("hidden %s", this._hidden); + return this; + }, "send.hidden: use dotfiles option"); + SendStream.prototype.index = deprecate.function(function index(paths) { + var index2 = !paths ? [] : normalizeList(paths, "paths argument"); + debug("index %o", paths); + this._index = index2; + return this; + }, "send.index: pass index as option"); + SendStream.prototype.root = function root(path3) { + this._root = resolve(String(path3)); + debug("root %s", this._root); + return this; + }; + SendStream.prototype.from = deprecate.function(SendStream.prototype.root, "send.from: pass root as option"); + SendStream.prototype.root = deprecate.function(SendStream.prototype.root, "send.root: pass root as option"); + SendStream.prototype.maxage = deprecate.function(function maxage(maxAge) { + this._maxage = typeof maxAge === "string" ? ms(maxAge) : Number(maxAge); + this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0; + debug("max-age %d", this._maxage); + return this; + }, "send.maxage: pass maxAge as option"); + SendStream.prototype.error = function error(status, err) { + if (hasListeners(this, "error")) { + return this.emit("error", createHttpError(status, err)); + } + var res = this.res; + var msg = statuses.message[status] || String(status); + var doc = createHtmlDocument("Error", escapeHtml(msg)); + clearHeaders(res); + if (err && err.headers) { + setHeaders(res, err.headers); + } + res.statusCode = status; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.end(doc); + }; + SendStream.prototype.hasTrailingSlash = function hasTrailingSlash() { + return this.path[this.path.length - 1] === "/"; + }; + SendStream.prototype.isConditionalGET = function isConditionalGET() { + return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"]; + }; + SendStream.prototype.isPreconditionFailure = function isPreconditionFailure() { + var req = this.req; + var res = this.res; + var match = req.headers["if-match"]; + if (match) { + var etag2 = res.getHeader("ETag"); + return !etag2 || match !== "*" && parseTokenList(match).every(function(match2) { + return match2 !== etag2 && match2 !== "W/" + etag2 && "W/" + match2 !== etag2; + }); + } + var unmodifiedSince = parseHttpDate(req.headers["if-unmodified-since"]); + if (!isNaN(unmodifiedSince)) { + var lastModified = parseHttpDate(res.getHeader("Last-Modified")); + return isNaN(lastModified) || lastModified > unmodifiedSince; + } + return false; + }; + SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields() { + var res = this.res; + res.removeHeader("Content-Encoding"); + res.removeHeader("Content-Language"); + res.removeHeader("Content-Length"); + res.removeHeader("Content-Range"); + res.removeHeader("Content-Type"); + }; + SendStream.prototype.notModified = function notModified() { + var res = this.res; + debug("not modified"); + this.removeContentHeaderFields(); + res.statusCode = 304; + res.end(); + }; + SendStream.prototype.headersAlreadySent = function headersAlreadySent() { + var err = new Error("Can't set headers after they are sent."); + debug("headers already sent"); + this.error(500, err); + }; + SendStream.prototype.isCachable = function isCachable() { + var statusCode = this.res.statusCode; + return statusCode >= 200 && statusCode < 300 || statusCode === 304; + }; + SendStream.prototype.onStatError = function onStatError(error) { + switch (error.code) { + case "ENAMETOOLONG": + case "ENOENT": + case "ENOTDIR": + this.error(404, error); + break; + default: + this.error(500, error); + break; + } + }; + SendStream.prototype.isFresh = function isFresh() { + return fresh(this.req.headers, { + etag: this.res.getHeader("ETag"), + "last-modified": this.res.getHeader("Last-Modified") + }); + }; + SendStream.prototype.isRangeFresh = function isRangeFresh() { + var ifRange = this.req.headers["if-range"]; + if (!ifRange) { + return true; + } + if (ifRange.indexOf('"') !== -1) { + var etag2 = this.res.getHeader("ETag"); + return Boolean(etag2 && ifRange.indexOf(etag2) !== -1); + } + var lastModified = this.res.getHeader("Last-Modified"); + return parseHttpDate(lastModified) <= parseHttpDate(ifRange); + }; + SendStream.prototype.redirect = function redirect(path3) { + var res = this.res; + if (hasListeners(this, "directory")) { + this.emit("directory", res, path3); + return; + } + if (this.hasTrailingSlash()) { + this.error(403); + return; + } + var loc = encodeUrl(collapseLeadingSlashes(this.path + "/")); + var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); + res.statusCode = 301; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Location", loc); + res.end(doc); + }; + SendStream.prototype.pipe = function pipe(res) { + var root = this._root; + this.res = res; + var path3 = decode(this.path); + if (path3 === -1) { + this.error(400); + return res; + } + if (~path3.indexOf("\0")) { + this.error(400); + return res; + } + var parts; + if (root !== null) { + if (path3) { + path3 = normalize("." + sep + path3); + } + if (UP_PATH_REGEXP.test(path3)) { + debug('malicious path "%s"', path3); + this.error(403); + return res; + } + parts = path3.split(sep); + path3 = normalize(join(root, path3)); + } else { + if (UP_PATH_REGEXP.test(path3)) { + debug('malicious path "%s"', path3); + this.error(403); + return res; + } + parts = normalize(path3).split(sep); + path3 = resolve(path3); + } + if (containsDotFile(parts)) { + var access = this._dotfiles; + if (access === void 0) { + access = parts[parts.length - 1][0] === "." ? this._hidden ? "allow" : "ignore" : "allow"; + } + debug('%s dotfile "%s"', access, path3); + switch (access) { + case "allow": + break; + case "deny": + this.error(403); + return res; + case "ignore": + default: + this.error(404); + return res; + } + } + if (this._index.length && this.hasTrailingSlash()) { + this.sendIndex(path3); + return res; + } + this.sendFile(path3); + return res; + }; + SendStream.prototype.send = function send2(path3, stat) { + var len = stat.size; + var options = this.options; + var opts = {}; + var res = this.res; + var req = this.req; + var ranges = req.headers.range; + var offset = options.start || 0; + if (headersSent(res)) { + this.headersAlreadySent(); + return; + } + debug('pipe "%s"', path3); + this.setHeader(path3, stat); + this.type(path3); + if (this.isConditionalGET()) { + if (this.isPreconditionFailure()) { + this.error(412); + return; + } + if (this.isCachable() && this.isFresh()) { + this.notModified(); + return; + } + } + len = Math.max(0, len - offset); + if (options.end !== void 0) { + var bytes = options.end - offset + 1; + if (len > bytes) + len = bytes; + } + if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { + ranges = parseRange(len, ranges, { + combine: true + }); + if (!this.isRangeFresh()) { + debug("range stale"); + ranges = -2; + } + if (ranges === -1) { + debug("range unsatisfiable"); + res.setHeader("Content-Range", contentRange("bytes", len)); + return this.error(416, { + headers: { "Content-Range": res.getHeader("Content-Range") } + }); + } + if (ranges !== -2 && ranges.length === 1) { + debug("range %j", ranges); + res.statusCode = 206; + res.setHeader("Content-Range", contentRange("bytes", len, ranges[0])); + offset += ranges[0].start; + len = ranges[0].end - ranges[0].start + 1; + } + } + for (var prop in options) { + opts[prop] = options[prop]; + } + opts.start = offset; + opts.end = Math.max(offset, offset + len - 1); + res.setHeader("Content-Length", len); + if (req.method === "HEAD") { + res.end(); + return; + } + this.stream(path3, opts); + }; + SendStream.prototype.sendFile = function sendFile(path3) { + var i = 0; + var self2 = this; + debug('stat "%s"', path3); + fs.stat(path3, function onstat(err, stat) { + if (err && err.code === "ENOENT" && !extname(path3) && path3[path3.length - 1] !== sep) { + return next(err); + } + if (err) + return self2.onStatError(err); + if (stat.isDirectory()) + return self2.redirect(path3); + self2.emit("file", path3, stat); + self2.send(path3, stat); + }); + function next(err) { + if (self2._extensions.length <= i) { + return err ? self2.onStatError(err) : self2.error(404); + } + var p = path3 + "." + self2._extensions[i++]; + debug('stat "%s"', p); + fs.stat(p, function(err2, stat) { + if (err2) + return next(err2); + if (stat.isDirectory()) + return next(); + self2.emit("file", p, stat); + self2.send(p, stat); + }); + } + }; + SendStream.prototype.sendIndex = function sendIndex(path3) { + var i = -1; + var self2 = this; + function next(err) { + if (++i >= self2._index.length) { + if (err) + return self2.onStatError(err); + return self2.error(404); + } + var p = join(path3, self2._index[i]); + debug('stat "%s"', p); + fs.stat(p, function(err2, stat) { + if (err2) + return next(err2); + if (stat.isDirectory()) + return next(); + self2.emit("file", p, stat); + self2.send(p, stat); + }); + } + next(); + }; + SendStream.prototype.stream = function stream(path3, options) { + var self2 = this; + var res = this.res; + var stream2 = fs.createReadStream(path3, options); + this.emit("stream", stream2); + stream2.pipe(res); + function cleanup() { + destroy(stream2, true); + } + onFinished(res, cleanup); + stream2.on("error", function onerror(err) { + cleanup(); + self2.onStatError(err); + }); + stream2.on("end", function onend() { + self2.emit("end"); + }); + }; + SendStream.prototype.type = function type(path3) { + var res = this.res; + if (res.getHeader("Content-Type")) + return; + var type2 = mime2.lookup(path3); + if (!type2) { + debug("no content-type"); + return; + } + var charset = mime2.charsets.lookup(type2); + debug("content-type %s", type2); + res.setHeader("Content-Type", type2 + (charset ? "; charset=" + charset : "")); + }; + SendStream.prototype.setHeader = function setHeader(path3, stat) { + var res = this.res; + this.emit("headers", res, path3, stat); + if (this._acceptRanges && !res.getHeader("Accept-Ranges")) { + debug("accept ranges"); + res.setHeader("Accept-Ranges", "bytes"); + } + if (this._cacheControl && !res.getHeader("Cache-Control")) { + var cacheControl = "public, max-age=" + Math.floor(this._maxage / 1e3); + if (this._immutable) { + cacheControl += ", immutable"; + } + debug("cache-control %s", cacheControl); + res.setHeader("Cache-Control", cacheControl); + } + if (this._lastModified && !res.getHeader("Last-Modified")) { + var modified = stat.mtime.toUTCString(); + debug("modified %s", modified); + res.setHeader("Last-Modified", modified); + } + if (this._etag && !res.getHeader("ETag")) { + var val = etag(stat); + debug("etag %s", val); + res.setHeader("ETag", val); + } + }; + function clearHeaders(res) { + var headers = getHeaderNames(res); + for (var i = 0; i < headers.length; i++) { + res.removeHeader(headers[i]); + } + } + function collapseLeadingSlashes(str) { + for (var i = 0; i < str.length; i++) { + if (str[i] !== "/") { + break; + } + } + return i > 1 ? "/" + str.substr(i) : str; + } + function containsDotFile(parts) { + for (var i = 0; i < parts.length; i++) { + var part = parts[i]; + if (part.length > 1 && part[0] === ".") { + return true; + } + } + return false; + } + function contentRange(type, size, range) { + return type + " " + (range ? range.start + "-" + range.end : "*") + "/" + size; + } + function createHtmlDocument(title, body) { + return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; + } + function createHttpError(status, err) { + if (!err) { + return createError(status); + } + return err instanceof Error ? createError(status, err, { expose: false }) : createError(status, err); + } + function decode(path3) { + try { + return decodeURIComponent(path3); + } catch (err) { + return -1; + } + } + function getHeaderNames(res) { + return typeof res.getHeaderNames !== "function" ? Object.keys(res._headers || {}) : res.getHeaderNames(); + } + function hasListeners(emitter, type) { + var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); + return count > 0; + } + function headersSent(res) { + return typeof res.headersSent !== "boolean" ? Boolean(res._header) : res.headersSent; + } + function normalizeList(val, name) { + var list = [].concat(val || []); + for (var i = 0; i < list.length; i++) { + if (typeof list[i] !== "string") { + throw new TypeError(name + " must be array of strings or false"); + } + } + return list; + } + function parseHttpDate(date) { + var timestamp = date && Date.parse(date); + return typeof timestamp === "number" ? timestamp : NaN; + } + function parseTokenList(str) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + if (start !== end) { + list.push(str.substring(start, end)); + } + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + if (start !== end) { + list.push(str.substring(start, end)); + } + return list; + } + function setHeaders(res, headers) { + var keys = Object.keys(headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + res.setHeader(key, headers[key]); + } + } + } +}); + +// node_modules/forwarded/index.js +var require_forwarded = __commonJS({ + "node_modules/forwarded/index.js"(exports, module2) { + "use strict"; + module2.exports = forwarded; + function forwarded(req) { + if (!req) { + throw new TypeError("argument req is required"); + } + var proxyAddrs = parse(req.headers["x-forwarded-for"] || ""); + var socketAddr = getSocketAddr(req); + var addrs = [socketAddr].concat(proxyAddrs); + return addrs; + } + function getSocketAddr(req) { + return req.socket ? req.socket.remoteAddress : req.connection.remoteAddress; + } + function parse(header) { + var end = header.length; + var list = []; + var start = header.length; + for (var i = header.length - 1; i >= 0; i--) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i; + } + break; + case 44: + if (start !== end) { + list.push(header.substring(start, end)); + } + start = end = i; + break; + default: + start = i; + break; + } + } + if (start !== end) { + list.push(header.substring(start, end)); + } + return list; + } + } +}); + +// node_modules/ipaddr.js/lib/ipaddr.js +var require_ipaddr = __commonJS({ + "node_modules/ipaddr.js/lib/ipaddr.js"(exports, module2) { + (function() { + var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex; + ipaddr = {}; + root = this; + if (typeof module2 !== "undefined" && module2 !== null && module2.exports) { + module2.exports = ipaddr; + } else { + root["ipaddr"] = ipaddr; + } + matchCIDR = function(first, second, partSize, cidrBits) { + var part, shift; + if (first.length !== second.length) { + throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); + } + part = 0; + while (cidrBits > 0) { + shift = partSize - cidrBits; + if (shift < 0) { + shift = 0; + } + if (first[part] >> shift !== second[part] >> shift) { + return false; + } + cidrBits -= partSize; + part += 1; + } + return true; + }; + ipaddr.subnetMatch = function(address, rangeList, defaultName) { + var k, len, rangeName, rangeSubnets, subnet; + if (defaultName == null) { + defaultName = "unicast"; + } + for (rangeName in rangeList) { + rangeSubnets = rangeList[rangeName]; + if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) { + rangeSubnets = [rangeSubnets]; + } + for (k = 0, len = rangeSubnets.length; k < len; k++) { + subnet = rangeSubnets[k]; + if (address.kind() === subnet[0].kind()) { + if (address.match.apply(address, subnet)) { + return rangeName; + } + } + } + } + return defaultName; + }; + ipaddr.IPv4 = function() { + function IPv4(octets) { + var k, len, octet; + if (octets.length !== 4) { + throw new Error("ipaddr: ipv4 octet count should be 4"); + } + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!(0 <= octet && octet <= 255)) { + throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); + } + } + this.octets = octets; + } + IPv4.prototype.kind = function() { + return "ipv4"; + }; + IPv4.prototype.toString = function() { + return this.octets.join("."); + }; + IPv4.prototype.toNormalizedString = function() { + return this.toString(); + }; + IPv4.prototype.toByteArray = function() { + return this.octets.slice(0); + }; + IPv4.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== "ipv4") { + throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); + } + return matchCIDR(this.octets, other.octets, 8, cidrRange); + }; + IPv4.prototype.SpecialRanges = { + unspecified: [[new IPv4([0, 0, 0, 0]), 8]], + broadcast: [[new IPv4([255, 255, 255, 255]), 32]], + multicast: [[new IPv4([224, 0, 0, 0]), 4]], + linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], + loopback: [[new IPv4([127, 0, 0, 0]), 8]], + carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]], + "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], + reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] + }; + IPv4.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + IPv4.prototype.toIPv4MappedAddress = function() { + return ipaddr.IPv6.parse("::ffff:" + this.toString()); + }; + IPv4.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, octet, stop, zeros, zerotable; + zerotable = { + 0: 8, + 128: 7, + 192: 6, + 224: 5, + 240: 4, + 248: 3, + 252: 2, + 254: 1, + 255: 0 + }; + cidr = 0; + stop = false; + for (i = k = 3; k >= 0; i = k += -1) { + octet = this.octets[i]; + if (octet in zerotable) { + zeros = zerotable[octet]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 8) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 32 - cidr; + }; + return IPv4; + }(); + ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; + ipv4Regexes = { + fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", "i"), + longValue: new RegExp("^" + ipv4Part + "$", "i") + }; + ipaddr.IPv4.parser = function(string) { + var match, parseIntAuto, part, shift, value; + parseIntAuto = function(string2) { + if (string2[0] === "0" && string2[1] !== "x") { + return parseInt(string2, 8); + } else { + return parseInt(string2); + } + }; + if (match = string.match(ipv4Regexes.fourOctet)) { + return function() { + var k, len, ref, results; + ref = match.slice(1, 6); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseIntAuto(part)); + } + return results; + }(); + } else if (match = string.match(ipv4Regexes.longValue)) { + value = parseIntAuto(match[1]); + if (value > 4294967295 || value < 0) { + throw new Error("ipaddr: address outside defined range"); + } + return function() { + var k, results; + results = []; + for (shift = k = 0; k <= 24; shift = k += 8) { + results.push(value >> shift & 255); + } + return results; + }().reverse(); + } else { + return null; + } + }; + ipaddr.IPv6 = function() { + function IPv6(parts, zoneId) { + var i, k, l, len, part, ref; + if (parts.length === 16) { + this.parts = []; + for (i = k = 0; k <= 14; i = k += 2) { + this.parts.push(parts[i] << 8 | parts[i + 1]); + } + } else if (parts.length === 8) { + this.parts = parts; + } else { + throw new Error("ipaddr: ipv6 part count should be 8 or 16"); + } + ref = this.parts; + for (l = 0, len = ref.length; l < len; l++) { + part = ref[l]; + if (!(0 <= part && part <= 65535)) { + throw new Error("ipaddr: ipv6 part should fit in 16 bits"); + } + } + if (zoneId) { + this.zoneId = zoneId; + } + } + IPv6.prototype.kind = function() { + return "ipv6"; + }; + IPv6.prototype.toString = function() { + return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, "::"); + }; + IPv6.prototype.toRFC5952String = function() { + var bestMatchIndex, bestMatchLength, match, regex, string; + regex = /((^|:)(0(:|$)){2,})/g; + string = this.toNormalizedString(); + bestMatchIndex = 0; + bestMatchLength = -1; + while (match = regex.exec(string)) { + if (match[0].length > bestMatchLength) { + bestMatchIndex = match.index; + bestMatchLength = match[0].length; + } + } + if (bestMatchLength < 0) { + return string; + } + return string.substring(0, bestMatchIndex) + "::" + string.substring(bestMatchIndex + bestMatchLength); + }; + IPv6.prototype.toByteArray = function() { + var bytes, k, len, part, ref; + bytes = []; + ref = this.parts; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + bytes.push(part >> 8); + bytes.push(part & 255); + } + return bytes; + }; + IPv6.prototype.toNormalizedString = function() { + var addr, part, suffix; + addr = function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16)); + } + return results; + }.call(this).join(":"); + suffix = ""; + if (this.zoneId) { + suffix = "%" + this.zoneId; + } + return addr + suffix; + }; + IPv6.prototype.toFixedLengthString = function() { + var addr, part, suffix; + addr = function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16).padStart(4, "0")); + } + return results; + }.call(this).join(":"); + suffix = ""; + if (this.zoneId) { + suffix = "%" + this.zoneId; + } + return addr + suffix; + }; + IPv6.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== "ipv6") { + throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); + } + return matchCIDR(this.parts, other.parts, 16, cidrRange); + }; + IPv6.prototype.SpecialRanges = { + unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], + linkLocal: [new IPv6([65152, 0, 0, 0, 0, 0, 0, 0]), 10], + multicast: [new IPv6([65280, 0, 0, 0, 0, 0, 0, 0]), 8], + loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], + uniqueLocal: [new IPv6([64512, 0, 0, 0, 0, 0, 0, 0]), 7], + ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 65535, 0, 0]), 96], + rfc6145: [new IPv6([0, 0, 0, 0, 65535, 0, 0, 0]), 96], + rfc6052: [new IPv6([100, 65435, 0, 0, 0, 0, 0, 0]), 96], + "6to4": [new IPv6([8194, 0, 0, 0, 0, 0, 0, 0]), 16], + teredo: [new IPv6([8193, 0, 0, 0, 0, 0, 0, 0]), 32], + reserved: [[new IPv6([8193, 3512, 0, 0, 0, 0, 0, 0]), 32]] + }; + IPv6.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + IPv6.prototype.isIPv4MappedAddress = function() { + return this.range() === "ipv4Mapped"; + }; + IPv6.prototype.toIPv4Address = function() { + var high, low, ref; + if (!this.isIPv4MappedAddress()) { + throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); + } + ref = this.parts.slice(-2), high = ref[0], low = ref[1]; + return new ipaddr.IPv4([high >> 8, high & 255, low >> 8, low & 255]); + }; + IPv6.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, part, stop, zeros, zerotable; + zerotable = { + 0: 16, + 32768: 15, + 49152: 14, + 57344: 13, + 61440: 12, + 63488: 11, + 64512: 10, + 65024: 9, + 65280: 8, + 65408: 7, + 65472: 6, + 65504: 5, + 65520: 4, + 65528: 3, + 65532: 2, + 65534: 1, + 65535: 0 + }; + cidr = 0; + stop = false; + for (i = k = 7; k >= 0; i = k += -1) { + part = this.parts[i]; + if (part in zerotable) { + zeros = zerotable[part]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 16) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 128 - cidr; + }; + return IPv6; + }(); + ipv6Part = "(?:[0-9a-f]+::?)+"; + zoneIndex = "%[0-9a-z]{1,}"; + ipv6Regexes = { + zoneIndex: new RegExp(zoneIndex, "i"), + "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", "i"), + transitional: new RegExp("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)" + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), "i") + }; + expandIPv6 = function(string, parts) { + var colonCount, lastColon, part, replacement, replacementCount, zoneId; + if (string.indexOf("::") !== string.lastIndexOf("::")) { + return null; + } + zoneId = (string.match(ipv6Regexes["zoneIndex"]) || [])[0]; + if (zoneId) { + zoneId = zoneId.substring(1); + string = string.replace(/%.+$/, ""); + } + colonCount = 0; + lastColon = -1; + while ((lastColon = string.indexOf(":", lastColon + 1)) >= 0) { + colonCount++; + } + if (string.substr(0, 2) === "::") { + colonCount--; + } + if (string.substr(-2, 2) === "::") { + colonCount--; + } + if (colonCount > parts) { + return null; + } + replacementCount = parts - colonCount; + replacement = ":"; + while (replacementCount--) { + replacement += "0:"; + } + string = string.replace("::", replacement); + if (string[0] === ":") { + string = string.slice(1); + } + if (string[string.length - 1] === ":") { + string = string.slice(0, -1); + } + parts = function() { + var k, len, ref, results; + ref = string.split(":"); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseInt(part, 16)); + } + return results; + }(); + return { + parts, + zoneId + }; + }; + ipaddr.IPv6.parser = function(string) { + var addr, k, len, match, octet, octets, zoneId; + if (ipv6Regexes["native"].test(string)) { + return expandIPv6(string, 8); + } else if (match = string.match(ipv6Regexes["transitional"])) { + zoneId = match[6] || ""; + addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6); + if (addr.parts) { + octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])]; + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!(0 <= octet && octet <= 255)) { + return null; + } + } + addr.parts.push(octets[0] << 8 | octets[1]); + addr.parts.push(octets[2] << 8 | octets[3]); + return { + parts: addr.parts, + zoneId: addr.zoneId + }; + } + } + return null; + }; + ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) { + return this.parser(string) !== null; + }; + ipaddr.IPv4.isValid = function(string) { + var e; + try { + new this(this.parser(string)); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + ipaddr.IPv4.isValidFourPartDecimal = function(string) { + if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) { + return true; + } else { + return false; + } + }; + ipaddr.IPv6.isValid = function(string) { + var addr, e; + if (typeof string === "string" && string.indexOf(":") === -1) { + return false; + } + try { + addr = this.parser(string); + new this(addr.parts, addr.zoneId); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + ipaddr.IPv4.parse = function(string) { + var parts; + parts = this.parser(string); + if (parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(parts); + }; + ipaddr.IPv6.parse = function(string) { + var addr; + addr = this.parser(string); + if (addr.parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(addr.parts, addr.zoneId); + }; + ipaddr.IPv4.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 32) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, "toString", { + value: function() { + return this.join("/"); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); + }; + ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) { + var filledOctetCount, j, octets; + prefix = parseInt(prefix); + if (prefix < 0 || prefix > 32) { + throw new Error("ipaddr: invalid IPv4 prefix length"); + } + octets = [0, 0, 0, 0]; + j = 0; + filledOctetCount = Math.floor(prefix / 8); + while (j < filledOctetCount) { + octets[j] = 255; + j++; + } + if (filledOctetCount < 4) { + octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - prefix % 8; + } + return new this(octets); + }; + ipaddr.IPv4.broadcastAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }; + ipaddr.IPv4.networkAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10)); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error("ipaddr: the address does not have IPv4 CIDR format"); + } + }; + ipaddr.IPv6.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 128) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, "toString", { + value: function() { + return this.join("/"); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); + }; + ipaddr.isValid = function(string) { + return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string); + }; + ipaddr.parse = function(string) { + if (ipaddr.IPv6.isValid(string)) { + return ipaddr.IPv6.parse(string); + } else if (ipaddr.IPv4.isValid(string)) { + return ipaddr.IPv4.parse(string); + } else { + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); + } + }; + ipaddr.parseCIDR = function(string) { + var e; + try { + return ipaddr.IPv6.parseCIDR(string); + } catch (error1) { + e = error1; + try { + return ipaddr.IPv4.parseCIDR(string); + } catch (error12) { + e = error12; + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); + } + } + }; + ipaddr.fromByteArray = function(bytes) { + var length; + length = bytes.length; + if (length === 4) { + return new ipaddr.IPv4(bytes); + } else if (length === 16) { + return new ipaddr.IPv6(bytes); + } else { + throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); + } + }; + ipaddr.process = function(string) { + var addr; + addr = this.parse(string); + if (addr.kind() === "ipv6" && addr.isIPv4MappedAddress()) { + return addr.toIPv4Address(); + } else { + return addr; + } + }; + }).call(exports); + } +}); + +// node_modules/proxy-addr/index.js +var require_proxy_addr = __commonJS({ + "node_modules/proxy-addr/index.js"(exports, module2) { + "use strict"; + module2.exports = proxyaddr; + module2.exports.all = alladdrs; + module2.exports.compile = compile; + var forwarded = require_forwarded(); + var ipaddr = require_ipaddr(); + var DIGIT_REGEXP = /^[0-9]+$/; + var isip = ipaddr.isValid; + var parseip = ipaddr.parse; + var IP_RANGES = { + linklocal: ["169.254.0.0/16", "fe80::/10"], + loopback: ["127.0.0.1/8", "::1/128"], + uniquelocal: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fc00::/7"] + }; + function alladdrs(req, trust) { + var addrs = forwarded(req); + if (!trust) { + return addrs; + } + if (typeof trust !== "function") { + trust = compile(trust); + } + for (var i = 0; i < addrs.length - 1; i++) { + if (trust(addrs[i], i)) + continue; + addrs.length = i + 1; + } + return addrs; + } + function compile(val) { + if (!val) { + throw new TypeError("argument is required"); + } + var trust; + if (typeof val === "string") { + trust = [val]; + } else if (Array.isArray(val)) { + trust = val.slice(); + } else { + throw new TypeError("unsupported trust argument"); + } + for (var i = 0; i < trust.length; i++) { + val = trust[i]; + if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) { + continue; + } + val = IP_RANGES[val]; + trust.splice.apply(trust, [i, 1].concat(val)); + i += val.length - 1; + } + return compileTrust(compileRangeSubnets(trust)); + } + function compileRangeSubnets(arr) { + var rangeSubnets = new Array(arr.length); + for (var i = 0; i < arr.length; i++) { + rangeSubnets[i] = parseipNotation(arr[i]); + } + return rangeSubnets; + } + function compileTrust(rangeSubnets) { + var len = rangeSubnets.length; + return len === 0 ? trustNone : len === 1 ? trustSingle(rangeSubnets[0]) : trustMulti(rangeSubnets); + } + function parseipNotation(note) { + var pos = note.lastIndexOf("/"); + var str = pos !== -1 ? note.substring(0, pos) : note; + if (!isip(str)) { + throw new TypeError("invalid IP address: " + str); + } + var ip = parseip(str); + if (pos === -1 && ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { + ip = ip.toIPv4Address(); + } + var max = ip.kind() === "ipv6" ? 128 : 32; + var range = pos !== -1 ? note.substring(pos + 1, note.length) : null; + if (range === null) { + range = max; + } else if (DIGIT_REGEXP.test(range)) { + range = parseInt(range, 10); + } else if (ip.kind() === "ipv4" && isip(range)) { + range = parseNetmask(range); + } else { + range = null; + } + if (range <= 0 || range > max) { + throw new TypeError("invalid range on address: " + note); + } + return [ip, range]; + } + function parseNetmask(netmask) { + var ip = parseip(netmask); + var kind = ip.kind(); + return kind === "ipv4" ? ip.prefixLengthFromSubnetMask() : null; + } + function proxyaddr(req, trust) { + if (!req) { + throw new TypeError("req argument is required"); + } + if (!trust) { + throw new TypeError("trust argument is required"); + } + var addrs = alladdrs(req, trust); + var addr = addrs[addrs.length - 1]; + return addr; + } + function trustNone() { + return false; + } + function trustMulti(subnets) { + return function trust(addr) { + if (!isip(addr)) + return false; + var ip = parseip(addr); + var ipconv; + var kind = ip.kind(); + for (var i = 0; i < subnets.length; i++) { + var subnet = subnets[i]; + var subnetip = subnet[0]; + var subnetkind = subnetip.kind(); + var subnetrange = subnet[1]; + var trusted = ip; + if (kind !== subnetkind) { + if (subnetkind === "ipv4" && !ip.isIPv4MappedAddress()) { + continue; + } + if (!ipconv) { + ipconv = subnetkind === "ipv4" ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); + } + trusted = ipconv; + } + if (trusted.match(subnetip, subnetrange)) { + return true; + } + } + return false; + }; + } + function trustSingle(subnet) { + var subnetip = subnet[0]; + var subnetkind = subnetip.kind(); + var subnetisipv4 = subnetkind === "ipv4"; + var subnetrange = subnet[1]; + return function trust(addr) { + if (!isip(addr)) + return false; + var ip = parseip(addr); + var kind = ip.kind(); + if (kind !== subnetkind) { + if (subnetisipv4 && !ip.isIPv4MappedAddress()) { + return false; + } + ip = subnetisipv4 ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); + } + return ip.match(subnetip, subnetrange); + }; + } + } +}); + +// node_modules/express/lib/utils.js +var require_utils2 = __commonJS({ + "node_modules/express/lib/utils.js"(exports) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var contentDisposition = require_content_disposition(); + var contentType = require_content_type(); + var deprecate = require_depd()("express"); + var flatten = require_array_flatten(); + var mime2 = require_send().mime; + var etag = require_etag(); + var proxyaddr = require_proxy_addr(); + var qs = require_lib4(); + var querystring = require("querystring"); + exports.etag = createETagGenerator({ weak: false }); + exports.wetag = createETagGenerator({ weak: true }); + exports.isAbsolute = function(path2) { + if (path2[0] === "/") + return true; + if (path2[1] === ":" && (path2[2] === "\\" || path2[2] === "/")) + return true; + if (path2.substring(0, 2) === "\\\\") + return true; + }; + exports.flatten = deprecate.function(flatten, "utils.flatten: use array-flatten npm module instead"); + exports.normalizeType = function(type) { + return ~type.indexOf("/") ? acceptParams(type) : { value: mime2.lookup(type), params: {} }; + }; + exports.normalizeTypes = function(types) { + var ret = []; + for (var i = 0; i < types.length; ++i) { + ret.push(exports.normalizeType(types[i])); + } + return ret; + }; + exports.contentDisposition = deprecate.function(contentDisposition, "utils.contentDisposition: use content-disposition npm module instead"); + function acceptParams(str) { + var parts = str.split(/ *; */); + var ret = { value: parts[0], quality: 1, params: {} }; + for (var i = 1; i < parts.length; ++i) { + var pms = parts[i].split(/ *= */); + if (pms[0] === "q") { + ret.quality = parseFloat(pms[1]); + } else { + ret.params[pms[0]] = pms[1]; + } + } + return ret; + } + exports.compileETag = function(val) { + var fn; + if (typeof val === "function") { + return val; + } + switch (val) { + case true: + case "weak": + fn = exports.wetag; + break; + case false: + break; + case "strong": + fn = exports.etag; + break; + default: + throw new TypeError("unknown value for etag function: " + val); + } + return fn; + }; + exports.compileQueryParser = function compileQueryParser(val) { + var fn; + if (typeof val === "function") { + return val; + } + switch (val) { + case true: + case "simple": + fn = querystring.parse; + break; + case false: + fn = newObject; + break; + case "extended": + fn = parseExtendedQueryString; + break; + default: + throw new TypeError("unknown value for query parser function: " + val); + } + return fn; + }; + exports.compileTrust = function(val) { + if (typeof val === "function") + return val; + if (val === true) { + return function() { + return true; + }; + } + if (typeof val === "number") { + return function(a, i) { + return i < val; + }; + } + if (typeof val === "string") { + val = val.split(",").map(function(v) { + return v.trim(); + }); + } + return proxyaddr.compile(val || []); + }; + exports.setCharset = function setCharset(type, charset) { + if (!type || !charset) { + return type; + } + var parsed = contentType.parse(type); + parsed.parameters.charset = charset; + return contentType.format(parsed); + }; + function createETagGenerator(options) { + return function generateETag(body, encoding) { + var buf = !Buffer2.isBuffer(body) ? Buffer2.from(body, encoding) : body; + return etag(buf, options); + }; + } + function parseExtendedQueryString(str) { + return qs.parse(str, { + allowPrototypes: true + }); + } + function newObject() { + return {}; + } + } +}); + +// node_modules/express/lib/application.js +var require_application = __commonJS({ + "node_modules/express/lib/application.js"(exports, module2) { + "use strict"; + var finalhandler = require_finalhandler(); + var Router = require_router(); + var methods = require_methods(); + var middleware = require_init(); + var query = require_query(); + var debug = require_src3()("express:application"); + var View = require_view(); + var http3 = require("http"); + var compileETag = require_utils2().compileETag; + var compileQueryParser = require_utils2().compileQueryParser; + var compileTrust = require_utils2().compileTrust; + var deprecate = require_depd()("express"); + var flatten = require_array_flatten(); + var merge = require_utils_merge(); + var resolve = require("path").resolve; + var setPrototypeOf = require_setprototypeof(); + var hasOwnProperty = Object.prototype.hasOwnProperty; + var slice = Array.prototype.slice; + var app = exports = module2.exports = {}; + var trustProxyDefaultSymbol = "@@symbol:trust_proxy_default"; + app.init = function init() { + this.cache = {}; + this.engines = {}; + this.settings = {}; + this.defaultConfiguration(); + }; + app.defaultConfiguration = function defaultConfiguration() { + var env = process.env.NODE_ENV || "development"; + this.enable("x-powered-by"); + this.set("etag", "weak"); + this.set("env", env); + this.set("query parser", "extended"); + this.set("subdomain offset", 2); + this.set("trust proxy", false); + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: true + }); + debug("booting in %s mode", env); + this.on("mount", function onmount(parent) { + if (this.settings[trustProxyDefaultSymbol] === true && typeof parent.settings["trust proxy fn"] === "function") { + delete this.settings["trust proxy"]; + delete this.settings["trust proxy fn"]; + } + setPrototypeOf(this.request, parent.request); + setPrototypeOf(this.response, parent.response); + setPrototypeOf(this.engines, parent.engines); + setPrototypeOf(this.settings, parent.settings); + }); + this.locals = Object.create(null); + this.mountpath = "/"; + this.locals.settings = this.settings; + this.set("view", View); + this.set("views", resolve("views")); + this.set("jsonp callback name", "callback"); + if (env === "production") { + this.enable("view cache"); + } + Object.defineProperty(this, "router", { + get: function() { + throw new Error("'app.router' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app."); + } + }); + }; + app.lazyrouter = function lazyrouter() { + if (!this._router) { + this._router = new Router({ + caseSensitive: this.enabled("case sensitive routing"), + strict: this.enabled("strict routing") + }); + this._router.use(query(this.get("query parser fn"))); + this._router.use(middleware.init(this)); + } + }; + app.handle = function handle(req, res, callback) { + var router = this._router; + var done = callback || finalhandler(req, res, { + env: this.get("env"), + onerror: logerror.bind(this) + }); + if (!router) { + debug("no routes defined on app"); + done(); + return; + } + router.handle(req, res, done); + }; + app.use = function use(fn) { + var offset = 0; + var path2 = "/"; + if (typeof fn !== "function") { + var arg = fn; + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + if (typeof arg !== "function") { + offset = 1; + path2 = fn; + } + } + var fns = flatten(slice.call(arguments, offset)); + if (fns.length === 0) { + throw new TypeError("app.use() requires a middleware function"); + } + this.lazyrouter(); + var router = this._router; + fns.forEach(function(fn2) { + if (!fn2 || !fn2.handle || !fn2.set) { + return router.use(path2, fn2); + } + debug(".use app under %s", path2); + fn2.mountpath = path2; + fn2.parent = this; + router.use(path2, function mounted_app(req, res, next) { + var orig = req.app; + fn2.handle(req, res, function(err) { + setPrototypeOf(req, orig.request); + setPrototypeOf(res, orig.response); + next(err); + }); + }); + fn2.emit("mount", this); + }, this); + return this; + }; + app.route = function route(path2) { + this.lazyrouter(); + return this._router.route(path2); + }; + app.engine = function engine(ext, fn) { + if (typeof fn !== "function") { + throw new Error("callback function required"); + } + var extension = ext[0] !== "." ? "." + ext : ext; + this.engines[extension] = fn; + return this; + }; + app.param = function param(name, fn) { + this.lazyrouter(); + if (Array.isArray(name)) { + for (var i = 0; i < name.length; i++) { + this.param(name[i], fn); + } + return this; + } + this._router.param(name, fn); + return this; + }; + app.set = function set(setting, val) { + if (arguments.length === 1) { + var settings = this.settings; + while (settings && settings !== Object.prototype) { + if (hasOwnProperty.call(settings, setting)) { + return settings[setting]; + } + settings = Object.getPrototypeOf(settings); + } + return void 0; + } + debug('set "%s" to %o', setting, val); + this.settings[setting] = val; + switch (setting) { + case "etag": + this.set("etag fn", compileETag(val)); + break; + case "query parser": + this.set("query parser fn", compileQueryParser(val)); + break; + case "trust proxy": + this.set("trust proxy fn", compileTrust(val)); + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: false + }); + break; + } + return this; + }; + app.path = function path2() { + return this.parent ? this.parent.path() + this.mountpath : ""; + }; + app.enabled = function enabled(setting) { + return Boolean(this.set(setting)); + }; + app.disabled = function disabled(setting) { + return !this.set(setting); + }; + app.enable = function enable(setting) { + return this.set(setting, true); + }; + app.disable = function disable(setting) { + return this.set(setting, false); + }; + methods.forEach(function(method) { + app[method] = function(path2) { + if (method === "get" && arguments.length === 1) { + return this.set(path2); + } + this.lazyrouter(); + var route = this._router.route(path2); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; + }); + app.all = function all(path2) { + this.lazyrouter(); + var route = this._router.route(path2); + var args = slice.call(arguments, 1); + for (var i = 0; i < methods.length; i++) { + route[methods[i]].apply(route, args); + } + return this; + }; + app.del = deprecate.function(app.delete, "app.del: Use app.delete instead"); + app.render = function render(name, options, callback) { + var cache = this.cache; + var done = callback; + var engines = this.engines; + var opts = options; + var renderOptions = {}; + var view; + if (typeof options === "function") { + done = options; + opts = {}; + } + merge(renderOptions, this.locals); + if (opts._locals) { + merge(renderOptions, opts._locals); + } + merge(renderOptions, opts); + if (renderOptions.cache == null) { + renderOptions.cache = this.enabled("view cache"); + } + if (renderOptions.cache) { + view = cache[name]; + } + if (!view) { + var View2 = this.get("view"); + view = new View2(name, { + defaultEngine: this.get("view engine"), + root: this.get("views"), + engines + }); + if (!view.path) { + var dirs = Array.isArray(view.root) && view.root.length > 1 ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' : 'directory "' + view.root + '"'; + var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); + err.view = view; + return done(err); + } + if (renderOptions.cache) { + cache[name] = view; + } + } + tryRender(view, renderOptions, done); + }; + app.listen = function listen() { + var server = http3.createServer(this); + return server.listen.apply(server, arguments); + }; + function logerror(err) { + if (this.get("env") !== "test") + console.error(err.stack || err.toString()); + } + function tryRender(view, options, callback) { + try { + view.render(options, callback); + } catch (err) { + callback(err); + } + } + } +}); + +// node_modules/negotiator/lib/charset.js +var require_charset = __commonJS({ + "node_modules/negotiator/lib/charset.js"(exports, module2) { + "use strict"; + module2.exports = preferredCharsets; + module2.exports.preferredCharsets = preferredCharsets; + var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function parseAcceptCharset(accept) { + var accepts = accept.split(","); + for (var i = 0, j = 0; i < accepts.length; i++) { + var charset = parseCharset(accepts[i].trim(), i); + if (charset) { + accepts[j++] = charset; + } + } + accepts.length = j; + return accepts; + } + function parseCharset(str, i) { + var match = simpleCharsetRegExp.exec(str); + if (!match) + return null; + var charset = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + return { + charset, + q, + i + }; + } + function getCharsetPriority(charset, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(charset, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(charset, spec, index) { + var s = 0; + if (spec.charset.toLowerCase() === charset.toLowerCase()) { + s |= 1; + } else if (spec.charset !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredCharsets(accept, provided) { + var accepts = parseAcceptCharset(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset); + } + var priorities = provided.map(function getPriority(type, index) { + return getCharsetPriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullCharset(spec) { + return spec.charset; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/negotiator/lib/encoding.js +var require_encoding = __commonJS({ + "node_modules/negotiator/lib/encoding.js"(exports, module2) { + "use strict"; + module2.exports = preferredEncodings; + module2.exports.preferredEncodings = preferredEncodings; + var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + function parseAcceptEncoding(accept) { + var accepts = accept.split(","); + var hasIdentity = false; + var minQuality = 1; + for (var i = 0, j = 0; i < accepts.length; i++) { + var encoding = parseEncoding(accepts[i].trim(), i); + if (encoding) { + accepts[j++] = encoding; + hasIdentity = hasIdentity || specify("identity", encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + if (!hasIdentity) { + accepts[j++] = { + encoding: "identity", + q: minQuality, + i + }; + } + accepts.length = j; + return accepts; + } + function parseEncoding(str, i) { + var match = simpleEncodingRegExp.exec(str); + if (!match) + return null; + var encoding = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split("="); + if (p[0] === "q") { + q = parseFloat(p[1]); + break; + } + } + } + return { + encoding, + q, + i + }; + } + function getEncodingPriority(encoding, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(encoding, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(encoding, spec, index) { + var s = 0; + if (spec.encoding.toLowerCase() === encoding.toLowerCase()) { + s |= 1; + } else if (spec.encoding !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredEncodings(accept, provided) { + var accepts = parseAcceptEncoding(accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullEncoding); + } + var priorities = provided.map(function getPriority(type, index) { + return getEncodingPriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullEncoding(spec) { + return spec.encoding; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/negotiator/lib/language.js +var require_language = __commonJS({ + "node_modules/negotiator/lib/language.js"(exports, module2) { + "use strict"; + module2.exports = preferredLanguages; + module2.exports.preferredLanguages = preferredLanguages; + var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + function parseAcceptLanguage(accept) { + var accepts = accept.split(","); + for (var i = 0, j = 0; i < accepts.length; i++) { + var language = parseLanguage(accepts[i].trim(), i); + if (language) { + accepts[j++] = language; + } + } + accepts.length = j; + return accepts; + } + function parseLanguage(str, i) { + var match = simpleLanguageRegExp.exec(str); + if (!match) + return null; + var prefix = match[1]; + var suffix = match[2]; + var full = prefix; + if (suffix) + full += "-" + suffix; + var q = 1; + if (match[3]) { + var params = match[3].split(";"); + for (var j = 0; j < params.length; j++) { + var p = params[j].split("="); + if (p[0] === "q") + q = parseFloat(p[1]); + } + } + return { + prefix, + suffix, + q, + i, + full + }; + } + function getLanguagePriority(language, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(language, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(language, spec, index) { + var p = parseLanguage(language); + if (!p) + return null; + var s = 0; + if (spec.full.toLowerCase() === p.full.toLowerCase()) { + s |= 4; + } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== "*") { + return null; + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredLanguages(accept, provided) { + var accepts = parseAcceptLanguage(accept === void 0 ? "*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage); + } + var priorities = provided.map(function getPriority(type, index) { + return getLanguagePriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullLanguage(spec) { + return spec.full; + } + function isQuality(spec) { + return spec.q > 0; + } + } +}); + +// node_modules/negotiator/lib/mediaType.js +var require_mediaType = __commonJS({ + "node_modules/negotiator/lib/mediaType.js"(exports, module2) { + "use strict"; + module2.exports = preferredMediaTypes; + module2.exports.preferredMediaTypes = preferredMediaTypes; + var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + function parseAccept(accept) { + var accepts = splitMediaTypes(accept); + for (var i = 0, j = 0; i < accepts.length; i++) { + var mediaType = parseMediaType(accepts[i].trim(), i); + if (mediaType) { + accepts[j++] = mediaType; + } + } + accepts.length = j; + return accepts; + } + function parseMediaType(str, i) { + var match = simpleMediaTypeRegExp.exec(str); + if (!match) + return null; + var params = Object.create(null); + var q = 1; + var subtype = match[2]; + var type = match[1]; + if (match[3]) { + var kvps = splitParameters(match[3]).map(splitKeyValuePair); + for (var j = 0; j < kvps.length; j++) { + var pair = kvps[j]; + var key = pair[0].toLowerCase(); + var val = pair[1]; + var value = val && val[0] === '"' && val[val.length - 1] === '"' ? val.substr(1, val.length - 2) : val; + if (key === "q") { + q = parseFloat(value); + break; + } + params[key] = value; + } + } + return { + type, + subtype, + params, + q, + i + }; + } + function getMediaTypePriority(type, accepted, index) { + var priority = { o: -1, q: 0, s: 0 }; + for (var i = 0; i < accepted.length; i++) { + var spec = specify(type, accepted[i], index); + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + return priority; + } + function specify(type, spec, index) { + var p = parseMediaType(type); + var s = 0; + if (!p) { + return null; + } + if (spec.type.toLowerCase() == p.type.toLowerCase()) { + s |= 4; + } else if (spec.type != "*") { + return null; + } + if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { + s |= 2; + } else if (spec.subtype != "*") { + return null; + } + var keys = Object.keys(spec.params); + if (keys.length > 0) { + if (keys.every(function(k) { + return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p.params[k] || "").toLowerCase(); + })) { + s |= 1; + } else { + return null; + } + } + return { + i: index, + o: spec.i, + q: spec.q, + s + }; + } + function preferredMediaTypes(accept, provided) { + var accepts = parseAccept(accept === void 0 ? "*/*" : accept || ""); + if (!provided) { + return accepts.filter(isQuality).sort(compareSpecs).map(getFullType); + } + var priorities = provided.map(function getPriority(type, index) { + return getMediaTypePriority(type, accepts, index); + }); + return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { + return provided[priorities.indexOf(priority)]; + }); + } + function compareSpecs(a, b) { + return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; + } + function getFullType(spec) { + return spec.type + "/" + spec.subtype; + } + function isQuality(spec) { + return spec.q > 0; + } + function quoteCount(string) { + var count = 0; + var index = 0; + while ((index = string.indexOf('"', index)) !== -1) { + count++; + index++; + } + return count; + } + function splitKeyValuePair(str) { + var index = str.indexOf("="); + var key; + var val; + if (index === -1) { + key = str; + } else { + key = str.substr(0, index); + val = str.substr(index + 1); + } + return [key, val]; + } + function splitMediaTypes(accept) { + var accepts = accept.split(","); + for (var i = 1, j = 0; i < accepts.length; i++) { + if (quoteCount(accepts[j]) % 2 == 0) { + accepts[++j] = accepts[i]; + } else { + accepts[j] += "," + accepts[i]; + } + } + accepts.length = j + 1; + return accepts; + } + function splitParameters(str) { + var parameters = str.split(";"); + for (var i = 1, j = 0; i < parameters.length; i++) { + if (quoteCount(parameters[j]) % 2 == 0) { + parameters[++j] = parameters[i]; + } else { + parameters[j] += ";" + parameters[i]; + } + } + parameters.length = j + 1; + for (var i = 0; i < parameters.length; i++) { + parameters[i] = parameters[i].trim(); + } + return parameters; + } + } +}); + +// node_modules/negotiator/index.js +var require_negotiator = __commonJS({ + "node_modules/negotiator/index.js"(exports, module2) { + "use strict"; + var preferredCharsets = require_charset(); + var preferredEncodings = require_encoding(); + var preferredLanguages = require_language(); + var preferredMediaTypes = require_mediaType(); + module2.exports = Negotiator; + module2.exports.Negotiator = Negotiator; + function Negotiator(request) { + if (!(this instanceof Negotiator)) { + return new Negotiator(request); + } + this.request = request; + } + Negotiator.prototype.charset = function charset(available) { + var set = this.charsets(available); + return set && set[0]; + }; + Negotiator.prototype.charsets = function charsets(available) { + return preferredCharsets(this.request.headers["accept-charset"], available); + }; + Negotiator.prototype.encoding = function encoding(available) { + var set = this.encodings(available); + return set && set[0]; + }; + Negotiator.prototype.encodings = function encodings(available) { + return preferredEncodings(this.request.headers["accept-encoding"], available); + }; + Negotiator.prototype.language = function language(available) { + var set = this.languages(available); + return set && set[0]; + }; + Negotiator.prototype.languages = function languages(available) { + return preferredLanguages(this.request.headers["accept-language"], available); + }; + Negotiator.prototype.mediaType = function mediaType(available) { + var set = this.mediaTypes(available); + return set && set[0]; + }; + Negotiator.prototype.mediaTypes = function mediaTypes(available) { + return preferredMediaTypes(this.request.headers.accept, available); + }; + Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; + Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; + Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; + Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; + Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; + Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; + Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; + Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; + } +}); + +// node_modules/accepts/index.js +var require_accepts = __commonJS({ + "node_modules/accepts/index.js"(exports, module2) { + "use strict"; + var Negotiator = require_negotiator(); + var mime2 = require_mime_types(); + module2.exports = Accepts; + function Accepts(req) { + if (!(this instanceof Accepts)) { + return new Accepts(req); + } + this.headers = req.headers; + this.negotiator = new Negotiator(req); + } + Accepts.prototype.type = Accepts.prototype.types = function(types_) { + var types = types_; + if (types && !Array.isArray(types)) { + types = new Array(arguments.length); + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i]; + } + } + if (!types || types.length === 0) { + return this.negotiator.mediaTypes(); + } + if (!this.headers.accept) { + return types[0]; + } + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + return first ? types[mimes.indexOf(first)] : false; + }; + Accepts.prototype.encoding = Accepts.prototype.encodings = function(encodings_) { + var encodings = encodings_; + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length); + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i]; + } + } + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings(); + } + return this.negotiator.encodings(encodings)[0] || false; + }; + Accepts.prototype.charset = Accepts.prototype.charsets = function(charsets_) { + var charsets = charsets_; + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length); + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i]; + } + } + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets(); + } + return this.negotiator.charsets(charsets)[0] || false; + }; + Accepts.prototype.lang = Accepts.prototype.langs = Accepts.prototype.language = Accepts.prototype.languages = function(languages_) { + var languages = languages_; + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length); + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i]; + } + } + if (!languages || languages.length === 0) { + return this.negotiator.languages(); + } + return this.negotiator.languages(languages)[0] || false; + }; + function extToMime(type) { + return type.indexOf("/") === -1 ? mime2.lookup(type) : type; + } + function validMime(type) { + return typeof type === "string"; + } + } +}); + +// node_modules/express/lib/request.js +var require_request = __commonJS({ + "node_modules/express/lib/request.js"(exports, module2) { + "use strict"; + var accepts = require_accepts(); + var deprecate = require_depd()("express"); + var isIP = require("net").isIP; + var typeis = require_type_is(); + var http3 = require("http"); + var fresh = require_fresh(); + var parseRange = require_range_parser(); + var parse = require_parseurl(); + var proxyaddr = require_proxy_addr(); + var req = Object.create(http3.IncomingMessage.prototype); + module2.exports = req; + req.get = req.header = function header(name) { + if (!name) { + throw new TypeError("name argument is required to req.get"); + } + if (typeof name !== "string") { + throw new TypeError("name must be a string to req.get"); + } + var lc = name.toLowerCase(); + switch (lc) { + case "referer": + case "referrer": + return this.headers.referrer || this.headers.referer; + default: + return this.headers[lc]; + } + }; + req.accepts = function() { + var accept = accepts(this); + return accept.types.apply(accept, arguments); + }; + req.acceptsEncodings = function() { + var accept = accepts(this); + return accept.encodings.apply(accept, arguments); + }; + req.acceptsEncoding = deprecate.function(req.acceptsEncodings, "req.acceptsEncoding: Use acceptsEncodings instead"); + req.acceptsCharsets = function() { + var accept = accepts(this); + return accept.charsets.apply(accept, arguments); + }; + req.acceptsCharset = deprecate.function(req.acceptsCharsets, "req.acceptsCharset: Use acceptsCharsets instead"); + req.acceptsLanguages = function() { + var accept = accepts(this); + return accept.languages.apply(accept, arguments); + }; + req.acceptsLanguage = deprecate.function(req.acceptsLanguages, "req.acceptsLanguage: Use acceptsLanguages instead"); + req.range = function range(size, options) { + var range2 = this.get("Range"); + if (!range2) + return; + return parseRange(size, range2, options); + }; + req.param = function param(name, defaultValue) { + var params = this.params || {}; + var body = this.body || {}; + var query = this.query || {}; + var args = arguments.length === 1 ? "name" : "name, default"; + deprecate("req.param(" + args + "): Use req.params, req.body, or req.query instead"); + if (params[name] != null && params.hasOwnProperty(name)) + return params[name]; + if (body[name] != null) + return body[name]; + if (query[name] != null) + return query[name]; + return defaultValue; + }; + req.is = function is(types) { + var arr = types; + if (!Array.isArray(types)) { + arr = new Array(arguments.length); + for (var i = 0; i < arr.length; i++) { + arr[i] = arguments[i]; + } + } + return typeis(this, arr); + }; + defineGetter(req, "protocol", function protocol() { + var proto = this.connection.encrypted ? "https" : "http"; + var trust = this.app.get("trust proxy fn"); + if (!trust(this.connection.remoteAddress, 0)) { + return proto; + } + var header = this.get("X-Forwarded-Proto") || proto; + var index = header.indexOf(","); + return index !== -1 ? header.substring(0, index).trim() : header.trim(); + }); + defineGetter(req, "secure", function secure() { + return this.protocol === "https"; + }); + defineGetter(req, "ip", function ip() { + var trust = this.app.get("trust proxy fn"); + return proxyaddr(this, trust); + }); + defineGetter(req, "ips", function ips() { + var trust = this.app.get("trust proxy fn"); + var addrs = proxyaddr.all(this, trust); + addrs.reverse().pop(); + return addrs; + }); + defineGetter(req, "subdomains", function subdomains() { + var hostname = this.hostname; + if (!hostname) + return []; + var offset = this.app.get("subdomain offset"); + var subdomains2 = !isIP(hostname) ? hostname.split(".").reverse() : [hostname]; + return subdomains2.slice(offset); + }); + defineGetter(req, "path", function path2() { + return parse(this).pathname; + }); + defineGetter(req, "hostname", function hostname() { + var trust = this.app.get("trust proxy fn"); + var host = this.get("X-Forwarded-Host"); + if (!host || !trust(this.connection.remoteAddress, 0)) { + host = this.get("Host"); + } else if (host.indexOf(",") !== -1) { + host = host.substring(0, host.indexOf(",")).trimRight(); + } + if (!host) + return; + var offset = host[0] === "[" ? host.indexOf("]") + 1 : 0; + var index = host.indexOf(":", offset); + return index !== -1 ? host.substring(0, index) : host; + }); + defineGetter(req, "host", deprecate.function(function host() { + return this.hostname; + }, "req.host: Use req.hostname instead")); + defineGetter(req, "fresh", function() { + var method = this.method; + var res = this.res; + var status = res.statusCode; + if (method !== "GET" && method !== "HEAD") + return false; + if (status >= 200 && status < 300 || status === 304) { + return fresh(this.headers, { + "etag": res.get("ETag"), + "last-modified": res.get("Last-Modified") + }); + } + return false; + }); + defineGetter(req, "stale", function stale() { + return !this.fresh; + }); + defineGetter(req, "xhr", function xhr() { + var val = this.get("X-Requested-With") || ""; + return val.toLowerCase() === "xmlhttprequest"; + }); + function defineGetter(obj, name, getter) { + Object.defineProperty(obj, name, { + configurable: true, + enumerable: true, + get: getter + }); + } + } +}); + +// node_modules/cookie-signature/index.js +var require_cookie_signature = __commonJS({ + "node_modules/cookie-signature/index.js"(exports) { + var crypto = require("crypto"); + exports.sign = function(val, secret) { + if (typeof val != "string") + throw new TypeError("Cookie value must be provided as a string."); + if (typeof secret != "string") + throw new TypeError("Secret string must be provided."); + return val + "." + crypto.createHmac("sha256", secret).update(val).digest("base64").replace(/\=+$/, ""); + }; + exports.unsign = function(val, secret) { + if (typeof val != "string") + throw new TypeError("Signed cookie string must be provided."); + if (typeof secret != "string") + throw new TypeError("Secret string must be provided."); + var str = val.slice(0, val.lastIndexOf(".")), mac = exports.sign(str, secret); + return sha1(mac) == sha1(val) ? str : false; + }; + function sha1(str) { + return crypto.createHash("sha1").update(str).digest("hex"); + } + } +}); + +// node_modules/cookie/index.js +var require_cookie = __commonJS({ + "node_modules/cookie/index.js"(exports) { + "use strict"; + exports.parse = parse; + exports.serialize = serialize; + var __toString = Object.prototype.toString; + var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/; + var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i; + var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/; + function parse(str, opt) { + if (typeof str !== "string") { + throw new TypeError("argument str must be a string"); + } + var obj = {}; + var len = str.length; + if (len < 2) + return obj; + var dec = opt && opt.decode || decode; + var index = 0; + var eqIdx = 0; + var endIdx = 0; + do { + eqIdx = str.indexOf("=", index); + if (eqIdx === -1) + break; + endIdx = str.indexOf(";", index); + if (endIdx === -1) { + endIdx = len; + } else if (eqIdx > endIdx) { + index = str.lastIndexOf(";", eqIdx - 1) + 1; + continue; + } + var keyStartIdx = startIndex(str, index, eqIdx); + var keyEndIdx = endIndex(str, eqIdx, keyStartIdx); + var key = str.slice(keyStartIdx, keyEndIdx); + if (!obj.hasOwnProperty(key)) { + var valStartIdx = startIndex(str, eqIdx + 1, endIdx); + var valEndIdx = endIndex(str, endIdx, valStartIdx); + if (str.charCodeAt(valStartIdx) === 34 && str.charCodeAt(valEndIdx - 1) === 34) { + valStartIdx++; + valEndIdx--; + } + var val = str.slice(valStartIdx, valEndIdx); + obj[key] = tryDecode(val, dec); + } + index = endIdx + 1; + } while (index < len); + return obj; + } + function startIndex(str, index, max) { + do { + var code = str.charCodeAt(index); + if (code !== 32 && code !== 9) + return index; + } while (++index < max); + return max; + } + function endIndex(str, index, min) { + while (index > min) { + var code = str.charCodeAt(--index); + if (code !== 32 && code !== 9) + return index + 1; + } + return min; + } + function serialize(name, val, opt) { + var enc = opt && opt.encode || encodeURIComponent; + if (typeof enc !== "function") { + throw new TypeError("option encode is invalid"); + } + if (!cookieNameRegExp.test(name)) { + throw new TypeError("argument name is invalid"); + } + var value = enc(val); + if (!cookieValueRegExp.test(value)) { + throw new TypeError("argument val is invalid"); + } + var str = name + "=" + value; + if (!opt) + return str; + if (opt.maxAge != null) { + var maxAge = Math.floor(opt.maxAge); + if (!isFinite(maxAge)) { + throw new TypeError("option maxAge is invalid"); + } + str += "; Max-Age=" + maxAge; + } + if (opt.domain) { + if (!domainValueRegExp.test(opt.domain)) { + throw new TypeError("option domain is invalid"); + } + str += "; Domain=" + opt.domain; + } + if (opt.path) { + if (!pathValueRegExp.test(opt.path)) { + throw new TypeError("option path is invalid"); + } + str += "; Path=" + opt.path; + } + if (opt.expires) { + var expires = opt.expires; + if (!isDate(expires) || isNaN(expires.valueOf())) { + throw new TypeError("option expires is invalid"); + } + str += "; Expires=" + expires.toUTCString(); + } + if (opt.httpOnly) { + str += "; HttpOnly"; + } + if (opt.secure) { + str += "; Secure"; + } + if (opt.partitioned) { + str += "; Partitioned"; + } + if (opt.priority) { + var priority = typeof opt.priority === "string" ? opt.priority.toLowerCase() : opt.priority; + switch (priority) { + case "low": + str += "; Priority=Low"; + break; + case "medium": + str += "; Priority=Medium"; + break; + case "high": + str += "; Priority=High"; + break; + default: + throw new TypeError("option priority is invalid"); + } + } + if (opt.sameSite) { + var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite; + switch (sameSite) { + case true: + str += "; SameSite=Strict"; + break; + case "lax": + str += "; SameSite=Lax"; + break; + case "strict": + str += "; SameSite=Strict"; + break; + case "none": + str += "; SameSite=None"; + break; + default: + throw new TypeError("option sameSite is invalid"); + } + } + return str; + } + function decode(str) { + return str.indexOf("%") !== -1 ? decodeURIComponent(str) : str; + } + function isDate(val) { + return __toString.call(val) === "[object Date]"; + } + function tryDecode(str, decode2) { + try { + return decode2(str); + } catch (e) { + return str; + } + } + } +}); + +// node_modules/vary/index.js +var require_vary = __commonJS({ + "node_modules/vary/index.js"(exports, module2) { + "use strict"; + module2.exports = vary; + module2.exports.append = append; + var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + function append(header, field) { + if (typeof header !== "string") { + throw new TypeError("header argument is required"); + } + if (!field) { + throw new TypeError("field argument is required"); + } + var fields = !Array.isArray(field) ? parse(String(field)) : field; + for (var j = 0; j < fields.length; j++) { + if (!FIELD_NAME_REGEXP.test(fields[j])) { + throw new TypeError("field argument contains an invalid header name"); + } + } + if (header === "*") { + return header; + } + var val = header; + var vals = parse(header.toLowerCase()); + if (fields.indexOf("*") !== -1 || vals.indexOf("*") !== -1) { + return "*"; + } + for (var i = 0; i < fields.length; i++) { + var fld = fields[i].toLowerCase(); + if (vals.indexOf(fld) === -1) { + vals.push(fld); + val = val ? val + ", " + fields[i] : fields[i]; + } + } + return val; + } + function parse(header) { + var end = 0; + var list = []; + var start = 0; + for (var i = 0, len = header.length; i < len; i++) { + switch (header.charCodeAt(i)) { + case 32: + if (start === end) { + start = end = i + 1; + } + break; + case 44: + list.push(header.substring(start, end)); + start = end = i + 1; + break; + default: + end = i + 1; + break; + } + } + list.push(header.substring(start, end)); + return list; + } + function vary(res, field) { + if (!res || !res.getHeader || !res.setHeader) { + throw new TypeError("res argument is required"); + } + var val = res.getHeader("Vary") || ""; + var header = Array.isArray(val) ? val.join(", ") : String(val); + if (val = append(header, field)) { + res.setHeader("Vary", val); + } + } + } +}); + +// node_modules/express/lib/response.js +var require_response = __commonJS({ + "node_modules/express/lib/response.js"(exports, module2) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var contentDisposition = require_content_disposition(); + var createError = require_http_errors(); + var deprecate = require_depd()("express"); + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var http3 = require("http"); + var isAbsolute = require_utils2().isAbsolute; + var onFinished = require_on_finished(); + var path2 = require("path"); + var statuses = require_statuses(); + var merge = require_utils_merge(); + var sign = require_cookie_signature().sign; + var normalizeType = require_utils2().normalizeType; + var normalizeTypes = require_utils2().normalizeTypes; + var setCharset = require_utils2().setCharset; + var cookie = require_cookie(); + var send = require_send(); + var extname = path2.extname; + var mime2 = send.mime; + var resolve = path2.resolve; + var vary = require_vary(); + var res = Object.create(http3.ServerResponse.prototype); + module2.exports = res; + var charsetRegExp = /;\s*charset\s*=/; + res.status = function status(code) { + if ((typeof code === "string" || Math.floor(code) !== code) && code > 99 && code < 1e3) { + deprecate("res.status(" + JSON.stringify(code) + "): use res.status(" + Math.floor(code) + ") instead"); + } + this.statusCode = code; + return this; + }; + res.links = function(links) { + var link = this.get("Link") || ""; + if (link) + link += ", "; + return this.set("Link", link + Object.keys(links).map(function(rel) { + return "<" + links[rel] + '>; rel="' + rel + '"'; + }).join(", ")); + }; + res.send = function send2(body) { + var chunk = body; + var encoding; + var req = this.req; + var type; + var app = this.app; + if (arguments.length === 2) { + if (typeof arguments[0] !== "number" && typeof arguments[1] === "number") { + deprecate("res.send(body, status): Use res.status(status).send(body) instead"); + this.statusCode = arguments[1]; + } else { + deprecate("res.send(status, body): Use res.status(status).send(body) instead"); + this.statusCode = arguments[0]; + chunk = arguments[1]; + } + } + if (typeof chunk === "number" && arguments.length === 1) { + if (!this.get("Content-Type")) { + this.type("txt"); + } + deprecate("res.send(status): Use res.sendStatus(status) instead"); + this.statusCode = chunk; + chunk = statuses.message[chunk]; + } + switch (typeof chunk) { + case "string": + if (!this.get("Content-Type")) { + this.type("html"); + } + break; + case "boolean": + case "number": + case "object": + if (chunk === null) { + chunk = ""; + } else if (Buffer2.isBuffer(chunk)) { + if (!this.get("Content-Type")) { + this.type("bin"); + } + } else { + return this.json(chunk); + } + break; + } + if (typeof chunk === "string") { + encoding = "utf8"; + type = this.get("Content-Type"); + if (typeof type === "string") { + this.set("Content-Type", setCharset(type, "utf-8")); + } + } + var etagFn = app.get("etag fn"); + var generateETag = !this.get("ETag") && typeof etagFn === "function"; + var len; + if (chunk !== void 0) { + if (Buffer2.isBuffer(chunk)) { + len = chunk.length; + } else if (!generateETag && chunk.length < 1e3) { + len = Buffer2.byteLength(chunk, encoding); + } else { + chunk = Buffer2.from(chunk, encoding); + encoding = void 0; + len = chunk.length; + } + this.set("Content-Length", len); + } + var etag; + if (generateETag && len !== void 0) { + if (etag = etagFn(chunk, encoding)) { + this.set("ETag", etag); + } + } + if (req.fresh) + this.statusCode = 304; + if (this.statusCode === 204 || this.statusCode === 304) { + this.removeHeader("Content-Type"); + this.removeHeader("Content-Length"); + this.removeHeader("Transfer-Encoding"); + chunk = ""; + } + if (this.statusCode === 205) { + this.set("Content-Length", "0"); + this.removeHeader("Transfer-Encoding"); + chunk = ""; + } + if (req.method === "HEAD") { + this.end(); + } else { + this.end(chunk, encoding); + } + return this; + }; + res.json = function json(obj) { + var val = obj; + if (arguments.length === 2) { + if (typeof arguments[1] === "number") { + deprecate("res.json(obj, status): Use res.status(status).json(obj) instead"); + this.statusCode = arguments[1]; + } else { + deprecate("res.json(status, obj): Use res.status(status).json(obj) instead"); + this.statusCode = arguments[0]; + val = arguments[1]; + } + } + var app = this.app; + var escape2 = app.get("json escape"); + var replacer = app.get("json replacer"); + var spaces = app.get("json spaces"); + var body = stringify(val, replacer, spaces, escape2); + if (!this.get("Content-Type")) { + this.set("Content-Type", "application/json"); + } + return this.send(body); + }; + res.jsonp = function jsonp(obj) { + var val = obj; + if (arguments.length === 2) { + if (typeof arguments[1] === "number") { + deprecate("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"); + this.statusCode = arguments[1]; + } else { + deprecate("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"); + this.statusCode = arguments[0]; + val = arguments[1]; + } + } + var app = this.app; + var escape2 = app.get("json escape"); + var replacer = app.get("json replacer"); + var spaces = app.get("json spaces"); + var body = stringify(val, replacer, spaces, escape2); + var callback = this.req.query[app.get("jsonp callback name")]; + if (!this.get("Content-Type")) { + this.set("X-Content-Type-Options", "nosniff"); + this.set("Content-Type", "application/json"); + } + if (Array.isArray(callback)) { + callback = callback[0]; + } + if (typeof callback === "string" && callback.length !== 0) { + this.set("X-Content-Type-Options", "nosniff"); + this.set("Content-Type", "text/javascript"); + callback = callback.replace(/[^\[\]\w$.]/g, ""); + if (body === void 0) { + body = ""; + } else if (typeof body === "string") { + body = body.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); + } + body = "/**/ typeof " + callback + " === 'function' && " + callback + "(" + body + ");"; + } + return this.send(body); + }; + res.sendStatus = function sendStatus(statusCode) { + var body = statuses.message[statusCode] || String(statusCode); + this.statusCode = statusCode; + this.type("txt"); + return this.send(body); + }; + res.sendFile = function sendFile(path3, options, callback) { + var done = callback; + var req = this.req; + var res2 = this; + var next = req.next; + var opts = options || {}; + if (!path3) { + throw new TypeError("path argument is required to res.sendFile"); + } + if (typeof path3 !== "string") { + throw new TypeError("path must be a string to res.sendFile"); + } + if (typeof options === "function") { + done = options; + opts = {}; + } + if (!opts.root && !isAbsolute(path3)) { + throw new TypeError("path must be absolute or specify root to res.sendFile"); + } + var pathname = encodeURI(path3); + var file = send(req, pathname, opts); + sendfile(res2, file, opts, function(err) { + if (done) + return done(err); + if (err && err.code === "EISDIR") + return next(); + if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") { + next(err); + } + }); + }; + res.sendfile = function(path3, options, callback) { + var done = callback; + var req = this.req; + var res2 = this; + var next = req.next; + var opts = options || {}; + if (typeof options === "function") { + done = options; + opts = {}; + } + var file = send(req, path3, opts); + sendfile(res2, file, opts, function(err) { + if (done) + return done(err); + if (err && err.code === "EISDIR") + return next(); + if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") { + next(err); + } + }); + }; + res.sendfile = deprecate.function(res.sendfile, "res.sendfile: Use res.sendFile instead"); + res.download = function download(path3, filename, options, callback) { + var done = callback; + var name = filename; + var opts = options || null; + if (typeof filename === "function") { + done = filename; + name = null; + opts = null; + } else if (typeof options === "function") { + done = options; + opts = null; + } + if (typeof filename === "object" && (typeof options === "function" || options === void 0)) { + name = null; + opts = filename; + } + var headers = { + "Content-Disposition": contentDisposition(name || path3) + }; + if (opts && opts.headers) { + var keys = Object.keys(opts.headers); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key.toLowerCase() !== "content-disposition") { + headers[key] = opts.headers[key]; + } + } + } + opts = Object.create(opts); + opts.headers = headers; + var fullPath = !opts.root ? resolve(path3) : path3; + return this.sendFile(fullPath, opts, done); + }; + res.contentType = res.type = function contentType(type) { + var ct = type.indexOf("/") === -1 ? mime2.lookup(type) : type; + return this.set("Content-Type", ct); + }; + res.format = function(obj) { + var req = this.req; + var next = req.next; + var keys = Object.keys(obj).filter(function(v) { + return v !== "default"; + }); + var key = keys.length > 0 ? req.accepts(keys) : false; + this.vary("Accept"); + if (key) { + this.set("Content-Type", normalizeType(key).value); + obj[key](req, this, next); + } else if (obj.default) { + obj.default(req, this, next); + } else { + next(createError(406, { + types: normalizeTypes(keys).map(function(o) { + return o.value; + }) + })); + } + return this; + }; + res.attachment = function attachment(filename) { + if (filename) { + this.type(extname(filename)); + } + this.set("Content-Disposition", contentDisposition(filename)); + return this; + }; + res.append = function append(field, val) { + var prev = this.get(field); + var value = val; + if (prev) { + value = Array.isArray(prev) ? prev.concat(val) : Array.isArray(val) ? [prev].concat(val) : [prev, val]; + } + return this.set(field, value); + }; + res.set = res.header = function header(field, val) { + if (arguments.length === 2) { + var value = Array.isArray(val) ? val.map(String) : String(val); + if (field.toLowerCase() === "content-type") { + if (Array.isArray(value)) { + throw new TypeError("Content-Type cannot be set to an Array"); + } + if (!charsetRegExp.test(value)) { + var charset = mime2.charsets.lookup(value.split(";")[0]); + if (charset) + value += "; charset=" + charset.toLowerCase(); + } + } + this.setHeader(field, value); + } else { + for (var key in field) { + this.set(key, field[key]); + } + } + return this; + }; + res.get = function(field) { + return this.getHeader(field); + }; + res.clearCookie = function clearCookie(name, options) { + if (options) { + if (options.maxAge) { + deprecate('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); + } + if (options.expires) { + deprecate('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); + } + } + var opts = merge({ expires: new Date(1), path: "/" }, options); + return this.cookie(name, "", opts); + }; + res.cookie = function(name, value, options) { + var opts = merge({}, options); + var secret = this.req.secret; + var signed = opts.signed; + if (signed && !secret) { + throw new Error('cookieParser("secret") required for signed cookies'); + } + var val = typeof value === "object" ? "j:" + JSON.stringify(value) : String(value); + if (signed) { + val = "s:" + sign(val, secret); + } + if (opts.maxAge != null) { + var maxAge = opts.maxAge - 0; + if (!isNaN(maxAge)) { + opts.expires = new Date(Date.now() + maxAge); + opts.maxAge = Math.floor(maxAge / 1e3); + } + } + if (opts.path == null) { + opts.path = "/"; + } + this.append("Set-Cookie", cookie.serialize(name, String(val), opts)); + return this; + }; + res.location = function location(url) { + var loc; + if (url === "back") { + deprecate('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'); + loc = this.req.get("Referrer") || "/"; + } else { + loc = String(url); + } + return this.set("Location", encodeUrl(loc)); + }; + res.redirect = function redirect(url) { + var address = url; + var body; + var status = 302; + if (arguments.length === 2) { + if (typeof arguments[0] === "number") { + status = arguments[0]; + address = arguments[1]; + } else { + deprecate("res.redirect(url, status): Use res.redirect(status, url) instead"); + status = arguments[1]; + } + } + address = this.location(address).get("Location"); + this.format({ + text: function() { + body = statuses.message[status] + ". Redirecting to " + address; + }, + html: function() { + var u = escapeHtml(address); + body = "

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

"; + }, + default: function() { + body = ""; + } + }); + this.statusCode = status; + this.set("Content-Length", Buffer2.byteLength(body)); + if (this.req.method === "HEAD") { + this.end(); + } else { + this.end(body); + } + }; + res.vary = function(field) { + if (!field || Array.isArray(field) && !field.length) { + deprecate("res.vary(): Provide a field name"); + return this; + } + vary(this, field); + return this; + }; + res.render = function render(view, options, callback) { + var app = this.req.app; + var done = callback; + var opts = options || {}; + var req = this.req; + var self2 = this; + if (typeof options === "function") { + done = options; + opts = {}; + } + opts._locals = self2.locals; + done = done || function(err, str) { + if (err) + return req.next(err); + self2.send(str); + }; + app.render(view, opts, done); + }; + function sendfile(res2, file, options, callback) { + var done = false; + var streaming; + function onaborted() { + if (done) + return; + done = true; + var err = new Error("Request aborted"); + err.code = "ECONNABORTED"; + callback(err); + } + function ondirectory() { + if (done) + return; + done = true; + var err = new Error("EISDIR, read"); + err.code = "EISDIR"; + callback(err); + } + function onerror(err) { + if (done) + return; + done = true; + callback(err); + } + function onend() { + if (done) + return; + done = true; + callback(); + } + function onfile() { + streaming = false; + } + function onfinish(err) { + if (err && err.code === "ECONNRESET") + return onaborted(); + if (err) + return onerror(err); + if (done) + return; + setImmediate(function() { + if (streaming !== false && !done) { + onaborted(); + return; + } + if (done) + return; + done = true; + callback(); + }); + } + function onstream() { + streaming = true; + } + file.on("directory", ondirectory); + file.on("end", onend); + file.on("error", onerror); + file.on("file", onfile); + file.on("stream", onstream); + onFinished(res2, onfinish); + if (options.headers) { + file.on("headers", function headers(res3) { + var obj = options.headers; + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + res3.setHeader(k, obj[k]); + } + }); + } + file.pipe(res2); + } + function stringify(value, replacer, spaces, escape2) { + var json = replacer || spaces ? JSON.stringify(value, replacer, spaces) : JSON.stringify(value); + if (escape2 && typeof json === "string") { + json = json.replace(/[<>&]/g, function(c) { + switch (c.charCodeAt(0)) { + case 60: + return "\\u003c"; + case 62: + return "\\u003e"; + case 38: + return "\\u0026"; + default: + return c; + } + }); + } + return json; + } + } +}); + +// node_modules/serve-static/index.js +var require_serve_static = __commonJS({ + "node_modules/serve-static/index.js"(exports, module2) { + "use strict"; + var encodeUrl = require_encodeurl(); + var escapeHtml = require_escape_html(); + var parseUrl = require_parseurl(); + var resolve = require("path").resolve; + var send = require_send(); + var url = require("url"); + module2.exports = serveStatic; + module2.exports.mime = send.mime; + function serveStatic(root, options) { + if (!root) { + throw new TypeError("root path required"); + } + if (typeof root !== "string") { + throw new TypeError("root path must be a string"); + } + var opts = Object.create(options || null); + var fallthrough = opts.fallthrough !== false; + var redirect = opts.redirect !== false; + var setHeaders = opts.setHeaders; + if (setHeaders && typeof setHeaders !== "function") { + throw new TypeError("option setHeaders must be function"); + } + opts.maxage = opts.maxage || opts.maxAge || 0; + opts.root = resolve(root); + var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener(); + return function serveStatic2(req, res, next) { + if (req.method !== "GET" && req.method !== "HEAD") { + if (fallthrough) { + return next(); + } + res.statusCode = 405; + res.setHeader("Allow", "GET, HEAD"); + res.setHeader("Content-Length", "0"); + res.end(); + return; + } + var forwardError = !fallthrough; + var originalUrl = parseUrl.original(req); + var path2 = parseUrl(req).pathname; + if (path2 === "/" && originalUrl.pathname.substr(-1) !== "/") { + path2 = ""; + } + var stream = send(req, path2, opts); + stream.on("directory", onDirectory); + if (setHeaders) { + stream.on("headers", setHeaders); + } + if (fallthrough) { + stream.on("file", function onFile() { + forwardError = true; + }); + } + stream.on("error", function error(err) { + if (forwardError || !(err.statusCode < 500)) { + next(err); + return; + } + next(); + }); + stream.pipe(res); + }; + } + function collapseLeadingSlashes(str) { + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) !== 47) { + break; + } + } + return i > 1 ? "/" + str.substr(i) : str; + } + function createHtmlDocument(title, body) { + return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; + } + function createNotFoundDirectoryListener() { + return function notFound() { + this.error(404); + }; + } + function createRedirectDirectoryListener() { + return function redirect(res) { + if (this.hasTrailingSlash()) { + this.error(404); + return; + } + var originalUrl = parseUrl.original(this.req); + originalUrl.path = null; + originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + "/"); + var loc = encodeUrl(url.format(originalUrl)); + var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); + res.statusCode = 301; + res.setHeader("Content-Type", "text/html; charset=UTF-8"); + res.setHeader("Content-Length", Buffer.byteLength(doc)); + res.setHeader("Content-Security-Policy", "default-src 'none'"); + res.setHeader("X-Content-Type-Options", "nosniff"); + res.setHeader("Location", loc); + res.end(doc); + }; + } + } +}); + +// node_modules/express/lib/express.js +var require_express = __commonJS({ + "node_modules/express/lib/express.js"(exports, module2) { + "use strict"; + var bodyParser2 = require_body_parser(); + var EventEmitter = require("events").EventEmitter; + var mixin = require_merge_descriptors(); + var proto = require_application(); + var Route = require_route(); + var Router = require_router(); + var req = require_request(); + var res = require_response(); + exports = module2.exports = createApplication; + function createApplication() { + var app = function(req2, res2, next) { + app.handle(req2, res2, next); + }; + mixin(app, EventEmitter.prototype, false); + mixin(app, proto, false); + app.request = Object.create(req, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }); + app.response = Object.create(res, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }); + app.init(); + return app; + } + exports.application = proto; + exports.request = req; + exports.response = res; + exports.Route = Route; + exports.Router = Router; + exports.json = bodyParser2.json; + exports.query = require_query(); + exports.raw = bodyParser2.raw; + exports.static = require_serve_static(); + exports.text = bodyParser2.text; + exports.urlencoded = bodyParser2.urlencoded; + var removedMiddlewares = [ + "bodyParser", + "compress", + "cookieSession", + "session", + "logger", + "cookieParser", + "favicon", + "responseTime", + "errorHandler", + "timeout", + "methodOverride", + "vhost", + "csrf", + "directory", + "limit", + "multipart", + "staticCache" + ]; + removedMiddlewares.forEach(function(name) { + Object.defineProperty(exports, name, { + get: function() { + throw new Error("Most middleware (like " + name + ") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware."); + }, + configurable: true + }); + }); + } +}); + +// node_modules/express/index.js +var require_express2 = __commonJS({ + "node_modules/express/index.js"(exports, module2) { + "use strict"; + module2.exports = require_express(); + } +}); + +// node_modules/object-assign/index.js +var require_object_assign = __commonJS({ + "node_modules/object-assign/index.js"(exports, module2) { + "use strict"; + var getOwnPropertySymbols = Object.getOwnPropertySymbols; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var propIsEnumerable = Object.prototype.propertyIsEnumerable; + function toObject(val) { + if (val === null || val === void 0) { + throw new TypeError("Object.assign cannot be called with null or undefined"); + } + return Object(val); + } + function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + var test1 = new String("abc"); + test1[5] = "de"; + if (Object.getOwnPropertyNames(test1)[0] === "5") { + return false; + } + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2["_" + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function(n) { + return test2[n]; + }); + if (order2.join("") !== "0123456789") { + return false; + } + var test3 = {}; + "abcdefghijklmnopqrst".split("").forEach(function(letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { + return false; + } + return true; + } catch (err) { + return false; + } + } + module2.exports = shouldUseNative() ? Object.assign : function(target, source) { + var from; + var to = toObject(target); + var symbols; + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + return to; + }; + } +}); + +// node_modules/cors/lib/index.js +var require_lib5 = __commonJS({ + "node_modules/cors/lib/index.js"(exports, module2) { + (function() { + "use strict"; + var assign = require_object_assign(); + var vary = require_vary(); + var defaults = { + origin: "*", + methods: "GET,HEAD,PUT,PATCH,POST,DELETE", + preflightContinue: false, + optionsSuccessStatus: 204 + }; + function isString(s) { + return typeof s === "string" || s instanceof String; + } + function isOriginAllowed(origin, allowedOrigin) { + if (Array.isArray(allowedOrigin)) { + for (var i = 0; i < allowedOrigin.length; ++i) { + if (isOriginAllowed(origin, allowedOrigin[i])) { + return true; + } + } + return false; + } else if (isString(allowedOrigin)) { + return origin === allowedOrigin; + } else if (allowedOrigin instanceof RegExp) { + return allowedOrigin.test(origin); + } else { + return !!allowedOrigin; + } + } + function configureOrigin(options, req) { + var requestOrigin = req.headers.origin, headers = [], isAllowed; + if (!options.origin || options.origin === "*") { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: "*" + }]); + } else if (isString(options.origin)) { + headers.push([{ + key: "Access-Control-Allow-Origin", + value: options.origin + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } else { + isAllowed = isOriginAllowed(requestOrigin, options.origin); + headers.push([{ + key: "Access-Control-Allow-Origin", + value: isAllowed ? requestOrigin : false + }]); + headers.push([{ + key: "Vary", + value: "Origin" + }]); + } + return headers; + } + function configureMethods(options) { + var methods = options.methods; + if (methods.join) { + methods = options.methods.join(","); + } + return { + key: "Access-Control-Allow-Methods", + value: methods + }; + } + function configureCredentials(options) { + if (options.credentials === true) { + return { + key: "Access-Control-Allow-Credentials", + value: "true" + }; + } + return null; + } + function configureAllowedHeaders(options, req) { + var allowedHeaders = options.allowedHeaders || options.headers; + var headers = []; + if (!allowedHeaders) { + allowedHeaders = req.headers["access-control-request-headers"]; + headers.push([{ + key: "Vary", + value: "Access-Control-Request-Headers" + }]); + } else if (allowedHeaders.join) { + allowedHeaders = allowedHeaders.join(","); + } + if (allowedHeaders && allowedHeaders.length) { + headers.push([{ + key: "Access-Control-Allow-Headers", + value: allowedHeaders + }]); + } + return headers; + } + function configureExposedHeaders(options) { + var headers = options.exposedHeaders; + if (!headers) { + return null; + } else if (headers.join) { + headers = headers.join(","); + } + if (headers && headers.length) { + return { + key: "Access-Control-Expose-Headers", + value: headers + }; + } + return null; + } + function configureMaxAge(options) { + var maxAge = (typeof options.maxAge === "number" || options.maxAge) && options.maxAge.toString(); + if (maxAge && maxAge.length) { + return { + key: "Access-Control-Max-Age", + value: maxAge + }; + } + return null; + } + function applyHeaders(headers, res) { + for (var i = 0, n = headers.length; i < n; i++) { + var header = headers[i]; + if (header) { + if (Array.isArray(header)) { + applyHeaders(header, res); + } else if (header.key === "Vary" && header.value) { + vary(res, header.value); + } else if (header.value) { + res.setHeader(header.key, header.value); + } + } + } + } + function cors2(options, req, res, next) { + var headers = [], method = req.method && req.method.toUpperCase && req.method.toUpperCase(); + if (method === "OPTIONS") { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options, req)); + headers.push(configureMethods(options, req)); + headers.push(configureAllowedHeaders(options, req)); + headers.push(configureMaxAge(options, req)); + headers.push(configureExposedHeaders(options, req)); + applyHeaders(headers, res); + if (options.preflightContinue) { + next(); + } else { + res.statusCode = options.optionsSuccessStatus; + res.setHeader("Content-Length", "0"); + res.end(); + } + } else { + headers.push(configureOrigin(options, req)); + headers.push(configureCredentials(options, req)); + headers.push(configureExposedHeaders(options, req)); + applyHeaders(headers, res); + next(); + } + } + function middlewareWrapper(o) { + var optionsCallback = null; + if (typeof o === "function") { + optionsCallback = o; + } else { + optionsCallback = function(req, cb) { + cb(null, o); + }; + } + return function corsMiddleware(req, res, next) { + optionsCallback(req, function(err, options) { + if (err) { + next(err); + } else { + var corsOptions = assign({}, defaults, options); + var originCallback = null; + if (corsOptions.origin && typeof corsOptions.origin === "function") { + originCallback = corsOptions.origin; + } else if (corsOptions.origin) { + originCallback = function(origin, cb) { + cb(null, corsOptions.origin); + }; + } + if (originCallback) { + originCallback(req.headers.origin, function(err2, origin) { + if (err2 || !origin) { + next(err2); + } else { + corsOptions.origin = origin; + cors2(corsOptions, req, res, next); + } + }); + } else { + next(); + } + } + }); + }; + } + module2.exports = middlewareWrapper; + })(); + } +}); + +// node_modules/json-logic-js/logic.js +var require_logic = __commonJS({ + "node_modules/json-logic-js/logic.js"(exports, module2) { + (function(root, factory) { + if (typeof define === "function" && define.amd) { + define(factory); + } else if (typeof exports === "object") { + module2.exports = factory(); + } else { + root.jsonLogic = factory(); + } + })(exports, function() { + "use strict"; + if (!Array.isArray) { + Array.isArray = function(arg) { + return Object.prototype.toString.call(arg) === "[object Array]"; + }; + } + function arrayUnique(array) { + var a = []; + for (var i = 0, l = array.length; i < l; i++) { + if (a.indexOf(array[i]) === -1) { + a.push(array[i]); + } + } + return a; + } + var jsonLogic2 = {}; + var operations = { + "==": function(a, b) { + return a == b; + }, + "===": function(a, b) { + return a === b; + }, + "!=": function(a, b) { + return a != b; + }, + "!==": function(a, b) { + return a !== b; + }, + ">": function(a, b) { + return a > b; + }, + ">=": function(a, b) { + return a >= b; + }, + "<": function(a, b, c) { + return c === void 0 ? a < b : a < b && b < c; + }, + "<=": function(a, b, c) { + return c === void 0 ? a <= b : a <= b && b <= c; + }, + "!!": function(a) { + return jsonLogic2.truthy(a); + }, + "!": function(a) { + return !jsonLogic2.truthy(a); + }, + "%": function(a, b) { + return a % b; + }, + "log": function(a) { + console.log(a); + return a; + }, + "in": function(a, b) { + if (!b || typeof b.indexOf === "undefined") + return false; + return b.indexOf(a) !== -1; + }, + "cat": function() { + return Array.prototype.join.call(arguments, ""); + }, + "substr": function(source, start, end) { + if (end < 0) { + var temp = String(source).substr(start); + return temp.substr(0, temp.length + end); + } + return String(source).substr(start, end); + }, + "+": function() { + return Array.prototype.reduce.call(arguments, function(a, b) { + return parseFloat(a, 10) + parseFloat(b, 10); + }, 0); + }, + "*": function() { + return Array.prototype.reduce.call(arguments, function(a, b) { + return parseFloat(a, 10) * parseFloat(b, 10); + }); + }, + "-": function(a, b) { + if (b === void 0) { + return -a; + } else { + return a - b; + } + }, + "/": function(a, b) { + return a / b; + }, + "min": function() { + return Math.min.apply(this, arguments); + }, + "max": function() { + return Math.max.apply(this, arguments); + }, + "merge": function() { + return Array.prototype.reduce.call(arguments, function(a, b) { + return a.concat(b); + }, []); + }, + "var": function(a, b) { + var not_found = b === void 0 ? null : b; + var data = this; + if (typeof a === "undefined" || a === "" || a === null) { + return data; + } + var sub_props = String(a).split("."); + for (var i = 0; i < sub_props.length; i++) { + if (data === null || data === void 0) { + return not_found; + } + data = data[sub_props[i]]; + if (data === void 0) { + return not_found; + } + } + return data; + }, + "missing": function() { + var missing = []; + var keys = Array.isArray(arguments[0]) ? arguments[0] : arguments; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = jsonLogic2.apply({ "var": key }, this); + if (value === null || value === "") { + missing.push(key); + } + } + return missing; + }, + "missing_some": function(need_count, options) { + var are_missing = jsonLogic2.apply({ "missing": options }, this); + if (options.length - are_missing.length >= need_count) { + return []; + } else { + return are_missing; + } + } + }; + jsonLogic2.is_logic = function(logic) { + return typeof logic === "object" && logic !== null && !Array.isArray(logic) && Object.keys(logic).length === 1; + }; + jsonLogic2.truthy = function(value) { + if (Array.isArray(value) && value.length === 0) { + return false; + } + return !!value; + }; + jsonLogic2.get_operator = function(logic) { + return Object.keys(logic)[0]; + }; + jsonLogic2.get_values = function(logic) { + return logic[jsonLogic2.get_operator(logic)]; + }; + jsonLogic2.apply = function(logic, data) { + if (Array.isArray(logic)) { + return logic.map(function(l) { + return jsonLogic2.apply(l, data); + }); + } + if (!jsonLogic2.is_logic(logic)) { + return logic; + } + var op = jsonLogic2.get_operator(logic); + var values = logic[op]; + var i; + var current; + var scopedLogic; + var scopedData; + var initial; + if (!Array.isArray(values)) { + values = [values]; + } + if (op === "if" || op == "?:") { + for (i = 0; i < values.length - 1; i += 2) { + if (jsonLogic2.truthy(jsonLogic2.apply(values[i], data))) { + return jsonLogic2.apply(values[i + 1], data); + } + } + if (values.length === i + 1) { + return jsonLogic2.apply(values[i], data); + } + return null; + } else if (op === "and") { + for (i = 0; i < values.length; i += 1) { + current = jsonLogic2.apply(values[i], data); + if (!jsonLogic2.truthy(current)) { + return current; + } + } + return current; + } else if (op === "or") { + for (i = 0; i < values.length; i += 1) { + current = jsonLogic2.apply(values[i], data); + if (jsonLogic2.truthy(current)) { + return current; + } + } + return current; + } else if (op === "filter") { + scopedData = jsonLogic2.apply(values[0], data); + scopedLogic = values[1]; + if (!Array.isArray(scopedData)) { + return []; + } + return scopedData.filter(function(datum) { + return jsonLogic2.truthy(jsonLogic2.apply(scopedLogic, datum)); + }); + } else if (op === "map") { + scopedData = jsonLogic2.apply(values[0], data); + scopedLogic = values[1]; + if (!Array.isArray(scopedData)) { + return []; + } + return scopedData.map(function(datum) { + return jsonLogic2.apply(scopedLogic, datum); + }); + } else if (op === "reduce") { + scopedData = jsonLogic2.apply(values[0], data); + scopedLogic = values[1]; + initial = typeof values[2] !== "undefined" ? jsonLogic2.apply(values[2], data) : null; + if (!Array.isArray(scopedData)) { + return initial; + } + return scopedData.reduce(function(accumulator, current2) { + return jsonLogic2.apply(scopedLogic, { current: current2, accumulator }); + }, initial); + } else if (op === "all") { + scopedData = jsonLogic2.apply(values[0], data); + scopedLogic = values[1]; + if (!Array.isArray(scopedData) || !scopedData.length) { + return false; + } + for (i = 0; i < scopedData.length; i += 1) { + if (!jsonLogic2.truthy(jsonLogic2.apply(scopedLogic, scopedData[i]))) { + return false; + } + } + return true; + } else if (op === "none") { + scopedData = jsonLogic2.apply(values[0], data); + scopedLogic = values[1]; + if (!Array.isArray(scopedData) || !scopedData.length) { + return true; + } + for (i = 0; i < scopedData.length; i += 1) { + if (jsonLogic2.truthy(jsonLogic2.apply(scopedLogic, scopedData[i]))) { + return false; + } + } + return true; + } else if (op === "some") { + scopedData = jsonLogic2.apply(values[0], data); + scopedLogic = values[1]; + if (!Array.isArray(scopedData) || !scopedData.length) { + return false; + } + for (i = 0; i < scopedData.length; i += 1) { + if (jsonLogic2.truthy(jsonLogic2.apply(scopedLogic, scopedData[i]))) { + return true; + } + } + return false; + } + values = values.map(function(val) { + return jsonLogic2.apply(val, data); + }); + if (operations.hasOwnProperty(op) && typeof operations[op] === "function") { + return operations[op].apply(data, values); + } else if (op.indexOf(".") > 0) { + var sub_ops = String(op).split("."); + var operation = operations; + for (i = 0; i < sub_ops.length; i++) { + if (!operation.hasOwnProperty(sub_ops[i])) { + throw new Error("Unrecognized operation " + op + " (failed at " + sub_ops.slice(0, i + 1).join(".") + ")"); + } + operation = operation[sub_ops[i]]; + } + return operation.apply(data, values); + } + throw new Error("Unrecognized operation " + op); + }; + jsonLogic2.uses_data = function(logic) { + var collection = []; + if (jsonLogic2.is_logic(logic)) { + var op = jsonLogic2.get_operator(logic); + var values = logic[op]; + if (!Array.isArray(values)) { + values = [values]; + } + if (op === "var") { + collection.push(values[0]); + } else { + values.forEach(function(val) { + collection.push.apply(collection, jsonLogic2.uses_data(val)); + }); + } + } + return arrayUnique(collection); + }; + jsonLogic2.add_operation = function(name, code) { + operations[name] = code; + }; + jsonLogic2.rm_operation = function(name) { + delete operations[name]; + }; + jsonLogic2.rule_like = function(rule, pattern) { + if (pattern === rule) { + return true; + } + if (pattern === "@") { + return true; + } + if (pattern === "number") { + return typeof rule === "number"; + } + if (pattern === "string") { + return typeof rule === "string"; + } + if (pattern === "array") { + return Array.isArray(rule) && !jsonLogic2.is_logic(rule); + } + if (jsonLogic2.is_logic(pattern)) { + if (jsonLogic2.is_logic(rule)) { + var pattern_op = jsonLogic2.get_operator(pattern); + var rule_op = jsonLogic2.get_operator(rule); + if (pattern_op === "@" || pattern_op === rule_op) { + return jsonLogic2.rule_like(jsonLogic2.get_values(rule, false), jsonLogic2.get_values(pattern, false)); + } + } + return false; + } + if (Array.isArray(pattern)) { + if (Array.isArray(rule)) { + if (pattern.length !== rule.length) { + return false; + } + for (var i = 0; i < pattern.length; i += 1) { + if (!jsonLogic2.rule_like(rule[i], pattern[i])) { + return false; + } + } + return true; + } else { + return false; + } + } + return false; + }; + return jsonLogic2; + }); + } +}); + +// node_modules/on-headers/index.js +var require_on_headers = __commonJS({ + "node_modules/on-headers/index.js"(exports, module2) { + "use strict"; + module2.exports = onHeaders; + function createWriteHead(prevWriteHead, listener) { + var fired = false; + return function writeHead(statusCode) { + var args = setWriteHeadHeaders.apply(this, arguments); + if (!fired) { + fired = true; + listener.call(this); + if (typeof args[0] === "number" && this.statusCode !== args[0]) { + args[0] = this.statusCode; + args.length = 1; + } + } + return prevWriteHead.apply(this, args); + }; + } + function onHeaders(res, listener) { + if (!res) { + throw new TypeError("argument res is required"); + } + if (typeof listener !== "function") { + throw new TypeError("argument listener must be a function"); + } + res.writeHead = createWriteHead(res.writeHead, listener); + } + function setHeadersFromArray(res, headers) { + for (var i = 0; i < headers.length; i++) { + res.setHeader(headers[i][0], headers[i][1]); + } + } + function setHeadersFromObject(res, headers) { + var keys = Object.keys(headers); + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + if (k) + res.setHeader(k, headers[k]); + } + } + function setWriteHeadHeaders(statusCode) { + var length = arguments.length; + var headerIndex = length > 1 && typeof arguments[1] === "string" ? 2 : 1; + var headers = length >= headerIndex + 1 ? arguments[headerIndex] : void 0; + this.statusCode = statusCode; + if (Array.isArray(headers)) { + setHeadersFromArray(this, headers); + } else if (headers) { + setHeadersFromObject(this, headers); + } + var args = new Array(Math.min(length, headerIndex)); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return args; + } + } +}); + +// node_modules/response-time/index.js +var require_response_time = __commonJS({ + "node_modules/response-time/index.js"(exports, module2) { + "use strict"; + var deprecate = require_depd()("response-time"); + var onHeaders = require_on_headers(); + module2.exports = responseTime2; + function responseTime2(options) { + var opts = options || {}; + if (typeof options === "number") { + deprecate("number argument: use {digits: " + JSON.stringify(options) + "} instead"); + opts = { digits: options }; + } + var fn = typeof opts !== "function" ? createSetHeader(opts) : opts; + return function responseTime3(req, res, next) { + var startAt = process.hrtime(); + onHeaders(res, function onHeaders2() { + var diff = process.hrtime(startAt); + var time = diff[0] * 1e3 + diff[1] * 1e-6; + fn(req, res, time); + }); + next(); + }; + } + function createSetHeader(options) { + var digits = options.digits !== void 0 ? options.digits : 3; + var header = options.header || "X-Response-Time"; + var suffix = options.suffix !== void 0 ? Boolean(options.suffix) : true; + return function setResponseHeader(req, res, time) { + if (res.getHeader(header)) { + return; + } + var val = time.toFixed(digits); + if (suffix) { + val += "ms"; + } + res.setHeader(header, val); + }; + } + } +}); + +// node_modules/strict-uri-encode/index.js +var require_strict_uri_encode = __commonJS({ + "node_modules/strict-uri-encode/index.js"(exports, module2) { + "use strict"; + module2.exports = (str) => encodeURIComponent(str).replace(/[!'()*]/g, (x) => `%${x.charCodeAt(0).toString(16).toUpperCase()}`); + } +}); + +// node_modules/decode-uri-component/index.js +var require_decode_uri_component = __commonJS({ + "node_modules/decode-uri-component/index.js"(exports, module2) { + "use strict"; + var token = "%[a-f0-9]{2}"; + var singleMatcher = new RegExp("(" + token + ")|([^%]+?)", "gi"); + var multiMatcher = new RegExp("(" + token + ")+", "gi"); + function decodeComponents(components, split) { + try { + return [decodeURIComponent(components.join(""))]; + } catch (err) { + } + if (components.length === 1) { + return components; + } + split = split || 1; + var left = components.slice(0, split); + var right = components.slice(split); + return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right)); + } + function decode(input) { + try { + return decodeURIComponent(input); + } catch (err) { + var tokens = input.match(singleMatcher) || []; + for (var i = 1; i < tokens.length; i++) { + input = decodeComponents(tokens, i).join(""); + tokens = input.match(singleMatcher) || []; + } + return input; + } + } + function customDecodeURIComponent(input) { + var replaceMap = { + "%FE%FF": "\uFFFD\uFFFD", + "%FF%FE": "\uFFFD\uFFFD" + }; + var match = multiMatcher.exec(input); + while (match) { + try { + replaceMap[match[0]] = decodeURIComponent(match[0]); + } catch (err) { + var result = decode(match[0]); + if (result !== match[0]) { + replaceMap[match[0]] = result; + } + } + match = multiMatcher.exec(input); + } + replaceMap["%C2"] = "\uFFFD"; + var entries = Object.keys(replaceMap); + for (var i = 0; i < entries.length; i++) { + var key = entries[i]; + input = input.replace(new RegExp(key, "g"), replaceMap[key]); + } + return input; + } + module2.exports = function(encodedURI) { + if (typeof encodedURI !== "string") { + throw new TypeError("Expected `encodedURI` to be of type `string`, got `" + typeof encodedURI + "`"); + } + try { + encodedURI = encodedURI.replace(/\+/g, " "); + return decodeURIComponent(encodedURI); + } catch (err) { + return customDecodeURIComponent(encodedURI); + } + }; + } +}); + +// node_modules/split-on-first/index.js +var require_split_on_first = __commonJS({ + "node_modules/split-on-first/index.js"(exports, module2) { + "use strict"; + module2.exports = (string, separator) => { + if (!(typeof string === "string" && typeof separator === "string")) { + throw new TypeError("Expected the arguments to be of type `string`"); + } + if (separator === "") { + return [string]; + } + const separatorIndex = string.indexOf(separator); + if (separatorIndex === -1) { + return [string]; + } + return [ + string.slice(0, separatorIndex), + string.slice(separatorIndex + separator.length) + ]; + }; + } +}); + +// node_modules/filter-obj/index.js +var require_filter_obj = __commonJS({ + "node_modules/filter-obj/index.js"(exports, module2) { + "use strict"; + module2.exports = function(obj, predicate) { + var ret = {}; + var keys = Object.keys(obj); + var isArr = Array.isArray(predicate); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var val = obj[key]; + if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) { + ret[key] = val; + } + } + return ret; + }; + } +}); + +// node_modules/query-string/index.js +var require_query_string = __commonJS({ + "node_modules/query-string/index.js"(exports) { + "use strict"; + var strictUriEncode = require_strict_uri_encode(); + var decodeComponent = require_decode_uri_component(); + var splitOnFirst = require_split_on_first(); + var filterObject = require_filter_obj(); + var isNullOrUndefined = (value) => value === null || value === void 0; + var encodeFragmentIdentifier = Symbol("encodeFragmentIdentifier"); + function encoderForArrayFormat(options) { + switch (options.arrayFormat) { + case "index": + return (key) => (result, value) => { + const index = result.length; + if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") { + return result; + } + if (value === null) { + return [...result, [encode(key, options), "[", index, "]"].join("")]; + } + return [ + ...result, + [encode(key, options), "[", encode(index, options), "]=", encode(value, options)].join("") + ]; + }; + case "bracket": + return (key) => (result, value) => { + if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") { + return result; + } + if (value === null) { + return [...result, [encode(key, options), "[]"].join("")]; + } + return [...result, [encode(key, options), "[]=", encode(value, options)].join("")]; + }; + case "colon-list-separator": + return (key) => (result, value) => { + if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") { + return result; + } + if (value === null) { + return [...result, [encode(key, options), ":list="].join("")]; + } + return [...result, [encode(key, options), ":list=", encode(value, options)].join("")]; + }; + case "comma": + case "separator": + case "bracket-separator": { + const keyValueSep = options.arrayFormat === "bracket-separator" ? "[]=" : "="; + return (key) => (result, value) => { + if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") { + return result; + } + value = value === null ? "" : value; + if (result.length === 0) { + return [[encode(key, options), keyValueSep, encode(value, options)].join("")]; + } + return [[result, encode(value, options)].join(options.arrayFormatSeparator)]; + }; + } + default: + return (key) => (result, value) => { + if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === "") { + return result; + } + if (value === null) { + return [...result, encode(key, options)]; + } + return [...result, [encode(key, options), "=", encode(value, options)].join("")]; + }; + } + } + function parserForArrayFormat(options) { + let result; + switch (options.arrayFormat) { + case "index": + return (key, value, accumulator) => { + result = /\[(\d*)\]$/.exec(key); + key = key.replace(/\[\d*\]$/, ""); + if (!result) { + accumulator[key] = value; + return; + } + if (accumulator[key] === void 0) { + accumulator[key] = {}; + } + accumulator[key][result[1]] = value; + }; + case "bracket": + return (key, value, accumulator) => { + result = /(\[\])$/.exec(key); + key = key.replace(/\[\]$/, ""); + if (!result) { + accumulator[key] = value; + return; + } + if (accumulator[key] === void 0) { + accumulator[key] = [value]; + return; + } + accumulator[key] = [].concat(accumulator[key], value); + }; + case "colon-list-separator": + return (key, value, accumulator) => { + result = /(:list)$/.exec(key); + key = key.replace(/:list$/, ""); + if (!result) { + accumulator[key] = value; + return; + } + if (accumulator[key] === void 0) { + accumulator[key] = [value]; + return; + } + accumulator[key] = [].concat(accumulator[key], value); + }; + case "comma": + case "separator": + return (key, value, accumulator) => { + const isArray = typeof value === "string" && value.includes(options.arrayFormatSeparator); + const isEncodedArray = typeof value === "string" && !isArray && decode(value, options).includes(options.arrayFormatSeparator); + value = isEncodedArray ? decode(value, options) : value; + const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map((item) => decode(item, options)) : value === null ? value : decode(value, options); + accumulator[key] = newValue; + }; + case "bracket-separator": + return (key, value, accumulator) => { + const isArray = /(\[\])$/.test(key); + key = key.replace(/\[\]$/, ""); + if (!isArray) { + accumulator[key] = value ? decode(value, options) : value; + return; + } + const arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map((item) => decode(item, options)); + if (accumulator[key] === void 0) { + accumulator[key] = arrayValue; + return; + } + accumulator[key] = [].concat(accumulator[key], arrayValue); + }; + default: + return (key, value, accumulator) => { + if (accumulator[key] === void 0) { + accumulator[key] = value; + return; + } + accumulator[key] = [].concat(accumulator[key], value); + }; + } + } + function validateArrayFormatSeparator(value) { + if (typeof value !== "string" || value.length !== 1) { + throw new TypeError("arrayFormatSeparator must be single character string"); + } + } + function encode(value, options) { + if (options.encode) { + return options.strict ? strictUriEncode(value) : encodeURIComponent(value); + } + return value; + } + function decode(value, options) { + if (options.decode) { + return decodeComponent(value); + } + return value; + } + function keysSorter(input) { + if (Array.isArray(input)) { + return input.sort(); + } + if (typeof input === "object") { + return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map((key) => input[key]); + } + return input; + } + function removeHash(input) { + const hashStart = input.indexOf("#"); + if (hashStart !== -1) { + input = input.slice(0, hashStart); + } + return input; + } + function getHash(url) { + let hash = ""; + const hashStart = url.indexOf("#"); + if (hashStart !== -1) { + hash = url.slice(hashStart); + } + return hash; + } + function extract(input) { + input = removeHash(input); + const queryStart = input.indexOf("?"); + if (queryStart === -1) { + return ""; + } + return input.slice(queryStart + 1); + } + function parseValue(value, options) { + if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === "string" && value.trim() !== "")) { + value = Number(value); + } else if (options.parseBooleans && value !== null && (value.toLowerCase() === "true" || value.toLowerCase() === "false")) { + value = value.toLowerCase() === "true"; + } + return value; + } + function parse(query, options) { + options = Object.assign({ + decode: true, + sort: true, + arrayFormat: "none", + arrayFormatSeparator: ",", + parseNumbers: false, + parseBooleans: false + }, options); + validateArrayFormatSeparator(options.arrayFormatSeparator); + const formatter = parserForArrayFormat(options); + const ret = Object.create(null); + if (typeof query !== "string") { + return ret; + } + query = query.trim().replace(/^[?#&]/, ""); + if (!query) { + return ret; + } + for (const param of query.split("&")) { + if (param === "") { + continue; + } + let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, " ") : param, "="); + value = value === void 0 ? null : ["comma", "separator", "bracket-separator"].includes(options.arrayFormat) ? value : decode(value, options); + formatter(decode(key, options), value, ret); + } + for (const key of Object.keys(ret)) { + const value = ret[key]; + if (typeof value === "object" && value !== null) { + for (const k of Object.keys(value)) { + value[k] = parseValue(value[k], options); + } + } else { + ret[key] = parseValue(value, options); + } + } + if (options.sort === false) { + return ret; + } + return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => { + const value = ret[key]; + if (Boolean(value) && typeof value === "object" && !Array.isArray(value)) { + result[key] = keysSorter(value); + } else { + result[key] = value; + } + return result; + }, Object.create(null)); + } + exports.extract = extract; + exports.parse = parse; + exports.stringify = (object, options) => { + if (!object) { + return ""; + } + options = Object.assign({ + encode: true, + strict: true, + arrayFormat: "none", + arrayFormatSeparator: "," + }, options); + validateArrayFormatSeparator(options.arrayFormatSeparator); + const shouldFilter = (key) => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === ""; + const formatter = encoderForArrayFormat(options); + const objectCopy = {}; + for (const key of Object.keys(object)) { + if (!shouldFilter(key)) { + objectCopy[key] = object[key]; + } + } + const keys = Object.keys(objectCopy); + if (options.sort !== false) { + keys.sort(options.sort); + } + return keys.map((key) => { + const value = object[key]; + if (value === void 0) { + return ""; + } + if (value === null) { + return encode(key, options); + } + if (Array.isArray(value)) { + if (value.length === 0 && options.arrayFormat === "bracket-separator") { + return encode(key, options) + "[]"; + } + return value.reduce(formatter(key), []).join("&"); + } + return encode(key, options) + "=" + encode(value, options); + }).filter((x) => x.length > 0).join("&"); + }; + exports.parseUrl = (url, options) => { + options = Object.assign({ + decode: true + }, options); + const [url_, hash] = splitOnFirst(url, "#"); + return Object.assign({ + url: url_.split("?")[0] || "", + query: parse(extract(url), options) + }, options && options.parseFragmentIdentifier && hash ? { fragmentIdentifier: decode(hash, options) } : {}); + }; + exports.stringifyUrl = (object, options) => { + options = Object.assign({ + encode: true, + strict: true, + [encodeFragmentIdentifier]: true + }, options); + const url = removeHash(object.url).split("?")[0] || ""; + const queryFromUrl = exports.extract(object.url); + const parsedQueryFromUrl = exports.parse(queryFromUrl, { sort: false }); + const query = Object.assign(parsedQueryFromUrl, object.query); + let queryString2 = exports.stringify(query, options); + if (queryString2) { + queryString2 = `?${queryString2}`; + } + let hash = getHash(object.url); + if (object.fragmentIdentifier) { + hash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`; + } + return `${url}${queryString2}${hash}`; + }; + exports.pick = (input, filter, options) => { + options = Object.assign({ + parseFragmentIdentifier: true, + [encodeFragmentIdentifier]: false + }, options); + const { url, query, fragmentIdentifier } = exports.parseUrl(input, options); + return exports.stringifyUrl({ + url, + query: filterObject(query, filter), + fragmentIdentifier + }, options); + }; + exports.exclude = (input, filter, options) => { + const exclusionFilter = Array.isArray(filter) ? (key) => !filter.includes(key) : (key, value) => !filter(key, value); + return exports.pick(input, exclusionFilter, options); + }; + } +}); + +// node_modules/glob-to-regexp/index.js +var require_glob_to_regexp = __commonJS({ + "node_modules/glob-to-regexp/index.js"(exports, module2) { + module2.exports = function(glob, opts) { + if (typeof glob !== "string") { + throw new TypeError("Expected a string"); + } + var str = String(glob); + var reStr = ""; + var extended = opts ? !!opts.extended : false; + var globstar = opts ? !!opts.globstar : false; + var inGroup = false; + var flags = opts && typeof opts.flags === "string" ? opts.flags : ""; + var c; + for (var i = 0, len = str.length; i < len; i++) { + c = str[i]; + switch (c) { + case "/": + case "$": + case "^": + case "+": + case ".": + case "(": + case ")": + case "=": + case "!": + case "|": + reStr += "\\" + c; + break; + case "?": + if (extended) { + reStr += "."; + break; + } + case "[": + case "]": + if (extended) { + reStr += c; + break; + } + case "{": + if (extended) { + inGroup = true; + reStr += "("; + break; + } + case "}": + if (extended) { + inGroup = false; + reStr += ")"; + break; + } + case ",": + if (inGroup) { + reStr += "|"; + break; + } + reStr += "\\" + c; + break; + case "*": + var prevChar = str[i - 1]; + var starCount = 1; + while (str[i + 1] === "*") { + starCount++; + i++; + } + var nextChar = str[i + 1]; + if (!globstar) { + reStr += ".*"; + } else { + var isGlobstar = starCount > 1 && (prevChar === "/" || prevChar === void 0) && (nextChar === "/" || nextChar === void 0); + if (isGlobstar) { + reStr += "((?:[^/]*(?:/|$))*)"; + i++; + } else { + reStr += "([^/]*)"; + } + } + break; + default: + reStr += c; + } + } + if (!flags || !~flags.indexOf("g")) { + reStr = "^" + reStr + "$"; + } + return new RegExp(reStr, flags); + }; + } +}); + +// node_modules/marked/lib/marked.cjs +var require_marked = __commonJS({ + "node_modules/marked/lib/marked.cjs"(exports) { + "use strict"; + function _getDefaults() { + return { + async: false, + breaks: false, + extensions: null, + gfm: true, + hooks: null, + pedantic: false, + renderer: null, + silent: false, + tokenizer: null, + walkTokens: null + }; + } + exports.defaults = _getDefaults(); + function changeDefaults(newDefaults) { + exports.defaults = newDefaults; + } + var escapeTest = /[&<>"']/; + var escapeReplace = new RegExp(escapeTest.source, "g"); + var escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; + var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, "g"); + var escapeReplacements = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }; + var getEscapeReplacement = (ch) => escapeReplacements[ch]; + function escape$1(html2, encode) { + if (encode) { + if (escapeTest.test(html2)) { + return html2.replace(escapeReplace, getEscapeReplacement); + } + } else { + if (escapeTestNoEncode.test(html2)) { + return html2.replace(escapeReplaceNoEncode, getEscapeReplacement); + } + } + return html2; + } + var caret = /(^|[^\[])\^/g; + function edit(regex, opt) { + let source = typeof regex === "string" ? regex : regex.source; + opt = opt || ""; + const obj = { + replace: (name, val) => { + let valSource = typeof val === "string" ? val : val.source; + valSource = valSource.replace(caret, "$1"); + source = source.replace(name, valSource); + return obj; + }, + getRegex: () => { + return new RegExp(source, opt); + } + }; + return obj; + } + function cleanUrl(href) { + try { + href = encodeURI(href).replace(/%25/g, "%"); + } catch (e) { + return null; + } + return href; + } + var noopTest = { exec: () => null }; + function splitCells(tableRow, count) { + const row = tableRow.replace(/\|/g, (match, offset, str) => { + let escaped = false; + let curr = offset; + while (--curr >= 0 && str[curr] === "\\") + escaped = !escaped; + if (escaped) { + return "|"; + } else { + return " |"; + } + }), cells = row.split(/ \|/); + let i = 0; + if (!cells[0].trim()) { + cells.shift(); + } + if (cells.length > 0 && !cells[cells.length - 1].trim()) { + cells.pop(); + } + if (count) { + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) + cells.push(""); + } + } + for (; i < cells.length; i++) { + cells[i] = cells[i].trim().replace(/\\\|/g, "|"); + } + return cells; + } + function rtrim(str, c, invert) { + const l = str.length; + if (l === 0) { + return ""; + } + let suffLen = 0; + while (suffLen < l) { + const currChar = str.charAt(l - suffLen - 1); + if (currChar === c && !invert) { + suffLen++; + } else if (currChar !== c && invert) { + suffLen++; + } else { + break; + } + } + return str.slice(0, l - suffLen); + } + function findClosingBracket(str, b) { + if (str.indexOf(b[1]) === -1) { + return -1; + } + let level = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === "\\") { + i++; + } else if (str[i] === b[0]) { + level++; + } else if (str[i] === b[1]) { + level--; + if (level < 0) { + return i; + } + } + } + return -1; + } + function outputLink(cap, link2, raw, lexer2) { + const href = link2.href; + const title = link2.title ? escape$1(link2.title) : null; + const text = cap[1].replace(/\\([\[\]])/g, "$1"); + if (cap[0].charAt(0) !== "!") { + lexer2.state.inLink = true; + const token = { + type: "link", + raw, + href, + title, + text, + tokens: lexer2.inlineTokens(text) + }; + lexer2.state.inLink = false; + return token; + } + return { + type: "image", + raw, + href, + title, + text: escape$1(text) + }; + } + function indentCodeCompensation(raw, text) { + const matchIndentToCode = raw.match(/^(\s+)(?:```)/); + if (matchIndentToCode === null) { + return text; + } + const indentToCode = matchIndentToCode[1]; + return text.split("\n").map((node) => { + const matchIndentInNode = node.match(/^\s+/); + if (matchIndentInNode === null) { + return node; + } + const [indentInNode] = matchIndentInNode; + if (indentInNode.length >= indentToCode.length) { + return node.slice(indentToCode.length); + } + return node; + }).join("\n"); + } + var _Tokenizer = class { + constructor(options2) { + __publicField(this, "options"); + __publicField(this, "rules"); + __publicField(this, "lexer"); + this.options = options2 || exports.defaults; + } + space(src) { + const cap = this.rules.block.newline.exec(src); + if (cap && cap[0].length > 0) { + return { + type: "space", + raw: cap[0] + }; + } + } + code(src) { + const cap = this.rules.block.code.exec(src); + if (cap) { + const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ""); + return { + type: "code", + raw: cap[0], + codeBlockStyle: "indented", + text: !this.options.pedantic ? rtrim(text, "\n") : text + }; + } + } + fences(src) { + const cap = this.rules.block.fences.exec(src); + if (cap) { + const raw = cap[0]; + const text = indentCodeCompensation(raw, cap[3] || ""); + return { + type: "code", + raw, + lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : cap[2], + text + }; + } + } + heading(src) { + const cap = this.rules.block.heading.exec(src); + if (cap) { + let text = cap[2].trim(); + if (/#$/.test(text)) { + const trimmed = rtrim(text, "#"); + if (this.options.pedantic) { + text = trimmed.trim(); + } else if (!trimmed || / $/.test(trimmed)) { + text = trimmed.trim(); + } + } + return { + type: "heading", + raw: cap[0], + depth: cap[1].length, + text, + tokens: this.lexer.inline(text) + }; + } + } + hr(src) { + const cap = this.rules.block.hr.exec(src); + if (cap) { + return { + type: "hr", + raw: rtrim(cap[0], "\n") + }; + } + } + blockquote(src) { + const cap = this.rules.block.blockquote.exec(src); + if (cap) { + let lines = rtrim(cap[0], "\n").split("\n"); + let raw = ""; + let text = ""; + const tokens = []; + while (lines.length > 0) { + let inBlockquote = false; + const currentLines = []; + let i; + for (i = 0; i < lines.length; i++) { + if (/^ {0,3}>/.test(lines[i])) { + currentLines.push(lines[i]); + inBlockquote = true; + } else if (!inBlockquote) { + currentLines.push(lines[i]); + } else { + break; + } + } + lines = lines.slice(i); + const currentRaw = currentLines.join("\n"); + const currentText = currentRaw.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, "\n $1").replace(/^ {0,3}>[ \t]?/gm, ""); + raw = raw ? `${raw} +${currentRaw}` : currentRaw; + text = text ? `${text} +${currentText}` : currentText; + const top = this.lexer.state.top; + this.lexer.state.top = true; + this.lexer.blockTokens(currentText, tokens, true); + this.lexer.state.top = top; + if (lines.length === 0) { + break; + } + const lastToken = tokens[tokens.length - 1]; + if ((lastToken == null ? void 0 : lastToken.type) === "code") { + break; + } else if ((lastToken == null ? void 0 : lastToken.type) === "blockquote") { + const oldToken = lastToken; + const newText = oldToken.raw + "\n" + lines.join("\n"); + const newToken = this.blockquote(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.text.length) + newToken.text; + break; + } else if ((lastToken == null ? void 0 : lastToken.type) === "list") { + const oldToken = lastToken; + const newText = oldToken.raw + "\n" + lines.join("\n"); + const newToken = this.list(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; + lines = newText.substring(tokens[tokens.length - 1].raw.length).split("\n"); + continue; + } + } + return { + type: "blockquote", + raw, + tokens, + text + }; + } + } + list(src) { + let cap = this.rules.block.list.exec(src); + if (cap) { + let bull = cap[1].trim(); + const isordered = bull.length > 1; + const list2 = { + type: "list", + raw: "", + ordered: isordered, + start: isordered ? +bull.slice(0, -1) : "", + loose: false, + items: [] + }; + bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; + if (this.options.pedantic) { + bull = isordered ? bull : "[*+-]"; + } + const itemRegex = new RegExp(`^( {0,3}${bull})((?:[ ][^\\n]*)?(?:\\n|$))`); + let endsWithBlankLine = false; + while (src) { + let endEarly = false; + let raw = ""; + let itemContents = ""; + if (!(cap = itemRegex.exec(src))) { + break; + } + if (this.rules.block.hr.test(src)) { + break; + } + raw = cap[0]; + src = src.substring(raw.length); + let line = cap[2].split("\n", 1)[0].replace(/^\t+/, (t) => " ".repeat(3 * t.length)); + let nextLine = src.split("\n", 1)[0]; + let blankLine = !line.trim(); + let indent = 0; + if (this.options.pedantic) { + indent = 2; + itemContents = line.trimStart(); + } else if (blankLine) { + indent = cap[1].length + 1; + } else { + indent = cap[2].search(/[^ ]/); + indent = indent > 4 ? 1 : indent; + itemContents = line.slice(indent); + indent += cap[1].length; + } + if (blankLine && /^[ \t]*$/.test(nextLine)) { + raw += nextLine + "\n"; + src = src.substring(nextLine.length + 1); + endEarly = true; + } + if (!endEarly) { + const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`); + const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); + const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); + const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); + const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, "i"); + while (src) { + const rawLine = src.split("\n", 1)[0]; + let nextLineWithoutTabs; + nextLine = rawLine; + if (this.options.pedantic) { + nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, " "); + nextLineWithoutTabs = nextLine; + } else { + nextLineWithoutTabs = nextLine.replace(/\t/g, " "); + } + if (fencesBeginRegex.test(nextLine)) { + break; + } + if (headingBeginRegex.test(nextLine)) { + break; + } + if (htmlBeginRegex.test(nextLine)) { + break; + } + if (nextBulletRegex.test(nextLine)) { + break; + } + if (hrRegex.test(nextLine)) { + break; + } + if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { + itemContents += "\n" + nextLineWithoutTabs.slice(indent); + } else { + if (blankLine) { + break; + } + if (line.replace(/\t/g, " ").search(/[^ ]/) >= 4) { + break; + } + if (fencesBeginRegex.test(line)) { + break; + } + if (headingBeginRegex.test(line)) { + break; + } + if (hrRegex.test(line)) { + break; + } + itemContents += "\n" + nextLine; + } + if (!blankLine && !nextLine.trim()) { + blankLine = true; + } + raw += rawLine + "\n"; + src = src.substring(rawLine.length + 1); + line = nextLineWithoutTabs.slice(indent); + } + } + if (!list2.loose) { + if (endsWithBlankLine) { + list2.loose = true; + } else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { + endsWithBlankLine = true; + } + } + let istask = null; + let ischecked; + if (this.options.gfm) { + istask = /^\[[ xX]\] /.exec(itemContents); + if (istask) { + ischecked = istask[0] !== "[ ] "; + itemContents = itemContents.replace(/^\[[ xX]\] +/, ""); + } + } + list2.items.push({ + type: "list_item", + raw, + task: !!istask, + checked: ischecked, + loose: false, + text: itemContents, + tokens: [] + }); + list2.raw += raw; + } + list2.items[list2.items.length - 1].raw = list2.items[list2.items.length - 1].raw.trimEnd(); + list2.items[list2.items.length - 1].text = list2.items[list2.items.length - 1].text.trimEnd(); + list2.raw = list2.raw.trimEnd(); + for (let i = 0; i < list2.items.length; i++) { + this.lexer.state.top = false; + list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []); + if (!list2.loose) { + const spacers = list2.items[i].tokens.filter((t) => t.type === "space"); + const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => /\n.*\n/.test(t.raw)); + list2.loose = hasMultipleLineBreaks; + } + } + if (list2.loose) { + for (let i = 0; i < list2.items.length; i++) { + list2.items[i].loose = true; + } + } + return list2; + } + } + html(src) { + const cap = this.rules.block.html.exec(src); + if (cap) { + const token = { + type: "html", + block: true, + raw: cap[0], + pre: cap[1] === "pre" || cap[1] === "script" || cap[1] === "style", + text: cap[0] + }; + return token; + } + } + def(src) { + const cap = this.rules.block.def.exec(src); + if (cap) { + const tag2 = cap[1].toLowerCase().replace(/\s+/g, " "); + const href = cap[2] ? cap[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline.anyPunctuation, "$1") : ""; + const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : cap[3]; + return { + type: "def", + tag: tag2, + raw: cap[0], + href, + title + }; + } + } + table(src) { + const cap = this.rules.block.table.exec(src); + if (!cap) { + return; + } + if (!/[:|]/.test(cap[2])) { + return; + } + const headers = splitCells(cap[1]); + const aligns = cap[2].replace(/^\||\| *$/g, "").split("|"); + const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, "").split("\n") : []; + const item = { + type: "table", + raw: cap[0], + header: [], + align: [], + rows: [] + }; + if (headers.length !== aligns.length) { + return; + } + for (const align of aligns) { + if (/^ *-+: *$/.test(align)) { + item.align.push("right"); + } else if (/^ *:-+: *$/.test(align)) { + item.align.push("center"); + } else if (/^ *:-+ *$/.test(align)) { + item.align.push("left"); + } else { + item.align.push(null); + } + } + for (let i = 0; i < headers.length; i++) { + item.header.push({ + text: headers[i], + tokens: this.lexer.inline(headers[i]), + header: true, + align: item.align[i] + }); + } + for (const row of rows) { + item.rows.push(splitCells(row, item.header.length).map((cell, i) => { + return { + text: cell, + tokens: this.lexer.inline(cell), + header: false, + align: item.align[i] + }; + })); + } + return item; + } + lheading(src) { + const cap = this.rules.block.lheading.exec(src); + if (cap) { + return { + type: "heading", + raw: cap[0], + depth: cap[2].charAt(0) === "=" ? 1 : 2, + text: cap[1], + tokens: this.lexer.inline(cap[1]) + }; + } + } + paragraph(src) { + const cap = this.rules.block.paragraph.exec(src); + if (cap) { + const text = cap[1].charAt(cap[1].length - 1) === "\n" ? cap[1].slice(0, -1) : cap[1]; + return { + type: "paragraph", + raw: cap[0], + text, + tokens: this.lexer.inline(text) + }; + } + } + text(src) { + const cap = this.rules.block.text.exec(src); + if (cap) { + return { + type: "text", + raw: cap[0], + text: cap[0], + tokens: this.lexer.inline(cap[0]) + }; + } + } + escape(src) { + const cap = this.rules.inline.escape.exec(src); + if (cap) { + return { + type: "escape", + raw: cap[0], + text: escape$1(cap[1]) + }; + } + } + tag(src) { + const cap = this.rules.inline.tag.exec(src); + if (cap) { + if (!this.lexer.state.inLink && /^/i.test(cap[0])) { + this.lexer.state.inLink = false; + } + if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = true; + } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = false; + } + return { + type: "html", + raw: cap[0], + inLink: this.lexer.state.inLink, + inRawBlock: this.lexer.state.inRawBlock, + block: false, + text: cap[0] + }; + } + } + link(src) { + const cap = this.rules.inline.link.exec(src); + if (cap) { + const trimmedUrl = cap[2].trim(); + if (!this.options.pedantic && /^$/.test(trimmedUrl)) { + return; + } + const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), "\\"); + if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { + return; + } + } else { + const lastParenIndex = findClosingBracket(cap[2], "()"); + if (lastParenIndex > -1) { + const start = cap[0].indexOf("!") === 0 ? 5 : 4; + const linkLen = start + cap[1].length + lastParenIndex; + cap[2] = cap[2].substring(0, lastParenIndex); + cap[0] = cap[0].substring(0, linkLen).trim(); + cap[3] = ""; + } + } + let href = cap[2]; + let title = ""; + if (this.options.pedantic) { + const link2 = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); + if (link2) { + href = link2[1]; + title = link2[3]; + } + } else { + title = cap[3] ? cap[3].slice(1, -1) : ""; + } + href = href.trim(); + if (/^$/.test(trimmedUrl)) { + href = href.slice(1); + } else { + href = href.slice(1, -1); + } + } + return outputLink(cap, { + href: href ? href.replace(this.rules.inline.anyPunctuation, "$1") : href, + title: title ? title.replace(this.rules.inline.anyPunctuation, "$1") : title + }, cap[0], this.lexer); + } + } + reflink(src, links) { + let cap; + if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) { + const linkString = (cap[2] || cap[1]).replace(/\s+/g, " "); + const link2 = links[linkString.toLowerCase()]; + if (!link2) { + const text = cap[0].charAt(0); + return { + type: "text", + raw: text, + text + }; + } + return outputLink(cap, link2, cap[0], this.lexer); + } + } + emStrong(src, maskedSrc, prevChar = "") { + let match = this.rules.inline.emStrongLDelim.exec(src); + if (!match) + return; + if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) + return; + const nextChar = match[1] || match[2] || ""; + if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { + const lLength = [...match[0]].length - 1; + let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; + const endReg = match[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + endReg.lastIndex = 0; + maskedSrc = maskedSrc.slice(-1 * src.length + lLength); + while ((match = endReg.exec(maskedSrc)) != null) { + rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; + if (!rDelim) + continue; + rLength = [...rDelim].length; + if (match[3] || match[4]) { + delimTotal += rLength; + continue; + } else if (match[5] || match[6]) { + if (lLength % 3 && !((lLength + rLength) % 3)) { + midDelimTotal += rLength; + continue; + } + } + delimTotal -= rLength; + if (delimTotal > 0) + continue; + rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); + const lastCharLength = [...match[0]][0].length; + const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); + if (Math.min(lLength, rLength) % 2) { + const text2 = raw.slice(1, -1); + return { + type: "em", + raw, + text: text2, + tokens: this.lexer.inlineTokens(text2) + }; + } + const text = raw.slice(2, -2); + return { + type: "strong", + raw, + text, + tokens: this.lexer.inlineTokens(text) + }; + } + } + } + codespan(src) { + const cap = this.rules.inline.code.exec(src); + if (cap) { + let text = cap[2].replace(/\n/g, " "); + const hasNonSpaceChars = /[^ ]/.test(text); + const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); + if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { + text = text.substring(1, text.length - 1); + } + text = escape$1(text, true); + return { + type: "codespan", + raw: cap[0], + text + }; + } + } + br(src) { + const cap = this.rules.inline.br.exec(src); + if (cap) { + return { + type: "br", + raw: cap[0] + }; + } + } + del(src) { + const cap = this.rules.inline.del.exec(src); + if (cap) { + return { + type: "del", + raw: cap[0], + text: cap[2], + tokens: this.lexer.inlineTokens(cap[2]) + }; + } + } + autolink(src) { + const cap = this.rules.inline.autolink.exec(src); + if (cap) { + let text, href; + if (cap[2] === "@") { + text = escape$1(cap[1]); + href = "mailto:" + text; + } else { + text = escape$1(cap[1]); + href = text; + } + return { + type: "link", + raw: cap[0], + text, + href, + tokens: [ + { + type: "text", + raw: text, + text + } + ] + }; + } + } + url(src) { + var _a, _b; + let cap; + if (cap = this.rules.inline.url.exec(src)) { + let text, href; + if (cap[2] === "@") { + text = escape$1(cap[0]); + href = "mailto:" + text; + } else { + let prevCapZero; + do { + prevCapZero = cap[0]; + cap[0] = (_b = (_a = this.rules.inline._backpedal.exec(cap[0])) == null ? void 0 : _a[0]) != null ? _b : ""; + } while (prevCapZero !== cap[0]); + text = escape$1(cap[0]); + if (cap[1] === "www.") { + href = "http://" + cap[0]; + } else { + href = cap[0]; + } + } + return { + type: "link", + raw: cap[0], + text, + href, + tokens: [ + { + type: "text", + raw: text, + text + } + ] + }; + } + } + inlineText(src) { + const cap = this.rules.inline.text.exec(src); + if (cap) { + let text; + if (this.lexer.state.inRawBlock) { + text = cap[0]; + } else { + text = escape$1(cap[0]); + } + return { + type: "text", + raw: cap[0], + text + }; + } + } + }; + var newline = /^(?:[ \t]*(?:\n|$))+/; + var blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; + var fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; + var hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; + var heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; + var bullet = /(?:[*+-]|\d{1,9}[.)])/; + var lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).getRegex(); + var _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; + var blockText = /^[^\n]+/; + var _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; + var def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", _blockLabel).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(); + var list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, bullet).getRegex(); + var _tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul"; + var _comment = /|$))/; + var html = edit("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", _comment).replace("tag", _tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(); + var paragraph = edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex(); + var blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", paragraph).getRegex(); + var blockNormal = { + blockquote, + code: blockCode, + def, + fences, + heading, + hr, + html, + lheading, + list, + newline, + paragraph, + table: noopTest, + text: blockText + }; + var gfmTable = edit("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex(); + var blockGfm = __spreadProps(__spreadValues({}, blockNormal), { + table: gfmTable, + paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", gfmTable).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", _tag).getRegex() + }); + var blockPedantic = __spreadProps(__spreadValues({}, blockNormal), { + html: edit(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", _comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: noopTest, + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: edit(_paragraph).replace("hr", hr).replace("heading", " *#{1,6} *[^\n]").replace("lheading", lheading).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() + }); + var escape2 = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; + var inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; + var br = /^( {2,}|\\)\n(?!\s*$)/; + var inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g; + var emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, "u").replace(/punct/g, _punctuation).getRegex(); + var emStrongRDelimAst = edit("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])", "gu").replace(/punct/g, _punctuation).getRegex(); + var emStrongRDelimUnd = edit("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])", "gu").replace(/punct/g, _punctuation).getRegex(); + var anyPunctuation = edit(/\\([punct])/, "gu").replace(/punct/g, _punctuation).getRegex(); + var autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(); + var _inlineComment = edit(_comment).replace("(?:-->|$)", "-->").getRegex(); + var tag = edit("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment", _inlineComment).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(); + var _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; + var link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label", _inlineLabel).replace("href", /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(); + var reflink = edit(/^!?\[(label)\]\[(ref)\]/).replace("label", _inlineLabel).replace("ref", _blockLabel).getRegex(); + var nolink = edit(/^!?\[(ref)\](?:\[\])?/).replace("ref", _blockLabel).getRegex(); + var reflinkSearch = edit("reflink|nolink(?!\\()", "g").replace("reflink", reflink).replace("nolink", nolink).getRegex(); + var inlineNormal = { + _backpedal: noopTest, + anyPunctuation, + autolink, + blockSkip, + br, + code: inlineCode, + del: noopTest, + emStrongLDelim, + emStrongRDelimAst, + emStrongRDelimUnd, + escape: escape2, + link, + nolink, + punctuation, + reflink, + reflinkSearch, + tag, + text: inlineText, + url: noopTest + }; + var inlinePedantic = __spreadProps(__spreadValues({}, inlineNormal), { + link: edit(/^!?\[(label)\]\((.*?)\)/).replace("label", _inlineLabel).getRegex(), + reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", _inlineLabel).getRegex() + }); + var inlineGfm = __spreadProps(__spreadValues({}, inlineNormal), { + escape: edit(escape2).replace("])", "~|])").getRegex(), + url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + if (token = this.tokenizer.space(src)) { + src = src.substring(token.raw.length); + if (token.raw.length === 1 && tokens.length > 0) { + tokens[tokens.length - 1].raw += "\n"; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.code(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === "paragraph" || lastToken.type === "text")) { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.text; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.fences(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.heading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.hr(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.blockquote(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.list(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.html(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.def(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === "paragraph" || lastToken.type === "text")) { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.raw; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else if (!this.tokens.links[token.tag]) { + this.tokens.links[token.tag] = { + href: token.href, + title: token.title + }; + } + continue; + } + if (token = this.tokenizer.table(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.lheading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + cutSrc = src; + if (this.options.extensions && this.options.extensions.startBlock) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startBlock.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === "number" && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { + lastToken = tokens[tokens.length - 1]; + if (lastParagraphClipped && (lastToken == null ? void 0 : lastToken.type) === "paragraph") { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else { + tokens.push(token); + } + lastParagraphClipped = cutSrc.length !== src.length; + src = src.substring(token.raw.length); + continue; + } + if (token = this.tokenizer.text(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === "text") { + lastToken.raw += "\n" + token.raw; + lastToken.text += "\n" + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = "Infinite loop on byte: " + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } else { + throw new Error(errMsg); + } + } + } + this.state.top = true; + return tokens; + } + inline(src, tokens = []) { + this.inlineQueue.push({ src, tokens }); + return tokens; + } + inlineTokens(src, tokens = []) { + let token, lastToken, cutSrc; + let maskedSrc = src; + let match; + let keepPrevChar, prevChar; + if (this.tokens.links) { + const links = Object.keys(this.tokens.links); + if (links.length > 0) { + while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { + if (links.includes(match[0].slice(match[0].lastIndexOf("[") + 1, -1))) { + maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); + } + } + } + } + while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + "[" + "a".repeat(match[0].length - 2) + "]" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + } + while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + "++" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + } + while (src) { + if (!keepPrevChar) { + prevChar = ""; + } + keepPrevChar = false; + if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((extTokenizer) => { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + if (token = this.tokenizer.escape(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.tag(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === "text" && lastToken.type === "text") { + lastToken.raw += token.raw; + lastToken.text += token.text; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.link(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.reflink(src, this.tokens.links)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === "text" && lastToken.type === "text") { + lastToken.raw += token.raw; + lastToken.text += token.text; + } else { + tokens.push(token); + } + continue; + } + if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.codespan(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.br(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.del(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (token = this.tokenizer.autolink(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + if (!this.state.inLink && (token = this.tokenizer.url(src))) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + cutSrc = src; + if (this.options.extensions && this.options.extensions.startInline) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startInline.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === "number" && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (token = this.tokenizer.inlineText(cutSrc)) { + src = src.substring(token.raw.length); + if (token.raw.slice(-1) !== "_") { + prevChar = token.raw.slice(-1); + } + keepPrevChar = true; + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === "text") { + lastToken.raw += token.raw; + lastToken.text += token.text; + } else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = "Infinite loop on byte: " + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } else { + throw new Error(errMsg); + } + } + } + return tokens; + } + }; + var _Renderer = class { + constructor(options2) { + __publicField(this, "options"); + __publicField(this, "parser"); + this.options = options2 || exports.defaults; + } + space(token) { + return ""; + } + code({ text, lang, escaped }) { + var _a; + const langString = (_a = (lang || "").match(/^\S*/)) == null ? void 0 : _a[0]; + const code = text.replace(/\n$/, "") + "\n"; + if (!langString) { + return "
" + (escaped ? code : escape$1(code, true)) + "
\n"; + } + return '
' + (escaped ? code : escape$1(code, true)) + "
\n"; + } + blockquote({ tokens }) { + const body = this.parser.parse(tokens); + return `
+${body}
+`; + } + html({ text }) { + return text; + } + heading({ tokens, depth }) { + return `${this.parser.parseInline(tokens)} +`; + } + hr(token) { + return "
\n"; + } + list(token) { + const ordered = token.ordered; + const start = token.start; + let body = ""; + for (let j = 0; j < token.items.length; j++) { + const item = token.items[j]; + body += this.listitem(item); + } + const type = ordered ? "ol" : "ul"; + const startAttr = ordered && start !== 1 ? ' start="' + start + '"' : ""; + return "<" + type + startAttr + ">\n" + body + "\n"; + } + listitem(item) { + let itemBody = ""; + if (item.task) { + const checkbox = this.checkbox({ checked: !!item.checked }); + if (item.loose) { + if (item.tokens.length > 0 && item.tokens[0].type === "paragraph") { + item.tokens[0].text = checkbox + " " + item.tokens[0].text; + if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === "text") { + item.tokens[0].tokens[0].text = checkbox + " " + item.tokens[0].tokens[0].text; + } + } else { + item.tokens.unshift({ + type: "text", + raw: checkbox + " ", + text: checkbox + " " + }); + } + } else { + itemBody += checkbox + " "; + } + } + itemBody += this.parser.parse(item.tokens, !!item.loose); + return `
  • ${itemBody}
  • +`; + } + checkbox({ checked }) { + return "'; + } + paragraph({ tokens }) { + return `

    ${this.parser.parseInline(tokens)}

    +`; + } + table(token) { + let header = ""; + let cell = ""; + for (let j = 0; j < token.header.length; j++) { + cell += this.tablecell(token.header[j]); + } + header += this.tablerow({ text: cell }); + let body = ""; + for (let j = 0; j < token.rows.length; j++) { + const row = token.rows[j]; + cell = ""; + for (let k = 0; k < row.length; k++) { + cell += this.tablecell(row[k]); + } + body += this.tablerow({ text: cell }); + } + if (body) + body = `${body}`; + return "\n\n" + header + "\n" + body + "
    \n"; + } + tablerow({ text }) { + return ` +${text} +`; + } + tablecell(token) { + const content = this.parser.parseInline(token.tokens); + const type = token.header ? "th" : "td"; + const tag2 = token.align ? `<${type} align="${token.align}">` : `<${type}>`; + return tag2 + content + ` +`; + } + strong({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + em({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + codespan({ text }) { + return `${text}`; + } + br(token) { + return "
    "; + } + del({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + link({ href, title, tokens }) { + const text = this.parser.parseInline(tokens); + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = '
    "; + return out; + } + image({ href, title, text }) { + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = `${text} { + const tokens2 = genericToken[childTokens].flat(Infinity); + values = values.concat(this.walkTokens(tokens2, callback)); + }); + } else if (genericToken.tokens) { + values = values.concat(this.walkTokens(genericToken.tokens, callback)); + } + } + } + } + return values; + } + use(...args) { + const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; + args.forEach((pack) => { + const opts = __spreadValues({}, pack); + opts.async = this.defaults.async || opts.async || false; + if (pack.extensions) { + pack.extensions.forEach((ext) => { + if (!ext.name) { + throw new Error("extension name required"); + } + if ("renderer" in ext) { + const prevRenderer = extensions.renderers[ext.name]; + if (prevRenderer) { + extensions.renderers[ext.name] = function(...args2) { + let ret = ext.renderer.apply(this, args2); + if (ret === false) { + ret = prevRenderer.apply(this, args2); + } + return ret; + }; + } else { + extensions.renderers[ext.name] = ext.renderer; + } + } + if ("tokenizer" in ext) { + if (!ext.level || ext.level !== "block" && ext.level !== "inline") { + throw new Error("extension level must be 'block' or 'inline'"); + } + const extLevel = extensions[ext.level]; + if (extLevel) { + extLevel.unshift(ext.tokenizer); + } else { + extensions[ext.level] = [ext.tokenizer]; + } + if (ext.start) { + if (ext.level === "block") { + if (extensions.startBlock) { + extensions.startBlock.push(ext.start); + } else { + extensions.startBlock = [ext.start]; + } + } else if (ext.level === "inline") { + if (extensions.startInline) { + extensions.startInline.push(ext.start); + } else { + extensions.startInline = [ext.start]; + } + } + } + } + if ("childTokens" in ext && ext.childTokens) { + extensions.childTokens[ext.name] = ext.childTokens; + } + }); + opts.extensions = extensions; + } + if (pack.renderer) { + const renderer = this.defaults.renderer || new _Renderer(this.defaults); + for (const prop in pack.renderer) { + if (!(prop in renderer)) { + throw new Error(`renderer '${prop}' does not exist`); + } + if (["options", "parser"].includes(prop)) { + continue; + } + const rendererProp = prop; + const rendererFunc = pack.renderer[rendererProp]; + const prevRenderer = renderer[rendererProp]; + renderer[rendererProp] = (...args2) => { + let ret = rendererFunc.apply(renderer, args2); + if (ret === false) { + ret = prevRenderer.apply(renderer, args2); + } + return ret || ""; + }; + } + opts.renderer = renderer; + } + if (pack.tokenizer) { + const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); + for (const prop in pack.tokenizer) { + if (!(prop in tokenizer)) { + throw new Error(`tokenizer '${prop}' does not exist`); + } + if (["options", "rules", "lexer"].includes(prop)) { + continue; + } + const tokenizerProp = prop; + const tokenizerFunc = pack.tokenizer[tokenizerProp]; + const prevTokenizer = tokenizer[tokenizerProp]; + tokenizer[tokenizerProp] = (...args2) => { + let ret = tokenizerFunc.apply(tokenizer, args2); + if (ret === false) { + ret = prevTokenizer.apply(tokenizer, args2); + } + return ret; + }; + } + opts.tokenizer = tokenizer; + } + if (pack.hooks) { + const hooks = this.defaults.hooks || new _Hooks(); + for (const prop in pack.hooks) { + if (!(prop in hooks)) { + throw new Error(`hook '${prop}' does not exist`); + } + if (["options", "block"].includes(prop)) { + continue; + } + const hooksProp = prop; + const hooksFunc = pack.hooks[hooksProp]; + const prevHook = hooks[hooksProp]; + if (_Hooks.passThroughHooks.has(prop)) { + hooks[hooksProp] = (arg) => { + if (this.defaults.async) { + return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => { + return prevHook.call(hooks, ret2); + }); + } + const ret = hooksFunc.call(hooks, arg); + return prevHook.call(hooks, ret); + }; + } else { + hooks[hooksProp] = (...args2) => { + let ret = hooksFunc.apply(hooks, args2); + if (ret === false) { + ret = prevHook.apply(hooks, args2); + } + return ret; + }; + } + } + opts.hooks = hooks; + } + if (pack.walkTokens) { + const walkTokens2 = this.defaults.walkTokens; + const packWalktokens = pack.walkTokens; + opts.walkTokens = function(token) { + let values = []; + values.push(packWalktokens.call(this, token)); + if (walkTokens2) { + values = values.concat(walkTokens2.call(this, token)); + } + return values; + }; + } + this.defaults = __spreadValues(__spreadValues({}, this.defaults), opts); + }); + return this; + } + setOptions(opt) { + this.defaults = __spreadValues(__spreadValues({}, this.defaults), opt); + return this; + } + lexer(src, options2) { + return _Lexer.lex(src, options2 != null ? options2 : this.defaults); + } + parser(tokens, options2) { + return _Parser.parse(tokens, options2 != null ? options2 : this.defaults); + } + parseMarkdown(blockType) { + const parse2 = (src, options2) => { + const origOpt = __spreadValues({}, options2); + const opt = __spreadValues(__spreadValues({}, this.defaults), origOpt); + const throwError = this.onError(!!opt.silent, !!opt.async); + if (this.defaults.async === true && origOpt.async === false) { + return throwError(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.")); + } + if (typeof src === "undefined" || src === null) { + return throwError(new Error("marked(): input parameter is undefined or null")); + } + if (typeof src !== "string") { + return throwError(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(src) + ", string expected")); + } + if (opt.hooks) { + opt.hooks.options = opt; + opt.hooks.block = blockType; + } + const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline; + const parser2 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline; + if (opt.async) { + return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError); + } + try { + if (opt.hooks) { + src = opt.hooks.preprocess(src); + } + let tokens = lexer2(src, opt); + if (opt.hooks) { + tokens = opt.hooks.processAllTokens(tokens); + } + if (opt.walkTokens) { + this.walkTokens(tokens, opt.walkTokens); + } + let html2 = parser2(tokens, opt); + if (opt.hooks) { + html2 = opt.hooks.postprocess(html2); + } + return html2; + } catch (e) { + return throwError(e); + } + }; + return parse2; + } + onError(silent, async) { + return (e) => { + e.message += "\nPlease report this to https://github.com/markedjs/marked."; + if (silent) { + const msg = "

    An error occurred:

    " + escape$1(e.message + "", true) + "
    "; + if (async) { + return Promise.resolve(msg); + } + return msg; + } + if (async) { + return Promise.reject(e); + } + throw e; + }; + } + }; + var markedInstance = new Marked(); + function marked(src, opt) { + return markedInstance.parse(src, opt); + } + marked.options = marked.setOptions = function(options2) { + markedInstance.setOptions(options2); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; + }; + marked.getDefaults = _getDefaults; + marked.defaults = exports.defaults; + marked.use = function(...args) { + markedInstance.use(...args); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; + }; + marked.walkTokens = function(tokens, callback) { + return markedInstance.walkTokens(tokens, callback); + }; + marked.parseInline = markedInstance.parseInline; + marked.Parser = _Parser; + marked.parser = _Parser.parse; + marked.Renderer = _Renderer; + marked.TextRenderer = _TextRenderer; + marked.Lexer = _Lexer; + marked.lexer = _Lexer.lex; + marked.Tokenizer = _Tokenizer; + marked.Hooks = _Hooks; + marked.parse = marked; + var options = marked.options; + var setOptions = marked.setOptions; + var use = marked.use; + var walkTokens = marked.walkTokens; + var parseInline = marked.parseInline; + var parse = marked; + var parser = _Parser.parse; + var lexer = _Lexer.lex; + exports.Hooks = _Hooks; + exports.Lexer = _Lexer; + exports.Marked = Marked; + exports.Parser = _Parser; + exports.Renderer = _Renderer; + exports.TextRenderer = _TextRenderer; + exports.Tokenizer = _Tokenizer; + exports.getDefaults = _getDefaults; + exports.lexer = lexer; + exports.marked = marked; + exports.options = options; + exports.parse = parse; + exports.parseInline = parseInline; + exports.parser = parser; + exports.setOptions = setOptions; + exports.use = use; + exports.walkTokens = walkTokens; + } +}); + +// node_modules/yaml/dist/nodes/identity.js +var require_identity = __commonJS({ + "node_modules/yaml/dist/nodes/identity.js"(exports) { + "use strict"; + var ALIAS = Symbol.for("yaml.alias"); + var DOC = Symbol.for("yaml.document"); + var MAP = Symbol.for("yaml.map"); + var PAIR = Symbol.for("yaml.pair"); + var SCALAR = Symbol.for("yaml.scalar"); + var SEQ = Symbol.for("yaml.seq"); + var NODE_TYPE = Symbol.for("yaml.node.type"); + var isAlias = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === ALIAS; + var isDocument = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === DOC; + var isMap = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP; + var isPair = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === PAIR; + var isScalar = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SCALAR; + var isSeq = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === SEQ; + function isCollection(node) { + if (node && typeof node === "object") + switch (node[NODE_TYPE]) { + case MAP: + case SEQ: + return true; + } + return false; + } + function isNode(node) { + if (node && typeof node === "object") + switch (node[NODE_TYPE]) { + case ALIAS: + case MAP: + case SCALAR: + case SEQ: + return true; + } + return false; + } + var hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor; + exports.ALIAS = ALIAS; + exports.DOC = DOC; + exports.MAP = MAP; + exports.NODE_TYPE = NODE_TYPE; + exports.PAIR = PAIR; + exports.SCALAR = SCALAR; + exports.SEQ = SEQ; + exports.hasAnchor = hasAnchor; + exports.isAlias = isAlias; + exports.isCollection = isCollection; + exports.isDocument = isDocument; + exports.isMap = isMap; + exports.isNode = isNode; + exports.isPair = isPair; + exports.isScalar = isScalar; + exports.isSeq = isSeq; + } +}); + +// node_modules/yaml/dist/visit.js +var require_visit = __commonJS({ + "node_modules/yaml/dist/visit.js"(exports) { + "use strict"; + var identity = require_identity(); + var BREAK = Symbol("break visit"); + var SKIP = Symbol("skip children"); + var REMOVE = Symbol("remove node"); + function visit(node, visitor) { + const visitor_ = initVisitor(visitor); + if (identity.isDocument(node)) { + const cd = visit_(null, node.contents, visitor_, Object.freeze([node])); + if (cd === REMOVE) + node.contents = null; + } else + visit_(null, node, visitor_, Object.freeze([])); + } + visit.BREAK = BREAK; + visit.SKIP = SKIP; + visit.REMOVE = REMOVE; + function visit_(key, node, visitor, path2) { + const ctrl = callVisitor(key, node, visitor, path2); + if (identity.isNode(ctrl) || identity.isPair(ctrl)) { + replaceNode(key, path2, ctrl); + return visit_(key, ctrl, visitor, path2); + } + if (typeof ctrl !== "symbol") { + if (identity.isCollection(node)) { + path2 = Object.freeze(path2.concat(node)); + for (let i = 0; i < node.items.length; ++i) { + const ci = visit_(i, node.items[i], visitor, path2); + if (typeof ci === "number") + i = ci - 1; + else if (ci === BREAK) + return BREAK; + else if (ci === REMOVE) { + node.items.splice(i, 1); + i -= 1; + } + } + } else if (identity.isPair(node)) { + path2 = Object.freeze(path2.concat(node)); + const ck = visit_("key", node.key, visitor, path2); + if (ck === BREAK) + return BREAK; + else if (ck === REMOVE) + node.key = null; + const cv = visit_("value", node.value, visitor, path2); + if (cv === BREAK) + return BREAK; + else if (cv === REMOVE) + node.value = null; + } + } + return ctrl; + } + function visitAsync(node, visitor) { + return __async(this, null, function* () { + const visitor_ = initVisitor(visitor); + if (identity.isDocument(node)) { + const cd = yield visitAsync_(null, node.contents, visitor_, Object.freeze([node])); + if (cd === REMOVE) + node.contents = null; + } else + yield visitAsync_(null, node, visitor_, Object.freeze([])); + }); + } + visitAsync.BREAK = BREAK; + visitAsync.SKIP = SKIP; + visitAsync.REMOVE = REMOVE; + function visitAsync_(key, node, visitor, path2) { + return __async(this, null, function* () { + const ctrl = yield callVisitor(key, node, visitor, path2); + if (identity.isNode(ctrl) || identity.isPair(ctrl)) { + replaceNode(key, path2, ctrl); + return visitAsync_(key, ctrl, visitor, path2); + } + if (typeof ctrl !== "symbol") { + if (identity.isCollection(node)) { + path2 = Object.freeze(path2.concat(node)); + for (let i = 0; i < node.items.length; ++i) { + const ci = yield visitAsync_(i, node.items[i], visitor, path2); + if (typeof ci === "number") + i = ci - 1; + else if (ci === BREAK) + return BREAK; + else if (ci === REMOVE) { + node.items.splice(i, 1); + i -= 1; + } + } + } else if (identity.isPair(node)) { + path2 = Object.freeze(path2.concat(node)); + const ck = yield visitAsync_("key", node.key, visitor, path2); + if (ck === BREAK) + return BREAK; + else if (ck === REMOVE) + node.key = null; + const cv = yield visitAsync_("value", node.value, visitor, path2); + if (cv === BREAK) + return BREAK; + else if (cv === REMOVE) + node.value = null; + } + } + return ctrl; + }); + } + function initVisitor(visitor) { + if (typeof visitor === "object" && (visitor.Collection || visitor.Node || visitor.Value)) { + return Object.assign({ + Alias: visitor.Node, + Map: visitor.Node, + Scalar: visitor.Node, + Seq: visitor.Node + }, visitor.Value && { + Map: visitor.Value, + Scalar: visitor.Value, + Seq: visitor.Value + }, visitor.Collection && { + Map: visitor.Collection, + Seq: visitor.Collection + }, visitor); + } + return visitor; + } + function callVisitor(key, node, visitor, path2) { + var _a, _b, _c, _d, _e; + if (typeof visitor === "function") + return visitor(key, node, path2); + if (identity.isMap(node)) + return (_a = visitor.Map) == null ? void 0 : _a.call(visitor, key, node, path2); + if (identity.isSeq(node)) + return (_b = visitor.Seq) == null ? void 0 : _b.call(visitor, key, node, path2); + if (identity.isPair(node)) + return (_c = visitor.Pair) == null ? void 0 : _c.call(visitor, key, node, path2); + if (identity.isScalar(node)) + return (_d = visitor.Scalar) == null ? void 0 : _d.call(visitor, key, node, path2); + if (identity.isAlias(node)) + return (_e = visitor.Alias) == null ? void 0 : _e.call(visitor, key, node, path2); + return void 0; + } + function replaceNode(key, path2, node) { + const parent = path2[path2.length - 1]; + if (identity.isCollection(parent)) { + parent.items[key] = node; + } else if (identity.isPair(parent)) { + if (key === "key") + parent.key = node; + else + parent.value = node; + } else if (identity.isDocument(parent)) { + parent.contents = node; + } else { + const pt = identity.isAlias(parent) ? "alias" : "scalar"; + throw new Error(`Cannot replace node with ${pt} parent`); + } + } + exports.visit = visit; + exports.visitAsync = visitAsync; + } +}); + +// node_modules/yaml/dist/doc/directives.js +var require_directives = __commonJS({ + "node_modules/yaml/dist/doc/directives.js"(exports) { + "use strict"; + var identity = require_identity(); + var visit = require_visit(); + var escapeChars = { + "!": "%21", + ",": "%2C", + "[": "%5B", + "]": "%5D", + "{": "%7B", + "}": "%7D" + }; + var escapeTagName = (tn) => tn.replace(/[!,[\]{}]/g, (ch) => escapeChars[ch]); + var Directives = class { + constructor(yaml, tags) { + this.docStart = null; + this.docEnd = false; + this.yaml = Object.assign({}, Directives.defaultYaml, yaml); + this.tags = Object.assign({}, Directives.defaultTags, tags); + } + clone() { + const copy = new Directives(this.yaml, this.tags); + copy.docStart = this.docStart; + return copy; + } + atDocument() { + const res = new Directives(this.yaml, this.tags); + switch (this.yaml.version) { + case "1.1": + this.atNextDocument = true; + break; + case "1.2": + this.atNextDocument = false; + this.yaml = { + explicit: Directives.defaultYaml.explicit, + version: "1.2" + }; + this.tags = Object.assign({}, Directives.defaultTags); + break; + } + return res; + } + add(line, onError) { + if (this.atNextDocument) { + this.yaml = { explicit: Directives.defaultYaml.explicit, version: "1.1" }; + this.tags = Object.assign({}, Directives.defaultTags); + this.atNextDocument = false; + } + const parts = line.trim().split(/[ \t]+/); + const name = parts.shift(); + switch (name) { + case "%TAG": { + if (parts.length !== 2) { + onError(0, "%TAG directive should contain exactly two parts"); + if (parts.length < 2) + return false; + } + const [handle, prefix] = parts; + this.tags[handle] = prefix; + return true; + } + case "%YAML": { + this.yaml.explicit = true; + if (parts.length !== 1) { + onError(0, "%YAML directive should contain exactly one part"); + return false; + } + const [version] = parts; + if (version === "1.1" || version === "1.2") { + this.yaml.version = version; + return true; + } else { + const isValid = /^\d+\.\d+$/.test(version); + onError(6, `Unsupported YAML version ${version}`, isValid); + return false; + } + } + default: + onError(0, `Unknown directive ${name}`, true); + return false; + } + } + tagName(source, onError) { + if (source === "!") + return "!"; + if (source[0] !== "!") { + onError(`Not a valid tag: ${source}`); + return null; + } + if (source[1] === "<") { + const verbatim = source.slice(2, -1); + if (verbatim === "!" || verbatim === "!!") { + onError(`Verbatim tags aren't resolved, so ${source} is invalid.`); + return null; + } + if (source[source.length - 1] !== ">") + onError("Verbatim tags must end with a >"); + return verbatim; + } + const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s); + if (!suffix) + onError(`The ${source} tag has no suffix`); + const prefix = this.tags[handle]; + if (prefix) { + try { + return prefix + decodeURIComponent(suffix); + } catch (error) { + onError(String(error)); + return null; + } + } + if (handle === "!") + return source; + onError(`Could not resolve tag: ${source}`); + return null; + } + tagString(tag) { + for (const [handle, prefix] of Object.entries(this.tags)) { + if (tag.startsWith(prefix)) + return handle + escapeTagName(tag.substring(prefix.length)); + } + return tag[0] === "!" ? tag : `!<${tag}>`; + } + toString(doc) { + const lines = this.yaml.explicit ? [`%YAML ${this.yaml.version || "1.2"}`] : []; + const tagEntries = Object.entries(this.tags); + let tagNames; + if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) { + const tags = {}; + visit.visit(doc.contents, (_key, node) => { + if (identity.isNode(node) && node.tag) + tags[node.tag] = true; + }); + tagNames = Object.keys(tags); + } else + tagNames = []; + for (const [handle, prefix] of tagEntries) { + if (handle === "!!" && prefix === "tag:yaml.org,2002:") + continue; + if (!doc || tagNames.some((tn) => tn.startsWith(prefix))) + lines.push(`%TAG ${handle} ${prefix}`); + } + return lines.join("\n"); + } + }; + Directives.defaultYaml = { explicit: false, version: "1.2" }; + Directives.defaultTags = { "!!": "tag:yaml.org,2002:" }; + exports.Directives = Directives; + } +}); + +// node_modules/yaml/dist/doc/anchors.js +var require_anchors = __commonJS({ + "node_modules/yaml/dist/doc/anchors.js"(exports) { + "use strict"; + var identity = require_identity(); + var visit = require_visit(); + function anchorIsValid(anchor) { + if (/[\x00-\x19\s,[\]{}]/.test(anchor)) { + const sa = JSON.stringify(anchor); + const msg = `Anchor must not contain whitespace or control characters: ${sa}`; + throw new Error(msg); + } + return true; + } + function anchorNames(root) { + const anchors = new Set(); + visit.visit(root, { + Value(_key, node) { + if (node.anchor) + anchors.add(node.anchor); + } + }); + return anchors; + } + function findNewAnchor(prefix, exclude) { + for (let i = 1; true; ++i) { + const name = `${prefix}${i}`; + if (!exclude.has(name)) + return name; + } + } + function createNodeAnchors(doc, prefix) { + const aliasObjects = []; + const sourceObjects = new Map(); + let prevAnchors = null; + return { + onAnchor: (source) => { + aliasObjects.push(source); + prevAnchors != null ? prevAnchors : prevAnchors = anchorNames(doc); + const anchor = findNewAnchor(prefix, prevAnchors); + prevAnchors.add(anchor); + return anchor; + }, + setAnchors: () => { + for (const source of aliasObjects) { + const ref = sourceObjects.get(source); + if (typeof ref === "object" && ref.anchor && (identity.isScalar(ref.node) || identity.isCollection(ref.node))) { + ref.node.anchor = ref.anchor; + } else { + const error = new Error("Failed to resolve repeated object (this should not happen)"); + error.source = source; + throw error; + } + } + }, + sourceObjects + }; + } + exports.anchorIsValid = anchorIsValid; + exports.anchorNames = anchorNames; + exports.createNodeAnchors = createNodeAnchors; + exports.findNewAnchor = findNewAnchor; + } +}); + +// node_modules/yaml/dist/doc/applyReviver.js +var require_applyReviver = __commonJS({ + "node_modules/yaml/dist/doc/applyReviver.js"(exports) { + "use strict"; + function applyReviver(reviver, obj, key, val) { + if (val && typeof val === "object") { + if (Array.isArray(val)) { + for (let i = 0, len = val.length; i < len; ++i) { + const v0 = val[i]; + const v1 = applyReviver(reviver, val, String(i), v0); + if (v1 === void 0) + delete val[i]; + else if (v1 !== v0) + val[i] = v1; + } + } else if (val instanceof Map) { + for (const k of Array.from(val.keys())) { + const v0 = val.get(k); + const v1 = applyReviver(reviver, val, k, v0); + if (v1 === void 0) + val.delete(k); + else if (v1 !== v0) + val.set(k, v1); + } + } else if (val instanceof Set) { + for (const v0 of Array.from(val)) { + const v1 = applyReviver(reviver, val, v0, v0); + if (v1 === void 0) + val.delete(v0); + else if (v1 !== v0) { + val.delete(v0); + val.add(v1); + } + } + } else { + for (const [k, v0] of Object.entries(val)) { + const v1 = applyReviver(reviver, val, k, v0); + if (v1 === void 0) + delete val[k]; + else if (v1 !== v0) + val[k] = v1; + } + } + } + return reviver.call(obj, key, val); + } + exports.applyReviver = applyReviver; + } +}); + +// node_modules/yaml/dist/nodes/toJS.js +var require_toJS = __commonJS({ + "node_modules/yaml/dist/nodes/toJS.js"(exports) { + "use strict"; + var identity = require_identity(); + function toJS(value, arg, ctx) { + if (Array.isArray(value)) + return value.map((v, i) => toJS(v, String(i), ctx)); + if (value && typeof value.toJSON === "function") { + if (!ctx || !identity.hasAnchor(value)) + return value.toJSON(arg, ctx); + const data = { aliasCount: 0, count: 1, res: void 0 }; + ctx.anchors.set(value, data); + ctx.onCreate = (res2) => { + data.res = res2; + delete ctx.onCreate; + }; + const res = value.toJSON(arg, ctx); + if (ctx.onCreate) + ctx.onCreate(res); + return res; + } + if (typeof value === "bigint" && !(ctx == null ? void 0 : ctx.keep)) + return Number(value); + return value; + } + exports.toJS = toJS; + } +}); + +// node_modules/yaml/dist/nodes/Node.js +var require_Node = __commonJS({ + "node_modules/yaml/dist/nodes/Node.js"(exports) { + "use strict"; + var applyReviver = require_applyReviver(); + var identity = require_identity(); + var toJS = require_toJS(); + var NodeBase = class { + constructor(type) { + Object.defineProperty(this, identity.NODE_TYPE, { value: type }); + } + clone() { + const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); + if (this.range) + copy.range = this.range.slice(); + return copy; + } + toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { + if (!identity.isDocument(doc)) + throw new TypeError("A document argument is required"); + const ctx = { + anchors: new Map(), + doc, + keep: true, + mapAsMap: mapAsMap === true, + mapKeyWarned: false, + maxAliasCount: typeof maxAliasCount === "number" ? maxAliasCount : 100 + }; + const res = toJS.toJS(this, "", ctx); + if (typeof onAnchor === "function") + for (const { count, res: res2 } of ctx.anchors.values()) + onAnchor(res2, count); + return typeof reviver === "function" ? applyReviver.applyReviver(reviver, { "": res }, "", res) : res; + } + }; + exports.NodeBase = NodeBase; + } +}); + +// node_modules/yaml/dist/nodes/Alias.js +var require_Alias = __commonJS({ + "node_modules/yaml/dist/nodes/Alias.js"(exports) { + "use strict"; + var anchors = require_anchors(); + var visit = require_visit(); + var identity = require_identity(); + var Node = require_Node(); + var toJS = require_toJS(); + var Alias = class extends Node.NodeBase { + constructor(source) { + super(identity.ALIAS); + this.source = source; + Object.defineProperty(this, "tag", { + set() { + throw new Error("Alias nodes cannot have tags"); + } + }); + } + resolve(doc, ctx) { + let nodes; + if (ctx == null ? void 0 : ctx.aliasResolveCache) { + nodes = ctx.aliasResolveCache; + } else { + nodes = []; + visit.visit(doc, { + Node: (_key, node) => { + if (identity.isAlias(node) || identity.hasAnchor(node)) + nodes.push(node); + } + }); + if (ctx) + ctx.aliasResolveCache = nodes; + } + let found = void 0; + for (const node of nodes) { + if (node === this) + break; + if (node.anchor === this.source) + found = node; + } + return found; + } + toJSON(_arg, ctx) { + if (!ctx) + return { source: this.source }; + const { anchors: anchors2, doc, maxAliasCount } = ctx; + const source = this.resolve(doc, ctx); + if (!source) { + const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; + throw new ReferenceError(msg); + } + let data = anchors2.get(source); + if (!data) { + toJS.toJS(source, null, ctx); + data = anchors2.get(source); + } + if (!data || data.res === void 0) { + const msg = "This should not happen: Alias anchor was not resolved?"; + throw new ReferenceError(msg); + } + if (maxAliasCount >= 0) { + data.count += 1; + if (data.aliasCount === 0) + data.aliasCount = getAliasCount(doc, source, anchors2); + if (data.count * data.aliasCount > maxAliasCount) { + const msg = "Excessive alias count indicates a resource exhaustion attack"; + throw new ReferenceError(msg); + } + } + return data.res; + } + toString(ctx, _onComment, _onChompKeep) { + const src = `*${this.source}`; + if (ctx) { + anchors.anchorIsValid(this.source); + if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) { + const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`; + throw new Error(msg); + } + if (ctx.implicitKey) + return `${src} `; + } + return src; + } + }; + function getAliasCount(doc, node, anchors2) { + if (identity.isAlias(node)) { + const source = node.resolve(doc); + const anchor = anchors2 && source && anchors2.get(source); + return anchor ? anchor.count * anchor.aliasCount : 0; + } else if (identity.isCollection(node)) { + let count = 0; + for (const item of node.items) { + const c = getAliasCount(doc, item, anchors2); + if (c > count) + count = c; + } + return count; + } else if (identity.isPair(node)) { + const kc = getAliasCount(doc, node.key, anchors2); + const vc = getAliasCount(doc, node.value, anchors2); + return Math.max(kc, vc); + } + return 1; + } + exports.Alias = Alias; + } +}); + +// node_modules/yaml/dist/nodes/Scalar.js +var require_Scalar = __commonJS({ + "node_modules/yaml/dist/nodes/Scalar.js"(exports) { + "use strict"; + var identity = require_identity(); + var Node = require_Node(); + var toJS = require_toJS(); + var isScalarValue = (value) => !value || typeof value !== "function" && typeof value !== "object"; + var Scalar = class extends Node.NodeBase { + constructor(value) { + super(identity.SCALAR); + this.value = value; + } + toJSON(arg, ctx) { + return (ctx == null ? void 0 : ctx.keep) ? this.value : toJS.toJS(this.value, arg, ctx); + } + toString() { + return String(this.value); + } + }; + Scalar.BLOCK_FOLDED = "BLOCK_FOLDED"; + Scalar.BLOCK_LITERAL = "BLOCK_LITERAL"; + Scalar.PLAIN = "PLAIN"; + Scalar.QUOTE_DOUBLE = "QUOTE_DOUBLE"; + Scalar.QUOTE_SINGLE = "QUOTE_SINGLE"; + exports.Scalar = Scalar; + exports.isScalarValue = isScalarValue; + } +}); + +// node_modules/yaml/dist/doc/createNode.js +var require_createNode = __commonJS({ + "node_modules/yaml/dist/doc/createNode.js"(exports) { + "use strict"; + var Alias = require_Alias(); + var identity = require_identity(); + var Scalar = require_Scalar(); + var defaultTagPrefix = "tag:yaml.org,2002:"; + function findTagObject(value, tagName, tags) { + var _a; + if (tagName) { + const match = tags.filter((t) => t.tag === tagName); + const tagObj = (_a = match.find((t) => !t.format)) != null ? _a : match[0]; + if (!tagObj) + throw new Error(`Tag ${tagName} not found`); + return tagObj; + } + return tags.find((t) => { + var _a2; + return ((_a2 = t.identify) == null ? void 0 : _a2.call(t, value)) && !t.format; + }); + } + function createNode(value, tagName, ctx) { + var _a, _b, _c, _d; + if (identity.isDocument(value)) + value = value.contents; + if (identity.isNode(value)) + return value; + if (identity.isPair(value)) { + const map = (_b = (_a = ctx.schema[identity.MAP]).createNode) == null ? void 0 : _b.call(_a, ctx.schema, null, ctx); + map.items.push(value); + return map; + } + if (value instanceof String || value instanceof Number || value instanceof Boolean || typeof BigInt !== "undefined" && value instanceof BigInt) { + value = value.valueOf(); + } + const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx; + let ref = void 0; + if (aliasDuplicateObjects && value && typeof value === "object") { + ref = sourceObjects.get(value); + if (ref) { + (_c = ref.anchor) != null ? _c : ref.anchor = onAnchor(value); + return new Alias.Alias(ref.anchor); + } else { + ref = { anchor: null, node: null }; + sourceObjects.set(value, ref); + } + } + if (tagName == null ? void 0 : tagName.startsWith("!!")) + tagName = defaultTagPrefix + tagName.slice(2); + let tagObj = findTagObject(value, tagName, schema.tags); + if (!tagObj) { + if (value && typeof value.toJSON === "function") { + value = value.toJSON(); + } + if (!value || typeof value !== "object") { + const node2 = new Scalar.Scalar(value); + if (ref) + ref.node = node2; + return node2; + } + tagObj = value instanceof Map ? schema[identity.MAP] : Symbol.iterator in Object(value) ? schema[identity.SEQ] : schema[identity.MAP]; + } + if (onTagObj) { + onTagObj(tagObj); + delete ctx.onTagObj; + } + const node = (tagObj == null ? void 0 : tagObj.createNode) ? tagObj.createNode(ctx.schema, value, ctx) : typeof ((_d = tagObj == null ? void 0 : tagObj.nodeClass) == null ? void 0 : _d.from) === "function" ? tagObj.nodeClass.from(ctx.schema, value, ctx) : new Scalar.Scalar(value); + if (tagName) + node.tag = tagName; + else if (!tagObj.default) + node.tag = tagObj.tag; + if (ref) + ref.node = node; + return node; + } + exports.createNode = createNode; + } +}); + +// node_modules/yaml/dist/nodes/Collection.js +var require_Collection = __commonJS({ + "node_modules/yaml/dist/nodes/Collection.js"(exports) { + "use strict"; + var createNode = require_createNode(); + var identity = require_identity(); + var Node = require_Node(); + function collectionFromPath(schema, path2, value) { + let v = value; + for (let i = path2.length - 1; i >= 0; --i) { + const k = path2[i]; + if (typeof k === "number" && Number.isInteger(k) && k >= 0) { + const a = []; + a[k] = v; + v = a; + } else { + v = new Map([[k, v]]); + } + } + return createNode.createNode(v, void 0, { + aliasDuplicateObjects: false, + keepUndefined: false, + onAnchor: () => { + throw new Error("This should not happen, please report a bug."); + }, + schema, + sourceObjects: new Map() + }); + } + var isEmptyPath = (path2) => path2 == null || typeof path2 === "object" && !!path2[Symbol.iterator]().next().done; + var Collection = class extends Node.NodeBase { + constructor(type, schema) { + super(type); + Object.defineProperty(this, "schema", { + value: schema, + configurable: true, + enumerable: false, + writable: true + }); + } + clone(schema) { + const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); + if (schema) + copy.schema = schema; + copy.items = copy.items.map((it) => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it); + if (this.range) + copy.range = this.range.slice(); + return copy; + } + addIn(path2, value) { + if (isEmptyPath(path2)) + this.add(value); + else { + const [key, ...rest] = path2; + const node = this.get(key, true); + if (identity.isCollection(node)) + node.addIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + deleteIn(path2) { + const [key, ...rest] = path2; + if (rest.length === 0) + return this.delete(key); + const node = this.get(key, true); + if (identity.isCollection(node)) + return node.deleteIn(rest); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + getIn(path2, keepScalar) { + const [key, ...rest] = path2; + const node = this.get(key, true); + if (rest.length === 0) + return !keepScalar && identity.isScalar(node) ? node.value : node; + else + return identity.isCollection(node) ? node.getIn(rest, keepScalar) : void 0; + } + hasAllNullValues(allowScalar) { + return this.items.every((node) => { + if (!identity.isPair(node)) + return false; + const n = node.value; + return n == null || allowScalar && identity.isScalar(n) && n.value == null && !n.commentBefore && !n.comment && !n.tag; + }); + } + hasIn(path2) { + const [key, ...rest] = path2; + if (rest.length === 0) + return this.has(key); + const node = this.get(key, true); + return identity.isCollection(node) ? node.hasIn(rest) : false; + } + setIn(path2, value) { + const [key, ...rest] = path2; + if (rest.length === 0) { + this.set(key, value); + } else { + const node = this.get(key, true); + if (identity.isCollection(node)) + node.setIn(rest, value); + else if (node === void 0 && this.schema) + this.set(key, collectionFromPath(this.schema, rest, value)); + else + throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`); + } + } + }; + exports.Collection = Collection; + exports.collectionFromPath = collectionFromPath; + exports.isEmptyPath = isEmptyPath; + } +}); + +// node_modules/yaml/dist/stringify/stringifyComment.js +var require_stringifyComment = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyComment.js"(exports) { + "use strict"; + var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#"); + function indentComment(comment, indent) { + if (/^\n+$/.test(comment)) + return comment.substring(1); + return indent ? comment.replace(/^(?! *$)/gm, indent) : comment; + } + var lineComment = (str, indent, comment) => str.endsWith("\n") ? indentComment(comment, indent) : comment.includes("\n") ? "\n" + indentComment(comment, indent) : (str.endsWith(" ") ? "" : " ") + comment; + exports.indentComment = indentComment; + exports.lineComment = lineComment; + exports.stringifyComment = stringifyComment; + } +}); + +// node_modules/yaml/dist/stringify/foldFlowLines.js +var require_foldFlowLines = __commonJS({ + "node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) { + "use strict"; + var FOLD_FLOW = "flow"; + var FOLD_BLOCK = "block"; + var FOLD_QUOTED = "quoted"; + function foldFlowLines(text, indent, mode = "flow", { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) { + if (!lineWidth || lineWidth < 0) + return text; + if (lineWidth < minContentWidth) + minContentWidth = 0; + const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length); + if (text.length <= endStep) + return text; + const folds = []; + const escapedFolds = {}; + let end = lineWidth - indent.length; + if (typeof indentAtStart === "number") { + if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) + folds.push(0); + else + end = lineWidth - indentAtStart; + } + let split = void 0; + let prev = void 0; + let overflow = false; + let i = -1; + let escStart = -1; + let escEnd = -1; + if (mode === FOLD_BLOCK) { + i = consumeMoreIndentedLines(text, i, indent.length); + if (i !== -1) + end = i + endStep; + } + for (let ch; ch = text[i += 1]; ) { + if (mode === FOLD_QUOTED && ch === "\\") { + escStart = i; + switch (text[i + 1]) { + case "x": + i += 3; + break; + case "u": + i += 5; + break; + case "U": + i += 9; + break; + default: + i += 1; + } + escEnd = i; + } + if (ch === "\n") { + if (mode === FOLD_BLOCK) + i = consumeMoreIndentedLines(text, i, indent.length); + end = i + indent.length + endStep; + split = void 0; + } else { + if (ch === " " && prev && prev !== " " && prev !== "\n" && prev !== " ") { + const next = text[i + 1]; + if (next && next !== " " && next !== "\n" && next !== " ") + split = i; + } + if (i >= end) { + if (split) { + folds.push(split); + end = split + endStep; + split = void 0; + } else if (mode === FOLD_QUOTED) { + while (prev === " " || prev === " ") { + prev = ch; + ch = text[i += 1]; + overflow = true; + } + const j = i > escEnd + 1 ? i - 2 : escStart - 1; + if (escapedFolds[j]) + return text; + folds.push(j); + escapedFolds[j] = true; + end = j + endStep; + split = void 0; + } else { + overflow = true; + } + } + } + prev = ch; + } + if (overflow && onOverflow) + onOverflow(); + if (folds.length === 0) + return text; + if (onFold) + onFold(); + let res = text.slice(0, folds[0]); + for (let i2 = 0; i2 < folds.length; ++i2) { + const fold = folds[i2]; + const end2 = folds[i2 + 1] || text.length; + if (fold === 0) + res = ` +${indent}${text.slice(0, end2)}`; + else { + if (mode === FOLD_QUOTED && escapedFolds[fold]) + res += `${text[fold]}\\`; + res += ` +${indent}${text.slice(fold + 1, end2)}`; + } + } + return res; + } + function consumeMoreIndentedLines(text, i, indent) { + let end = i; + let start = i + 1; + let ch = text[start]; + while (ch === " " || ch === " ") { + if (i < start + indent) { + ch = text[++i]; + } else { + do { + ch = text[++i]; + } while (ch && ch !== "\n"); + end = i; + start = i + 1; + ch = text[start]; + } + } + return end; + } + exports.FOLD_BLOCK = FOLD_BLOCK; + exports.FOLD_FLOW = FOLD_FLOW; + exports.FOLD_QUOTED = FOLD_QUOTED; + exports.foldFlowLines = foldFlowLines; + } +}); + +// node_modules/yaml/dist/stringify/stringifyString.js +var require_stringifyString = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyString.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var foldFlowLines = require_foldFlowLines(); + var getFoldOptions = (ctx, isBlock) => ({ + indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart, + lineWidth: ctx.options.lineWidth, + minContentWidth: ctx.options.minContentWidth + }); + var containsDocumentMarker = (str) => /^(%|---|\.\.\.)/m.test(str); + function lineLengthOverLimit(str, lineWidth, indentLength) { + if (!lineWidth || lineWidth < 0) + return false; + const limit = lineWidth - indentLength; + const strLen = str.length; + if (strLen <= limit) + return false; + for (let i = 0, start = 0; i < strLen; ++i) { + if (str[i] === "\n") { + if (i - start > limit) + return true; + start = i + 1; + if (strLen - start <= limit) + return false; + } + } + return true; + } + function doubleQuotedString(value, ctx) { + const json = JSON.stringify(value); + if (ctx.options.doubleQuotedAsJSON) + return json; + const { implicitKey } = ctx; + const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength; + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + let str = ""; + let start = 0; + for (let i = 0, ch = json[i]; ch; ch = json[++i]) { + if (ch === " " && json[i + 1] === "\\" && json[i + 2] === "n") { + str += json.slice(start, i) + "\\ "; + i += 1; + start = i; + ch = "\\"; + } + if (ch === "\\") + switch (json[i + 1]) { + case "u": + { + str += json.slice(start, i); + const code = json.substr(i + 2, 4); + switch (code) { + case "0000": + str += "\\0"; + break; + case "0007": + str += "\\a"; + break; + case "000b": + str += "\\v"; + break; + case "001b": + str += "\\e"; + break; + case "0085": + str += "\\N"; + break; + case "00a0": + str += "\\_"; + break; + case "2028": + str += "\\L"; + break; + case "2029": + str += "\\P"; + break; + default: + if (code.substr(0, 2) === "00") + str += "\\x" + code.substr(2); + else + str += json.substr(i, 6); + } + i += 5; + start = i + 1; + } + break; + case "n": + if (implicitKey || json[i + 2] === '"' || json.length < minMultiLineLength) { + i += 1; + } else { + str += json.slice(start, i) + "\n\n"; + while (json[i + 2] === "\\" && json[i + 3] === "n" && json[i + 4] !== '"') { + str += "\n"; + i += 2; + } + str += indent; + if (json[i + 2] === " ") + str += "\\"; + i += 1; + start = i + 1; + } + break; + default: + i += 1; + } + } + str = start ? str + json.slice(start) : json; + return implicitKey ? str : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false)); + } + function singleQuotedString(value, ctx) { + if (ctx.options.singleQuote === false || ctx.implicitKey && value.includes("\n") || /[ \t]\n|\n[ \t]/.test(value)) + return doubleQuotedString(value, ctx); + const indent = ctx.indent || (containsDocumentMarker(value) ? " " : ""); + const res = "'" + value.replace(/'/g, "''").replace(/\n+/g, `$& +${indent}`) + "'"; + return ctx.implicitKey ? res : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false)); + } + function quotedString(value, ctx) { + const { singleQuote } = ctx.options; + let qs; + if (singleQuote === false) + qs = doubleQuotedString; + else { + const hasDouble = value.includes('"'); + const hasSingle = value.includes("'"); + if (hasDouble && !hasSingle) + qs = singleQuotedString; + else if (hasSingle && !hasDouble) + qs = doubleQuotedString; + else + qs = singleQuote ? singleQuotedString : doubleQuotedString; + } + return qs(value, ctx); + } + var blockEndNewlines; + try { + blockEndNewlines = new RegExp("(^|(?\n"; + let chomp; + let endStart; + for (endStart = value.length; endStart > 0; --endStart) { + const ch = value[endStart - 1]; + if (ch !== "\n" && ch !== " " && ch !== " ") + break; + } + let end = value.substring(endStart); + const endNlPos = end.indexOf("\n"); + if (endNlPos === -1) { + chomp = "-"; + } else if (value === end || endNlPos !== end.length - 1) { + chomp = "+"; + if (onChompKeep) + onChompKeep(); + } else { + chomp = ""; + } + if (end) { + value = value.slice(0, -end.length); + if (end[end.length - 1] === "\n") + end = end.slice(0, -1); + end = end.replace(blockEndNewlines, `$&${indent}`); + } + let startWithSpace = false; + let startEnd; + let startNlPos = -1; + for (startEnd = 0; startEnd < value.length; ++startEnd) { + const ch = value[startEnd]; + if (ch === " ") + startWithSpace = true; + else if (ch === "\n") + startNlPos = startEnd; + else + break; + } + let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd); + if (start) { + value = value.substring(start.length); + start = start.replace(/\n+/g, `$&${indent}`); + } + const indentSize = indent ? "2" : "1"; + let header = (startWithSpace ? indentSize : "") + chomp; + if (comment) { + header += " " + commentString(comment.replace(/ ?[\r\n]+/g, " ")); + if (onComment) + onComment(); + } + if (!literal) { + const foldedValue = value.replace(/\n+/g, "\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, `$&${indent}`); + let literalFallback = false; + const foldOptions = getFoldOptions(ctx, true); + if (blockQuote !== "folded" && type !== Scalar.Scalar.BLOCK_FOLDED) { + foldOptions.onOverflow = () => { + literalFallback = true; + }; + } + const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions); + if (!literalFallback) + return `>${header} +${indent}${body}`; + } + value = value.replace(/\n+/g, `$&${indent}`); + return `|${header} +${indent}${start}${value}${end}`; + } + function plainString(item, ctx, onComment, onChompKeep) { + const { type, value } = item; + const { actualString, implicitKey, indent, indentStep, inFlow } = ctx; + if (implicitKey && value.includes("\n") || inFlow && /[[\]{},]/.test(value)) { + return quotedString(value, ctx); + } + if (/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(value)) { + return implicitKey || inFlow || !value.includes("\n") ? quotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep); + } + if (!implicitKey && !inFlow && type !== Scalar.Scalar.PLAIN && value.includes("\n")) { + return blockString(item, ctx, onComment, onChompKeep); + } + if (containsDocumentMarker(value)) { + if (indent === "") { + ctx.forceBlockIndent = true; + return blockString(item, ctx, onComment, onChompKeep); + } else if (implicitKey && indent === indentStep) { + return quotedString(value, ctx); + } + } + const str = value.replace(/\n+/g, `$& +${indent}`); + if (actualString) { + const test = (tag) => { + var _a; + return tag.default && tag.tag !== "tag:yaml.org,2002:str" && ((_a = tag.test) == null ? void 0 : _a.test(str)); + }; + const { compat, tags } = ctx.doc.schema; + if (tags.some(test) || (compat == null ? void 0 : compat.some(test))) + return quotedString(value, ctx); + } + return implicitKey ? str : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false)); + } + function stringifyString(item, ctx, onComment, onChompKeep) { + const { implicitKey, inFlow } = ctx; + const ss = typeof item.value === "string" ? item : Object.assign({}, item, { value: String(item.value) }); + let { type } = item; + if (type !== Scalar.Scalar.QUOTE_DOUBLE) { + if (/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(ss.value)) + type = Scalar.Scalar.QUOTE_DOUBLE; + } + const _stringify = (_type) => { + switch (_type) { + case Scalar.Scalar.BLOCK_FOLDED: + case Scalar.Scalar.BLOCK_LITERAL: + return implicitKey || inFlow ? quotedString(ss.value, ctx) : blockString(ss, ctx, onComment, onChompKeep); + case Scalar.Scalar.QUOTE_DOUBLE: + return doubleQuotedString(ss.value, ctx); + case Scalar.Scalar.QUOTE_SINGLE: + return singleQuotedString(ss.value, ctx); + case Scalar.Scalar.PLAIN: + return plainString(ss, ctx, onComment, onChompKeep); + default: + return null; + } + }; + let res = _stringify(type); + if (res === null) { + const { defaultKeyType, defaultStringType } = ctx.options; + const t = implicitKey && defaultKeyType || defaultStringType; + res = _stringify(t); + if (res === null) + throw new Error(`Unsupported default string type ${t}`); + } + return res; + } + exports.stringifyString = stringifyString; + } +}); + +// node_modules/yaml/dist/stringify/stringify.js +var require_stringify2 = __commonJS({ + "node_modules/yaml/dist/stringify/stringify.js"(exports) { + "use strict"; + var anchors = require_anchors(); + var identity = require_identity(); + var stringifyComment = require_stringifyComment(); + var stringifyString = require_stringifyString(); + function createStringifyContext(doc, options) { + const opt = Object.assign({ + blockQuote: true, + commentString: stringifyComment.stringifyComment, + defaultKeyType: null, + defaultStringType: "PLAIN", + directives: null, + doubleQuotedAsJSON: false, + doubleQuotedMinMultiLineLength: 40, + falseStr: "false", + flowCollectionPadding: true, + indentSeq: true, + lineWidth: 80, + minContentWidth: 20, + nullStr: "null", + simpleKeys: false, + singleQuote: null, + trueStr: "true", + verifyAliasOrder: true + }, doc.schema.toStringOptions, options); + let inFlow; + switch (opt.collectionStyle) { + case "block": + inFlow = false; + break; + case "flow": + inFlow = true; + break; + default: + inFlow = null; + } + return { + anchors: new Set(), + doc, + flowCollectionPadding: opt.flowCollectionPadding ? " " : "", + indent: "", + indentStep: typeof opt.indent === "number" ? " ".repeat(opt.indent) : " ", + inFlow, + options: opt + }; + } + function getTagObject(tags, item) { + var _a, _b, _c, _d; + if (item.tag) { + const match = tags.filter((t) => t.tag === item.tag); + if (match.length > 0) + return (_a = match.find((t) => t.format === item.format)) != null ? _a : match[0]; + } + let tagObj = void 0; + let obj; + if (identity.isScalar(item)) { + obj = item.value; + let match = tags.filter((t) => { + var _a2; + return (_a2 = t.identify) == null ? void 0 : _a2.call(t, obj); + }); + if (match.length > 1) { + const testMatch = match.filter((t) => t.test); + if (testMatch.length > 0) + match = testMatch; + } + tagObj = (_b = match.find((t) => t.format === item.format)) != null ? _b : match.find((t) => !t.format); + } else { + obj = item; + tagObj = tags.find((t) => t.nodeClass && obj instanceof t.nodeClass); + } + if (!tagObj) { + const name = (_d = (_c = obj == null ? void 0 : obj.constructor) == null ? void 0 : _c.name) != null ? _d : obj === null ? "null" : typeof obj; + throw new Error(`Tag not resolved for ${name} value`); + } + return tagObj; + } + function stringifyProps(node, tagObj, { anchors: anchors$1, doc }) { + var _a; + if (!doc.directives) + return ""; + const props = []; + const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor; + if (anchor && anchors.anchorIsValid(anchor)) { + anchors$1.add(anchor); + props.push(`&${anchor}`); + } + const tag = (_a = node.tag) != null ? _a : tagObj.default ? null : tagObj.tag; + if (tag) + props.push(doc.directives.tagString(tag)); + return props.join(" "); + } + function stringify(item, ctx, onComment, onChompKeep) { + var _a, _b; + if (identity.isPair(item)) + return item.toString(ctx, onComment, onChompKeep); + if (identity.isAlias(item)) { + if (ctx.doc.directives) + return item.toString(ctx); + if ((_a = ctx.resolvedAliases) == null ? void 0 : _a.has(item)) { + throw new TypeError(`Cannot stringify circular structure without alias nodes`); + } else { + if (ctx.resolvedAliases) + ctx.resolvedAliases.add(item); + else + ctx.resolvedAliases = new Set([item]); + item = item.resolve(ctx.doc); + } + } + let tagObj = void 0; + const node = identity.isNode(item) ? item : ctx.doc.createNode(item, { onTagObj: (o) => tagObj = o }); + tagObj != null ? tagObj : tagObj = getTagObject(ctx.doc.schema.tags, node); + const props = stringifyProps(node, tagObj, ctx); + if (props.length > 0) + ctx.indentAtStart = ((_b = ctx.indentAtStart) != null ? _b : 0) + props.length + 1; + const str = typeof tagObj.stringify === "function" ? tagObj.stringify(node, ctx, onComment, onChompKeep) : identity.isScalar(node) ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep) : node.toString(ctx, onComment, onChompKeep); + if (!props) + return str; + return identity.isScalar(node) || str[0] === "{" || str[0] === "[" ? `${props} ${str}` : `${props} +${ctx.indent}${str}`; + } + exports.createStringifyContext = createStringifyContext; + exports.stringify = stringify; + } +}); + +// node_modules/yaml/dist/stringify/stringifyPair.js +var require_stringifyPair = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyPair.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var stringify = require_stringify2(); + var stringifyComment = require_stringifyComment(); + function stringifyPair({ key, value }, ctx, onComment, onChompKeep) { + var _a, _b; + const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx; + let keyComment = identity.isNode(key) && key.comment || null; + if (simpleKeys) { + if (keyComment) { + throw new Error("With simple keys, key nodes cannot have comments"); + } + if (identity.isCollection(key) || !identity.isNode(key) && typeof key === "object") { + const msg = "With simple keys, collection cannot be used as a key value"; + throw new Error(msg); + } + } + let explicitKey = !simpleKeys && (!key || keyComment && value == null && !ctx.inFlow || identity.isCollection(key) || (identity.isScalar(key) ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL : typeof key === "object")); + ctx = Object.assign({}, ctx, { + allNullValues: false, + implicitKey: !explicitKey && (simpleKeys || !allNullValues), + indent: indent + indentStep + }); + let keyCommentDone = false; + let chompKeep = false; + let str = stringify.stringify(key, ctx, () => keyCommentDone = true, () => chompKeep = true); + if (!explicitKey && !ctx.inFlow && str.length > 1024) { + if (simpleKeys) + throw new Error("With simple keys, single line scalar must not span more than 1024 characters"); + explicitKey = true; + } + if (ctx.inFlow) { + if (allNullValues || value == null) { + if (keyCommentDone && onComment) + onComment(); + return str === "" ? "?" : explicitKey ? `? ${str}` : str; + } + } else if (allNullValues && !simpleKeys || value == null && explicitKey) { + str = `? ${str}`; + if (keyComment && !keyCommentDone) { + str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); + } else if (chompKeep && onChompKeep) + onChompKeep(); + return str; + } + if (keyCommentDone) + keyComment = null; + if (explicitKey) { + if (keyComment) + str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); + str = `? ${str} +${indent}:`; + } else { + str = `${str}:`; + if (keyComment) + str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment)); + } + let vsb, vcb, valueComment; + if (identity.isNode(value)) { + vsb = !!value.spaceBefore; + vcb = value.commentBefore; + valueComment = value.comment; + } else { + vsb = false; + vcb = null; + valueComment = null; + if (value && typeof value === "object") + value = doc.createNode(value); + } + ctx.implicitKey = false; + if (!explicitKey && !keyComment && identity.isScalar(value)) + ctx.indentAtStart = str.length + 1; + chompKeep = false; + if (!indentSeq && indentStep.length >= 2 && !ctx.inFlow && !explicitKey && identity.isSeq(value) && !value.flow && !value.tag && !value.anchor) { + ctx.indent = ctx.indent.substring(2); + } + let valueCommentDone = false; + const valueStr = stringify.stringify(value, ctx, () => valueCommentDone = true, () => chompKeep = true); + let ws = " "; + if (keyComment || vsb || vcb) { + ws = vsb ? "\n" : ""; + if (vcb) { + const cs = commentString(vcb); + ws += ` +${stringifyComment.indentComment(cs, ctx.indent)}`; + } + if (valueStr === "" && !ctx.inFlow) { + if (ws === "\n") + ws = "\n\n"; + } else { + ws += ` +${ctx.indent}`; + } + } else if (!explicitKey && identity.isCollection(value)) { + const vs0 = valueStr[0]; + const nl0 = valueStr.indexOf("\n"); + const hasNewline = nl0 !== -1; + const flow = (_b = (_a = ctx.inFlow) != null ? _a : value.flow) != null ? _b : value.items.length === 0; + if (hasNewline || !flow) { + let hasPropsLine = false; + if (hasNewline && (vs0 === "&" || vs0 === "!")) { + let sp0 = valueStr.indexOf(" "); + if (vs0 === "&" && sp0 !== -1 && sp0 < nl0 && valueStr[sp0 + 1] === "!") { + sp0 = valueStr.indexOf(" ", sp0 + 1); + } + if (sp0 === -1 || nl0 < sp0) + hasPropsLine = true; + } + if (!hasPropsLine) + ws = ` +${ctx.indent}`; + } + } else if (valueStr === "" || valueStr[0] === "\n") { + ws = ""; + } + str += ws + valueStr; + if (ctx.inFlow) { + if (valueCommentDone && onComment) + onComment(); + } else if (valueComment && !valueCommentDone) { + str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment)); + } else if (chompKeep && onChompKeep) { + onChompKeep(); + } + return str; + } + exports.stringifyPair = stringifyPair; + } +}); + +// node_modules/yaml/dist/log.js +var require_log2 = __commonJS({ + "node_modules/yaml/dist/log.js"(exports) { + "use strict"; + var node_process = require("process"); + function debug(logLevel, ...messages) { + if (logLevel === "debug") + console.log(...messages); + } + function warn(logLevel, warning) { + if (logLevel === "debug" || logLevel === "warn") { + if (typeof node_process.emitWarning === "function") + node_process.emitWarning(warning); + else + console.warn(warning); + } + } + exports.debug = debug; + exports.warn = warn; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/merge.js +var require_merge = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var MERGE_KEY = "<<"; + var merge = { + identify: (value) => value === MERGE_KEY || typeof value === "symbol" && value.description === MERGE_KEY, + default: "key", + tag: "tag:yaml.org,2002:merge", + test: /^<<$/, + resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), { + addToJSMap: addMergeToJSMap + }), + stringify: () => MERGE_KEY + }; + var isMergeKey = (ctx, key) => (merge.identify(key) || identity.isScalar(key) && (!key.type || key.type === Scalar.Scalar.PLAIN) && merge.identify(key.value)) && (ctx == null ? void 0 : ctx.doc.schema.tags.some((tag) => tag.tag === merge.tag && tag.default)); + function addMergeToJSMap(ctx, map, value) { + value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value; + if (identity.isSeq(value)) + for (const it of value.items) + mergeValue(ctx, map, it); + else if (Array.isArray(value)) + for (const it of value) + mergeValue(ctx, map, it); + else + mergeValue(ctx, map, value); + } + function mergeValue(ctx, map, value) { + const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value; + if (!identity.isMap(source)) + throw new Error("Merge sources must be maps or map aliases"); + const srcMap = source.toJSON(null, ctx, Map); + for (const [key, value2] of srcMap) { + if (map instanceof Map) { + if (!map.has(key)) + map.set(key, value2); + } else if (map instanceof Set) { + map.add(key); + } else if (!Object.prototype.hasOwnProperty.call(map, key)) { + Object.defineProperty(map, key, { + value: value2, + writable: true, + enumerable: true, + configurable: true + }); + } + } + return map; + } + exports.addMergeToJSMap = addMergeToJSMap; + exports.isMergeKey = isMergeKey; + exports.merge = merge; + } +}); + +// node_modules/yaml/dist/nodes/addPairToJSMap.js +var require_addPairToJSMap = __commonJS({ + "node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) { + "use strict"; + var log = require_log2(); + var merge = require_merge(); + var stringify = require_stringify2(); + var identity = require_identity(); + var toJS = require_toJS(); + function addPairToJSMap(ctx, map, { key, value }) { + if (identity.isNode(key) && key.addToJSMap) + key.addToJSMap(ctx, map, value); + else if (merge.isMergeKey(ctx, key)) + merge.addMergeToJSMap(ctx, map, value); + else { + const jsKey = toJS.toJS(key, "", ctx); + if (map instanceof Map) { + map.set(jsKey, toJS.toJS(value, jsKey, ctx)); + } else if (map instanceof Set) { + map.add(jsKey); + } else { + const stringKey = stringifyKey(key, jsKey, ctx); + const jsValue = toJS.toJS(value, stringKey, ctx); + if (stringKey in map) + Object.defineProperty(map, stringKey, { + value: jsValue, + writable: true, + enumerable: true, + configurable: true + }); + else + map[stringKey] = jsValue; + } + } + return map; + } + function stringifyKey(key, jsKey, ctx) { + if (jsKey === null) + return ""; + if (typeof jsKey !== "object") + return String(jsKey); + if (identity.isNode(key) && (ctx == null ? void 0 : ctx.doc)) { + const strCtx = stringify.createStringifyContext(ctx.doc, {}); + strCtx.anchors = new Set(); + for (const node of ctx.anchors.keys()) + strCtx.anchors.add(node.anchor); + strCtx.inFlow = true; + strCtx.inStringifyKey = true; + const strKey = key.toString(strCtx); + if (!ctx.mapKeyWarned) { + let jsonStr = JSON.stringify(strKey); + if (jsonStr.length > 40) + jsonStr = jsonStr.substring(0, 36) + '..."'; + log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`); + ctx.mapKeyWarned = true; + } + return strKey; + } + return JSON.stringify(jsKey); + } + exports.addPairToJSMap = addPairToJSMap; + } +}); + +// node_modules/yaml/dist/nodes/Pair.js +var require_Pair = __commonJS({ + "node_modules/yaml/dist/nodes/Pair.js"(exports) { + "use strict"; + var createNode = require_createNode(); + var stringifyPair = require_stringifyPair(); + var addPairToJSMap = require_addPairToJSMap(); + var identity = require_identity(); + function createPair(key, value, ctx) { + const k = createNode.createNode(key, void 0, ctx); + const v = createNode.createNode(value, void 0, ctx); + return new Pair(k, v); + } + var Pair = class { + constructor(key, value = null) { + Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR }); + this.key = key; + this.value = value; + } + clone(schema) { + let { key, value } = this; + if (identity.isNode(key)) + key = key.clone(schema); + if (identity.isNode(value)) + value = value.clone(schema); + return new Pair(key, value); + } + toJSON(_, ctx) { + const pair = (ctx == null ? void 0 : ctx.mapAsMap) ? new Map() : {}; + return addPairToJSMap.addPairToJSMap(ctx, pair, this); + } + toString(ctx, onComment, onChompKeep) { + return (ctx == null ? void 0 : ctx.doc) ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep) : JSON.stringify(this); + } + }; + exports.Pair = Pair; + exports.createPair = createPair; + } +}); + +// node_modules/yaml/dist/stringify/stringifyCollection.js +var require_stringifyCollection = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) { + "use strict"; + var identity = require_identity(); + var stringify = require_stringify2(); + var stringifyComment = require_stringifyComment(); + function stringifyCollection(collection, ctx, options) { + var _a; + const flow = (_a = ctx.inFlow) != null ? _a : collection.flow; + const stringify2 = flow ? stringifyFlowCollection : stringifyBlockCollection; + return stringify2(collection, ctx, options); + } + function stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) { + const { indent, options: { commentString } } = ctx; + const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null }); + let chompKeep = false; + const lines = []; + for (let i = 0; i < items.length; ++i) { + const item = items[i]; + let comment2 = null; + if (identity.isNode(item)) { + if (!chompKeep && item.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, item.commentBefore, chompKeep); + if (item.comment) + comment2 = item.comment; + } else if (identity.isPair(item)) { + const ik = identity.isNode(item.key) ? item.key : null; + if (ik) { + if (!chompKeep && ik.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, ik.commentBefore, chompKeep); + } + } + chompKeep = false; + let str2 = stringify.stringify(item, itemCtx, () => comment2 = null, () => chompKeep = true); + if (comment2) + str2 += stringifyComment.lineComment(str2, itemIndent, commentString(comment2)); + if (chompKeep && comment2) + chompKeep = false; + lines.push(blockItemPrefix + str2); + } + let str; + if (lines.length === 0) { + str = flowChars.start + flowChars.end; + } else { + str = lines[0]; + for (let i = 1; i < lines.length; ++i) { + const line = lines[i]; + str += line ? ` +${indent}${line}` : "\n"; + } + } + if (comment) { + str += "\n" + stringifyComment.indentComment(commentString(comment), indent); + if (onComment) + onComment(); + } else if (chompKeep && onChompKeep) + onChompKeep(); + return str; + } + function stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) { + const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx; + itemIndent += indentStep; + const itemCtx = Object.assign({}, ctx, { + indent: itemIndent, + inFlow: true, + type: null + }); + let reqNewline = false; + let linesAtValue = 0; + const lines = []; + for (let i = 0; i < items.length; ++i) { + const item = items[i]; + let comment = null; + if (identity.isNode(item)) { + if (item.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, item.commentBefore, false); + if (item.comment) + comment = item.comment; + } else if (identity.isPair(item)) { + const ik = identity.isNode(item.key) ? item.key : null; + if (ik) { + if (ik.spaceBefore) + lines.push(""); + addCommentBefore(ctx, lines, ik.commentBefore, false); + if (ik.comment) + reqNewline = true; + } + const iv = identity.isNode(item.value) ? item.value : null; + if (iv) { + if (iv.comment) + comment = iv.comment; + if (iv.commentBefore) + reqNewline = true; + } else if (item.value == null && (ik == null ? void 0 : ik.comment)) { + comment = ik.comment; + } + } + if (comment) + reqNewline = true; + let str = stringify.stringify(item, itemCtx, () => comment = null); + if (i < items.length - 1) + str += ","; + if (comment) + str += stringifyComment.lineComment(str, itemIndent, commentString(comment)); + if (!reqNewline && (lines.length > linesAtValue || str.includes("\n"))) + reqNewline = true; + lines.push(str); + linesAtValue = lines.length; + } + const { start, end } = flowChars; + if (lines.length === 0) { + return start + end; + } else { + if (!reqNewline) { + const len = lines.reduce((sum, line) => sum + line.length + 2, 2); + reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth; + } + if (reqNewline) { + let str = start; + for (const line of lines) + str += line ? ` +${indentStep}${indent}${line}` : "\n"; + return `${str} +${indent}${end}`; + } else { + return `${start}${fcPadding}${lines.join(" ")}${fcPadding}${end}`; + } + } + } + function addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) { + if (comment && chompKeep) + comment = comment.replace(/^\n+/, ""); + if (comment) { + const ic = stringifyComment.indentComment(commentString(comment), indent); + lines.push(ic.trimStart()); + } + } + exports.stringifyCollection = stringifyCollection; + } +}); + +// node_modules/yaml/dist/nodes/YAMLMap.js +var require_YAMLMap = __commonJS({ + "node_modules/yaml/dist/nodes/YAMLMap.js"(exports) { + "use strict"; + var stringifyCollection = require_stringifyCollection(); + var addPairToJSMap = require_addPairToJSMap(); + var Collection = require_Collection(); + var identity = require_identity(); + var Pair = require_Pair(); + var Scalar = require_Scalar(); + function findPair(items, key) { + const k = identity.isScalar(key) ? key.value : key; + for (const it of items) { + if (identity.isPair(it)) { + if (it.key === key || it.key === k) + return it; + if (identity.isScalar(it.key) && it.key.value === k) + return it; + } + } + return void 0; + } + var YAMLMap = class extends Collection.Collection { + static get tagName() { + return "tag:yaml.org,2002:map"; + } + constructor(schema) { + super(identity.MAP, schema); + this.items = []; + } + static from(schema, obj, ctx) { + const { keepUndefined, replacer } = ctx; + const map = new this(schema); + const add = (key, value) => { + if (typeof replacer === "function") + value = replacer.call(obj, key, value); + else if (Array.isArray(replacer) && !replacer.includes(key)) + return; + if (value !== void 0 || keepUndefined) + map.items.push(Pair.createPair(key, value, ctx)); + }; + if (obj instanceof Map) { + for (const [key, value] of obj) + add(key, value); + } else if (obj && typeof obj === "object") { + for (const key of Object.keys(obj)) + add(key, obj[key]); + } + if (typeof schema.sortMapEntries === "function") { + map.items.sort(schema.sortMapEntries); + } + return map; + } + add(pair, overwrite) { + var _a; + let _pair; + if (identity.isPair(pair)) + _pair = pair; + else if (!pair || typeof pair !== "object" || !("key" in pair)) { + _pair = new Pair.Pair(pair, pair == null ? void 0 : pair.value); + } else + _pair = new Pair.Pair(pair.key, pair.value); + const prev = findPair(this.items, _pair.key); + const sortEntries = (_a = this.schema) == null ? void 0 : _a.sortMapEntries; + if (prev) { + if (!overwrite) + throw new Error(`Key ${_pair.key} already set`); + if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value)) + prev.value.value = _pair.value; + else + prev.value = _pair.value; + } else if (sortEntries) { + const i = this.items.findIndex((item) => sortEntries(_pair, item) < 0); + if (i === -1) + this.items.push(_pair); + else + this.items.splice(i, 0, _pair); + } else { + this.items.push(_pair); + } + } + delete(key) { + const it = findPair(this.items, key); + if (!it) + return false; + const del = this.items.splice(this.items.indexOf(it), 1); + return del.length > 0; + } + get(key, keepScalar) { + var _a; + const it = findPair(this.items, key); + const node = it == null ? void 0 : it.value; + return (_a = !keepScalar && identity.isScalar(node) ? node.value : node) != null ? _a : void 0; + } + has(key) { + return !!findPair(this.items, key); + } + set(key, value) { + this.add(new Pair.Pair(key, value), true); + } + toJSON(_, ctx, Type) { + const map = Type ? new Type() : (ctx == null ? void 0 : ctx.mapAsMap) ? new Map() : {}; + if (ctx == null ? void 0 : ctx.onCreate) + ctx.onCreate(map); + for (const item of this.items) + addPairToJSMap.addPairToJSMap(ctx, map, item); + return map; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + for (const item of this.items) { + if (!identity.isPair(item)) + throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`); + } + if (!ctx.allNullValues && this.hasAllNullValues(false)) + ctx = Object.assign({}, ctx, { allNullValues: true }); + return stringifyCollection.stringifyCollection(this, ctx, { + blockItemPrefix: "", + flowChars: { start: "{", end: "}" }, + itemIndent: ctx.indent || "", + onChompKeep, + onComment + }); + } + }; + exports.YAMLMap = YAMLMap; + exports.findPair = findPair; + } +}); + +// node_modules/yaml/dist/schema/common/map.js +var require_map = __commonJS({ + "node_modules/yaml/dist/schema/common/map.js"(exports) { + "use strict"; + var identity = require_identity(); + var YAMLMap = require_YAMLMap(); + var map = { + collection: "map", + default: true, + nodeClass: YAMLMap.YAMLMap, + tag: "tag:yaml.org,2002:map", + resolve(map2, onError) { + if (!identity.isMap(map2)) + onError("Expected a mapping for this tag"); + return map2; + }, + createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx) + }; + exports.map = map; + } +}); + +// node_modules/yaml/dist/nodes/YAMLSeq.js +var require_YAMLSeq = __commonJS({ + "node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) { + "use strict"; + var createNode = require_createNode(); + var stringifyCollection = require_stringifyCollection(); + var Collection = require_Collection(); + var identity = require_identity(); + var Scalar = require_Scalar(); + var toJS = require_toJS(); + var YAMLSeq = class extends Collection.Collection { + static get tagName() { + return "tag:yaml.org,2002:seq"; + } + constructor(schema) { + super(identity.SEQ, schema); + this.items = []; + } + add(value) { + this.items.push(value); + } + delete(key) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return false; + const del = this.items.splice(idx, 1); + return del.length > 0; + } + get(key, keepScalar) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + return void 0; + const it = this.items[idx]; + return !keepScalar && identity.isScalar(it) ? it.value : it; + } + has(key) { + const idx = asItemIndex(key); + return typeof idx === "number" && idx < this.items.length; + } + set(key, value) { + const idx = asItemIndex(key); + if (typeof idx !== "number") + throw new Error(`Expected a valid index, not ${key}.`); + const prev = this.items[idx]; + if (identity.isScalar(prev) && Scalar.isScalarValue(value)) + prev.value = value; + else + this.items[idx] = value; + } + toJSON(_, ctx) { + const seq = []; + if (ctx == null ? void 0 : ctx.onCreate) + ctx.onCreate(seq); + let i = 0; + for (const item of this.items) + seq.push(toJS.toJS(item, String(i++), ctx)); + return seq; + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + return stringifyCollection.stringifyCollection(this, ctx, { + blockItemPrefix: "- ", + flowChars: { start: "[", end: "]" }, + itemIndent: (ctx.indent || "") + " ", + onChompKeep, + onComment + }); + } + static from(schema, obj, ctx) { + const { replacer } = ctx; + const seq = new this(schema); + if (obj && Symbol.iterator in Object(obj)) { + let i = 0; + for (let it of obj) { + if (typeof replacer === "function") { + const key = obj instanceof Set ? it : String(i++); + it = replacer.call(obj, key, it); + } + seq.items.push(createNode.createNode(it, void 0, ctx)); + } + } + return seq; + } + }; + function asItemIndex(key) { + let idx = identity.isScalar(key) ? key.value : key; + if (idx && typeof idx === "string") + idx = Number(idx); + return typeof idx === "number" && Number.isInteger(idx) && idx >= 0 ? idx : null; + } + exports.YAMLSeq = YAMLSeq; + } +}); + +// node_modules/yaml/dist/schema/common/seq.js +var require_seq = __commonJS({ + "node_modules/yaml/dist/schema/common/seq.js"(exports) { + "use strict"; + var identity = require_identity(); + var YAMLSeq = require_YAMLSeq(); + var seq = { + collection: "seq", + default: true, + nodeClass: YAMLSeq.YAMLSeq, + tag: "tag:yaml.org,2002:seq", + resolve(seq2, onError) { + if (!identity.isSeq(seq2)) + onError("Expected a sequence for this tag"); + return seq2; + }, + createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx) + }; + exports.seq = seq; + } +}); + +// node_modules/yaml/dist/schema/common/string.js +var require_string = __commonJS({ + "node_modules/yaml/dist/schema/common/string.js"(exports) { + "use strict"; + var stringifyString = require_stringifyString(); + var string = { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: (str) => str, + stringify(item, ctx, onComment, onChompKeep) { + ctx = Object.assign({ actualString: true }, ctx); + return stringifyString.stringifyString(item, ctx, onComment, onChompKeep); + } + }; + exports.string = string; + } +}); + +// node_modules/yaml/dist/schema/common/null.js +var require_null = __commonJS({ + "node_modules/yaml/dist/schema/common/null.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var nullTag = { + identify: (value) => value == null, + createNode: () => new Scalar.Scalar(null), + default: true, + tag: "tag:yaml.org,2002:null", + test: /^(?:~|[Nn]ull|NULL)?$/, + resolve: () => new Scalar.Scalar(null), + stringify: ({ source }, ctx) => typeof source === "string" && nullTag.test.test(source) ? source : ctx.options.nullStr + }; + exports.nullTag = nullTag; + } +}); + +// node_modules/yaml/dist/schema/core/bool.js +var require_bool = __commonJS({ + "node_modules/yaml/dist/schema/core/bool.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var boolTag = { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, + resolve: (str) => new Scalar.Scalar(str[0] === "t" || str[0] === "T"), + stringify({ source, value }, ctx) { + if (source && boolTag.test.test(source)) { + const sv = source[0] === "t" || source[0] === "T"; + if (value === sv) + return source; + } + return value ? ctx.options.trueStr : ctx.options.falseStr; + } + }; + exports.boolTag = boolTag; + } +}); + +// node_modules/yaml/dist/stringify/stringifyNumber.js +var require_stringifyNumber = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) { + "use strict"; + function stringifyNumber({ format, minFractionDigits, tag, value }) { + if (typeof value === "bigint") + return String(value); + const num = typeof value === "number" ? value : Number(value); + if (!isFinite(num)) + return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf"; + let n = JSON.stringify(value); + if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) { + let i = n.indexOf("."); + if (i < 0) { + i = n.length; + n += "."; + } + let d = minFractionDigits - (n.length - i - 1); + while (d-- > 0) + n += "0"; + } + return n; + } + exports.stringifyNumber = stringifyNumber; + } +}); + +// node_modules/yaml/dist/schema/core/float.js +var require_float = __commonJS({ + "node_modules/yaml/dist/schema/core/float.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var stringifyNumber = require_stringifyNumber(); + var floatNaN = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, + resolve: (str) => str.slice(-3).toLowerCase() === "nan" ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: stringifyNumber.stringifyNumber + }; + var floatExp = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, + resolve: (str) => parseFloat(str), + stringify(node) { + const num = Number(node.value); + return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node); + } + }; + var float = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/, + resolve(str) { + const node = new Scalar.Scalar(parseFloat(str)); + const dot = str.indexOf("."); + if (dot !== -1 && str[str.length - 1] === "0") + node.minFractionDigits = str.length - dot - 1; + return node; + }, + stringify: stringifyNumber.stringifyNumber + }; + exports.float = float; + exports.floatExp = floatExp; + exports.floatNaN = floatNaN; + } +}); + +// node_modules/yaml/dist/schema/core/int.js +var require_int = __commonJS({ + "node_modules/yaml/dist/schema/core/int.js"(exports) { + "use strict"; + var stringifyNumber = require_stringifyNumber(); + var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); + var intResolve = (str, offset, radix, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix); + function intStringify(node, radix, prefix) { + const { value } = node; + if (intIdentify(value) && value >= 0) + return prefix + value.toString(radix); + return stringifyNumber.stringifyNumber(node); + } + var intOct = { + identify: (value) => intIdentify(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^0o[0-7]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt), + stringify: (node) => intStringify(node, 8, "0o") + }; + var int = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^[-+]?[0-9]+$/, + resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), + stringify: stringifyNumber.stringifyNumber + }; + var intHex = { + identify: (value) => intIdentify(value) && value >= 0, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^0x[0-9a-fA-F]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), + stringify: (node) => intStringify(node, 16, "0x") + }; + exports.int = int; + exports.intHex = intHex; + exports.intOct = intOct; + } +}); + +// node_modules/yaml/dist/schema/core/schema.js +var require_schema = __commonJS({ + "node_modules/yaml/dist/schema/core/schema.js"(exports) { + "use strict"; + var map = require_map(); + var _null = require_null(); + var seq = require_seq(); + var string = require_string(); + var bool = require_bool(); + var float = require_float(); + var int = require_int(); + var schema = [ + map.map, + seq.seq, + string.string, + _null.nullTag, + bool.boolTag, + int.intOct, + int.int, + int.intHex, + float.floatNaN, + float.floatExp, + float.float + ]; + exports.schema = schema; + } +}); + +// node_modules/yaml/dist/schema/json/schema.js +var require_schema2 = __commonJS({ + "node_modules/yaml/dist/schema/json/schema.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var map = require_map(); + var seq = require_seq(); + function intIdentify(value) { + return typeof value === "bigint" || Number.isInteger(value); + } + var stringifyJSON = ({ value }) => JSON.stringify(value); + var jsonScalars = [ + { + identify: (value) => typeof value === "string", + default: true, + tag: "tag:yaml.org,2002:str", + resolve: (str) => str, + stringify: stringifyJSON + }, + { + identify: (value) => value == null, + createNode: () => new Scalar.Scalar(null), + default: true, + tag: "tag:yaml.org,2002:null", + test: /^null$/, + resolve: () => null, + stringify: stringifyJSON + }, + { + identify: (value) => typeof value === "boolean", + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^true$|^false$/, + resolve: (str) => str === "true", + stringify: stringifyJSON + }, + { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^-?(?:0|[1-9][0-9]*)$/, + resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10), + stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value) + }, + { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, + resolve: (str) => parseFloat(str), + stringify: stringifyJSON + } + ]; + var jsonError = { + default: true, + tag: "", + test: /^/, + resolve(str, onError) { + onError(`Unresolved plain scalar ${JSON.stringify(str)}`); + return str; + } + }; + var schema = [map.map, seq.seq].concat(jsonScalars, jsonError); + exports.schema = schema; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/binary.js +var require_binary = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) { + "use strict"; + var node_buffer = require("buffer"); + var Scalar = require_Scalar(); + var stringifyString = require_stringifyString(); + var binary = { + identify: (value) => value instanceof Uint8Array, + default: false, + tag: "tag:yaml.org,2002:binary", + resolve(src, onError) { + if (typeof node_buffer.Buffer === "function") { + return node_buffer.Buffer.from(src, "base64"); + } else if (typeof atob === "function") { + const str = atob(src.replace(/[\n\r]/g, "")); + const buffer = new Uint8Array(str.length); + for (let i = 0; i < str.length; ++i) + buffer[i] = str.charCodeAt(i); + return buffer; + } else { + onError("This environment does not support reading binary tags; either Buffer or atob is required"); + return src; + } + }, + stringify({ comment, type, value }, ctx, onComment, onChompKeep) { + if (!value) + return ""; + const buf = value; + let str; + if (typeof node_buffer.Buffer === "function") { + str = buf instanceof node_buffer.Buffer ? buf.toString("base64") : node_buffer.Buffer.from(buf.buffer).toString("base64"); + } else if (typeof btoa === "function") { + let s = ""; + for (let i = 0; i < buf.length; ++i) + s += String.fromCharCode(buf[i]); + str = btoa(s); + } else { + throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); + } + type != null ? type : type = Scalar.Scalar.BLOCK_LITERAL; + if (type !== Scalar.Scalar.QUOTE_DOUBLE) { + const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth); + const n = Math.ceil(str.length / lineWidth); + const lines = new Array(n); + for (let i = 0, o = 0; i < n; ++i, o += lineWidth) { + lines[i] = str.substr(o, lineWidth); + } + str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? "\n" : " "); + } + return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep); + } + }; + exports.binary = binary; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/pairs.js +var require_pairs = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) { + "use strict"; + var identity = require_identity(); + var Pair = require_Pair(); + var Scalar = require_Scalar(); + var YAMLSeq = require_YAMLSeq(); + function resolvePairs(seq, onError) { + var _a; + if (identity.isSeq(seq)) { + for (let i = 0; i < seq.items.length; ++i) { + let item = seq.items[i]; + if (identity.isPair(item)) + continue; + else if (identity.isMap(item)) { + if (item.items.length > 1) + onError("Each pair must have its own sequence indicator"); + const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null)); + if (item.commentBefore) + pair.key.commentBefore = pair.key.commentBefore ? `${item.commentBefore} +${pair.key.commentBefore}` : item.commentBefore; + if (item.comment) { + const cn = (_a = pair.value) != null ? _a : pair.key; + cn.comment = cn.comment ? `${item.comment} +${cn.comment}` : item.comment; + } + item = pair; + } + seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item); + } + } else + onError("Expected a sequence for this tag"); + return seq; + } + function createPairs(schema, iterable, ctx) { + const { replacer } = ctx; + const pairs2 = new YAMLSeq.YAMLSeq(schema); + pairs2.tag = "tag:yaml.org,2002:pairs"; + let i = 0; + if (iterable && Symbol.iterator in Object(iterable)) + for (let it of iterable) { + if (typeof replacer === "function") + it = replacer.call(iterable, String(i++), it); + let key, value; + if (Array.isArray(it)) { + if (it.length === 2) { + key = it[0]; + value = it[1]; + } else + throw new TypeError(`Expected [key, value] tuple: ${it}`); + } else if (it && it instanceof Object) { + const keys = Object.keys(it); + if (keys.length === 1) { + key = keys[0]; + value = it[key]; + } else { + throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`); + } + } else { + key = it; + } + pairs2.items.push(Pair.createPair(key, value, ctx)); + } + return pairs2; + } + var pairs = { + collection: "seq", + default: false, + tag: "tag:yaml.org,2002:pairs", + resolve: resolvePairs, + createNode: createPairs + }; + exports.createPairs = createPairs; + exports.pairs = pairs; + exports.resolvePairs = resolvePairs; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/omap.js +var require_omap = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) { + "use strict"; + var identity = require_identity(); + var toJS = require_toJS(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var pairs = require_pairs(); + var YAMLOMap = class extends YAMLSeq.YAMLSeq { + constructor() { + super(); + this.add = YAMLMap.YAMLMap.prototype.add.bind(this); + this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this); + this.get = YAMLMap.YAMLMap.prototype.get.bind(this); + this.has = YAMLMap.YAMLMap.prototype.has.bind(this); + this.set = YAMLMap.YAMLMap.prototype.set.bind(this); + this.tag = YAMLOMap.tag; + } + toJSON(_, ctx) { + if (!ctx) + return super.toJSON(_); + const map = new Map(); + if (ctx == null ? void 0 : ctx.onCreate) + ctx.onCreate(map); + for (const pair of this.items) { + let key, value; + if (identity.isPair(pair)) { + key = toJS.toJS(pair.key, "", ctx); + value = toJS.toJS(pair.value, key, ctx); + } else { + key = toJS.toJS(pair, "", ctx); + } + if (map.has(key)) + throw new Error("Ordered maps must not include duplicate keys"); + map.set(key, value); + } + return map; + } + static from(schema, iterable, ctx) { + const pairs$1 = pairs.createPairs(schema, iterable, ctx); + const omap2 = new this(); + omap2.items = pairs$1.items; + return omap2; + } + }; + YAMLOMap.tag = "tag:yaml.org,2002:omap"; + var omap = { + collection: "seq", + identify: (value) => value instanceof Map, + nodeClass: YAMLOMap, + default: false, + tag: "tag:yaml.org,2002:omap", + resolve(seq, onError) { + const pairs$1 = pairs.resolvePairs(seq, onError); + const seenKeys = []; + for (const { key } of pairs$1.items) { + if (identity.isScalar(key)) { + if (seenKeys.includes(key.value)) { + onError(`Ordered maps must not include duplicate keys: ${key.value}`); + } else { + seenKeys.push(key.value); + } + } + } + return Object.assign(new YAMLOMap(), pairs$1); + }, + createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx) + }; + exports.YAMLOMap = YAMLOMap; + exports.omap = omap; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/bool.js +var require_bool2 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + function boolStringify({ value, source }, ctx) { + const boolObj = value ? trueTag : falseTag; + if (source && boolObj.test.test(source)) + return source; + return value ? ctx.options.trueStr : ctx.options.falseStr; + } + var trueTag = { + identify: (value) => value === true, + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, + resolve: () => new Scalar.Scalar(true), + stringify: boolStringify + }; + var falseTag = { + identify: (value) => value === false, + default: true, + tag: "tag:yaml.org,2002:bool", + test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/, + resolve: () => new Scalar.Scalar(false), + stringify: boolStringify + }; + exports.falseTag = falseTag; + exports.trueTag = trueTag; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/float.js +var require_float2 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var stringifyNumber = require_stringifyNumber(); + var floatNaN = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, + resolve: (str) => str.slice(-3).toLowerCase() === "nan" ? NaN : str[0] === "-" ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, + stringify: stringifyNumber.stringifyNumber + }; + var floatExp = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "EXP", + test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/, + resolve: (str) => parseFloat(str.replace(/_/g, "")), + stringify(node) { + const num = Number(node.value); + return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node); + } + }; + var float = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/, + resolve(str) { + const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, ""))); + const dot = str.indexOf("."); + if (dot !== -1) { + const f = str.substring(dot + 1).replace(/_/g, ""); + if (f[f.length - 1] === "0") + node.minFractionDigits = f.length; + } + return node; + }, + stringify: stringifyNumber.stringifyNumber + }; + exports.float = float; + exports.floatExp = floatExp; + exports.floatNaN = floatNaN; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/int.js +var require_int2 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) { + "use strict"; + var stringifyNumber = require_stringifyNumber(); + var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value); + function intResolve(str, offset, radix, { intAsBigInt }) { + const sign = str[0]; + if (sign === "-" || sign === "+") + offset += 1; + str = str.substring(offset).replace(/_/g, ""); + if (intAsBigInt) { + switch (radix) { + case 2: + str = `0b${str}`; + break; + case 8: + str = `0o${str}`; + break; + case 16: + str = `0x${str}`; + break; + } + const n2 = BigInt(str); + return sign === "-" ? BigInt(-1) * n2 : n2; + } + const n = parseInt(str, radix); + return sign === "-" ? -1 * n : n; + } + function intStringify(node, radix, prefix) { + const { value } = node; + if (intIdentify(value)) { + const str = value.toString(radix); + return value < 0 ? "-" + prefix + str.substr(1) : prefix + str; + } + return stringifyNumber.stringifyNumber(node); + } + var intBin = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "BIN", + test: /^[-+]?0b[0-1_]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt), + stringify: (node) => intStringify(node, 2, "0b") + }; + var intOct = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "OCT", + test: /^[-+]?0[0-7_]+$/, + resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt), + stringify: (node) => intStringify(node, 8, "0") + }; + var int = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + test: /^[-+]?[0-9][0-9_]*$/, + resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt), + stringify: stringifyNumber.stringifyNumber + }; + var intHex = { + identify: intIdentify, + default: true, + tag: "tag:yaml.org,2002:int", + format: "HEX", + test: /^[-+]?0x[0-9a-fA-F_]+$/, + resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt), + stringify: (node) => intStringify(node, 16, "0x") + }; + exports.int = int; + exports.intBin = intBin; + exports.intHex = intHex; + exports.intOct = intOct; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/set.js +var require_set = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) { + "use strict"; + var identity = require_identity(); + var Pair = require_Pair(); + var YAMLMap = require_YAMLMap(); + var YAMLSet = class extends YAMLMap.YAMLMap { + constructor(schema) { + super(schema); + this.tag = YAMLSet.tag; + } + add(key) { + let pair; + if (identity.isPair(key)) + pair = key; + else if (key && typeof key === "object" && "key" in key && "value" in key && key.value === null) + pair = new Pair.Pair(key.key, null); + else + pair = new Pair.Pair(key, null); + const prev = YAMLMap.findPair(this.items, pair.key); + if (!prev) + this.items.push(pair); + } + get(key, keepPair) { + const pair = YAMLMap.findPair(this.items, key); + return !keepPair && identity.isPair(pair) ? identity.isScalar(pair.key) ? pair.key.value : pair.key : pair; + } + set(key, value) { + if (typeof value !== "boolean") + throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`); + const prev = YAMLMap.findPair(this.items, key); + if (prev && !value) { + this.items.splice(this.items.indexOf(prev), 1); + } else if (!prev && value) { + this.items.push(new Pair.Pair(key)); + } + } + toJSON(_, ctx) { + return super.toJSON(_, ctx, Set); + } + toString(ctx, onComment, onChompKeep) { + if (!ctx) + return JSON.stringify(this); + if (this.hasAllNullValues(true)) + return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep); + else + throw new Error("Set items must all have null values"); + } + static from(schema, iterable, ctx) { + const { replacer } = ctx; + const set2 = new this(schema); + if (iterable && Symbol.iterator in Object(iterable)) + for (let value of iterable) { + if (typeof replacer === "function") + value = replacer.call(iterable, value, value); + set2.items.push(Pair.createPair(value, null, ctx)); + } + return set2; + } + }; + YAMLSet.tag = "tag:yaml.org,2002:set"; + var set = { + collection: "map", + identify: (value) => value instanceof Set, + nodeClass: YAMLSet, + default: false, + tag: "tag:yaml.org,2002:set", + createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx), + resolve(map, onError) { + if (identity.isMap(map)) { + if (map.hasAllNullValues(true)) + return Object.assign(new YAMLSet(), map); + else + onError("Set items must all have null values"); + } else + onError("Expected a mapping for this tag"); + return map; + } + }; + exports.YAMLSet = YAMLSet; + exports.set = set; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +var require_timestamp = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) { + "use strict"; + var stringifyNumber = require_stringifyNumber(); + function parseSexagesimal(str, asBigInt) { + const sign = str[0]; + const parts = sign === "-" || sign === "+" ? str.substring(1) : str; + const num = (n) => asBigInt ? BigInt(n) : Number(n); + const res = parts.replace(/_/g, "").split(":").reduce((res2, p) => res2 * num(60) + num(p), num(0)); + return sign === "-" ? num(-1) * res : res; + } + function stringifySexagesimal(node) { + let { value } = node; + let num = (n) => n; + if (typeof value === "bigint") + num = (n) => BigInt(n); + else if (isNaN(value) || !isFinite(value)) + return stringifyNumber.stringifyNumber(node); + let sign = ""; + if (value < 0) { + sign = "-"; + value *= num(-1); + } + const _60 = num(60); + const parts = [value % _60]; + if (value < 60) { + parts.unshift(0); + } else { + value = (value - parts[0]) / _60; + parts.unshift(value % _60); + if (value >= 60) { + value = (value - parts[0]) / _60; + parts.unshift(value); + } + } + return sign + parts.map((n) => String(n).padStart(2, "0")).join(":").replace(/000000\d*$/, ""); + } + var intTime = { + identify: (value) => typeof value === "bigint" || Number.isInteger(value), + default: true, + tag: "tag:yaml.org,2002:int", + format: "TIME", + test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/, + resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt), + stringify: stringifySexagesimal + }; + var floatTime = { + identify: (value) => typeof value === "number", + default: true, + tag: "tag:yaml.org,2002:float", + format: "TIME", + test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/, + resolve: (str) => parseSexagesimal(str, false), + stringify: stringifySexagesimal + }; + var timestamp = { + identify: (value) => value instanceof Date, + default: true, + tag: "tag:yaml.org,2002:timestamp", + test: RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"), + resolve(str) { + const match = str.match(timestamp.test); + if (!match) + throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd"); + const [, year, month, day, hour, minute, second] = match.map(Number); + const millisec = match[7] ? Number((match[7] + "00").substr(1, 3)) : 0; + let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec); + const tz = match[8]; + if (tz && tz !== "Z") { + let d = parseSexagesimal(tz, false); + if (Math.abs(d) < 30) + d *= 60; + date -= 6e4 * d; + } + return new Date(date); + }, + stringify: ({ value }) => { + var _a; + return (_a = value == null ? void 0 : value.toISOString().replace(/(T00:00:00)?\.000Z$/, "")) != null ? _a : ""; + } + }; + exports.floatTime = floatTime; + exports.intTime = intTime; + exports.timestamp = timestamp; + } +}); + +// node_modules/yaml/dist/schema/yaml-1.1/schema.js +var require_schema3 = __commonJS({ + "node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) { + "use strict"; + var map = require_map(); + var _null = require_null(); + var seq = require_seq(); + var string = require_string(); + var binary = require_binary(); + var bool = require_bool2(); + var float = require_float2(); + var int = require_int2(); + var merge = require_merge(); + var omap = require_omap(); + var pairs = require_pairs(); + var set = require_set(); + var timestamp = require_timestamp(); + var schema = [ + map.map, + seq.seq, + string.string, + _null.nullTag, + bool.trueTag, + bool.falseTag, + int.intBin, + int.intOct, + int.int, + int.intHex, + float.floatNaN, + float.floatExp, + float.float, + binary.binary, + merge.merge, + omap.omap, + pairs.pairs, + set.set, + timestamp.intTime, + timestamp.floatTime, + timestamp.timestamp + ]; + exports.schema = schema; + } +}); + +// node_modules/yaml/dist/schema/tags.js +var require_tags = __commonJS({ + "node_modules/yaml/dist/schema/tags.js"(exports) { + "use strict"; + var map = require_map(); + var _null = require_null(); + var seq = require_seq(); + var string = require_string(); + var bool = require_bool(); + var float = require_float(); + var int = require_int(); + var schema = require_schema(); + var schema$1 = require_schema2(); + var binary = require_binary(); + var merge = require_merge(); + var omap = require_omap(); + var pairs = require_pairs(); + var schema$2 = require_schema3(); + var set = require_set(); + var timestamp = require_timestamp(); + var schemas = new Map([ + ["core", schema.schema], + ["failsafe", [map.map, seq.seq, string.string]], + ["json", schema$1.schema], + ["yaml11", schema$2.schema], + ["yaml-1.1", schema$2.schema] + ]); + var tagsByName = { + binary: binary.binary, + bool: bool.boolTag, + float: float.float, + floatExp: float.floatExp, + floatNaN: float.floatNaN, + floatTime: timestamp.floatTime, + int: int.int, + intHex: int.intHex, + intOct: int.intOct, + intTime: timestamp.intTime, + map: map.map, + merge: merge.merge, + null: _null.nullTag, + omap: omap.omap, + pairs: pairs.pairs, + seq: seq.seq, + set: set.set, + timestamp: timestamp.timestamp + }; + var coreKnownTags = { + "tag:yaml.org,2002:binary": binary.binary, + "tag:yaml.org,2002:merge": merge.merge, + "tag:yaml.org,2002:omap": omap.omap, + "tag:yaml.org,2002:pairs": pairs.pairs, + "tag:yaml.org,2002:set": set.set, + "tag:yaml.org,2002:timestamp": timestamp.timestamp + }; + function getTags(customTags, schemaName, addMergeTag) { + const schemaTags = schemas.get(schemaName); + if (schemaTags && !customTags) { + return addMergeTag && !schemaTags.includes(merge.merge) ? schemaTags.concat(merge.merge) : schemaTags.slice(); + } + let tags = schemaTags; + if (!tags) { + if (Array.isArray(customTags)) + tags = []; + else { + const keys = Array.from(schemas.keys()).filter((key) => key !== "yaml11").map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`); + } + } + if (Array.isArray(customTags)) { + for (const tag of customTags) + tags = tags.concat(tag); + } else if (typeof customTags === "function") { + tags = customTags(tags.slice()); + } + if (addMergeTag) + tags = tags.concat(merge.merge); + return tags.reduce((tags2, tag) => { + const tagObj = typeof tag === "string" ? tagsByName[tag] : tag; + if (!tagObj) { + const tagName = JSON.stringify(tag); + const keys = Object.keys(tagsByName).map((key) => JSON.stringify(key)).join(", "); + throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`); + } + if (!tags2.includes(tagObj)) + tags2.push(tagObj); + return tags2; + }, []); + } + exports.coreKnownTags = coreKnownTags; + exports.getTags = getTags; + } +}); + +// node_modules/yaml/dist/schema/Schema.js +var require_Schema = __commonJS({ + "node_modules/yaml/dist/schema/Schema.js"(exports) { + "use strict"; + var identity = require_identity(); + var map = require_map(); + var seq = require_seq(); + var string = require_string(); + var tags = require_tags(); + var sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0; + var Schema = class { + constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) { + this.compat = Array.isArray(compat) ? tags.getTags(compat, "compat") : compat ? tags.getTags(null, compat) : null; + this.name = typeof schema === "string" && schema || "core"; + this.knownTags = resolveKnownTags ? tags.coreKnownTags : {}; + this.tags = tags.getTags(customTags, this.name, merge); + this.toStringOptions = toStringDefaults != null ? toStringDefaults : null; + Object.defineProperty(this, identity.MAP, { value: map.map }); + Object.defineProperty(this, identity.SCALAR, { value: string.string }); + Object.defineProperty(this, identity.SEQ, { value: seq.seq }); + this.sortMapEntries = typeof sortMapEntries === "function" ? sortMapEntries : sortMapEntries === true ? sortMapEntriesByKey : null; + } + clone() { + const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this)); + copy.tags = this.tags.slice(); + return copy; + } + }; + exports.Schema = Schema; + } +}); + +// node_modules/yaml/dist/stringify/stringifyDocument.js +var require_stringifyDocument = __commonJS({ + "node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) { + "use strict"; + var identity = require_identity(); + var stringify = require_stringify2(); + var stringifyComment = require_stringifyComment(); + function stringifyDocument(doc, options) { + var _a; + const lines = []; + let hasDirectives = options.directives === true; + if (options.directives !== false && doc.directives) { + const dir = doc.directives.toString(doc); + if (dir) { + lines.push(dir); + hasDirectives = true; + } else if (doc.directives.docStart) + hasDirectives = true; + } + if (hasDirectives) + lines.push("---"); + const ctx = stringify.createStringifyContext(doc, options); + const { commentString } = ctx.options; + if (doc.commentBefore) { + if (lines.length !== 1) + lines.unshift(""); + const cs = commentString(doc.commentBefore); + lines.unshift(stringifyComment.indentComment(cs, "")); + } + let chompKeep = false; + let contentComment = null; + if (doc.contents) { + if (identity.isNode(doc.contents)) { + if (doc.contents.spaceBefore && hasDirectives) + lines.push(""); + if (doc.contents.commentBefore) { + const cs = commentString(doc.contents.commentBefore); + lines.push(stringifyComment.indentComment(cs, "")); + } + ctx.forceBlockIndent = !!doc.comment; + contentComment = doc.contents.comment; + } + const onChompKeep = contentComment ? void 0 : () => chompKeep = true; + let body = stringify.stringify(doc.contents, ctx, () => contentComment = null, onChompKeep); + if (contentComment) + body += stringifyComment.lineComment(body, "", commentString(contentComment)); + if ((body[0] === "|" || body[0] === ">") && lines[lines.length - 1] === "---") { + lines[lines.length - 1] = `--- ${body}`; + } else + lines.push(body); + } else { + lines.push(stringify.stringify(doc.contents, ctx)); + } + if ((_a = doc.directives) == null ? void 0 : _a.docEnd) { + if (doc.comment) { + const cs = commentString(doc.comment); + if (cs.includes("\n")) { + lines.push("..."); + lines.push(stringifyComment.indentComment(cs, "")); + } else { + lines.push(`... ${cs}`); + } + } else { + lines.push("..."); + } + } else { + let dc = doc.comment; + if (dc && chompKeep) + dc = dc.replace(/^\n+/, ""); + if (dc) { + if ((!chompKeep || contentComment) && lines[lines.length - 1] !== "") + lines.push(""); + lines.push(stringifyComment.indentComment(commentString(dc), "")); + } + } + return lines.join("\n") + "\n"; + } + exports.stringifyDocument = stringifyDocument; + } +}); + +// node_modules/yaml/dist/doc/Document.js +var require_Document = __commonJS({ + "node_modules/yaml/dist/doc/Document.js"(exports) { + "use strict"; + var Alias = require_Alias(); + var Collection = require_Collection(); + var identity = require_identity(); + var Pair = require_Pair(); + var toJS = require_toJS(); + var Schema = require_Schema(); + var stringifyDocument = require_stringifyDocument(); + var anchors = require_anchors(); + var applyReviver = require_applyReviver(); + var createNode = require_createNode(); + var directives = require_directives(); + var Document = class { + constructor(value, replacer, options) { + this.commentBefore = null; + this.comment = null; + this.errors = []; + this.warnings = []; + Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC }); + let _replacer = null; + if (typeof replacer === "function" || Array.isArray(replacer)) { + _replacer = replacer; + } else if (options === void 0 && replacer) { + options = replacer; + replacer = void 0; + } + const opt = Object.assign({ + intAsBigInt: false, + keepSourceTokens: false, + logLevel: "warn", + prettyErrors: true, + strict: true, + stringKeys: false, + uniqueKeys: true, + version: "1.2" + }, options); + this.options = opt; + let { version } = opt; + if (options == null ? void 0 : options._directives) { + this.directives = options._directives.atDocument(); + if (this.directives.yaml.explicit) + version = this.directives.yaml.version; + } else + this.directives = new directives.Directives({ version }); + this.setSchema(version, options); + this.contents = value === void 0 ? null : this.createNode(value, _replacer, options); + } + clone() { + const copy = Object.create(Document.prototype, { + [identity.NODE_TYPE]: { value: identity.DOC } + }); + copy.commentBefore = this.commentBefore; + copy.comment = this.comment; + copy.errors = this.errors.slice(); + copy.warnings = this.warnings.slice(); + copy.options = Object.assign({}, this.options); + if (this.directives) + copy.directives = this.directives.clone(); + copy.schema = this.schema.clone(); + copy.contents = identity.isNode(this.contents) ? this.contents.clone(copy.schema) : this.contents; + if (this.range) + copy.range = this.range.slice(); + return copy; + } + add(value) { + if (assertCollection(this.contents)) + this.contents.add(value); + } + addIn(path2, value) { + if (assertCollection(this.contents)) + this.contents.addIn(path2, value); + } + createAlias(node, name) { + if (!node.anchor) { + const prev = anchors.anchorNames(this); + node.anchor = !name || prev.has(name) ? anchors.findNewAnchor(name || "a", prev) : name; + } + return new Alias.Alias(node.anchor); + } + createNode(value, replacer, options) { + let _replacer = void 0; + if (typeof replacer === "function") { + value = replacer.call({ "": value }, "", value); + _replacer = replacer; + } else if (Array.isArray(replacer)) { + const keyToStr = (v) => typeof v === "number" || v instanceof String || v instanceof Number; + const asStr = replacer.filter(keyToStr).map(String); + if (asStr.length > 0) + replacer = replacer.concat(asStr); + _replacer = replacer; + } else if (options === void 0 && replacer) { + options = replacer; + replacer = void 0; + } + const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options != null ? options : {}; + const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, anchorPrefix || "a"); + const ctx = { + aliasDuplicateObjects: aliasDuplicateObjects != null ? aliasDuplicateObjects : true, + keepUndefined: keepUndefined != null ? keepUndefined : false, + onAnchor, + onTagObj, + replacer: _replacer, + schema: this.schema, + sourceObjects + }; + const node = createNode.createNode(value, tag, ctx); + if (flow && identity.isCollection(node)) + node.flow = true; + setAnchors(); + return node; + } + createPair(key, value, options = {}) { + const k = this.createNode(key, null, options); + const v = this.createNode(value, null, options); + return new Pair.Pair(k, v); + } + delete(key) { + return assertCollection(this.contents) ? this.contents.delete(key) : false; + } + deleteIn(path2) { + if (Collection.isEmptyPath(path2)) { + if (this.contents == null) + return false; + this.contents = null; + return true; + } + return assertCollection(this.contents) ? this.contents.deleteIn(path2) : false; + } + get(key, keepScalar) { + return identity.isCollection(this.contents) ? this.contents.get(key, keepScalar) : void 0; + } + getIn(path2, keepScalar) { + if (Collection.isEmptyPath(path2)) + return !keepScalar && identity.isScalar(this.contents) ? this.contents.value : this.contents; + return identity.isCollection(this.contents) ? this.contents.getIn(path2, keepScalar) : void 0; + } + has(key) { + return identity.isCollection(this.contents) ? this.contents.has(key) : false; + } + hasIn(path2) { + if (Collection.isEmptyPath(path2)) + return this.contents !== void 0; + return identity.isCollection(this.contents) ? this.contents.hasIn(path2) : false; + } + set(key, value) { + if (this.contents == null) { + this.contents = Collection.collectionFromPath(this.schema, [key], value); + } else if (assertCollection(this.contents)) { + this.contents.set(key, value); + } + } + setIn(path2, value) { + if (Collection.isEmptyPath(path2)) { + this.contents = value; + } else if (this.contents == null) { + this.contents = Collection.collectionFromPath(this.schema, Array.from(path2), value); + } else if (assertCollection(this.contents)) { + this.contents.setIn(path2, value); + } + } + setSchema(version, options = {}) { + if (typeof version === "number") + version = String(version); + let opt; + switch (version) { + case "1.1": + if (this.directives) + this.directives.yaml.version = "1.1"; + else + this.directives = new directives.Directives({ version: "1.1" }); + opt = { resolveKnownTags: false, schema: "yaml-1.1" }; + break; + case "1.2": + case "next": + if (this.directives) + this.directives.yaml.version = version; + else + this.directives = new directives.Directives({ version }); + opt = { resolveKnownTags: true, schema: "core" }; + break; + case null: + if (this.directives) + delete this.directives; + opt = null; + break; + default: { + const sv = JSON.stringify(version); + throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`); + } + } + if (options.schema instanceof Object) + this.schema = options.schema; + else if (opt) + this.schema = new Schema.Schema(Object.assign(opt, options)); + else + throw new Error(`With a null YAML version, the { schema: Schema } option is required`); + } + toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) { + const ctx = { + anchors: new Map(), + doc: this, + keep: !json, + mapAsMap: mapAsMap === true, + mapKeyWarned: false, + maxAliasCount: typeof maxAliasCount === "number" ? maxAliasCount : 100 + }; + const res = toJS.toJS(this.contents, jsonArg != null ? jsonArg : "", ctx); + if (typeof onAnchor === "function") + for (const { count, res: res2 } of ctx.anchors.values()) + onAnchor(res2, count); + return typeof reviver === "function" ? applyReviver.applyReviver(reviver, { "": res }, "", res) : res; + } + toJSON(jsonArg, onAnchor) { + return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor }); + } + toString(options = {}) { + if (this.errors.length > 0) + throw new Error("Document with errors cannot be stringified"); + if ("indent" in options && (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) { + const s = JSON.stringify(options.indent); + throw new Error(`"indent" option must be a positive integer, not ${s}`); + } + return stringifyDocument.stringifyDocument(this, options); + } + }; + function assertCollection(contents) { + if (identity.isCollection(contents)) + return true; + throw new Error("Expected a YAML collection as document contents"); + } + exports.Document = Document; + } +}); + +// node_modules/yaml/dist/errors.js +var require_errors = __commonJS({ + "node_modules/yaml/dist/errors.js"(exports) { + "use strict"; + var YAMLError = class extends Error { + constructor(name, pos, code, message) { + super(); + this.name = name; + this.code = code; + this.message = message; + this.pos = pos; + } + }; + var YAMLParseError = class extends YAMLError { + constructor(pos, code, message) { + super("YAMLParseError", pos, code, message); + } + }; + var YAMLWarning = class extends YAMLError { + constructor(pos, code, message) { + super("YAMLWarning", pos, code, message); + } + }; + var prettifyError = (src, lc) => (error) => { + if (error.pos[0] === -1) + return; + error.linePos = error.pos.map((pos) => lc.linePos(pos)); + const { line, col } = error.linePos[0]; + error.message += ` at line ${line}, column ${col}`; + let ci = col - 1; + let lineStr = src.substring(lc.lineStarts[line - 1], lc.lineStarts[line]).replace(/[\n\r]+$/, ""); + if (ci >= 60 && lineStr.length > 80) { + const trimStart = Math.min(ci - 39, lineStr.length - 79); + lineStr = "\u2026" + lineStr.substring(trimStart); + ci -= trimStart - 1; + } + if (lineStr.length > 80) + lineStr = lineStr.substring(0, 79) + "\u2026"; + if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) { + let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]); + if (prev.length > 80) + prev = prev.substring(0, 79) + "\u2026\n"; + lineStr = prev + lineStr; + } + if (/[^ ]/.test(lineStr)) { + let count = 1; + const end = error.linePos[1]; + if (end && end.line === line && end.col > col) { + count = Math.max(1, Math.min(end.col - col, 80 - ci)); + } + const pointer = " ".repeat(ci) + "^".repeat(count); + error.message += `: + +${lineStr} +${pointer} +`; + } + }; + exports.YAMLError = YAMLError; + exports.YAMLParseError = YAMLParseError; + exports.YAMLWarning = YAMLWarning; + exports.prettifyError = prettifyError; + } +}); + +// node_modules/yaml/dist/compose/resolve-props.js +var require_resolve_props = __commonJS({ + "node_modules/yaml/dist/compose/resolve-props.js"(exports) { + "use strict"; + function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) { + let spaceBefore = false; + let atNewline = startOnNewline; + let hasSpace = startOnNewline; + let comment = ""; + let commentSep = ""; + let hasNewline = false; + let reqSpace = false; + let tab = null; + let anchor = null; + let tag = null; + let newlineAfterProp = null; + let comma = null; + let found = null; + let start = null; + for (const token of tokens) { + if (reqSpace) { + if (token.type !== "space" && token.type !== "newline" && token.type !== "comma") + onError(token.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"); + reqSpace = false; + } + if (tab) { + if (atNewline && token.type !== "comment" && token.type !== "newline") { + onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation"); + } + tab = null; + } + switch (token.type) { + case "space": + if (!flow && (indicator !== "doc-start" || (next == null ? void 0 : next.type) !== "flow-collection") && token.source.includes(" ")) { + tab = token; + } + hasSpace = true; + break; + case "comment": { + if (!hasSpace) + onError(token, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters"); + const cb = token.source.substring(1) || " "; + if (!comment) + comment = cb; + else + comment += commentSep + cb; + commentSep = ""; + atNewline = false; + break; + } + case "newline": + if (atNewline) { + if (comment) + comment += token.source; + else if (!found || indicator !== "seq-item-ind") + spaceBefore = true; + } else + commentSep += token.source; + atNewline = true; + hasNewline = true; + if (anchor || tag) + newlineAfterProp = token; + hasSpace = true; + break; + case "anchor": + if (anchor) + onError(token, "MULTIPLE_ANCHORS", "A node can have at most one anchor"); + if (token.source.endsWith(":")) + onError(token.offset + token.source.length - 1, "BAD_ALIAS", "Anchor ending in : is ambiguous", true); + anchor = token; + start != null ? start : start = token.offset; + atNewline = false; + hasSpace = false; + reqSpace = true; + break; + case "tag": { + if (tag) + onError(token, "MULTIPLE_TAGS", "A node can have at most one tag"); + tag = token; + start != null ? start : start = token.offset; + atNewline = false; + hasSpace = false; + reqSpace = true; + break; + } + case indicator: + if (anchor || tag) + onError(token, "BAD_PROP_ORDER", `Anchors and tags must be after the ${token.source} indicator`); + if (found) + onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.source} in ${flow != null ? flow : "collection"}`); + found = token; + atNewline = indicator === "seq-item-ind" || indicator === "explicit-key-ind"; + hasSpace = false; + break; + case "comma": + if (flow) { + if (comma) + onError(token, "UNEXPECTED_TOKEN", `Unexpected , in ${flow}`); + comma = token; + atNewline = false; + hasSpace = false; + break; + } + default: + onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.type} token`); + atNewline = false; + hasSpace = false; + } + } + const last = tokens[tokens.length - 1]; + const end = last ? last.offset + last.source.length : offset; + if (reqSpace && next && next.type !== "space" && next.type !== "newline" && next.type !== "comma" && (next.type !== "scalar" || next.source !== "")) { + onError(next.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"); + } + if (tab && (atNewline && tab.indent <= parentIndent || (next == null ? void 0 : next.type) === "block-map" || (next == null ? void 0 : next.type) === "block-seq")) + onError(tab, "TAB_AS_INDENT", "Tabs are not allowed as indentation"); + return { + comma, + found, + spaceBefore, + comment, + hasNewline, + anchor, + tag, + newlineAfterProp, + end, + start: start != null ? start : end + }; + } + exports.resolveProps = resolveProps; + } +}); + +// node_modules/yaml/dist/compose/util-contains-newline.js +var require_util_contains_newline = __commonJS({ + "node_modules/yaml/dist/compose/util-contains-newline.js"(exports) { + "use strict"; + function containsNewline(key) { + if (!key) + return null; + switch (key.type) { + case "alias": + case "scalar": + case "double-quoted-scalar": + case "single-quoted-scalar": + if (key.source.includes("\n")) + return true; + if (key.end) { + for (const st of key.end) + if (st.type === "newline") + return true; + } + return false; + case "flow-collection": + for (const it of key.items) { + for (const st of it.start) + if (st.type === "newline") + return true; + if (it.sep) { + for (const st of it.sep) + if (st.type === "newline") + return true; + } + if (containsNewline(it.key) || containsNewline(it.value)) + return true; + } + return false; + default: + return true; + } + } + exports.containsNewline = containsNewline; + } +}); + +// node_modules/yaml/dist/compose/util-flow-indent-check.js +var require_util_flow_indent_check = __commonJS({ + "node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) { + "use strict"; + var utilContainsNewline = require_util_contains_newline(); + function flowIndentCheck(indent, fc, onError) { + if ((fc == null ? void 0 : fc.type) === "flow-collection") { + const end = fc.end[0]; + if (end.indent === indent && (end.source === "]" || end.source === "}") && utilContainsNewline.containsNewline(fc)) { + const msg = "Flow end indicator should be more indented than parent"; + onError(end, "BAD_INDENT", msg, true); + } + } + } + exports.flowIndentCheck = flowIndentCheck; + } +}); + +// node_modules/yaml/dist/compose/util-map-includes.js +var require_util_map_includes = __commonJS({ + "node_modules/yaml/dist/compose/util-map-includes.js"(exports) { + "use strict"; + var identity = require_identity(); + function mapIncludes(ctx, items, search) { + const { uniqueKeys } = ctx.options; + if (uniqueKeys === false) + return false; + const isEqual = typeof uniqueKeys === "function" ? uniqueKeys : (a, b) => a === b || identity.isScalar(a) && identity.isScalar(b) && a.value === b.value; + return items.some((pair) => isEqual(pair.key, search)); + } + exports.mapIncludes = mapIncludes; + } +}); + +// node_modules/yaml/dist/compose/resolve-block-map.js +var require_resolve_block_map = __commonJS({ + "node_modules/yaml/dist/compose/resolve-block-map.js"(exports) { + "use strict"; + var Pair = require_Pair(); + var YAMLMap = require_YAMLMap(); + var resolveProps = require_resolve_props(); + var utilContainsNewline = require_util_contains_newline(); + var utilFlowIndentCheck = require_util_flow_indent_check(); + var utilMapIncludes = require_util_map_includes(); + var startColMsg = "All mapping items must start at the same column"; + function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) { + var _a, _b; + const NodeClass = (_a = tag == null ? void 0 : tag.nodeClass) != null ? _a : YAMLMap.YAMLMap; + const map = new NodeClass(ctx.schema); + if (ctx.atRoot) + ctx.atRoot = false; + let offset = bm.offset; + let commentEnd = null; + for (const collItem of bm.items) { + const { start, key, sep, value } = collItem; + const keyProps = resolveProps.resolveProps(start, { + indicator: "explicit-key-ind", + next: key != null ? key : sep == null ? void 0 : sep[0], + offset, + onError, + parentIndent: bm.indent, + startOnNewline: true + }); + const implicitKey = !keyProps.found; + if (implicitKey) { + if (key) { + if (key.type === "block-seq") + onError(offset, "BLOCK_AS_IMPLICIT_KEY", "A block sequence may not be used as an implicit map key"); + else if ("indent" in key && key.indent !== bm.indent) + onError(offset, "BAD_INDENT", startColMsg); + } + if (!keyProps.anchor && !keyProps.tag && !sep) { + commentEnd = keyProps.end; + if (keyProps.comment) { + if (map.comment) + map.comment += "\n" + keyProps.comment; + else + map.comment = keyProps.comment; + } + continue; + } + if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) { + onError(key != null ? key : start[start.length - 1], "MULTILINE_IMPLICIT_KEY", "Implicit keys need to be on a single line"); + } + } else if (((_b = keyProps.found) == null ? void 0 : _b.indent) !== bm.indent) { + onError(offset, "BAD_INDENT", startColMsg); + } + ctx.atKey = true; + const keyStart = keyProps.end; + const keyNode = key ? composeNode(ctx, key, keyProps, onError) : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError); + if (ctx.schema.compat) + utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError); + ctx.atKey = false; + if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode)) + onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique"); + const valueProps = resolveProps.resolveProps(sep != null ? sep : [], { + indicator: "map-value-ind", + next: value, + offset: keyNode.range[2], + onError, + parentIndent: bm.indent, + startOnNewline: !key || key.type === "block-scalar" + }); + offset = valueProps.end; + if (valueProps.found) { + if (implicitKey) { + if ((value == null ? void 0 : value.type) === "block-map" && !valueProps.hasNewline) + onError(offset, "BLOCK_AS_IMPLICIT_KEY", "Nested mappings are not allowed in compact mappings"); + if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024) + onError(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key"); + } + const valueNode = value ? composeNode(ctx, value, valueProps, onError) : composeEmptyNode(ctx, offset, sep, null, valueProps, onError); + if (ctx.schema.compat) + utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError); + offset = valueNode.range[2]; + const pair = new Pair.Pair(keyNode, valueNode); + if (ctx.options.keepSourceTokens) + pair.srcToken = collItem; + map.items.push(pair); + } else { + if (implicitKey) + onError(keyNode.range, "MISSING_CHAR", "Implicit map keys need to be followed by map values"); + if (valueProps.comment) { + if (keyNode.comment) + keyNode.comment += "\n" + valueProps.comment; + else + keyNode.comment = valueProps.comment; + } + const pair = new Pair.Pair(keyNode); + if (ctx.options.keepSourceTokens) + pair.srcToken = collItem; + map.items.push(pair); + } + } + if (commentEnd && commentEnd < offset) + onError(commentEnd, "IMPOSSIBLE", "Map comment with trailing content"); + map.range = [bm.offset, offset, commentEnd != null ? commentEnd : offset]; + return map; + } + exports.resolveBlockMap = resolveBlockMap; + } +}); + +// node_modules/yaml/dist/compose/resolve-block-seq.js +var require_resolve_block_seq = __commonJS({ + "node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) { + "use strict"; + var YAMLSeq = require_YAMLSeq(); + var resolveProps = require_resolve_props(); + var utilFlowIndentCheck = require_util_flow_indent_check(); + function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) { + var _a; + const NodeClass = (_a = tag == null ? void 0 : tag.nodeClass) != null ? _a : YAMLSeq.YAMLSeq; + const seq = new NodeClass(ctx.schema); + if (ctx.atRoot) + ctx.atRoot = false; + if (ctx.atKey) + ctx.atKey = false; + let offset = bs.offset; + let commentEnd = null; + for (const { start, value } of bs.items) { + const props = resolveProps.resolveProps(start, { + indicator: "seq-item-ind", + next: value, + offset, + onError, + parentIndent: bs.indent, + startOnNewline: true + }); + if (!props.found) { + if (props.anchor || props.tag || value) { + if (value && value.type === "block-seq") + onError(props.end, "BAD_INDENT", "All sequence items must start at the same column"); + else + onError(offset, "MISSING_CHAR", "Sequence item without - indicator"); + } else { + commentEnd = props.end; + if (props.comment) + seq.comment = props.comment; + continue; + } + } + const node = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, start, null, props, onError); + if (ctx.schema.compat) + utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError); + offset = node.range[2]; + seq.items.push(node); + } + seq.range = [bs.offset, offset, commentEnd != null ? commentEnd : offset]; + return seq; + } + exports.resolveBlockSeq = resolveBlockSeq; + } +}); + +// node_modules/yaml/dist/compose/resolve-end.js +var require_resolve_end = __commonJS({ + "node_modules/yaml/dist/compose/resolve-end.js"(exports) { + "use strict"; + function resolveEnd(end, offset, reqSpace, onError) { + let comment = ""; + if (end) { + let hasSpace = false; + let sep = ""; + for (const token of end) { + const { source, type } = token; + switch (type) { + case "space": + hasSpace = true; + break; + case "comment": { + if (reqSpace && !hasSpace) + onError(token, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters"); + const cb = source.substring(1) || " "; + if (!comment) + comment = cb; + else + comment += sep + cb; + sep = ""; + break; + } + case "newline": + if (comment) + sep += source; + hasSpace = true; + break; + default: + onError(token, "UNEXPECTED_TOKEN", `Unexpected ${type} at node end`); + } + offset += source.length; + } + } + return { comment, offset }; + } + exports.resolveEnd = resolveEnd; + } +}); + +// node_modules/yaml/dist/compose/resolve-flow-collection.js +var require_resolve_flow_collection = __commonJS({ + "node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) { + "use strict"; + var identity = require_identity(); + var Pair = require_Pair(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var resolveEnd = require_resolve_end(); + var resolveProps = require_resolve_props(); + var utilContainsNewline = require_util_contains_newline(); + var utilMapIncludes = require_util_map_includes(); + var blockMsg = "Block collections are not allowed within flow collections"; + var isBlock = (token) => token && (token.type === "block-map" || token.type === "block-seq"); + function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) { + var _a, _b; + const isMap = fc.start.source === "{"; + const fcName = isMap ? "flow map" : "flow sequence"; + const NodeClass = (_a = tag == null ? void 0 : tag.nodeClass) != null ? _a : isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq; + const coll = new NodeClass(ctx.schema); + coll.flow = true; + const atRoot = ctx.atRoot; + if (atRoot) + ctx.atRoot = false; + if (ctx.atKey) + ctx.atKey = false; + let offset = fc.offset + fc.start.source.length; + for (let i = 0; i < fc.items.length; ++i) { + const collItem = fc.items[i]; + const { start, key, sep, value } = collItem; + const props = resolveProps.resolveProps(start, { + flow: fcName, + indicator: "explicit-key-ind", + next: key != null ? key : sep == null ? void 0 : sep[0], + offset, + onError, + parentIndent: fc.indent, + startOnNewline: false + }); + if (!props.found) { + if (!props.anchor && !props.tag && !sep && !value) { + if (i === 0 && props.comma) + onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`); + else if (i < fc.items.length - 1) + onError(props.start, "UNEXPECTED_TOKEN", `Unexpected empty item in ${fcName}`); + if (props.comment) { + if (coll.comment) + coll.comment += "\n" + props.comment; + else + coll.comment = props.comment; + } + offset = props.end; + continue; + } + if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key)) + onError(key, "MULTILINE_IMPLICIT_KEY", "Implicit keys of flow sequence pairs need to be on a single line"); + } + if (i === 0) { + if (props.comma) + onError(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`); + } else { + if (!props.comma) + onError(props.start, "MISSING_CHAR", `Missing , between ${fcName} items`); + if (props.comment) { + let prevItemComment = ""; + loop: + for (const st of start) { + switch (st.type) { + case "comma": + case "space": + break; + case "comment": + prevItemComment = st.source.substring(1); + break loop; + default: + break loop; + } + } + if (prevItemComment) { + let prev = coll.items[coll.items.length - 1]; + if (identity.isPair(prev)) + prev = (_b = prev.value) != null ? _b : prev.key; + if (prev.comment) + prev.comment += "\n" + prevItemComment; + else + prev.comment = prevItemComment; + props.comment = props.comment.substring(prevItemComment.length + 1); + } + } + } + if (!isMap && !sep && !props.found) { + const valueNode = value ? composeNode(ctx, value, props, onError) : composeEmptyNode(ctx, props.end, sep, null, props, onError); + coll.items.push(valueNode); + offset = valueNode.range[2]; + if (isBlock(value)) + onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg); + } else { + ctx.atKey = true; + const keyStart = props.end; + const keyNode = key ? composeNode(ctx, key, props, onError) : composeEmptyNode(ctx, keyStart, start, null, props, onError); + if (isBlock(key)) + onError(keyNode.range, "BLOCK_IN_FLOW", blockMsg); + ctx.atKey = false; + const valueProps = resolveProps.resolveProps(sep != null ? sep : [], { + flow: fcName, + indicator: "map-value-ind", + next: value, + offset: keyNode.range[2], + onError, + parentIndent: fc.indent, + startOnNewline: false + }); + if (valueProps.found) { + if (!isMap && !props.found && ctx.options.strict) { + if (sep) + for (const st of sep) { + if (st === valueProps.found) + break; + if (st.type === "newline") { + onError(st, "MULTILINE_IMPLICIT_KEY", "Implicit keys of flow sequence pairs need to be on a single line"); + break; + } + } + if (props.start < valueProps.found.offset - 1024) + onError(valueProps.found, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit flow sequence key"); + } + } else if (value) { + if ("source" in value && value.source && value.source[0] === ":") + onError(value, "MISSING_CHAR", `Missing space after : in ${fcName}`); + else + onError(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`); + } + const valueNode = value ? composeNode(ctx, value, valueProps, onError) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError) : null; + if (valueNode) { + if (isBlock(value)) + onError(valueNode.range, "BLOCK_IN_FLOW", blockMsg); + } else if (valueProps.comment) { + if (keyNode.comment) + keyNode.comment += "\n" + valueProps.comment; + else + keyNode.comment = valueProps.comment; + } + const pair = new Pair.Pair(keyNode, valueNode); + if (ctx.options.keepSourceTokens) + pair.srcToken = collItem; + if (isMap) { + const map = coll; + if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode)) + onError(keyStart, "DUPLICATE_KEY", "Map keys must be unique"); + map.items.push(pair); + } else { + const map = new YAMLMap.YAMLMap(ctx.schema); + map.flow = true; + map.items.push(pair); + const endRange = (valueNode != null ? valueNode : keyNode).range; + map.range = [keyNode.range[0], endRange[1], endRange[2]]; + coll.items.push(map); + } + offset = valueNode ? valueNode.range[2] : valueProps.end; + } + } + const expectedEnd = isMap ? "}" : "]"; + const [ce, ...ee] = fc.end; + let cePos = offset; + if (ce && ce.source === expectedEnd) + cePos = ce.offset + ce.source.length; + else { + const name = fcName[0].toUpperCase() + fcName.substring(1); + const msg = atRoot ? `${name} must end with a ${expectedEnd}` : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`; + onError(offset, atRoot ? "MISSING_CHAR" : "BAD_INDENT", msg); + if (ce && ce.source.length !== 1) + ee.unshift(ce); + } + if (ee.length > 0) { + const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError); + if (end.comment) { + if (coll.comment) + coll.comment += "\n" + end.comment; + else + coll.comment = end.comment; + } + coll.range = [fc.offset, cePos, end.offset]; + } else { + coll.range = [fc.offset, cePos, cePos]; + } + return coll; + } + exports.resolveFlowCollection = resolveFlowCollection; + } +}); + +// node_modules/yaml/dist/compose/compose-collection.js +var require_compose_collection = __commonJS({ + "node_modules/yaml/dist/compose/compose-collection.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var resolveBlockMap = require_resolve_block_map(); + var resolveBlockSeq = require_resolve_block_seq(); + var resolveFlowCollection = require_resolve_flow_collection(); + function resolveCollection(CN, ctx, token, onError, tagName, tag) { + const coll = token.type === "block-map" ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag) : token.type === "block-seq" ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag) : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag); + const Coll = coll.constructor; + if (tagName === "!" || tagName === Coll.tagName) { + coll.tag = Coll.tagName; + return coll; + } + if (tagName) + coll.tag = tagName; + return coll; + } + function composeCollection(CN, ctx, token, props, onError) { + var _a, _b, _c; + const tagToken = props.tag; + const tagName = !tagToken ? null : ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg)); + if (token.type === "block-seq") { + const { anchor, newlineAfterProp: nl } = props; + const lastProp = anchor && tagToken ? anchor.offset > tagToken.offset ? anchor : tagToken : anchor != null ? anchor : tagToken; + if (lastProp && (!nl || nl.offset < lastProp.offset)) { + const message = "Missing newline after block sequence props"; + onError(lastProp, "MISSING_CHAR", message); + } + } + const expType = token.type === "block-map" ? "map" : token.type === "block-seq" ? "seq" : token.start.source === "{" ? "map" : "seq"; + if (!tagToken || !tagName || tagName === "!" || tagName === YAMLMap.YAMLMap.tagName && expType === "map" || tagName === YAMLSeq.YAMLSeq.tagName && expType === "seq") { + return resolveCollection(CN, ctx, token, onError, tagName); + } + let tag = ctx.schema.tags.find((t) => t.tag === tagName && t.collection === expType); + if (!tag) { + const kt = ctx.schema.knownTags[tagName]; + if (kt && kt.collection === expType) { + ctx.schema.tags.push(Object.assign({}, kt, { default: false })); + tag = kt; + } else { + if (kt) { + onError(tagToken, "BAD_COLLECTION_TYPE", `${kt.tag} used for ${expType} collection, but expects ${(_a = kt.collection) != null ? _a : "scalar"}`, true); + } else { + onError(tagToken, "TAG_RESOLVE_FAILED", `Unresolved tag: ${tagName}`, true); + } + return resolveCollection(CN, ctx, token, onError, tagName); + } + } + const coll = resolveCollection(CN, ctx, token, onError, tagName, tag); + const res = (_c = (_b = tag.resolve) == null ? void 0 : _b.call(tag, coll, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg), ctx.options)) != null ? _c : coll; + const node = identity.isNode(res) ? res : new Scalar.Scalar(res); + node.range = coll.range; + node.tag = tagName; + if (tag == null ? void 0 : tag.format) + node.format = tag.format; + return node; + } + exports.composeCollection = composeCollection; + } +}); + +// node_modules/yaml/dist/compose/resolve-block-scalar.js +var require_resolve_block_scalar = __commonJS({ + "node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + function resolveBlockScalar(ctx, scalar, onError) { + const start = scalar.offset; + const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError); + if (!header) + return { value: "", type: null, comment: "", range: [start, start, start] }; + const type = header.mode === ">" ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL; + const lines = scalar.source ? splitLines(scalar.source) : []; + let chompStart = lines.length; + for (let i = lines.length - 1; i >= 0; --i) { + const content = lines[i][1]; + if (content === "" || content === "\r") + chompStart = i; + else + break; + } + if (chompStart === 0) { + const value2 = header.chomp === "+" && lines.length > 0 ? "\n".repeat(Math.max(1, lines.length - 1)) : ""; + let end2 = start + header.length; + if (scalar.source) + end2 += scalar.source.length; + return { value: value2, type, comment: header.comment, range: [start, end2, end2] }; + } + let trimIndent = scalar.indent + header.indent; + let offset = scalar.offset + header.length; + let contentStart = 0; + for (let i = 0; i < chompStart; ++i) { + const [indent, content] = lines[i]; + if (content === "" || content === "\r") { + if (header.indent === 0 && indent.length > trimIndent) + trimIndent = indent.length; + } else { + if (indent.length < trimIndent) { + const message = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator"; + onError(offset + indent.length, "MISSING_CHAR", message); + } + if (header.indent === 0) + trimIndent = indent.length; + contentStart = i; + if (trimIndent === 0 && !ctx.atRoot) { + const message = "Block scalar values in collections must be indented"; + onError(offset, "BAD_INDENT", message); + } + break; + } + offset += indent.length + content.length + 1; + } + for (let i = lines.length - 1; i >= chompStart; --i) { + if (lines[i][0].length > trimIndent) + chompStart = i + 1; + } + let value = ""; + let sep = ""; + let prevMoreIndented = false; + for (let i = 0; i < contentStart; ++i) + value += lines[i][0].slice(trimIndent) + "\n"; + for (let i = contentStart; i < chompStart; ++i) { + let [indent, content] = lines[i]; + offset += indent.length + content.length + 1; + const crlf = content[content.length - 1] === "\r"; + if (crlf) + content = content.slice(0, -1); + if (content && indent.length < trimIndent) { + const src = header.indent ? "explicit indentation indicator" : "first line"; + const message = `Block scalar lines must not be less indented than their ${src}`; + onError(offset - content.length - (crlf ? 2 : 1), "BAD_INDENT", message); + indent = ""; + } + if (type === Scalar.Scalar.BLOCK_LITERAL) { + value += sep + indent.slice(trimIndent) + content; + sep = "\n"; + } else if (indent.length > trimIndent || content[0] === " ") { + if (sep === " ") + sep = "\n"; + else if (!prevMoreIndented && sep === "\n") + sep = "\n\n"; + value += sep + indent.slice(trimIndent) + content; + sep = "\n"; + prevMoreIndented = true; + } else if (content === "") { + if (sep === "\n") + value += "\n"; + else + sep = "\n"; + } else { + value += sep + content; + sep = " "; + prevMoreIndented = false; + } + } + switch (header.chomp) { + case "-": + break; + case "+": + for (let i = chompStart; i < lines.length; ++i) + value += "\n" + lines[i][0].slice(trimIndent); + if (value[value.length - 1] !== "\n") + value += "\n"; + break; + default: + value += "\n"; + } + const end = start + header.length + scalar.source.length; + return { value, type, comment: header.comment, range: [start, end, end] }; + } + function parseBlockScalarHeader({ offset, props }, strict, onError) { + if (props[0].type !== "block-scalar-header") { + onError(props[0], "IMPOSSIBLE", "Block scalar header not found"); + return null; + } + const { source } = props[0]; + const mode = source[0]; + let indent = 0; + let chomp = ""; + let error = -1; + for (let i = 1; i < source.length; ++i) { + const ch = source[i]; + if (!chomp && (ch === "-" || ch === "+")) + chomp = ch; + else { + const n = Number(ch); + if (!indent && n) + indent = n; + else if (error === -1) + error = offset + i; + } + } + if (error !== -1) + onError(error, "UNEXPECTED_TOKEN", `Block scalar header includes extra characters: ${source}`); + let hasSpace = false; + let comment = ""; + let length = source.length; + for (let i = 1; i < props.length; ++i) { + const token = props[i]; + switch (token.type) { + case "space": + hasSpace = true; + case "newline": + length += token.source.length; + break; + case "comment": + if (strict && !hasSpace) { + const message = "Comments must be separated from other tokens by white space characters"; + onError(token, "MISSING_CHAR", message); + } + length += token.source.length; + comment = token.source.substring(1); + break; + case "error": + onError(token, "UNEXPECTED_TOKEN", token.message); + length += token.source.length; + break; + default: { + const message = `Unexpected token in block scalar header: ${token.type}`; + onError(token, "UNEXPECTED_TOKEN", message); + const ts = token.source; + if (ts && typeof ts === "string") + length += ts.length; + } + } + } + return { mode, indent, chomp, comment, length }; + } + function splitLines(source) { + const split = source.split(/\n( *)/); + const first = split[0]; + const m = first.match(/^( *)/); + const line0 = (m == null ? void 0 : m[1]) ? [m[1], first.slice(m[1].length)] : ["", first]; + const lines = [line0]; + for (let i = 1; i < split.length; i += 2) + lines.push([split[i], split[i + 1]]); + return lines; + } + exports.resolveBlockScalar = resolveBlockScalar; + } +}); + +// node_modules/yaml/dist/compose/resolve-flow-scalar.js +var require_resolve_flow_scalar = __commonJS({ + "node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) { + "use strict"; + var Scalar = require_Scalar(); + var resolveEnd = require_resolve_end(); + function resolveFlowScalar(scalar, strict, onError) { + const { offset, type, source, end } = scalar; + let _type; + let value; + const _onError = (rel, code, msg) => onError(offset + rel, code, msg); + switch (type) { + case "scalar": + _type = Scalar.Scalar.PLAIN; + value = plainValue(source, _onError); + break; + case "single-quoted-scalar": + _type = Scalar.Scalar.QUOTE_SINGLE; + value = singleQuotedValue(source, _onError); + break; + case "double-quoted-scalar": + _type = Scalar.Scalar.QUOTE_DOUBLE; + value = doubleQuotedValue(source, _onError); + break; + default: + onError(scalar, "UNEXPECTED_TOKEN", `Expected a flow scalar value, but found: ${type}`); + return { + value: "", + type: null, + comment: "", + range: [offset, offset + source.length, offset + source.length] + }; + } + const valueEnd = offset + source.length; + const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError); + return { + value, + type: _type, + comment: re.comment, + range: [offset, valueEnd, re.offset] + }; + } + function plainValue(source, onError) { + let badChar = ""; + switch (source[0]) { + case " ": + badChar = "a tab character"; + break; + case ",": + badChar = "flow indicator character ,"; + break; + case "%": + badChar = "directive indicator character %"; + break; + case "|": + case ">": { + badChar = `block scalar indicator ${source[0]}`; + break; + } + case "@": + case "`": { + badChar = `reserved character ${source[0]}`; + break; + } + } + if (badChar) + onError(0, "BAD_SCALAR_START", `Plain value cannot start with ${badChar}`); + return foldLines(source); + } + function singleQuotedValue(source, onError) { + if (source[source.length - 1] !== "'" || source.length === 1) + onError(source.length, "MISSING_CHAR", "Missing closing 'quote"); + return foldLines(source.slice(1, -1)).replace(/''/g, "'"); + } + function foldLines(source) { + var _a; + let first, line; + try { + first = new RegExp("(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch; + } else { + res += ch; + } + } + if (source[source.length - 1] !== '"' || source.length === 1) + onError(source.length, "MISSING_CHAR", 'Missing closing "quote'); + return res; + } + function foldNewline(source, offset) { + let fold = ""; + let ch = source[offset + 1]; + while (ch === " " || ch === " " || ch === "\n" || ch === "\r") { + if (ch === "\r" && source[offset + 2] !== "\n") + break; + if (ch === "\n") + fold += "\n"; + offset += 1; + ch = source[offset + 1]; + } + if (!fold) + fold = " "; + return { fold, offset }; + } + var escapeCodes = { + "0": "\0", + a: "\x07", + b: "\b", + e: "", + f: "\f", + n: "\n", + r: "\r", + t: " ", + v: "\v", + N: "\x85", + _: "\xA0", + L: "\u2028", + P: "\u2029", + " ": " ", + '"': '"', + "/": "/", + "\\": "\\", + " ": " " + }; + function parseCharCode(source, offset, length, onError) { + const cc = source.substr(offset, length); + const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc); + const code = ok ? parseInt(cc, 16) : NaN; + if (isNaN(code)) { + const raw = source.substr(offset - 2, length + 2); + onError(offset - 2, "BAD_DQ_ESCAPE", `Invalid escape sequence ${raw}`); + return raw; + } + return String.fromCodePoint(code); + } + exports.resolveFlowScalar = resolveFlowScalar; + } +}); + +// node_modules/yaml/dist/compose/compose-scalar.js +var require_compose_scalar = __commonJS({ + "node_modules/yaml/dist/compose/compose-scalar.js"(exports) { + "use strict"; + var identity = require_identity(); + var Scalar = require_Scalar(); + var resolveBlockScalar = require_resolve_block_scalar(); + var resolveFlowScalar = require_resolve_flow_scalar(); + function composeScalar(ctx, token, tagToken, onError) { + const { value, type, comment, range } = token.type === "block-scalar" ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError) : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError); + const tagName = tagToken ? ctx.directives.tagName(tagToken.source, (msg) => onError(tagToken, "TAG_RESOLVE_FAILED", msg)) : null; + let tag; + if (ctx.options.stringKeys && ctx.atKey) { + tag = ctx.schema[identity.SCALAR]; + } else if (tagName) + tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError); + else if (token.type === "scalar") + tag = findScalarTagByTest(ctx, value, token, onError); + else + tag = ctx.schema[identity.SCALAR]; + let scalar; + try { + const res = tag.resolve(value, (msg) => onError(tagToken != null ? tagToken : token, "TAG_RESOLVE_FAILED", msg), ctx.options); + scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res); + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + onError(tagToken != null ? tagToken : token, "TAG_RESOLVE_FAILED", msg); + scalar = new Scalar.Scalar(value); + } + scalar.range = range; + scalar.source = value; + if (type) + scalar.type = type; + if (tagName) + scalar.tag = tagName; + if (tag.format) + scalar.format = tag.format; + if (comment) + scalar.comment = comment; + return scalar; + } + function findScalarTagByName(schema, value, tagName, tagToken, onError) { + var _a; + if (tagName === "!") + return schema[identity.SCALAR]; + const matchWithTest = []; + for (const tag of schema.tags) { + if (!tag.collection && tag.tag === tagName) { + if (tag.default && tag.test) + matchWithTest.push(tag); + else + return tag; + } + } + for (const tag of matchWithTest) + if ((_a = tag.test) == null ? void 0 : _a.test(value)) + return tag; + const kt = schema.knownTags[tagName]; + if (kt && !kt.collection) { + schema.tags.push(Object.assign({}, kt, { default: false, test: void 0 })); + return kt; + } + onError(tagToken, "TAG_RESOLVE_FAILED", `Unresolved tag: ${tagName}`, tagName !== "tag:yaml.org,2002:str"); + return schema[identity.SCALAR]; + } + function findScalarTagByTest({ atKey, directives, schema }, value, token, onError) { + var _a; + const tag = schema.tags.find((tag2) => { + var _a2; + return (tag2.default === true || atKey && tag2.default === "key") && ((_a2 = tag2.test) == null ? void 0 : _a2.test(value)); + }) || schema[identity.SCALAR]; + if (schema.compat) { + const compat = (_a = schema.compat.find((tag2) => { + var _a2; + return tag2.default && ((_a2 = tag2.test) == null ? void 0 : _a2.test(value)); + })) != null ? _a : schema[identity.SCALAR]; + if (tag.tag !== compat.tag) { + const ts = directives.tagString(tag.tag); + const cs = directives.tagString(compat.tag); + const msg = `Value may be parsed as either ${ts} or ${cs}`; + onError(token, "TAG_RESOLVE_FAILED", msg, true); + } + } + return tag; + } + exports.composeScalar = composeScalar; + } +}); + +// node_modules/yaml/dist/compose/util-empty-scalar-position.js +var require_util_empty_scalar_position = __commonJS({ + "node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) { + "use strict"; + function emptyScalarPosition(offset, before, pos) { + if (before) { + pos != null ? pos : pos = before.length; + for (let i = pos - 1; i >= 0; --i) { + let st = before[i]; + switch (st.type) { + case "space": + case "comment": + case "newline": + offset -= st.source.length; + continue; + } + st = before[++i]; + while ((st == null ? void 0 : st.type) === "space") { + offset += st.source.length; + st = before[++i]; + } + break; + } + } + return offset; + } + exports.emptyScalarPosition = emptyScalarPosition; + } +}); + +// node_modules/yaml/dist/compose/compose-node.js +var require_compose_node = __commonJS({ + "node_modules/yaml/dist/compose/compose-node.js"(exports) { + "use strict"; + var Alias = require_Alias(); + var identity = require_identity(); + var composeCollection = require_compose_collection(); + var composeScalar = require_compose_scalar(); + var resolveEnd = require_resolve_end(); + var utilEmptyScalarPosition = require_util_empty_scalar_position(); + var CN = { composeNode, composeEmptyNode }; + function composeNode(ctx, token, props, onError) { + const atKey = ctx.atKey; + const { spaceBefore, comment, anchor, tag } = props; + let node; + let isSrcToken = true; + switch (token.type) { + case "alias": + node = composeAlias(ctx, token, onError); + if (anchor || tag) + onError(token, "ALIAS_PROPS", "An alias node must not specify any properties"); + break; + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + case "block-scalar": + node = composeScalar.composeScalar(ctx, token, tag, onError); + if (anchor) + node.anchor = anchor.source.substring(1); + break; + case "block-map": + case "block-seq": + case "flow-collection": + node = composeCollection.composeCollection(CN, ctx, token, props, onError); + if (anchor) + node.anchor = anchor.source.substring(1); + break; + default: { + const message = token.type === "error" ? token.message : `Unsupported token (type: ${token.type})`; + onError(token, "UNEXPECTED_TOKEN", message); + node = composeEmptyNode(ctx, token.offset, void 0, null, props, onError); + isSrcToken = false; + } + } + if (anchor && node.anchor === "") + onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string"); + if (atKey && ctx.options.stringKeys && (!identity.isScalar(node) || typeof node.value !== "string" || node.tag && node.tag !== "tag:yaml.org,2002:str")) { + const msg = "With stringKeys, all keys must be strings"; + onError(tag != null ? tag : token, "NON_STRING_KEY", msg); + } + if (spaceBefore) + node.spaceBefore = true; + if (comment) { + if (token.type === "scalar" && token.source === "") + node.comment = comment; + else + node.commentBefore = comment; + } + if (ctx.options.keepSourceTokens && isSrcToken) + node.srcToken = token; + return node; + } + function composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) { + const token = { + type: "scalar", + offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos), + indent: -1, + source: "" + }; + const node = composeScalar.composeScalar(ctx, token, tag, onError); + if (anchor) { + node.anchor = anchor.source.substring(1); + if (node.anchor === "") + onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string"); + } + if (spaceBefore) + node.spaceBefore = true; + if (comment) { + node.comment = comment; + node.range[2] = end; + } + return node; + } + function composeAlias({ options }, { offset, source, end }, onError) { + const alias = new Alias.Alias(source.substring(1)); + if (alias.source === "") + onError(offset, "BAD_ALIAS", "Alias cannot be an empty string"); + if (alias.source.endsWith(":")) + onError(offset + source.length - 1, "BAD_ALIAS", "Alias ending in : is ambiguous", true); + const valueEnd = offset + source.length; + const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError); + alias.range = [offset, valueEnd, re.offset]; + if (re.comment) + alias.comment = re.comment; + return alias; + } + exports.composeEmptyNode = composeEmptyNode; + exports.composeNode = composeNode; + } +}); + +// node_modules/yaml/dist/compose/compose-doc.js +var require_compose_doc = __commonJS({ + "node_modules/yaml/dist/compose/compose-doc.js"(exports) { + "use strict"; + var Document = require_Document(); + var composeNode = require_compose_node(); + var resolveEnd = require_resolve_end(); + var resolveProps = require_resolve_props(); + function composeDoc(options, directives, { offset, start, value, end }, onError) { + const opts = Object.assign({ _directives: directives }, options); + const doc = new Document.Document(void 0, opts); + const ctx = { + atKey: false, + atRoot: true, + directives: doc.directives, + options: doc.options, + schema: doc.schema + }; + const props = resolveProps.resolveProps(start, { + indicator: "doc-start", + next: value != null ? value : end == null ? void 0 : end[0], + offset, + onError, + parentIndent: 0, + startOnNewline: true + }); + if (props.found) { + doc.directives.docStart = true; + if (value && (value.type === "block-map" || value.type === "block-seq") && !props.hasNewline) + onError(props.end, "MISSING_CHAR", "Block collection cannot start on same line with directives-end marker"); + } + doc.contents = value ? composeNode.composeNode(ctx, value, props, onError) : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError); + const contentEnd = doc.contents.range[2]; + const re = resolveEnd.resolveEnd(end, contentEnd, false, onError); + if (re.comment) + doc.comment = re.comment; + doc.range = [offset, contentEnd, re.offset]; + return doc; + } + exports.composeDoc = composeDoc; + } +}); + +// node_modules/yaml/dist/compose/composer.js +var require_composer = __commonJS({ + "node_modules/yaml/dist/compose/composer.js"(exports) { + "use strict"; + var node_process = require("process"); + var directives = require_directives(); + var Document = require_Document(); + var errors = require_errors(); + var identity = require_identity(); + var composeDoc = require_compose_doc(); + var resolveEnd = require_resolve_end(); + function getErrorPos(src) { + if (typeof src === "number") + return [src, src + 1]; + if (Array.isArray(src)) + return src.length === 2 ? src : [src[0], src[1]]; + const { offset, source } = src; + return [offset, offset + (typeof source === "string" ? source.length : 1)]; + } + function parsePrelude(prelude) { + var _a; + let comment = ""; + let atComment = false; + let afterEmptyLine = false; + for (let i = 0; i < prelude.length; ++i) { + const source = prelude[i]; + switch (source[0]) { + case "#": + comment += (comment === "" ? "" : afterEmptyLine ? "\n\n" : "\n") + (source.substring(1) || " "); + atComment = true; + afterEmptyLine = false; + break; + case "%": + if (((_a = prelude[i + 1]) == null ? void 0 : _a[0]) !== "#") + i += 1; + atComment = false; + break; + default: + if (!atComment) + afterEmptyLine = true; + atComment = false; + } + } + return { comment, afterEmptyLine }; + } + var Composer = class { + constructor(options = {}) { + this.doc = null; + this.atDirectives = false; + this.prelude = []; + this.errors = []; + this.warnings = []; + this.onError = (source, code, message, warning) => { + const pos = getErrorPos(source); + if (warning) + this.warnings.push(new errors.YAMLWarning(pos, code, message)); + else + this.errors.push(new errors.YAMLParseError(pos, code, message)); + }; + this.directives = new directives.Directives({ version: options.version || "1.2" }); + this.options = options; + } + decorate(doc, afterDoc) { + const { comment, afterEmptyLine } = parsePrelude(this.prelude); + if (comment) { + const dc = doc.contents; + if (afterDoc) { + doc.comment = doc.comment ? `${doc.comment} +${comment}` : comment; + } else if (afterEmptyLine || doc.directives.docStart || !dc) { + doc.commentBefore = comment; + } else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) { + let it = dc.items[0]; + if (identity.isPair(it)) + it = it.key; + const cb = it.commentBefore; + it.commentBefore = cb ? `${comment} +${cb}` : comment; + } else { + const cb = dc.commentBefore; + dc.commentBefore = cb ? `${comment} +${cb}` : comment; + } + } + if (afterDoc) { + Array.prototype.push.apply(doc.errors, this.errors); + Array.prototype.push.apply(doc.warnings, this.warnings); + } else { + doc.errors = this.errors; + doc.warnings = this.warnings; + } + this.prelude = []; + this.errors = []; + this.warnings = []; + } + streamInfo() { + return { + comment: parsePrelude(this.prelude).comment, + directives: this.directives, + errors: this.errors, + warnings: this.warnings + }; + } + *compose(tokens, forceDoc = false, endOffset = -1) { + for (const token of tokens) + yield* this.next(token); + yield* this.end(forceDoc, endOffset); + } + *next(token) { + if (node_process.env.LOG_STREAM) + console.dir(token, { depth: null }); + switch (token.type) { + case "directive": + this.directives.add(token.source, (offset, message, warning) => { + const pos = getErrorPos(token); + pos[0] += offset; + this.onError(pos, "BAD_DIRECTIVE", message, warning); + }); + this.prelude.push(token.source); + this.atDirectives = true; + break; + case "document": { + const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError); + if (this.atDirectives && !doc.directives.docStart) + this.onError(token, "MISSING_CHAR", "Missing directives-end/doc-start indicator line"); + this.decorate(doc, false); + if (this.doc) + yield this.doc; + this.doc = doc; + this.atDirectives = false; + break; + } + case "byte-order-mark": + case "space": + break; + case "comment": + case "newline": + this.prelude.push(token.source); + break; + case "error": { + const msg = token.source ? `${token.message}: ${JSON.stringify(token.source)}` : token.message; + const error = new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg); + if (this.atDirectives || !this.doc) + this.errors.push(error); + else + this.doc.errors.push(error); + break; + } + case "doc-end": { + if (!this.doc) { + const msg = "Unexpected doc-end without preceding document"; + this.errors.push(new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", msg)); + break; + } + this.doc.directives.docEnd = true; + const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError); + this.decorate(this.doc, true); + if (end.comment) { + const dc = this.doc.comment; + this.doc.comment = dc ? `${dc} +${end.comment}` : end.comment; + } + this.doc.range[2] = end.offset; + break; + } + default: + this.errors.push(new errors.YAMLParseError(getErrorPos(token), "UNEXPECTED_TOKEN", `Unsupported token ${token.type}`)); + } + } + *end(forceDoc = false, endOffset = -1) { + if (this.doc) { + this.decorate(this.doc, true); + yield this.doc; + this.doc = null; + } else if (forceDoc) { + const opts = Object.assign({ _directives: this.directives }, this.options); + const doc = new Document.Document(void 0, opts); + if (this.atDirectives) + this.onError(endOffset, "MISSING_CHAR", "Missing directives-end indicator line"); + doc.range = [0, endOffset, endOffset]; + this.decorate(doc, false); + yield doc; + } + } + }; + exports.Composer = Composer; + } +}); + +// node_modules/yaml/dist/parse/cst-scalar.js +var require_cst_scalar = __commonJS({ + "node_modules/yaml/dist/parse/cst-scalar.js"(exports) { + "use strict"; + var resolveBlockScalar = require_resolve_block_scalar(); + var resolveFlowScalar = require_resolve_flow_scalar(); + var errors = require_errors(); + var stringifyString = require_stringifyString(); + function resolveAsScalar(token, strict = true, onError) { + if (token) { + const _onError = (pos, code, message) => { + const offset = typeof pos === "number" ? pos : Array.isArray(pos) ? pos[0] : pos.offset; + if (onError) + onError(offset, code, message); + else + throw new errors.YAMLParseError([offset, offset + 1], code, message); + }; + switch (token.type) { + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + return resolveFlowScalar.resolveFlowScalar(token, strict, _onError); + case "block-scalar": + return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError); + } + } + return null; + } + function createScalarToken(value, context) { + var _a; + const { implicitKey = false, indent, inFlow = false, offset = -1, type = "PLAIN" } = context; + const source = stringifyString.stringifyString({ type, value }, { + implicitKey, + indent: indent > 0 ? " ".repeat(indent) : "", + inFlow, + options: { blockQuote: true, lineWidth: -1 } + }); + const end = (_a = context.end) != null ? _a : [ + { type: "newline", offset: -1, indent, source: "\n" } + ]; + switch (source[0]) { + case "|": + case ">": { + const he = source.indexOf("\n"); + const head = source.substring(0, he); + const body = source.substring(he + 1) + "\n"; + const props = [ + { type: "block-scalar-header", offset, indent, source: head } + ]; + if (!addEndtoBlockProps(props, end)) + props.push({ type: "newline", offset: -1, indent, source: "\n" }); + return { type: "block-scalar", offset, indent, props, source: body }; + } + case '"': + return { type: "double-quoted-scalar", offset, indent, source, end }; + case "'": + return { type: "single-quoted-scalar", offset, indent, source, end }; + default: + return { type: "scalar", offset, indent, source, end }; + } + } + function setScalarValue(token, value, context = {}) { + let { afterKey = false, implicitKey = false, inFlow = false, type } = context; + let indent = "indent" in token ? token.indent : null; + if (afterKey && typeof indent === "number") + indent += 2; + if (!type) + switch (token.type) { + case "single-quoted-scalar": + type = "QUOTE_SINGLE"; + break; + case "double-quoted-scalar": + type = "QUOTE_DOUBLE"; + break; + case "block-scalar": { + const header = token.props[0]; + if (header.type !== "block-scalar-header") + throw new Error("Invalid block scalar header"); + type = header.source[0] === ">" ? "BLOCK_FOLDED" : "BLOCK_LITERAL"; + break; + } + default: + type = "PLAIN"; + } + const source = stringifyString.stringifyString({ type, value }, { + implicitKey: implicitKey || indent === null, + indent: indent !== null && indent > 0 ? " ".repeat(indent) : "", + inFlow, + options: { blockQuote: true, lineWidth: -1 } + }); + switch (source[0]) { + case "|": + case ">": + setBlockScalarValue(token, source); + break; + case '"': + setFlowScalarValue(token, source, "double-quoted-scalar"); + break; + case "'": + setFlowScalarValue(token, source, "single-quoted-scalar"); + break; + default: + setFlowScalarValue(token, source, "scalar"); + } + } + function setBlockScalarValue(token, source) { + const he = source.indexOf("\n"); + const head = source.substring(0, he); + const body = source.substring(he + 1) + "\n"; + if (token.type === "block-scalar") { + const header = token.props[0]; + if (header.type !== "block-scalar-header") + throw new Error("Invalid block scalar header"); + header.source = head; + token.source = body; + } else { + const { offset } = token; + const indent = "indent" in token ? token.indent : -1; + const props = [ + { type: "block-scalar-header", offset, indent, source: head } + ]; + if (!addEndtoBlockProps(props, "end" in token ? token.end : void 0)) + props.push({ type: "newline", offset: -1, indent, source: "\n" }); + for (const key of Object.keys(token)) + if (key !== "type" && key !== "offset") + delete token[key]; + Object.assign(token, { type: "block-scalar", indent, props, source: body }); + } + } + function addEndtoBlockProps(props, end) { + if (end) + for (const st of end) + switch (st.type) { + case "space": + case "comment": + props.push(st); + break; + case "newline": + props.push(st); + return true; + } + return false; + } + function setFlowScalarValue(token, source, type) { + switch (token.type) { + case "scalar": + case "double-quoted-scalar": + case "single-quoted-scalar": + token.type = type; + token.source = source; + break; + case "block-scalar": { + const end = token.props.slice(1); + let oa = source.length; + if (token.props[0].type === "block-scalar-header") + oa -= token.props[0].source.length; + for (const tok of end) + tok.offset += oa; + delete token.props; + Object.assign(token, { type, source, end }); + break; + } + case "block-map": + case "block-seq": { + const offset = token.offset + source.length; + const nl = { type: "newline", offset, indent: token.indent, source: "\n" }; + delete token.items; + Object.assign(token, { type, source, end: [nl] }); + break; + } + default: { + const indent = "indent" in token ? token.indent : -1; + const end = "end" in token && Array.isArray(token.end) ? token.end.filter((st) => st.type === "space" || st.type === "comment" || st.type === "newline") : []; + for (const key of Object.keys(token)) + if (key !== "type" && key !== "offset") + delete token[key]; + Object.assign(token, { type, indent, source, end }); + } + } + } + exports.createScalarToken = createScalarToken; + exports.resolveAsScalar = resolveAsScalar; + exports.setScalarValue = setScalarValue; + } +}); + +// node_modules/yaml/dist/parse/cst-stringify.js +var require_cst_stringify = __commonJS({ + "node_modules/yaml/dist/parse/cst-stringify.js"(exports) { + "use strict"; + var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst); + function stringifyToken(token) { + switch (token.type) { + case "block-scalar": { + let res = ""; + for (const tok of token.props) + res += stringifyToken(tok); + return res + token.source; + } + case "block-map": + case "block-seq": { + let res = ""; + for (const item of token.items) + res += stringifyItem(item); + return res; + } + case "flow-collection": { + let res = token.start.source; + for (const item of token.items) + res += stringifyItem(item); + for (const st of token.end) + res += st.source; + return res; + } + case "document": { + let res = stringifyItem(token); + if (token.end) + for (const st of token.end) + res += st.source; + return res; + } + default: { + let res = token.source; + if ("end" in token && token.end) + for (const st of token.end) + res += st.source; + return res; + } + } + } + function stringifyItem({ start, key, sep, value }) { + let res = ""; + for (const st of start) + res += st.source; + if (key) + res += stringifyToken(key); + if (sep) + for (const st of sep) + res += st.source; + if (value) + res += stringifyToken(value); + return res; + } + exports.stringify = stringify; + } +}); + +// node_modules/yaml/dist/parse/cst-visit.js +var require_cst_visit = __commonJS({ + "node_modules/yaml/dist/parse/cst-visit.js"(exports) { + "use strict"; + var BREAK = Symbol("break visit"); + var SKIP = Symbol("skip children"); + var REMOVE = Symbol("remove item"); + function visit(cst, visitor) { + if ("type" in cst && cst.type === "document") + cst = { start: cst.start, value: cst.value }; + _visit(Object.freeze([]), cst, visitor); + } + visit.BREAK = BREAK; + visit.SKIP = SKIP; + visit.REMOVE = REMOVE; + visit.itemAtPath = (cst, path2) => { + let item = cst; + for (const [field, index] of path2) { + const tok = item == null ? void 0 : item[field]; + if (tok && "items" in tok) { + item = tok.items[index]; + } else + return void 0; + } + return item; + }; + visit.parentCollection = (cst, path2) => { + const parent = visit.itemAtPath(cst, path2.slice(0, -1)); + const field = path2[path2.length - 1][0]; + const coll = parent == null ? void 0 : parent[field]; + if (coll && "items" in coll) + return coll; + throw new Error("Parent collection not found"); + }; + function _visit(path2, item, visitor) { + let ctrl = visitor(item, path2); + if (typeof ctrl === "symbol") + return ctrl; + for (const field of ["key", "value"]) { + const token = item[field]; + if (token && "items" in token) { + for (let i = 0; i < token.items.length; ++i) { + const ci = _visit(Object.freeze(path2.concat([[field, i]])), token.items[i], visitor); + if (typeof ci === "number") + i = ci - 1; + else if (ci === BREAK) + return BREAK; + else if (ci === REMOVE) { + token.items.splice(i, 1); + i -= 1; + } + } + if (typeof ctrl === "function" && field === "key") + ctrl = ctrl(item, path2); + } + } + return typeof ctrl === "function" ? ctrl(item, path2) : ctrl; + } + exports.visit = visit; + } +}); + +// node_modules/yaml/dist/parse/cst.js +var require_cst = __commonJS({ + "node_modules/yaml/dist/parse/cst.js"(exports) { + "use strict"; + var cstScalar = require_cst_scalar(); + var cstStringify = require_cst_stringify(); + var cstVisit = require_cst_visit(); + var BOM = "\uFEFF"; + var DOCUMENT = ""; + var FLOW_END = ""; + var SCALAR = ""; + var isCollection = (token) => !!token && "items" in token; + var isScalar = (token) => !!token && (token.type === "scalar" || token.type === "single-quoted-scalar" || token.type === "double-quoted-scalar" || token.type === "block-scalar"); + function prettyToken(token) { + switch (token) { + case BOM: + return ""; + case DOCUMENT: + return ""; + case FLOW_END: + return ""; + case SCALAR: + return ""; + default: + return JSON.stringify(token); + } + } + function tokenType(source) { + switch (source) { + case BOM: + return "byte-order-mark"; + case DOCUMENT: + return "doc-mode"; + case FLOW_END: + return "flow-error-end"; + case SCALAR: + return "scalar"; + case "---": + return "doc-start"; + case "...": + return "doc-end"; + case "": + case "\n": + case "\r\n": + return "newline"; + case "-": + return "seq-item-ind"; + case "?": + return "explicit-key-ind"; + case ":": + return "map-value-ind"; + case "{": + return "flow-map-start"; + case "}": + return "flow-map-end"; + case "[": + return "flow-seq-start"; + case "]": + return "flow-seq-end"; + case ",": + return "comma"; + } + switch (source[0]) { + case " ": + case " ": + return "space"; + case "#": + return "comment"; + case "%": + return "directive-line"; + case "*": + return "alias"; + case "&": + return "anchor"; + case "!": + return "tag"; + case "'": + return "single-quoted-scalar"; + case '"': + return "double-quoted-scalar"; + case "|": + case ">": + return "block-scalar-header"; + } + return null; + } + exports.createScalarToken = cstScalar.createScalarToken; + exports.resolveAsScalar = cstScalar.resolveAsScalar; + exports.setScalarValue = cstScalar.setScalarValue; + exports.stringify = cstStringify.stringify; + exports.visit = cstVisit.visit; + exports.BOM = BOM; + exports.DOCUMENT = DOCUMENT; + exports.FLOW_END = FLOW_END; + exports.SCALAR = SCALAR; + exports.isCollection = isCollection; + exports.isScalar = isScalar; + exports.prettyToken = prettyToken; + exports.tokenType = tokenType; + } +}); + +// node_modules/yaml/dist/parse/lexer.js +var require_lexer = __commonJS({ + "node_modules/yaml/dist/parse/lexer.js"(exports) { + "use strict"; + var cst = require_cst(); + function isEmpty(ch) { + switch (ch) { + case void 0: + case " ": + case "\n": + case "\r": + case " ": + return true; + default: + return false; + } + } + var hexDigits = new Set("0123456789ABCDEFabcdef"); + var tagChars = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"); + var flowIndicatorChars = new Set(",[]{}"); + var invalidAnchorChars = new Set(" ,[]{}\n\r "); + var isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch); + var Lexer = class { + constructor() { + this.atEnd = false; + this.blockScalarIndent = -1; + this.blockScalarKeep = false; + this.buffer = ""; + this.flowKey = false; + this.flowLevel = 0; + this.indentNext = 0; + this.indentValue = 0; + this.lineEndPos = null; + this.next = null; + this.pos = 0; + } + *lex(source, incomplete = false) { + var _a; + if (source) { + if (typeof source !== "string") + throw TypeError("source is not a string"); + this.buffer = this.buffer ? this.buffer + source : source; + this.lineEndPos = null; + } + this.atEnd = !incomplete; + let next = (_a = this.next) != null ? _a : "stream"; + while (next && (incomplete || this.hasChars(1))) + next = yield* this.parseNext(next); + } + atLineEnd() { + let i = this.pos; + let ch = this.buffer[i]; + while (ch === " " || ch === " ") + ch = this.buffer[++i]; + if (!ch || ch === "#" || ch === "\n") + return true; + if (ch === "\r") + return this.buffer[i + 1] === "\n"; + return false; + } + charAt(n) { + return this.buffer[this.pos + n]; + } + continueScalar(offset) { + let ch = this.buffer[offset]; + if (this.indentNext > 0) { + let indent = 0; + while (ch === " ") + ch = this.buffer[++indent + offset]; + if (ch === "\r") { + const next = this.buffer[indent + offset + 1]; + if (next === "\n" || !next && !this.atEnd) + return offset + indent + 1; + } + return ch === "\n" || indent >= this.indentNext || !ch && !this.atEnd ? offset + indent : -1; + } + if (ch === "-" || ch === ".") { + const dt = this.buffer.substr(offset, 3); + if ((dt === "---" || dt === "...") && isEmpty(this.buffer[offset + 3])) + return -1; + } + return offset; + } + getLine() { + let end = this.lineEndPos; + if (typeof end !== "number" || end !== -1 && end < this.pos) { + end = this.buffer.indexOf("\n", this.pos); + this.lineEndPos = end; + } + if (end === -1) + return this.atEnd ? this.buffer.substring(this.pos) : null; + if (this.buffer[end - 1] === "\r") + end -= 1; + return this.buffer.substring(this.pos, end); + } + hasChars(n) { + return this.pos + n <= this.buffer.length; + } + setNext(state) { + this.buffer = this.buffer.substring(this.pos); + this.pos = 0; + this.lineEndPos = null; + this.next = state; + return null; + } + peek(n) { + return this.buffer.substr(this.pos, n); + } + *parseNext(next) { + switch (next) { + case "stream": + return yield* this.parseStream(); + case "line-start": + return yield* this.parseLineStart(); + case "block-start": + return yield* this.parseBlockStart(); + case "doc": + return yield* this.parseDocument(); + case "flow": + return yield* this.parseFlowCollection(); + case "quoted-scalar": + return yield* this.parseQuotedScalar(); + case "block-scalar": + return yield* this.parseBlockScalar(); + case "plain-scalar": + return yield* this.parsePlainScalar(); + } + } + *parseStream() { + let line = this.getLine(); + if (line === null) + return this.setNext("stream"); + if (line[0] === cst.BOM) { + yield* this.pushCount(1); + line = line.substring(1); + } + if (line[0] === "%") { + let dirEnd = line.length; + let cs = line.indexOf("#"); + while (cs !== -1) { + const ch = line[cs - 1]; + if (ch === " " || ch === " ") { + dirEnd = cs - 1; + break; + } else { + cs = line.indexOf("#", cs + 1); + } + } + while (true) { + const ch = line[dirEnd - 1]; + if (ch === " " || ch === " ") + dirEnd -= 1; + else + break; + } + const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true)); + yield* this.pushCount(line.length - n); + this.pushNewline(); + return "stream"; + } + if (this.atLineEnd()) { + const sp = yield* this.pushSpaces(true); + yield* this.pushCount(line.length - sp); + yield* this.pushNewline(); + return "stream"; + } + yield cst.DOCUMENT; + return yield* this.parseLineStart(); + } + *parseLineStart() { + const ch = this.charAt(0); + if (!ch && !this.atEnd) + return this.setNext("line-start"); + if (ch === "-" || ch === ".") { + if (!this.atEnd && !this.hasChars(4)) + return this.setNext("line-start"); + const s = this.peek(3); + if ((s === "---" || s === "...") && isEmpty(this.charAt(3))) { + yield* this.pushCount(3); + this.indentValue = 0; + this.indentNext = 0; + return s === "---" ? "doc" : "stream"; + } + } + this.indentValue = yield* this.pushSpaces(false); + if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1))) + this.indentNext = this.indentValue; + return yield* this.parseBlockStart(); + } + *parseBlockStart() { + const [ch0, ch1] = this.peek(2); + if (!ch1 && !this.atEnd) + return this.setNext("block-start"); + if ((ch0 === "-" || ch0 === "?" || ch0 === ":") && isEmpty(ch1)) { + const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)); + this.indentNext = this.indentValue + 1; + this.indentValue += n; + return yield* this.parseBlockStart(); + } + return "doc"; + } + *parseDocument() { + yield* this.pushSpaces(true); + const line = this.getLine(); + if (line === null) + return this.setNext("doc"); + let n = yield* this.pushIndicators(); + switch (line[n]) { + case "#": + yield* this.pushCount(line.length - n); + case void 0: + yield* this.pushNewline(); + return yield* this.parseLineStart(); + case "{": + case "[": + yield* this.pushCount(1); + this.flowKey = false; + this.flowLevel = 1; + return "flow"; + case "}": + case "]": + yield* this.pushCount(1); + return "doc"; + case "*": + yield* this.pushUntil(isNotAnchorChar); + return "doc"; + case '"': + case "'": + return yield* this.parseQuotedScalar(); + case "|": + case ">": + n += yield* this.parseBlockScalarHeader(); + n += yield* this.pushSpaces(true); + yield* this.pushCount(line.length - n); + yield* this.pushNewline(); + return yield* this.parseBlockScalar(); + default: + return yield* this.parsePlainScalar(); + } + } + *parseFlowCollection() { + let nl, sp; + let indent = -1; + do { + nl = yield* this.pushNewline(); + if (nl > 0) { + sp = yield* this.pushSpaces(false); + this.indentValue = indent = sp; + } else { + sp = 0; + } + sp += yield* this.pushSpaces(true); + } while (nl + sp > 0); + const line = this.getLine(); + if (line === null) + return this.setNext("flow"); + if (indent !== -1 && indent < this.indentNext && line[0] !== "#" || indent === 0 && (line.startsWith("---") || line.startsWith("...")) && isEmpty(line[3])) { + const atFlowEndMarker = indent === this.indentNext - 1 && this.flowLevel === 1 && (line[0] === "]" || line[0] === "}"); + if (!atFlowEndMarker) { + this.flowLevel = 0; + yield cst.FLOW_END; + return yield* this.parseLineStart(); + } + } + let n = 0; + while (line[n] === ",") { + n += yield* this.pushCount(1); + n += yield* this.pushSpaces(true); + this.flowKey = false; + } + n += yield* this.pushIndicators(); + switch (line[n]) { + case void 0: + return "flow"; + case "#": + yield* this.pushCount(line.length - n); + return "flow"; + case "{": + case "[": + yield* this.pushCount(1); + this.flowKey = false; + this.flowLevel += 1; + return "flow"; + case "}": + case "]": + yield* this.pushCount(1); + this.flowKey = true; + this.flowLevel -= 1; + return this.flowLevel ? "flow" : "doc"; + case "*": + yield* this.pushUntil(isNotAnchorChar); + return "flow"; + case '"': + case "'": + this.flowKey = true; + return yield* this.parseQuotedScalar(); + case ":": { + const next = this.charAt(1); + if (this.flowKey || isEmpty(next) || next === ",") { + this.flowKey = false; + yield* this.pushCount(1); + yield* this.pushSpaces(true); + return "flow"; + } + } + default: + this.flowKey = false; + return yield* this.parsePlainScalar(); + } + } + *parseQuotedScalar() { + const quote = this.charAt(0); + let end = this.buffer.indexOf(quote, this.pos + 1); + if (quote === "'") { + while (end !== -1 && this.buffer[end + 1] === "'") + end = this.buffer.indexOf("'", end + 2); + } else { + while (end !== -1) { + let n = 0; + while (this.buffer[end - 1 - n] === "\\") + n += 1; + if (n % 2 === 0) + break; + end = this.buffer.indexOf('"', end + 1); + } + } + const qb = this.buffer.substring(0, end); + let nl = qb.indexOf("\n", this.pos); + if (nl !== -1) { + while (nl !== -1) { + const cs = this.continueScalar(nl + 1); + if (cs === -1) + break; + nl = qb.indexOf("\n", cs); + } + if (nl !== -1) { + end = nl - (qb[nl - 1] === "\r" ? 2 : 1); + } + } + if (end === -1) { + if (!this.atEnd) + return this.setNext("quoted-scalar"); + end = this.buffer.length; + } + yield* this.pushToIndex(end + 1, false); + return this.flowLevel ? "flow" : "doc"; + } + *parseBlockScalarHeader() { + this.blockScalarIndent = -1; + this.blockScalarKeep = false; + let i = this.pos; + while (true) { + const ch = this.buffer[++i]; + if (ch === "+") + this.blockScalarKeep = true; + else if (ch > "0" && ch <= "9") + this.blockScalarIndent = Number(ch) - 1; + else if (ch !== "-") + break; + } + return yield* this.pushUntil((ch) => isEmpty(ch) || ch === "#"); + } + *parseBlockScalar() { + let nl = this.pos - 1; + let indent = 0; + let ch; + loop: + for (let i2 = this.pos; ch = this.buffer[i2]; ++i2) { + switch (ch) { + case " ": + indent += 1; + break; + case "\n": + nl = i2; + indent = 0; + break; + case "\r": { + const next = this.buffer[i2 + 1]; + if (!next && !this.atEnd) + return this.setNext("block-scalar"); + if (next === "\n") + break; + } + default: + break loop; + } + } + if (!ch && !this.atEnd) + return this.setNext("block-scalar"); + if (indent >= this.indentNext) { + if (this.blockScalarIndent === -1) + this.indentNext = indent; + else { + this.indentNext = this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext); + } + do { + const cs = this.continueScalar(nl + 1); + if (cs === -1) + break; + nl = this.buffer.indexOf("\n", cs); + } while (nl !== -1); + if (nl === -1) { + if (!this.atEnd) + return this.setNext("block-scalar"); + nl = this.buffer.length; + } + } + let i = nl + 1; + ch = this.buffer[i]; + while (ch === " ") + ch = this.buffer[++i]; + if (ch === " ") { + while (ch === " " || ch === " " || ch === "\r" || ch === "\n") + ch = this.buffer[++i]; + nl = i - 1; + } else if (!this.blockScalarKeep) { + do { + let i2 = nl - 1; + let ch2 = this.buffer[i2]; + if (ch2 === "\r") + ch2 = this.buffer[--i2]; + const lastChar = i2; + while (ch2 === " ") + ch2 = this.buffer[--i2]; + if (ch2 === "\n" && i2 >= this.pos && i2 + 1 + indent > lastChar) + nl = i2; + else + break; + } while (true); + } + yield cst.SCALAR; + yield* this.pushToIndex(nl + 1, true); + return yield* this.parseLineStart(); + } + *parsePlainScalar() { + const inFlow = this.flowLevel > 0; + let end = this.pos - 1; + let i = this.pos - 1; + let ch; + while (ch = this.buffer[++i]) { + if (ch === ":") { + const next = this.buffer[i + 1]; + if (isEmpty(next) || inFlow && flowIndicatorChars.has(next)) + break; + end = i; + } else if (isEmpty(ch)) { + let next = this.buffer[i + 1]; + if (ch === "\r") { + if (next === "\n") { + i += 1; + ch = "\n"; + next = this.buffer[i + 1]; + } else + end = i; + } + if (next === "#" || inFlow && flowIndicatorChars.has(next)) + break; + if (ch === "\n") { + const cs = this.continueScalar(i + 1); + if (cs === -1) + break; + i = Math.max(i, cs - 2); + } + } else { + if (inFlow && flowIndicatorChars.has(ch)) + break; + end = i; + } + } + if (!ch && !this.atEnd) + return this.setNext("plain-scalar"); + yield cst.SCALAR; + yield* this.pushToIndex(end + 1, true); + return inFlow ? "flow" : "doc"; + } + *pushCount(n) { + if (n > 0) { + yield this.buffer.substr(this.pos, n); + this.pos += n; + return n; + } + return 0; + } + *pushToIndex(i, allowEmpty) { + const s = this.buffer.slice(this.pos, i); + if (s) { + yield s; + this.pos += s.length; + return s.length; + } else if (allowEmpty) + yield ""; + return 0; + } + *pushIndicators() { + switch (this.charAt(0)) { + case "!": + return (yield* this.pushTag()) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); + case "&": + return (yield* this.pushUntil(isNotAnchorChar)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); + case "-": + case "?": + case ":": { + const inFlow = this.flowLevel > 0; + const ch1 = this.charAt(1); + if (isEmpty(ch1) || inFlow && flowIndicatorChars.has(ch1)) { + if (!inFlow) + this.indentNext = this.indentValue + 1; + else if (this.flowKey) + this.flowKey = false; + return (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators()); + } + } + } + return 0; + } + *pushTag() { + if (this.charAt(1) === "<") { + let i = this.pos + 2; + let ch = this.buffer[i]; + while (!isEmpty(ch) && ch !== ">") + ch = this.buffer[++i]; + return yield* this.pushToIndex(ch === ">" ? i + 1 : i, false); + } else { + let i = this.pos + 1; + let ch = this.buffer[i]; + while (ch) { + if (tagChars.has(ch)) + ch = this.buffer[++i]; + else if (ch === "%" && hexDigits.has(this.buffer[i + 1]) && hexDigits.has(this.buffer[i + 2])) { + ch = this.buffer[i += 3]; + } else + break; + } + return yield* this.pushToIndex(i, false); + } + } + *pushNewline() { + const ch = this.buffer[this.pos]; + if (ch === "\n") + return yield* this.pushCount(1); + else if (ch === "\r" && this.charAt(1) === "\n") + return yield* this.pushCount(2); + else + return 0; + } + *pushSpaces(allowTabs) { + let i = this.pos - 1; + let ch; + do { + ch = this.buffer[++i]; + } while (ch === " " || allowTabs && ch === " "); + const n = i - this.pos; + if (n > 0) { + yield this.buffer.substr(this.pos, n); + this.pos = i; + } + return n; + } + *pushUntil(test) { + let i = this.pos; + let ch = this.buffer[i]; + while (!test(ch)) + ch = this.buffer[++i]; + return yield* this.pushToIndex(i, false); + } + }; + exports.Lexer = Lexer; + } +}); + +// node_modules/yaml/dist/parse/line-counter.js +var require_line_counter = __commonJS({ + "node_modules/yaml/dist/parse/line-counter.js"(exports) { + "use strict"; + var LineCounter = class { + constructor() { + this.lineStarts = []; + this.addNewLine = (offset) => this.lineStarts.push(offset); + this.linePos = (offset) => { + let low = 0; + let high = this.lineStarts.length; + while (low < high) { + const mid = low + high >> 1; + if (this.lineStarts[mid] < offset) + low = mid + 1; + else + high = mid; + } + if (this.lineStarts[low] === offset) + return { line: low + 1, col: 1 }; + if (low === 0) + return { line: 0, col: offset }; + const start = this.lineStarts[low - 1]; + return { line: low, col: offset - start + 1 }; + }; + } + }; + exports.LineCounter = LineCounter; + } +}); + +// node_modules/yaml/dist/parse/parser.js +var require_parser = __commonJS({ + "node_modules/yaml/dist/parse/parser.js"(exports) { + "use strict"; + var node_process = require("process"); + var cst = require_cst(); + var lexer = require_lexer(); + function includesToken(list, type) { + for (let i = 0; i < list.length; ++i) + if (list[i].type === type) + return true; + return false; + } + function findNonEmptyIndex(list) { + for (let i = 0; i < list.length; ++i) { + switch (list[i].type) { + case "space": + case "comment": + case "newline": + break; + default: + return i; + } + } + return -1; + } + function isFlowToken(token) { + switch (token == null ? void 0 : token.type) { + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + case "flow-collection": + return true; + default: + return false; + } + } + function getPrevProps(parent) { + var _a; + switch (parent.type) { + case "document": + return parent.start; + case "block-map": { + const it = parent.items[parent.items.length - 1]; + return (_a = it.sep) != null ? _a : it.start; + } + case "block-seq": + return parent.items[parent.items.length - 1].start; + default: + return []; + } + } + function getFirstKeyStartProps(prev) { + var _a; + if (prev.length === 0) + return []; + let i = prev.length; + loop: + while (--i >= 0) { + switch (prev[i].type) { + case "doc-start": + case "explicit-key-ind": + case "map-value-ind": + case "seq-item-ind": + case "newline": + break loop; + } + } + while (((_a = prev[++i]) == null ? void 0 : _a.type) === "space") { + } + return prev.splice(i, prev.length); + } + function fixFlowSeqItems(fc) { + if (fc.start.type === "flow-seq-start") { + for (const it of fc.items) { + if (it.sep && !it.value && !includesToken(it.start, "explicit-key-ind") && !includesToken(it.sep, "map-value-ind")) { + if (it.key) + it.value = it.key; + delete it.key; + if (isFlowToken(it.value)) { + if (it.value.end) + Array.prototype.push.apply(it.value.end, it.sep); + else + it.value.end = it.sep; + } else + Array.prototype.push.apply(it.start, it.sep); + delete it.sep; + } + } + } + } + var Parser = class { + constructor(onNewLine) { + this.atNewLine = true; + this.atScalar = false; + this.indent = 0; + this.offset = 0; + this.onKeyLine = false; + this.stack = []; + this.source = ""; + this.type = ""; + this.lexer = new lexer.Lexer(); + this.onNewLine = onNewLine; + } + *parse(source, incomplete = false) { + if (this.onNewLine && this.offset === 0) + this.onNewLine(0); + for (const lexeme of this.lexer.lex(source, incomplete)) + yield* this.next(lexeme); + if (!incomplete) + yield* this.end(); + } + *next(source) { + this.source = source; + if (node_process.env.LOG_TOKENS) + console.log("|", cst.prettyToken(source)); + if (this.atScalar) { + this.atScalar = false; + yield* this.step(); + this.offset += source.length; + return; + } + const type = cst.tokenType(source); + if (!type) { + const message = `Not a YAML token: ${source}`; + yield* this.pop({ type: "error", offset: this.offset, message, source }); + this.offset += source.length; + } else if (type === "scalar") { + this.atNewLine = false; + this.atScalar = true; + this.type = "scalar"; + } else { + this.type = type; + yield* this.step(); + switch (type) { + case "newline": + this.atNewLine = true; + this.indent = 0; + if (this.onNewLine) + this.onNewLine(this.offset + source.length); + break; + case "space": + if (this.atNewLine && source[0] === " ") + this.indent += source.length; + break; + case "explicit-key-ind": + case "map-value-ind": + case "seq-item-ind": + if (this.atNewLine) + this.indent += source.length; + break; + case "doc-mode": + case "flow-error-end": + return; + default: + this.atNewLine = false; + } + this.offset += source.length; + } + } + *end() { + while (this.stack.length > 0) + yield* this.pop(); + } + get sourceToken() { + const st = { + type: this.type, + offset: this.offset, + indent: this.indent, + source: this.source + }; + return st; + } + *step() { + const top = this.peek(1); + if (this.type === "doc-end" && (!top || top.type !== "doc-end")) { + while (this.stack.length > 0) + yield* this.pop(); + this.stack.push({ + type: "doc-end", + offset: this.offset, + source: this.source + }); + return; + } + if (!top) + return yield* this.stream(); + switch (top.type) { + case "document": + return yield* this.document(top); + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + return yield* this.scalar(top); + case "block-scalar": + return yield* this.blockScalar(top); + case "block-map": + return yield* this.blockMap(top); + case "block-seq": + return yield* this.blockSequence(top); + case "flow-collection": + return yield* this.flowCollection(top); + case "doc-end": + return yield* this.documentEnd(top); + } + yield* this.pop(); + } + peek(n) { + return this.stack[this.stack.length - n]; + } + *pop(error) { + const token = error != null ? error : this.stack.pop(); + if (!token) { + const message = "Tried to pop an empty stack"; + yield { type: "error", offset: this.offset, source: "", message }; + } else if (this.stack.length === 0) { + yield token; + } else { + const top = this.peek(1); + if (token.type === "block-scalar") { + token.indent = "indent" in top ? top.indent : 0; + } else if (token.type === "flow-collection" && top.type === "document") { + token.indent = 0; + } + if (token.type === "flow-collection") + fixFlowSeqItems(token); + switch (top.type) { + case "document": + top.value = token; + break; + case "block-scalar": + top.props.push(token); + break; + case "block-map": { + const it = top.items[top.items.length - 1]; + if (it.value) { + top.items.push({ start: [], key: token, sep: [] }); + this.onKeyLine = true; + return; + } else if (it.sep) { + it.value = token; + } else { + Object.assign(it, { key: token, sep: [] }); + this.onKeyLine = !it.explicitKey; + return; + } + break; + } + case "block-seq": { + const it = top.items[top.items.length - 1]; + if (it.value) + top.items.push({ start: [], value: token }); + else + it.value = token; + break; + } + case "flow-collection": { + const it = top.items[top.items.length - 1]; + if (!it || it.value) + top.items.push({ start: [], key: token, sep: [] }); + else if (it.sep) + it.value = token; + else + Object.assign(it, { key: token, sep: [] }); + return; + } + default: + yield* this.pop(); + yield* this.pop(token); + } + if ((top.type === "document" || top.type === "block-map" || top.type === "block-seq") && (token.type === "block-map" || token.type === "block-seq")) { + const last = token.items[token.items.length - 1]; + if (last && !last.sep && !last.value && last.start.length > 0 && findNonEmptyIndex(last.start) === -1 && (token.indent === 0 || last.start.every((st) => st.type !== "comment" || st.indent < token.indent))) { + if (top.type === "document") + top.end = last.start; + else + top.items.push({ start: last.start }); + token.items.splice(-1, 1); + } + } + } + } + *stream() { + switch (this.type) { + case "directive-line": + yield { type: "directive", offset: this.offset, source: this.source }; + return; + case "byte-order-mark": + case "space": + case "comment": + case "newline": + yield this.sourceToken; + return; + case "doc-mode": + case "doc-start": { + const doc = { + type: "document", + offset: this.offset, + start: [] + }; + if (this.type === "doc-start") + doc.start.push(this.sourceToken); + this.stack.push(doc); + return; + } + } + yield { + type: "error", + offset: this.offset, + message: `Unexpected ${this.type} token in YAML stream`, + source: this.source + }; + } + *document(doc) { + if (doc.value) + return yield* this.lineEnd(doc); + switch (this.type) { + case "doc-start": { + if (findNonEmptyIndex(doc.start) !== -1) { + yield* this.pop(); + yield* this.step(); + } else + doc.start.push(this.sourceToken); + return; + } + case "anchor": + case "tag": + case "space": + case "comment": + case "newline": + doc.start.push(this.sourceToken); + return; + } + const bv = this.startBlockValue(doc); + if (bv) + this.stack.push(bv); + else { + yield { + type: "error", + offset: this.offset, + message: `Unexpected ${this.type} token in YAML document`, + source: this.source + }; + } + } + *scalar(scalar) { + if (this.type === "map-value-ind") { + const prev = getPrevProps(this.peek(2)); + const start = getFirstKeyStartProps(prev); + let sep; + if (scalar.end) { + sep = scalar.end; + sep.push(this.sourceToken); + delete scalar.end; + } else + sep = [this.sourceToken]; + const map = { + type: "block-map", + offset: scalar.offset, + indent: scalar.indent, + items: [{ start, key: scalar, sep }] + }; + this.onKeyLine = true; + this.stack[this.stack.length - 1] = map; + } else + yield* this.lineEnd(scalar); + } + *blockScalar(scalar) { + switch (this.type) { + case "space": + case "comment": + case "newline": + scalar.props.push(this.sourceToken); + return; + case "scalar": + scalar.source = this.source; + this.atNewLine = true; + this.indent = 0; + if (this.onNewLine) { + let nl = this.source.indexOf("\n") + 1; + while (nl !== 0) { + this.onNewLine(this.offset + nl); + nl = this.source.indexOf("\n", nl) + 1; + } + } + yield* this.pop(); + break; + default: + yield* this.pop(); + yield* this.step(); + } + } + *blockMap(map) { + var _a; + const it = map.items[map.items.length - 1]; + switch (this.type) { + case "newline": + this.onKeyLine = false; + if (it.value) { + const end = "end" in it.value ? it.value.end : void 0; + const last = Array.isArray(end) ? end[end.length - 1] : void 0; + if ((last == null ? void 0 : last.type) === "comment") + end == null ? void 0 : end.push(this.sourceToken); + else + map.items.push({ start: [this.sourceToken] }); + } else if (it.sep) { + it.sep.push(this.sourceToken); + } else { + it.start.push(this.sourceToken); + } + return; + case "space": + case "comment": + if (it.value) { + map.items.push({ start: [this.sourceToken] }); + } else if (it.sep) { + it.sep.push(this.sourceToken); + } else { + if (this.atIndentedComment(it.start, map.indent)) { + const prev = map.items[map.items.length - 2]; + const end = (_a = prev == null ? void 0 : prev.value) == null ? void 0 : _a.end; + if (Array.isArray(end)) { + Array.prototype.push.apply(end, it.start); + end.push(this.sourceToken); + map.items.pop(); + return; + } + } + it.start.push(this.sourceToken); + } + return; + } + if (this.indent >= map.indent) { + const atMapIndent = !this.onKeyLine && this.indent === map.indent; + const atNextItem = atMapIndent && (it.sep || it.explicitKey) && this.type !== "seq-item-ind"; + let start = []; + if (atNextItem && it.sep && !it.value) { + const nl = []; + for (let i = 0; i < it.sep.length; ++i) { + const st = it.sep[i]; + switch (st.type) { + case "newline": + nl.push(i); + break; + case "space": + break; + case "comment": + if (st.indent > map.indent) + nl.length = 0; + break; + default: + nl.length = 0; + } + } + if (nl.length >= 2) + start = it.sep.splice(nl[1]); + } + switch (this.type) { + case "anchor": + case "tag": + if (atNextItem || it.value) { + start.push(this.sourceToken); + map.items.push({ start }); + this.onKeyLine = true; + } else if (it.sep) { + it.sep.push(this.sourceToken); + } else { + it.start.push(this.sourceToken); + } + return; + case "explicit-key-ind": + if (!it.sep && !it.explicitKey) { + it.start.push(this.sourceToken); + it.explicitKey = true; + } else if (atNextItem || it.value) { + start.push(this.sourceToken); + map.items.push({ start, explicitKey: true }); + } else { + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: [this.sourceToken], explicitKey: true }] + }); + } + this.onKeyLine = true; + return; + case "map-value-ind": + if (it.explicitKey) { + if (!it.sep) { + if (includesToken(it.start, "newline")) { + Object.assign(it, { key: null, sep: [this.sourceToken] }); + } else { + const start2 = getFirstKeyStartProps(it.start); + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: start2, key: null, sep: [this.sourceToken] }] + }); + } + } else if (it.value) { + map.items.push({ start: [], key: null, sep: [this.sourceToken] }); + } else if (includesToken(it.sep, "map-value-ind")) { + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start, key: null, sep: [this.sourceToken] }] + }); + } else if (isFlowToken(it.key) && !includesToken(it.sep, "newline")) { + const start2 = getFirstKeyStartProps(it.start); + const key = it.key; + const sep = it.sep; + sep.push(this.sourceToken); + delete it.key; + delete it.sep; + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: start2, key, sep }] + }); + } else if (start.length > 0) { + it.sep = it.sep.concat(start, this.sourceToken); + } else { + it.sep.push(this.sourceToken); + } + } else { + if (!it.sep) { + Object.assign(it, { key: null, sep: [this.sourceToken] }); + } else if (it.value || atNextItem) { + map.items.push({ start, key: null, sep: [this.sourceToken] }); + } else if (includesToken(it.sep, "map-value-ind")) { + this.stack.push({ + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start: [], key: null, sep: [this.sourceToken] }] + }); + } else { + it.sep.push(this.sourceToken); + } + } + this.onKeyLine = true; + return; + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": { + const fs = this.flowScalar(this.type); + if (atNextItem || it.value) { + map.items.push({ start, key: fs, sep: [] }); + this.onKeyLine = true; + } else if (it.sep) { + this.stack.push(fs); + } else { + Object.assign(it, { key: fs, sep: [] }); + this.onKeyLine = true; + } + return; + } + default: { + const bv = this.startBlockValue(map); + if (bv) { + if (bv.type === "block-seq") { + if (!it.explicitKey && it.sep && !includesToken(it.sep, "newline")) { + yield* this.pop({ + type: "error", + offset: this.offset, + message: "Unexpected block-seq-ind on same line with key", + source: this.source + }); + return; + } + } else if (atMapIndent) { + map.items.push({ start }); + } + this.stack.push(bv); + return; + } + } + } + } + yield* this.pop(); + yield* this.step(); + } + *blockSequence(seq) { + var _a; + const it = seq.items[seq.items.length - 1]; + switch (this.type) { + case "newline": + if (it.value) { + const end = "end" in it.value ? it.value.end : void 0; + const last = Array.isArray(end) ? end[end.length - 1] : void 0; + if ((last == null ? void 0 : last.type) === "comment") + end == null ? void 0 : end.push(this.sourceToken); + else + seq.items.push({ start: [this.sourceToken] }); + } else + it.start.push(this.sourceToken); + return; + case "space": + case "comment": + if (it.value) + seq.items.push({ start: [this.sourceToken] }); + else { + if (this.atIndentedComment(it.start, seq.indent)) { + const prev = seq.items[seq.items.length - 2]; + const end = (_a = prev == null ? void 0 : prev.value) == null ? void 0 : _a.end; + if (Array.isArray(end)) { + Array.prototype.push.apply(end, it.start); + end.push(this.sourceToken); + seq.items.pop(); + return; + } + } + it.start.push(this.sourceToken); + } + return; + case "anchor": + case "tag": + if (it.value || this.indent <= seq.indent) + break; + it.start.push(this.sourceToken); + return; + case "seq-item-ind": + if (this.indent !== seq.indent) + break; + if (it.value || includesToken(it.start, "seq-item-ind")) + seq.items.push({ start: [this.sourceToken] }); + else + it.start.push(this.sourceToken); + return; + } + if (this.indent > seq.indent) { + const bv = this.startBlockValue(seq); + if (bv) { + this.stack.push(bv); + return; + } + } + yield* this.pop(); + yield* this.step(); + } + *flowCollection(fc) { + const it = fc.items[fc.items.length - 1]; + if (this.type === "flow-error-end") { + let top; + do { + yield* this.pop(); + top = this.peek(1); + } while (top && top.type === "flow-collection"); + } else if (fc.end.length === 0) { + switch (this.type) { + case "comma": + case "explicit-key-ind": + if (!it || it.sep) + fc.items.push({ start: [this.sourceToken] }); + else + it.start.push(this.sourceToken); + return; + case "map-value-ind": + if (!it || it.value) + fc.items.push({ start: [], key: null, sep: [this.sourceToken] }); + else if (it.sep) + it.sep.push(this.sourceToken); + else + Object.assign(it, { key: null, sep: [this.sourceToken] }); + return; + case "space": + case "comment": + case "newline": + case "anchor": + case "tag": + if (!it || it.value) + fc.items.push({ start: [this.sourceToken] }); + else if (it.sep) + it.sep.push(this.sourceToken); + else + it.start.push(this.sourceToken); + return; + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": { + const fs = this.flowScalar(this.type); + if (!it || it.value) + fc.items.push({ start: [], key: fs, sep: [] }); + else if (it.sep) + this.stack.push(fs); + else + Object.assign(it, { key: fs, sep: [] }); + return; + } + case "flow-map-end": + case "flow-seq-end": + fc.end.push(this.sourceToken); + return; + } + const bv = this.startBlockValue(fc); + if (bv) + this.stack.push(bv); + else { + yield* this.pop(); + yield* this.step(); + } + } else { + const parent = this.peek(2); + if (parent.type === "block-map" && (this.type === "map-value-ind" && parent.indent === fc.indent || this.type === "newline" && !parent.items[parent.items.length - 1].sep)) { + yield* this.pop(); + yield* this.step(); + } else if (this.type === "map-value-ind" && parent.type !== "flow-collection") { + const prev = getPrevProps(parent); + const start = getFirstKeyStartProps(prev); + fixFlowSeqItems(fc); + const sep = fc.end.splice(1, fc.end.length); + sep.push(this.sourceToken); + const map = { + type: "block-map", + offset: fc.offset, + indent: fc.indent, + items: [{ start, key: fc, sep }] + }; + this.onKeyLine = true; + this.stack[this.stack.length - 1] = map; + } else { + yield* this.lineEnd(fc); + } + } + } + flowScalar(type) { + if (this.onNewLine) { + let nl = this.source.indexOf("\n") + 1; + while (nl !== 0) { + this.onNewLine(this.offset + nl); + nl = this.source.indexOf("\n", nl) + 1; + } + } + return { + type, + offset: this.offset, + indent: this.indent, + source: this.source + }; + } + startBlockValue(parent) { + switch (this.type) { + case "alias": + case "scalar": + case "single-quoted-scalar": + case "double-quoted-scalar": + return this.flowScalar(this.type); + case "block-scalar-header": + return { + type: "block-scalar", + offset: this.offset, + indent: this.indent, + props: [this.sourceToken], + source: "" + }; + case "flow-map-start": + case "flow-seq-start": + return { + type: "flow-collection", + offset: this.offset, + indent: this.indent, + start: this.sourceToken, + items: [], + end: [] + }; + case "seq-item-ind": + return { + type: "block-seq", + offset: this.offset, + indent: this.indent, + items: [{ start: [this.sourceToken] }] + }; + case "explicit-key-ind": { + this.onKeyLine = true; + const prev = getPrevProps(parent); + const start = getFirstKeyStartProps(prev); + start.push(this.sourceToken); + return { + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start, explicitKey: true }] + }; + } + case "map-value-ind": { + this.onKeyLine = true; + const prev = getPrevProps(parent); + const start = getFirstKeyStartProps(prev); + return { + type: "block-map", + offset: this.offset, + indent: this.indent, + items: [{ start, key: null, sep: [this.sourceToken] }] + }; + } + } + return null; + } + atIndentedComment(start, indent) { + if (this.type !== "comment") + return false; + if (this.indent <= indent) + return false; + return start.every((st) => st.type === "newline" || st.type === "space"); + } + *documentEnd(docEnd) { + if (this.type !== "doc-mode") { + if (docEnd.end) + docEnd.end.push(this.sourceToken); + else + docEnd.end = [this.sourceToken]; + if (this.type === "newline") + yield* this.pop(); + } + } + *lineEnd(token) { + switch (this.type) { + case "comma": + case "doc-start": + case "doc-end": + case "flow-seq-end": + case "flow-map-end": + case "map-value-ind": + yield* this.pop(); + yield* this.step(); + break; + case "newline": + this.onKeyLine = false; + case "space": + case "comment": + default: + if (token.end) + token.end.push(this.sourceToken); + else + token.end = [this.sourceToken]; + if (this.type === "newline") + yield* this.pop(); + } + } + }; + exports.Parser = Parser; + } +}); + +// node_modules/yaml/dist/public-api.js +var require_public_api = __commonJS({ + "node_modules/yaml/dist/public-api.js"(exports) { + "use strict"; + var composer = require_composer(); + var Document = require_Document(); + var errors = require_errors(); + var log = require_log2(); + var identity = require_identity(); + var lineCounter = require_line_counter(); + var parser = require_parser(); + function parseOptions(options) { + const prettyErrors = options.prettyErrors !== false; + const lineCounter$1 = options.lineCounter || prettyErrors && new lineCounter.LineCounter() || null; + return { lineCounter: lineCounter$1, prettyErrors }; + } + function parseAllDocuments(source, options = {}) { + const { lineCounter: lineCounter2, prettyErrors } = parseOptions(options); + const parser$1 = new parser.Parser(lineCounter2 == null ? void 0 : lineCounter2.addNewLine); + const composer$1 = new composer.Composer(options); + const docs = Array.from(composer$1.compose(parser$1.parse(source))); + if (prettyErrors && lineCounter2) + for (const doc of docs) { + doc.errors.forEach(errors.prettifyError(source, lineCounter2)); + doc.warnings.forEach(errors.prettifyError(source, lineCounter2)); + } + if (docs.length > 0) + return docs; + return Object.assign([], { empty: true }, composer$1.streamInfo()); + } + function parseDocument(source, options = {}) { + const { lineCounter: lineCounter2, prettyErrors } = parseOptions(options); + const parser$1 = new parser.Parser(lineCounter2 == null ? void 0 : lineCounter2.addNewLine); + const composer$1 = new composer.Composer(options); + let doc = null; + for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) { + if (!doc) + doc = _doc; + else if (doc.options.logLevel !== "silent") { + doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), "MULTIPLE_DOCS", "Source contains multiple documents; please use YAML.parseAllDocuments()")); + break; + } + } + if (prettyErrors && lineCounter2) { + doc.errors.forEach(errors.prettifyError(source, lineCounter2)); + doc.warnings.forEach(errors.prettifyError(source, lineCounter2)); + } + return doc; + } + function parse(src, reviver, options) { + let _reviver = void 0; + if (typeof reviver === "function") { + _reviver = reviver; + } else if (options === void 0 && reviver && typeof reviver === "object") { + options = reviver; + } + const doc = parseDocument(src, options); + if (!doc) + return null; + doc.warnings.forEach((warning) => log.warn(doc.options.logLevel, warning)); + if (doc.errors.length > 0) { + if (doc.options.logLevel !== "silent") + throw doc.errors[0]; + else + doc.errors = []; + } + return doc.toJS(Object.assign({ reviver: _reviver }, options)); + } + function stringify(value, replacer, options) { + var _a; + let _replacer = null; + if (typeof replacer === "function" || Array.isArray(replacer)) { + _replacer = replacer; + } else if (options === void 0 && replacer) { + options = replacer; + } + if (typeof options === "string") + options = options.length; + if (typeof options === "number") { + const indent = Math.round(options); + options = indent < 1 ? void 0 : indent > 8 ? { indent: 8 } : { indent }; + } + if (value === void 0) { + const { keepUndefined } = (_a = options != null ? options : replacer) != null ? _a : {}; + if (!keepUndefined) + return void 0; + } + if (identity.isDocument(value) && !_replacer) + return value.toString(options); + return new Document.Document(value, _replacer, options).toString(options); + } + exports.parse = parse; + exports.parseAllDocuments = parseAllDocuments; + exports.parseDocument = parseDocument; + exports.stringify = stringify; + } +}); + +// node_modules/yaml/dist/index.js +var require_dist = __commonJS({ + "node_modules/yaml/dist/index.js"(exports) { + "use strict"; + var composer = require_composer(); + var Document = require_Document(); + var Schema = require_Schema(); + var errors = require_errors(); + var Alias = require_Alias(); + var identity = require_identity(); + var Pair = require_Pair(); + var Scalar = require_Scalar(); + var YAMLMap = require_YAMLMap(); + var YAMLSeq = require_YAMLSeq(); + var cst = require_cst(); + var lexer = require_lexer(); + var lineCounter = require_line_counter(); + var parser = require_parser(); + var publicApi = require_public_api(); + var visit = require_visit(); + exports.Composer = composer.Composer; + exports.Document = Document.Document; + exports.Schema = Schema.Schema; + exports.YAMLError = errors.YAMLError; + exports.YAMLParseError = errors.YAMLParseError; + exports.YAMLWarning = errors.YAMLWarning; + exports.Alias = Alias.Alias; + exports.isAlias = identity.isAlias; + exports.isCollection = identity.isCollection; + exports.isDocument = identity.isDocument; + exports.isMap = identity.isMap; + exports.isNode = identity.isNode; + exports.isPair = identity.isPair; + exports.isScalar = identity.isScalar; + exports.isSeq = identity.isSeq; + exports.Pair = Pair.Pair; + exports.Scalar = Scalar.Scalar; + exports.YAMLMap = YAMLMap.YAMLMap; + exports.YAMLSeq = YAMLSeq.YAMLSeq; + exports.CST = cst; + exports.Lexer = lexer.Lexer; + exports.LineCounter = lineCounter.LineCounter; + exports.Parser = parser.Parser; + exports.parse = publicApi.parse; + exports.parseAllDocuments = publicApi.parseAllDocuments; + exports.parseDocument = publicApi.parseDocument; + exports.stringify = publicApi.stringify; + exports.visit = visit.visit; + exports.visitAsync = visit.visitAsync; + } +}); + +// node_modules/markdown-patch/dist/constants.js +var require_constants = __commonJS({ + "node_modules/markdown-patch/dist/constants.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.CAN_INCLUDE_BLOCK_REFERENCE = exports.TARGETABLE_BY_ISOLATED_BLOCK_REFERENCE = void 0; + exports.TARGETABLE_BY_ISOLATED_BLOCK_REFERENCE = [ + "code", + "heading", + "table", + "blockquote", + "list", + "paragraph", + "image" + ]; + exports.CAN_INCLUDE_BLOCK_REFERENCE = ["paragraph", "list_item"]; + } +}); + +// node_modules/markdown-patch/dist/map.js +var require_map2 = __commonJS({ + "node_modules/markdown-patch/dist/map.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__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(exports, "__esModule", { value: true }); + exports.getDocumentMap = void 0; + var marked = __importStar(require_marked()); + var yaml_1 = require_dist(); + var constants_js_1 = require_constants(); + function getHeadingPositions(document2, tokens, contentOffset) { + const positions = { + "": { + content: { + start: contentOffset, + end: document2.length + contentOffset + }, + marker: { + start: 0, + end: 0 + }, + level: 0 + } + }; + const stack = []; + let currentPosition = 0; + tokens.forEach((token, index) => { + if (token.type === "heading") { + const headingToken = token; + const startHeading = document2.indexOf(headingToken.raw.trim(), currentPosition); + const endHeading = startHeading + headingToken.raw.trim().length + 1; + const headingLevel = headingToken.depth; + const startContent = endHeading; + let endContent = void 0; + for (let i = index + 1; i < tokens.length; i++) { + if (tokens[i].type === "heading" && tokens[i].depth <= headingLevel) { + endContent = document2.indexOf(tokens[i].raw.trim(), startContent); + break; + } + } + if (endContent === void 0) { + endContent = document2.length; + } + const currentHeading = { + content: { + start: startContent + contentOffset, + end: endContent + contentOffset + }, + marker: { + start: startHeading + contentOffset, + end: endHeading + contentOffset + }, + level: headingLevel + }; + let fullHeadingPath = headingToken.text.trim(); + while (stack.length && stack[stack.length - 1].position.level >= headingLevel) { + stack.pop(); + } + if (stack.length) { + const parent = stack[stack.length - 1]; + parent.position.content.end = endContent + contentOffset; + fullHeadingPath = `${parent.heading}${fullHeadingPath}`; + } + positions[fullHeadingPath] = currentHeading; + stack.push({ heading: fullHeadingPath, position: currentHeading }); + currentPosition = endHeading; + } + }); + return positions; + } + function getBlockPositions(document2, tokens, contentOffset) { + const positions = {}; + let lastBlockDetails = void 0; + let startContent = 0; + let endContent = 0; + let endMarker = 0; + marked.walkTokens(tokens, (token) => { + const blockReferenceRegex = /(?:\s+|^)\^([a-zA-Z0-9_-]+)\s*$/; + startContent = document2.indexOf(token.raw, startContent); + const match = blockReferenceRegex.exec(token.raw); + endContent = startContent + (match ? match.index : token.raw.length); + const startMarker = match ? startContent + match.index : -1; + endMarker = startContent + token.raw.length; + if (document2.slice(endMarker - 1, endMarker) !== "\n" && document2.slice(endMarker, endMarker + 1) === "\n") { + endMarker += 1; + } else if (document2.slice(endMarker - 2, endMarker) !== "\r\n" && document2.slice(endMarker, endMarker + 2) === "\r\n") { + endMarker += 2; + } + if (constants_js_1.CAN_INCLUDE_BLOCK_REFERENCE.includes(token.type) && match) { + const name = match[1]; + if (!name || match.index === void 0) { + return; + } + const finalStartContent = { + start: startContent, + end: endContent + }; + if (finalStartContent.start === finalStartContent.end && lastBlockDetails) { + finalStartContent.start = lastBlockDetails.start; + finalStartContent.end = lastBlockDetails.end; + } + positions[name] = { + content: { + start: finalStartContent.start + contentOffset, + end: finalStartContent.end + contentOffset + }, + marker: { + start: startMarker + contentOffset, + end: endMarker + contentOffset + } + }; + } + if (constants_js_1.TARGETABLE_BY_ISOLATED_BLOCK_REFERENCE.includes(token.type)) { + lastBlockDetails = { + token, + start: startContent, + end: endContent - 1 + }; + } + }); + return positions; + } + function preProcess(document2) { + const frontmatterRegex = /^---(?:\r\n|\r|\n)([\s\S]*?)(?:\r\n|\r|\n)---(?:\r\n|\r|\n|$)/; + let content; + let contentOffset = 0; + let frontmatter; + const match = frontmatterRegex.exec(document2); + if (match) { + const frontmatterText = match[1].trim(); + contentOffset = match[0].length; + frontmatter = (0, yaml_1.parse)(frontmatterText); + content = document2.slice(contentOffset); + } else { + content = document2; + frontmatter = {}; + } + return { + content, + contentOffset, + frontmatter + }; + } + var getDocumentMap = (document2) => { + const { frontmatter, contentOffset, content } = preProcess(document2); + const lexer = new marked.Lexer(); + const tokens = lexer.lex(content); + const lineEnding = document2.indexOf("\r\n") > -1 ? "\r\n" : "\n"; + return { + heading: getHeadingPositions(content, tokens, contentOffset), + block: getBlockPositions(content, tokens, contentOffset), + frontmatter, + contentOffset, + lineEnding + }; + }; + exports.getDocumentMap = getDocumentMap; + } +}); + +// node_modules/markdown-patch/dist/types.js +var require_types2 = __commonJS({ + "node_modules/markdown-patch/dist/types.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ContentType = void 0; + var ContentType2; + (function(ContentType3) { + ContentType3["text"] = "text/markdown"; + ContentType3["json"] = "application/json"; + })(ContentType2 || (exports.ContentType = ContentType2 = {})); + } +}); + +// node_modules/markdown-patch/dist/typeGuards.js +var require_typeGuards = __commonJS({ + "node_modules/markdown-patch/dist/typeGuards.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isStringArrayArray = isStringArrayArray; + exports.isAppendableFrontmatterType = isAppendableFrontmatterType; + exports.isString = isString; + exports.isDictionary = isDictionary; + exports.isList = isList; + function isStringArrayArray(obj) { + if (!Array.isArray(obj)) + return false; + return obj.every((item) => Array.isArray(item) && item.every((subItem) => typeof subItem === "string")); + } + function isAppendableFrontmatterType(obj) { + return isString(obj) || isDictionary(obj) || isList(obj); + } + function isString(obj) { + return typeof obj === "string"; + } + function isDictionary(obj) { + return typeof obj === "object" && obj !== null && !Array.isArray(obj); + } + function isList(obj) { + return Array.isArray(obj); + } + } +}); + +// node_modules/markdown-patch/dist/patch.js +var require_patch = __commonJS({ + "node_modules/markdown-patch/dist/patch.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports && exports.__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(exports, "__esModule", { value: true }); + exports.applyPatch = exports.TablePartsNotFound = exports.MergeNotPossible = exports.PatchError = exports.PatchFailed = exports.PatchFailureReason = void 0; + var map_js_1 = require_map2(); + var marked = __importStar(require_marked()); + var yaml = __importStar(require_dist()); + var types_js_1 = require_types2(); + var typeGuards_js_1 = require_typeGuards(); + var PatchFailureReason; + (function(PatchFailureReason2) { + PatchFailureReason2["InvalidTarget"] = "invalid-target"; + PatchFailureReason2["ContentAlreadyPreexistsInTarget"] = "content-already-preexists-in-target"; + PatchFailureReason2["TableContentIncorrectColumnCount"] = "table-content-incorrect-column-count"; + PatchFailureReason2["ContentTypeInvalid"] = "content-type-invalid"; + PatchFailureReason2["ContentTypeInvalidForTarget"] = "content-type-invalid-for-target"; + PatchFailureReason2["ContentNotMergeable"] = "content-not-mergeable"; + })(PatchFailureReason || (exports.PatchFailureReason = PatchFailureReason = {})); + var PatchFailed2 = class extends Error { + constructor(reason, instruction, targetMap) { + super(); + this.reason = reason; + this.instruction = instruction; + this.targetMap = targetMap; + this.name = "PatchFailed"; + Object.setPrototypeOf(this, new.target.prototype); + } + }; + exports.PatchFailed = PatchFailed2; + var PatchError = class extends Error { + }; + exports.PatchError = PatchError; + var MergeNotPossible = class extends Error { + }; + exports.MergeNotPossible = MergeNotPossible; + var replaceText = (document2, instruction, target) => { + return [ + document2.slice(0, target.content.start), + instruction.content, + document2.slice(target.content.end) + ].join(""); + }; + var prependText = (document2, instruction, target) => { + return [ + document2.slice(0, target.content.start), + instruction.content, + instruction.trimTargetWhitespace ? document2.slice(target.content.start).trimStart() : document2.slice(target.content.start) + ].join(""); + }; + var appendText = (document2, instruction, target) => { + return [ + instruction.trimTargetWhitespace ? document2.slice(0, target.content.end).trimEnd() : document2.slice(0, target.content.end), + instruction.content, + document2.slice(target.content.end) + ].join(""); + }; + var TablePartsNotFound = class extends Error { + }; + exports.TablePartsNotFound = TablePartsNotFound; + var _getTableData = (document2, target) => { + const targetTable = document2.slice(target.content.start, target.content.end); + const tableToken = marked.lexer(targetTable)[0]; + const match = /^(.*?)(?:\r?\n)(.*?)(\r?\n)/.exec(targetTable); + if (!(tableToken.type === "table") || !match) { + throw new TablePartsNotFound(); + } + const lineEnding = match[3]; + return { + token: tableToken, + lineEnding: match[3], + headerParts: match[1] + lineEnding + match[2] + lineEnding, + contentParts: targetTable.slice(match[0].length) + }; + }; + var replaceTable = (document2, instruction, target) => { + try { + const table = _getTableData(document2, target); + const tableRows = [table.headerParts]; + if ((0, typeGuards_js_1.isStringArrayArray)(instruction.content)) { + for (const row of instruction.content) { + if (row.length !== table.token.header.length || typeof row === "string") { + throw new PatchFailed2(PatchFailureReason.TableContentIncorrectColumnCount, instruction, target); + } + tableRows.push("| " + row.join(" | ") + " |" + table.lineEnding); + } + } else { + throw new PatchFailed2(PatchFailureReason.ContentTypeInvalid, instruction, target); + } + return [ + document2.slice(0, target.content.start), + tableRows.join(""), + document2.slice(target.content.end) + ].join(""); + } catch (TablePartsNotFound2) { + throw new PatchFailed2(PatchFailureReason.ContentTypeInvalidForTarget, instruction, target); + } + }; + var prependTable = (document2, instruction, target) => { + try { + const table = _getTableData(document2, target); + const tableRows = [table.headerParts]; + if ((0, typeGuards_js_1.isStringArrayArray)(instruction.content)) { + for (const row of instruction.content) { + if (row.length !== table.token.header.length || typeof row === "string") { + throw new PatchFailed2(PatchFailureReason.TableContentIncorrectColumnCount, instruction, target); + } + tableRows.push("| " + row.join(" | ") + " |" + table.lineEnding); + } + } else { + throw new PatchFailed2(PatchFailureReason.ContentTypeInvalid, instruction, target); + } + tableRows.push(table.contentParts); + return [ + document2.slice(0, target.content.start), + tableRows.join(""), + document2.slice(target.content.end) + ].join(""); + } catch (TablePartsNotFound2) { + throw new PatchFailed2(PatchFailureReason.ContentTypeInvalidForTarget, instruction, target); + } + }; + var appendTable = (document2, instruction, target) => { + try { + const table = _getTableData(document2, target); + const tableRows = [table.headerParts, table.contentParts]; + if ((0, typeGuards_js_1.isStringArrayArray)(instruction.content)) { + for (const row of instruction.content) { + if (row.length !== table.token.header.length || typeof row === "string") { + throw new PatchFailed2(PatchFailureReason.TableContentIncorrectColumnCount, instruction, target); + } + tableRows.push("| " + row.join(" | ") + " |" + table.lineEnding); + } + } else { + throw new PatchFailed2(PatchFailureReason.ContentTypeInvalid, instruction, target); + } + return [ + document2.slice(0, target.content.start), + tableRows.join(""), + document2.slice(target.content.end) + ].join(""); + } catch (TablePartsNotFound2) { + throw new PatchFailed2(PatchFailureReason.ContentTypeInvalidForTarget, instruction, target); + } + }; + var replace = (document2, instruction, target) => { + const contentType = "contentType" in instruction && instruction.contentType ? instruction.contentType : types_js_1.ContentType.text; + switch (contentType) { + case types_js_1.ContentType.text: + return replaceText(document2, instruction, target); + case types_js_1.ContentType.json: + return replaceTable(document2, instruction, target); + } + }; + var prepend = (document2, instruction, target) => { + const contentType = "contentType" in instruction && instruction.contentType ? instruction.contentType : types_js_1.ContentType.text; + switch (contentType) { + case types_js_1.ContentType.text: + return prependText(document2, instruction, target); + case types_js_1.ContentType.json: + return prependTable(document2, instruction, target); + } + }; + var append = (document2, instruction, target) => { + const contentType = "contentType" in instruction && instruction.contentType ? instruction.contentType : types_js_1.ContentType.text; + switch (contentType) { + case types_js_1.ContentType.text: + return appendText(document2, instruction, target); + case types_js_1.ContentType.json: + return appendTable(document2, instruction, target); + } + }; + var addTargetHeading = (document2, instruction, map) => { + var _a, _b; + const elements = []; + let bestTarget = map.heading[""]; + for (const element of (_a = instruction.target) != null ? _a : []) { + const possibleMatch = map.heading[[...elements, element].join("")]; + if (possibleMatch) { + elements.push(element); + bestTarget = possibleMatch; + } else { + break; + } + } + let finalContent = ""; + let existingLevels = elements.length; + if (document2.slice(bestTarget.content.end - map.lineEnding.length, bestTarget.content.end) !== map.lineEnding) { + finalContent += map.lineEnding; + } + for (const headingPart of ((_b = instruction.target) != null ? _b : []).slice(existingLevels)) { + existingLevels += 1; + finalContent += `${"#".repeat(existingLevels)} ${headingPart}${map.lineEnding}`; + } + finalContent += instruction.content; + return [ + document2.slice(0, bestTarget.content.end), + finalContent, + document2.slice(bestTarget.content.end) + ].join(""); + }; + var addTargetBlock = (document2, instruction, map) => { + return document2 + map.lineEnding + instruction.content + map.lineEnding + map.lineEnding + "^" + instruction.target; + }; + var addTarget = (document2, instruction, map) => { + switch (instruction.targetType) { + case "heading": + return addTargetHeading(document2, instruction, map); + case "block": + return addTargetBlock(document2, instruction, map); + } + }; + var getTarget = (map, instruction) => { + switch (instruction.targetType) { + case "heading": + return map.heading[instruction.target ? instruction.target.join("") : ""]; + case "block": + return map.block[instruction.target]; + case "frontmatter": + return map.frontmatter[instruction.target]; + } + }; + function mergeFrontmatterValue(obj1, obj2) { + if ((0, typeGuards_js_1.isList)(obj1) && (0, typeGuards_js_1.isList)(obj2)) { + return [...obj1, ...obj2]; + } else if ((0, typeGuards_js_1.isDictionary)(obj1) && (0, typeGuards_js_1.isDictionary)(obj2)) { + return __spreadValues(__spreadValues({}, obj1), obj2); + } else if ((0, typeGuards_js_1.isString)(obj1) && (0, typeGuards_js_1.isString)(obj2)) { + return obj1 + obj2; + } + throw new Error(`Cannot merge objects of different types or unsupported types: ${typeof obj1} and ${typeof obj2}`); + } + function regenerateDocumentWithFrontmatter(frontmatter, document2, map) { + const rawFrontmatterText = Object.values(frontmatter).some((value) => value !== void 0) ? `--- +${yaml.stringify(frontmatter).trimEnd()} +--- +` : ""; + const frontmatterText = map.lineEnding !== "\n" ? rawFrontmatterText.replaceAll("\n", map.lineEnding) : rawFrontmatterText; + const finalDocument = document2.slice(map.contentOffset); + return frontmatterText + finalDocument; + } + var applyPatch2 = (document2, instruction) => { + const map = (0, map_js_1.getDocumentMap)(document2); + const target = getTarget(map, instruction); + if (instruction.targetType === "block" || instruction.targetType === "heading") { + if (!target) { + if (instruction.createTargetIfMissing) { + return addTarget(document2, instruction, map); + } else { + throw new PatchFailed2(PatchFailureReason.InvalidTarget, instruction, null); + } + } + if ((!("applyIfContentPreexists" in instruction) || !instruction.applyIfContentPreexists) && typeof instruction.content === "string" && document2.slice(target.content.start, target.content.end).includes(instruction.content.trim())) { + throw new PatchFailed2(PatchFailureReason.ContentAlreadyPreexistsInTarget, instruction, target); + } + switch (instruction.operation) { + case "append": + return append(document2, instruction, target); + case "prepend": + return prepend(document2, instruction, target); + case "replace": + return replace(document2, instruction, target); + default: + throw new PatchError("Invalid operation"); + } + } + const frontmatter = __spreadValues({}, map.frontmatter); + if (frontmatter[instruction.target] === void 0) { + if (instruction.createTargetIfMissing) { + if ((0, typeGuards_js_1.isList)(instruction.content)) { + frontmatter[instruction.target] = []; + } else if ((0, typeGuards_js_1.isString)(instruction.content)) { + frontmatter[instruction.target] = ""; + } else if ((0, typeGuards_js_1.isDictionary)(instruction.content)) { + frontmatter[instruction.target] = {}; + } + } else { + throw new PatchFailed2(PatchFailureReason.InvalidTarget, instruction, null); + } + } + try { + switch (instruction.operation) { + case "append": + if (!(0, typeGuards_js_1.isAppendableFrontmatterType)(instruction.content)) { + throw new MergeNotPossible(); + } + frontmatter[instruction.target] = mergeFrontmatterValue(frontmatter[instruction.target], instruction.content); + break; + case "prepend": + if (!(0, typeGuards_js_1.isAppendableFrontmatterType)(instruction.content)) { + throw new MergeNotPossible(); + } + frontmatter[instruction.target] = mergeFrontmatterValue(instruction.content, frontmatter[instruction.target]); + break; + case "replace": + frontmatter[instruction.target] = instruction.content; + break; + } + return regenerateDocumentWithFrontmatter(frontmatter, document2, map); + } catch (error) { + if (error instanceof MergeNotPossible) { + throw new PatchFailed2(PatchFailureReason.ContentNotMergeable, instruction, null); + } + throw error; + } + }; + exports.applyPatch = applyPatch2; + } +}); + +// node_modules/markdown-patch/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/markdown-patch/dist/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__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 = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.applyPatch = exports.TablePartsNotFound = exports.PatchError = exports.PatchFailed = exports.PatchFailureReason = void 0; + var patch_js_1 = require_patch(); + Object.defineProperty(exports, "PatchFailureReason", { enumerable: true, get: function() { + return patch_js_1.PatchFailureReason; + } }); + Object.defineProperty(exports, "PatchFailed", { enumerable: true, get: function() { + return patch_js_1.PatchFailed; + } }); + Object.defineProperty(exports, "PatchError", { enumerable: true, get: function() { + return patch_js_1.PatchError; + } }); + Object.defineProperty(exports, "TablePartsNotFound", { enumerable: true, get: function() { + return patch_js_1.TablePartsNotFound; + } }); + Object.defineProperty(exports, "applyPatch", { enumerable: true, get: function() { + return patch_js_1.applyPatch; + } }); + __exportStar(require_types2(), exports); + } +}); + +// src/main.ts +__export(exports, { + default: () => LocalRestApi, + getAPI: () => getAPI +}); +var import_obsidian2 = __toModule(require("obsidian")); +var https = __toModule(require("https")); +var http2 = __toModule(require("http")); +var import_node_forge2 = __toModule(require_lib()); + +// src/requestHandler.ts +var import_obsidian = __toModule(require("obsidian")); +var import_obsidian_daily_notes_interface = __toModule(require_main()); +var import_obsidian_dataview = __toModule(require_lib2()); +var import_node_forge = __toModule(require_lib()); +var import_express = __toModule(require_express2()); +var import_http = __toModule(require("http")); +var import_cors = __toModule(require_lib5()); +var import_mime_types = __toModule(require_mime_types()); +var import_body_parser = __toModule(require_body_parser()); +var import_json_logic_js = __toModule(require_logic()); +var import_response_time = __toModule(require_response_time()); +var import_query_string = __toModule(require_query_string()); +var import_glob_to_regexp = __toModule(require_glob_to_regexp()); +var import_path = __toModule(require("path")); +var import_markdown_patch = __toModule(require_dist2()); + +// src/types.ts +var ErrorCode; +(function(ErrorCode2) { + ErrorCode2[ErrorCode2["TextContentEncodingRequired"] = 40010] = "TextContentEncodingRequired"; + ErrorCode2[ErrorCode2["ContentTypeSpecificationRequired"] = 40011] = "ContentTypeSpecificationRequired"; + ErrorCode2[ErrorCode2["InvalidContentForContentType"] = 40015] = "InvalidContentForContentType"; + ErrorCode2[ErrorCode2["InvalidContentInsertionPositionValue"] = 40050] = "InvalidContentInsertionPositionValue"; + ErrorCode2[ErrorCode2["MissingHeadingHeader"] = 40051] = "MissingHeadingHeader"; + ErrorCode2[ErrorCode2["InvalidHeadingHeader"] = 40052] = "InvalidHeadingHeader"; + ErrorCode2[ErrorCode2["MissingTargetTypeHeader"] = 40053] = "MissingTargetTypeHeader"; + ErrorCode2[ErrorCode2["InvalidTargetTypeHeader"] = 40054] = "InvalidTargetTypeHeader"; + ErrorCode2[ErrorCode2["MissingTargetHeader"] = 40055] = "MissingTargetHeader"; + ErrorCode2[ErrorCode2["MissingOperation"] = 40056] = "MissingOperation"; + ErrorCode2[ErrorCode2["InvalidOperation"] = 40057] = "InvalidOperation"; + ErrorCode2[ErrorCode2["PeriodIsNotEnabled"] = 40060] = "PeriodIsNotEnabled"; + ErrorCode2[ErrorCode2["InvalidFilterQuery"] = 40070] = "InvalidFilterQuery"; + ErrorCode2[ErrorCode2["PatchFailed"] = 40080] = "PatchFailed"; + ErrorCode2[ErrorCode2["ApiKeyAuthorizationRequired"] = 40101] = "ApiKeyAuthorizationRequired"; + ErrorCode2[ErrorCode2["PeriodDoesNotExist"] = 40460] = "PeriodDoesNotExist"; + ErrorCode2[ErrorCode2["PeriodicNoteDoesNotExist"] = 40461] = "PeriodicNoteDoesNotExist"; + ErrorCode2[ErrorCode2["RequestMethodValidOnlyForFiles"] = 40510] = "RequestMethodValidOnlyForFiles"; +})(ErrorCode || (ErrorCode = {})); + +// src/utils.ts +function findHeadingBoundary(fileCache, headingPath) { + const reversedHeadingPath = [...headingPath].reverse(); + const cursorHeadingPath = []; + for (const [headingIdx, heading] of fileCache.headings.entries()) { + cursorHeadingPath[heading.level] = heading; + cursorHeadingPath.splice(heading.level + 1); + const reversedCurrentCursor = [ + ...cursorHeadingPath.map((h) => h.heading) + ].reverse(); + let matchesRequestedHeading = true; + for (const [idx, element] of reversedHeadingPath.entries()) { + if (reversedCurrentCursor[idx] != element) { + matchesRequestedHeading = false; + break; + } + } + if (matchesRequestedHeading) { + const start = heading.position.end; + const endHeading = fileCache.headings.slice(headingIdx + 1).find((endHeading2) => endHeading2.level <= heading.level); + const end = endHeading == null ? void 0 : endHeading.position.start; + return { + start, + end + }; + } + } + return null; +} +function getSplicePosition(fileLines, heading, insert, ignoreNewLines) { + var _a, _b; + let splicePosition = insert === false ? (_b = (_a = heading.end) == null ? void 0 : _a.line) != null ? _b : fileLines.length : heading.start.line + 1; + if (!ignoreNewLines || insert) { + return splicePosition; + } + while (fileLines[splicePosition - 1] === "") { + splicePosition--; + } + return splicePosition; +} +function toArrayBuffer(arr) { + if (arr instanceof Uint8Array) { + return arr.buffer.slice(arr.byteOffset, arr.byteOffset + arr.byteLength); + } + if (arr instanceof DataView) { + return arr.buffer.slice(arr.byteOffset, arr.byteOffset + arr.byteLength); + } + if (arr instanceof ArrayBuffer) { + return arr; + } + const encoder = new TextEncoder(); + return encoder.encode(JSON.stringify(arr)).buffer; +} +function getCertificateValidityDays(certificate) { + return (certificate.validity.notAfter.getTime() - new Date().getTime()) / (1e3 * 3600 * 24); +} +function getCertificateIsUptoStandards(certificate) { + const extension = certificate.getExtension("subjectAltName"); + let hasStandardsFlaw = false; + if (extension && extension.altNames) { + extension.altNames.forEach((altName) => { + if (altName.type === 7 && altName.value === "\0\0\0\0") { + hasStandardsFlaw = true; + } + }); + } + return !hasStandardsFlaw; +} + +// src/constants.ts +var CERT_NAME = "obsidian-local-rest-api.crt"; +var DEFAULT_SETTINGS = { + port: 27124, + insecurePort: 27123, + enableInsecureServer: false +}; +var ERROR_CODE_MESSAGES = { + [ErrorCode.ApiKeyAuthorizationRequired]: "Authorization required. Find your API Key in the 'Local REST API' section of your Obsidian settings.", + [ErrorCode.ContentTypeSpecificationRequired]: "Content-Type header required; this API accepts data in multiple content-types and you must indicate the content-type of your request body via the Content-Type header.", + [ErrorCode.InvalidContentInsertionPositionValue]: "Invalid 'Content-Insertion-Position' header value.", + [ErrorCode.InvalidContentForContentType]: "Your request body could not be processed as the content-type specified in your Content-Type header.", + [ErrorCode.InvalidHeadingHeader]: "No heading in specified file could be found matching the heading specified in 'Heading' header.", + [ErrorCode.MissingHeadingHeader]: "'Heading' header is required for identifying where to insert content.", + [ErrorCode.PeriodDoesNotExist]: "Specified period does not exist.", + [ErrorCode.PeriodIsNotEnabled]: "Specified period is not enabled.", + [ErrorCode.PeriodicNoteDoesNotExist]: "Periodic note does not exist for the specified period.", + [ErrorCode.RequestMethodValidOnlyForFiles]: "Request method is valid only for file paths, not directories.", + [ErrorCode.TextContentEncodingRequired]: "Incoming content must be text data and have an appropriate text/* Content-type header set (e.g. text/markdown).", + [ErrorCode.InvalidFilterQuery]: "The query you provided could not be processed.", + [ErrorCode.MissingTargetTypeHeader]: "No 'Target-Type' header was provided.", + [ErrorCode.InvalidTargetTypeHeader]: "The 'Target-Type' header you provided was invalid.", + [ErrorCode.MissingTargetHeader]: "No 'Target' header was provided.", + [ErrorCode.MissingOperation]: "No 'Operation' header was provided.", + [ErrorCode.InvalidOperation]: "The 'Operation' header you provided was invalid.", + [ErrorCode.PatchFailed]: "The patch you provided could not be applied to the target content." +}; +var ContentTypes; +(function(ContentTypes2) { + ContentTypes2["json"] = "application/json"; + ContentTypes2["markdown"] = "text/markdown"; + ContentTypes2["olrapiNoteJson"] = "application/vnd.olrapi.note+json"; + ContentTypes2["jsonLogic"] = "application/vnd.olrapi.jsonlogic+json"; + ContentTypes2["dataviewDql"] = "application/vnd.olrapi.dataview.dql+txt"; +})(ContentTypes || (ContentTypes = {})); +var DefaultBearerTokenHeaderName = "Authorization"; +var DefaultBindingHost = "127.0.0.1"; +var LicenseUrl = "https://raw.githubusercontent.com/coddingtonbear/obsidian-local-rest-api/main/LICENSE"; +var MaximumRequestSize = "1024mb"; + +// src/api.ts +var LocalRestApiPublicApi = class { + constructor(router, onUnregister) { + this.unregistered = false; + this.router = router; + this.onUnregister = onUnregister; + this.unregistered = false; + } + addRoute(path2) { + if (this.unregistered) { + throw new Error("Routes cannot be added after API extension has been unregistered."); + } + return this.router.route(path2); + } + unregister() { + this.onUnregister(); + this.unregistered = true; + } +}; + +// docs/openapi.yaml +var openapi_default = 'components:\n schemas:\n Error:\n properties:\n errorCode:\n description: |\n A 5-digit error code uniquely identifying this particular type of error.\n example: 40149\n type: "number"\n message:\n description: "Message describing the error."\n example: "A brief description of the error."\n type: "string"\n type: "object"\n NoteJson:\n properties:\n content:\n type: "string"\n frontmatter:\n type: "object"\n path:\n type: "string"\n stat:\n properties:\n ctime:\n type: "number"\n mtime:\n type: "number"\n size:\n type: "number"\n required:\n - "ctime"\n - "mtime"\n - "size"\n type: "object"\n tags:\n items:\n type: "string"\n type: "array"\n required:\n - "tags"\n - "frontmatter"\n - "stat"\n - "path"\n - "content"\n type: "object"\n securitySchemes:\n apiKeyAuth:\n description: |\n Find your API Key in your Obsidian settings\n in the "Local REST API" section under "Plugins".\n scheme: "bearer"\n type: "http"\ninfo:\n description: |\n You can use this interface for trying out your Local REST API in Obsidian.\n \n Before trying the below tools, you will want to make sure you press the "Authorize" button below and provide the API Key you are shown when you open the "Local REST API" section of your Obsidian settings. All requests to the API require a valid API Key; so you won\'t get very far without doing that.\n \n When using this tool you may see browser security warnings due to your browser not trusting the self-signed certificate the plugin will generate on its first run. If you do, you can make those errors disappear by adding the certificate as a "Trusted Certificate" in your browser or operating system\'s settings.\n title: "Local REST API for Obsidian"\n version: "1.0"\nopenapi: "3.0.2"\npaths:\n /:\n get:\n description: |\n Returns basic details about the server as well as your authentication status.\n \n This is the only API request that does *not* require authentication.\n responses:\n "200":\n content:\n application/json:\n schema:\n properties:\n authenticated:\n description: "Is your current request authenticated?"\n type: "boolean"\n ok:\n description: "\'OK\'"\n type: "string"\n service:\n description: "\'Obsidian Local REST API\'"\n type: "string"\n versions:\n properties:\n obsidian:\n description: "Obsidian plugin API version"\n type: "string"\n self:\n description: "Plugin version."\n type: "string"\n type: "object"\n type: "object"\n description: "Success"\n summary: |\n Returns basic details about the server.\n tags:\n - "System"\n /active/:\n delete:\n parameters: []\n responses:\n "204":\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "File does not exist."\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Deletes the currently-active file in Obsidian.\n tags:\n - "Active File"\n get:\n description: |\n Returns the content of the currently active file in Obsidian.\n \n If you specify the header `Accept: application/vnd.olrapi.note+json`, will return a JSON representation of your note including parsed tag and frontmatter data as well as filesystem metadata. See "responses" below for details.\n parameters: []\n responses:\n "200":\n content:\n "application/vnd.olrapi.note+json":\n schema:\n "$ref": "#/components/schemas/NoteJson"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Success"\n "404":\n description: "File does not exist"\n summary: |\n Return the content of the active file open in Obsidian.\n tags:\n - "Active File"\n patch:\n description: |\n Inserts content into the currently-open note relative to a heading, block refeerence, or frontmatter field within that document.\n \n Allows you to modify the content relative to a heading, block reference, or frontmatter field in your document.\n \n Note that this API was changed in Version 3.0 of this extension and the earlier PATCH API is now deprecated. Requests made using the previous version of this API will continue to work until Version 4.0 is released. See https://github.com/coddingtonbear/obsidian-local-rest-api/wiki/Changes-to-PATCH-requests-between-versions-2.0-and-3.0 for more details and migration instructions.\n \n # Examples\n \n All of the below examples assume you have a document that looks like\n this:\n \n ```markdown\n ---\n alpha: 1\n beta: test\n delta:\n zeta: 1\n yotta: 1\n gamma:\n - one\n - two\n ---\n \n # Heading 1\n \n This is the content for heading one\n \n Also references some [[#^484ef2]]\n \n ## Subheading 1:1\n Content for Subheading 1:1\n \n ### Subsubheading 1:1:1\n \n ### Subsubheading 1:1:2\n \n Testing how block references work for a table.[[#^2c7cfa]]\n Some content for Subsubheading 1:1:2\n \n More random text.\n \n ^2d9b4a\n \n ## Subheading 1:2\n \n Content for Subheading 1:2.\n \n some content with a block reference ^484ef2\n \n ## Subheading 1:3\n | City | Population |\n | ------------ | ---------- |\n | Seattle, WA | 8 |\n | Portland, OR | 4 |\n \n ^2c7cfa\n ```\n \n ## Append Content Below a Heading\n \n If you wanted to append the content "Hello" below "Subheading 1:1:1" under "Heading 1",\n you could send a request with the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `heading`\n - `Target`: `Heading 1::Subheading 1:1:1`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Append Content to a Block Reference\n \n If you wanted to append the content "Hello" below the block referenced by\n "2d9b4a" above ("More random text."), you could send the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `block`\n - `Target`: `2d9b4a`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Add a Row to a Table Referenced by a Block Reference\n \n If you wanted to add a new city ("Chicago, IL") and population ("16") pair to the table above\n referenced by the block reference `2c7cfa`, you could send the following\n headers:\n \n - `Operation`: `append`\n - `TargetType`: `block`\n - `Target`: `2c7cfa`\n - `Content-Type`: `application/json`\n - with the request body: `[["Chicago, IL", "16"]]`\n \n The use of a `Content-Type` of `application/json` allows the API\n to infer that member of your array represents rows and columns of your\n to append to the referenced table. You can of course just use a\n `Content-Type` of `text/markdown`, but in such a case you\'ll have to\n format your table row manually instead of letting the library figure\n it out for you.\n \n You also have the option of using `prepend` (in which case, your new\n row would be the first -- right below the table heading) or `replace` (in which\n case all rows except the table heading would be replaced by the new row(s)\n you supplied).\n \n ## Setting a Frontmatter Field\n \n If you wanted to set the frontmatter field `alpha` to `2`, you could\n send the following headers:\n \n - `Operation`: `replace`\n - `TargetType`: `frontmatter`\n - `Target`: `beep`\n - with the request body `2`\n \n If you\'re setting a frontmatter field that might not already exist\n you may want to use the `Create-Target-If-Missing` header so the\n new frontmatter field is created and set to your specified value\n if it doesn\'t already exist.\n \n You may find using a `Content-Type` of `application/json` to be\n particularly useful in the case of frontmatter since frontmatter\n fields\' values are JSON data, and the API can be smarter about\n interpreting yoru `prepend` or `append` requests if you specify\n your data as JSON (particularly when appending, for example,\n list items).\n parameters:\n - description: "Patch operation to perform"\n in: "header"\n name: "Operation"\n required: true\n schema:\n enum:\n - "append"\n - "prepend"\n - "replace"\n type: "string"\n - description: "Type of target to patch"\n in: "header"\n name: "Target-Type"\n required: true\n schema:\n enum:\n - "heading"\n - "block"\n - "frontmatter"\n type: "string"\n - description: "Delimiter to use for nested targets (i.e. Headings)"\n in: "header"\n name: "Target-Delimiter"\n required: false\n schema:\n default: "::"\n type: "string"\n - description: |\n Target to patch; this value can be URL-Encoded and *must*\n be URL-Encoded if it includes non-ASCII characters.\n in: "header"\n name: "Target"\n required: true\n schema:\n type: "string"\n - description: "Trim whitespace from Target before applying patch?"\n in: "header"\n name: "Trim-Target-Whitespace"\n required: false\n schema:\n default: "false"\n enum:\n - "true"\n - "false"\n type: "string"\n requestBody:\n content:\n application/json:\n schema:\n example: "[\'one\', \'two\']"\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to insert."\n required: true\n responses:\n "200":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request; see response message for details."\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Does not exist"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Partially update content in the currently open note.\n tags:\n - "Active File"\n post:\n description: |\n Appends content to the end of the currently-open note.\n \n If you would like to insert text relative to a particular heading instead of appending to the end of the file, see \'patch\'.\n parameters: []\n requestBody:\n content:\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to append."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Append content to the active file open in Obsidian.\n tags:\n - "Active File"\n put:\n parameters: []\n requestBody:\n content:\n "*/*":\n schema:\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content of the file you would like to upload."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Incoming file could not be processed. Make sure you have specified a reasonable file name, and make sure you have set a reasonable \'Content-Type\' header; if you are uploading a note, \'text/markdown\' is likely the right choice.\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Update the content of the active file open in Obsidian.\n tags:\n - "Active File"\n /commands/:\n get:\n responses:\n "200":\n content:\n application/json:\n example:\n commands:\n - id: "global-search:open"\n name: "Search: Search in all files"\n - id: "graph:open"\n name: "Graph view: Open graph view"\n schema:\n properties:\n commands:\n items:\n properties:\n id:\n type: "string"\n name:\n type: "string"\n type: "object"\n type: "array"\n type: "object"\n description: "A list of available commands."\n summary: |\n Get a list of available commands.\n tags:\n - "Commands"\n "/commands/{commandId}/":\n post:\n parameters:\n - description: "The id of the command to execute"\n in: "path"\n name: "commandId"\n required: true\n schema:\n type: "string"\n responses:\n "204":\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "The command you specified does not exist."\n summary: |\n Execute a command.\n tags:\n - "Commands"\n /obsidian-local-rest-api.crt:\n get:\n responses:\n "200":\n description: "Success"\n summary: |\n Returns the certificate in use by this API.\n tags:\n - "System"\n "/open/{filename}":\n post:\n description: |\n Note: Obsidian will create a new document at the path you have\n specified if such a document did not already exist.\n parameters:\n - description: |\n Path to the file to return (relative to your vault root).\n in: "path"\n name: "filename"\n required: true\n schema:\n format: "path"\n type: "string"\n - description: "Open this as a new leaf?"\n in: "query"\n name: "newLeaf"\n required: false\n schema:\n type: "boolean"\n responses:\n "200":\n description: "Success"\n summary: |\n Open the specified document in the Obsidian user interface.\n tags:\n - "Open"\n /openapi.yaml:\n get:\n responses:\n "200":\n description: "Success"\n summary: |\n Returns OpenAPI YAML document describing the capabilities of this API.\n tags:\n - "System"\n "/periodic/{period}/":\n delete:\n parameters:\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n responses:\n "204":\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "File does not exist."\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Delete the current periodic note for the specified period.\n tags:\n - "Periodic Notes"\n get:\n parameters:\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n responses:\n "200":\n content:\n "application/vnd.olrapi.note+json":\n schema:\n "$ref": "#/components/schemas/NoteJson"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Success"\n "404":\n description: "File does not exist"\n summary: |\n Get current periodic note for the specified period.\n tags:\n - "Periodic Notes"\n patch:\n description: |\n Inserts content into the current periodic note for the specified period relative to a heading, block refeerence, or frontmatter field within that document.\n \n Allows you to modify the content relative to a heading, block reference, or frontmatter field in your document.\n \n Note that this API was changed in Version 3.0 of this extension and the earlier PATCH API is now deprecated. Requests made using the previous version of this API will continue to work until Version 4.0 is released. See https://github.com/coddingtonbear/obsidian-local-rest-api/wiki/Changes-to-PATCH-requests-between-versions-2.0-and-3.0 for more details and migration instructions.\n \n # Examples\n \n All of the below examples assume you have a document that looks like\n this:\n \n ```markdown\n ---\n alpha: 1\n beta: test\n delta:\n zeta: 1\n yotta: 1\n gamma:\n - one\n - two\n ---\n \n # Heading 1\n \n This is the content for heading one\n \n Also references some [[#^484ef2]]\n \n ## Subheading 1:1\n Content for Subheading 1:1\n \n ### Subsubheading 1:1:1\n \n ### Subsubheading 1:1:2\n \n Testing how block references work for a table.[[#^2c7cfa]]\n Some content for Subsubheading 1:1:2\n \n More random text.\n \n ^2d9b4a\n \n ## Subheading 1:2\n \n Content for Subheading 1:2.\n \n some content with a block reference ^484ef2\n \n ## Subheading 1:3\n | City | Population |\n | ------------ | ---------- |\n | Seattle, WA | 8 |\n | Portland, OR | 4 |\n \n ^2c7cfa\n ```\n \n ## Append Content Below a Heading\n \n If you wanted to append the content "Hello" below "Subheading 1:1:1" under "Heading 1",\n you could send a request with the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `heading`\n - `Target`: `Heading 1::Subheading 1:1:1`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Append Content to a Block Reference\n \n If you wanted to append the content "Hello" below the block referenced by\n "2d9b4a" above ("More random text."), you could send the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `block`\n - `Target`: `2d9b4a`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Add a Row to a Table Referenced by a Block Reference\n \n If you wanted to add a new city ("Chicago, IL") and population ("16") pair to the table above\n referenced by the block reference `2c7cfa`, you could send the following\n headers:\n \n - `Operation`: `append`\n - `TargetType`: `block`\n - `Target`: `2c7cfa`\n - `Content-Type`: `application/json`\n - with the request body: `[["Chicago, IL", "16"]]`\n \n The use of a `Content-Type` of `application/json` allows the API\n to infer that member of your array represents rows and columns of your\n to append to the referenced table. You can of course just use a\n `Content-Type` of `text/markdown`, but in such a case you\'ll have to\n format your table row manually instead of letting the library figure\n it out for you.\n \n You also have the option of using `prepend` (in which case, your new\n row would be the first -- right below the table heading) or `replace` (in which\n case all rows except the table heading would be replaced by the new row(s)\n you supplied).\n \n ## Setting a Frontmatter Field\n \n If you wanted to set the frontmatter field `alpha` to `2`, you could\n send the following headers:\n \n - `Operation`: `replace`\n - `TargetType`: `frontmatter`\n - `Target`: `beep`\n - with the request body `2`\n \n If you\'re setting a frontmatter field that might not already exist\n you may want to use the `Create-Target-If-Missing` header so the\n new frontmatter field is created and set to your specified value\n if it doesn\'t already exist.\n \n You may find using a `Content-Type` of `application/json` to be\n particularly useful in the case of frontmatter since frontmatter\n fields\' values are JSON data, and the API can be smarter about\n interpreting yoru `prepend` or `append` requests if you specify\n your data as JSON (particularly when appending, for example,\n list items).\n parameters:\n - description: "Patch operation to perform"\n in: "header"\n name: "Operation"\n required: true\n schema:\n enum:\n - "append"\n - "prepend"\n - "replace"\n type: "string"\n - description: "Type of target to patch"\n in: "header"\n name: "Target-Type"\n required: true\n schema:\n enum:\n - "heading"\n - "block"\n - "frontmatter"\n type: "string"\n - description: "Delimiter to use for nested targets (i.e. Headings)"\n in: "header"\n name: "Target-Delimiter"\n required: false\n schema:\n default: "::"\n type: "string"\n - description: |\n Target to patch; this value can be URL-Encoded and *must*\n be URL-Encoded if it includes non-ASCII characters.\n in: "header"\n name: "Target"\n required: true\n schema:\n type: "string"\n - description: "Trim whitespace from Target before applying patch?"\n in: "header"\n name: "Trim-Target-Whitespace"\n required: false\n schema:\n default: "false"\n enum:\n - "true"\n - "false"\n type: "string"\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n requestBody:\n content:\n application/json:\n schema:\n example: "[\'one\', \'two\']"\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to insert."\n required: true\n responses:\n "200":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request; see response message for details."\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Does not exist"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Partially update content in the current periodic note for the specified period.\n tags:\n - "Periodic Notes"\n post:\n description: |\n Note that this will create the relevant periodic note if necessary.\n parameters:\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n requestBody:\n content:\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to append."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Append content to the current periodic note for the specified period.\n tags:\n - "Periodic Notes"\n put:\n parameters:\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n requestBody:\n content:\n "*/*":\n schema:\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content of the file you would like to upload."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Incoming file could not be processed. Make sure you have specified a reasonable file name, and make sure you have set a reasonable \'Content-Type\' header; if you are uploading a note, \'text/markdown\' is likely the right choice.\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Update the content of the current periodic note for the specified period.\n tags:\n - "Periodic Notes"\n "/periodic/{period}/{year}/{month}/{day}/":\n delete:\n description: |\n Deletes the periodic note for the specified period.\n parameters:\n - description: "The year of the date for which you would like to grab a periodic note."\n in: "path"\n name: "year"\n required: true\n schema:\n type: "number"\n - description: "The month (1-12) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "month"\n required: true\n schema:\n type: "number"\n - description: "The day (1-31) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "day"\n required: true\n schema:\n type: "number"\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n responses:\n "204":\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "File does not exist."\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Delete the periodic note for the specified period and date.\n tags:\n - "Periodic Notes"\n get:\n parameters:\n - description: "The year of the date for which you would like to grab a periodic note."\n in: "path"\n name: "year"\n required: true\n schema:\n type: "number"\n - description: "The month (1-12) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "month"\n required: true\n schema:\n type: "number"\n - description: "The day (1-31) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "day"\n required: true\n schema:\n type: "number"\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n responses:\n "200":\n content:\n "application/vnd.olrapi.note+json":\n schema:\n "$ref": "#/components/schemas/NoteJson"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Success"\n "404":\n description: "File does not exist"\n summary: |\n Get the periodic note for the specified period and date.\n tags:\n - "Periodic Notes"\n patch:\n description: |\n Inserts content into a periodic note relative to a heading, block refeerence, or frontmatter field within that document.\n \n Allows you to modify the content relative to a heading, block reference, or frontmatter field in your document.\n \n Note that this API was changed in Version 3.0 of this extension and the earlier PATCH API is now deprecated. Requests made using the previous version of this API will continue to work until Version 4.0 is released. See https://github.com/coddingtonbear/obsidian-local-rest-api/wiki/Changes-to-PATCH-requests-between-versions-2.0-and-3.0 for more details and migration instructions.\n \n # Examples\n \n All of the below examples assume you have a document that looks like\n this:\n \n ```markdown\n ---\n alpha: 1\n beta: test\n delta:\n zeta: 1\n yotta: 1\n gamma:\n - one\n - two\n ---\n \n # Heading 1\n \n This is the content for heading one\n \n Also references some [[#^484ef2]]\n \n ## Subheading 1:1\n Content for Subheading 1:1\n \n ### Subsubheading 1:1:1\n \n ### Subsubheading 1:1:2\n \n Testing how block references work for a table.[[#^2c7cfa]]\n Some content for Subsubheading 1:1:2\n \n More random text.\n \n ^2d9b4a\n \n ## Subheading 1:2\n \n Content for Subheading 1:2.\n \n some content with a block reference ^484ef2\n \n ## Subheading 1:3\n | City | Population |\n | ------------ | ---------- |\n | Seattle, WA | 8 |\n | Portland, OR | 4 |\n \n ^2c7cfa\n ```\n \n ## Append Content Below a Heading\n \n If you wanted to append the content "Hello" below "Subheading 1:1:1" under "Heading 1",\n you could send a request with the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `heading`\n - `Target`: `Heading 1::Subheading 1:1:1`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Append Content to a Block Reference\n \n If you wanted to append the content "Hello" below the block referenced by\n "2d9b4a" above ("More random text."), you could send the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `block`\n - `Target`: `2d9b4a`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Add a Row to a Table Referenced by a Block Reference\n \n If you wanted to add a new city ("Chicago, IL") and population ("16") pair to the table above\n referenced by the block reference `2c7cfa`, you could send the following\n headers:\n \n - `Operation`: `append`\n - `TargetType`: `block`\n - `Target`: `2c7cfa`\n - `Content-Type`: `application/json`\n - with the request body: `[["Chicago, IL", "16"]]`\n \n The use of a `Content-Type` of `application/json` allows the API\n to infer that member of your array represents rows and columns of your\n to append to the referenced table. You can of course just use a\n `Content-Type` of `text/markdown`, but in such a case you\'ll have to\n format your table row manually instead of letting the library figure\n it out for you.\n \n You also have the option of using `prepend` (in which case, your new\n row would be the first -- right below the table heading) or `replace` (in which\n case all rows except the table heading would be replaced by the new row(s)\n you supplied).\n \n ## Setting a Frontmatter Field\n \n If you wanted to set the frontmatter field `alpha` to `2`, you could\n send the following headers:\n \n - `Operation`: `replace`\n - `TargetType`: `frontmatter`\n - `Target`: `beep`\n - with the request body `2`\n \n If you\'re setting a frontmatter field that might not already exist\n you may want to use the `Create-Target-If-Missing` header so the\n new frontmatter field is created and set to your specified value\n if it doesn\'t already exist.\n \n You may find using a `Content-Type` of `application/json` to be\n particularly useful in the case of frontmatter since frontmatter\n fields\' values are JSON data, and the API can be smarter about\n interpreting yoru `prepend` or `append` requests if you specify\n your data as JSON (particularly when appending, for example,\n list items).\n parameters:\n - description: "Patch operation to perform"\n in: "header"\n name: "Operation"\n required: true\n schema:\n enum:\n - "append"\n - "prepend"\n - "replace"\n type: "string"\n - description: "Type of target to patch"\n in: "header"\n name: "Target-Type"\n required: true\n schema:\n enum:\n - "heading"\n - "block"\n - "frontmatter"\n type: "string"\n - description: "Delimiter to use for nested targets (i.e. Headings)"\n in: "header"\n name: "Target-Delimiter"\n required: false\n schema:\n default: "::"\n type: "string"\n - description: |\n Target to patch; this value can be URL-Encoded and *must*\n be URL-Encoded if it includes non-ASCII characters.\n in: "header"\n name: "Target"\n required: true\n schema:\n type: "string"\n - description: "Trim whitespace from Target before applying patch?"\n in: "header"\n name: "Trim-Target-Whitespace"\n required: false\n schema:\n default: "false"\n enum:\n - "true"\n - "false"\n type: "string"\n - description: "The year of the date for which you would like to grab a periodic note."\n in: "path"\n name: "year"\n required: true\n schema:\n type: "number"\n - description: "The month (1-12) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "month"\n required: true\n schema:\n type: "number"\n - description: "The day (1-31) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "day"\n required: true\n schema:\n type: "number"\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n requestBody:\n content:\n application/json:\n schema:\n example: "[\'one\', \'two\']"\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to insert."\n required: true\n responses:\n "200":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request; see response message for details."\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Does not exist"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Partially update content in the periodic note for the specified period and date.\n tags:\n - "Periodic Notes"\n post:\n description: |\n This will create the relevant periodic note if necessary.\n parameters:\n - description: "The year of the date for which you would like to grab a periodic note."\n in: "path"\n name: "year"\n required: true\n schema:\n type: "number"\n - description: "The month (1-12) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "month"\n required: true\n schema:\n type: "number"\n - description: "The day (1-31) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "day"\n required: true\n schema:\n type: "number"\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n requestBody:\n content:\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to append."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Append content to the periodic note for the specified period and date.\n tags:\n - "Periodic Notes"\n put:\n parameters:\n - description: "The year of the date for which you would like to grab a periodic note."\n in: "path"\n name: "year"\n required: true\n schema:\n type: "number"\n - description: "The month (1-12) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "month"\n required: true\n schema:\n type: "number"\n - description: "The day (1-31) of the date for which you would like to grab a periodic note."\n in: "path"\n name: "day"\n required: true\n schema:\n type: "number"\n - description: "The name of the period for which you would like to grab a periodic note."\n in: "path"\n name: "period"\n required: true\n schema:\n default: "daily"\n enum:\n - "daily"\n - "weekly"\n - "monthly"\n - "quarterly"\n - "yearly"\n type: "string"\n requestBody:\n content:\n "*/*":\n schema:\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content of the file you would like to upload."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Incoming file could not be processed. Make sure you have specified a reasonable file name, and make sure you have set a reasonable \'Content-Type\' header; if you are uploading a note, \'text/markdown\' is likely the right choice.\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Update the content of the periodic note for the specified period and date.\n tags:\n - "Periodic Notes"\n /search/:\n post:\n description: |\n Evaluates a provided query against each file in your vault.\n \n This endpoint supports multiple query formats. Your query should be specified in your request\'s body, and will be interpreted according to the `Content-type` header you specify from the below options.Additional query formats may be added in the future.\n \n # Dataview DQL (`application/vnd.olrapi.dataview.dql+txt`)\n \n Accepts a `TABLE`-type Dataview query as a text string. See [Dataview](https://blacksmithgu.github.io/obsidian-dataview/query/queries/)\'s query documentation for information on how to construct a query.\n \n # JsonLogic (`application/vnd.olrapi.jsonlogic+json`)\n \n Accepts a JsonLogic query specified as JSON. See [JsonLogic](https://jsonlogic.com/operations.html)\'s documentation for information about the base set of operators available, but in addition to those operators the following operators are available:\n \n - `glob: [PATTERN, VALUE]`: Returns `true` if a string matches a glob pattern. E.g.: `{"glob": ["*.foo", "bar.foo"]}` is `true` and `{"glob": ["*.bar", "bar.foo"]}` is `false`.\n - `regexp: [PATTERN, VALUE]`: Returns `true` if a string matches a regular expression. E.g.: `{"regexp": [".*\\.foo", "bar.foo"]` is `true` and `{"regexp": [".*\\.bar", "bar.foo"]}` is `false`.\n \n Returns only non-falsy results. "Non-falsy" here treats the following values as "falsy":\n \n - `false`\n - `null` or `undefined`\n - `0`\n - `[]`\n - `{}`\n \n Files are represented as an object having the schema described\n in the Schema named \'NoteJson\' at the bottom of this page.\n Understanding the shape of a JSON object from a schema can be\n tricky; so you may find it helpful to examine the generated metadata\n for individual files in your vault to understand exactly what values\n are returned. To see that, access the `GET` `/vault/{filePath}`\n route setting the header:\n `Accept: application/vnd.olrapi.note+json`. See examples below\n for working examples of queries performing common search operations.\n requestBody:\n content:\n "application/vnd.olrapi.dataview.dql+txt":\n examples:\n find_fields_by_tag:\n summary: "List data from files having the #game tag."\n value: |\n TABLE\n time-played AS "Time Played",\n length AS "Length",\n rating AS "Rating"\n FROM #game\n SORT rating DESC\n schema:\n externalDocs:\n url: "https://blacksmithgu.github.io/obsidian-dataview/query/queries/"\n type: "object"\n "application/vnd.olrapi.jsonlogic+json":\n examples:\n find_by_frontmatter_url_glob:\n summary: "Find notes having URL or a matching URL glob frontmatter field."\n value: |\n {\n "or": [\n {"===": [{"var": "frontmatter.url"}, "https://myurl.com/some/path/"]},\n {"glob": [{"var": "frontmatter.url-glob"}, "https://myurl.com/some/path/"]}\n ]\n }\n find_by_frontmatter_value:\n summary: "Find notes having a certain frontmatter field value."\n value: |\n {\n "==": [\n {"var": "frontmatter.myField"},\n "myValue"\n ]\n }\n find_by_tag:\n summary: "Find notes having a certain tag"\n value: |\n {\n "in": [\n "myTag",\n {"var": "tags"}\n ]\n }\n schema:\n externalDocs:\n url: "https://jsonlogic.com/operations.html"\n type: "object"\n required: true\n responses:\n "200":\n content:\n application/json:\n schema:\n items:\n properties:\n filename:\n description: "Path to the matching file"\n type: "string"\n result:\n oneOf:\n - type: "string"\n - type: "number"\n - type: "array"\n - type: "object"\n - type: "boolean"\n required:\n - "filename"\n - "result"\n type: "object"\n type: "array"\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Bad request. Make sure you have specified an acceptable\n Content-Type for your search query.\n summary: |\n Search for documents matching a specified search query\n tags:\n - "Search"\n /search/simple/:\n post:\n parameters:\n - description: "Your search query"\n in: "query"\n name: "query"\n required: true\n schema:\n type: "string"\n - description: "How much context to return around the matching string"\n in: "query"\n name: "contextLength"\n required: false\n schema:\n default: 100\n type: "number"\n responses:\n "200":\n content:\n application/json:\n schema:\n items:\n properties:\n filename:\n description: "Path to the matching file"\n type: "string"\n matches:\n items:\n properties:\n context:\n type: "string"\n match:\n properties:\n end:\n type: "number"\n start:\n type: "number"\n required:\n - "start"\n - "end"\n type: "object"\n required:\n - "match"\n - "context"\n type: "object"\n type: "array"\n score:\n type: "number"\n type: "object"\n type: "array"\n description: "Success"\n summary: |\n Search for documents matching a specified text query\n tags:\n - "Search"\n /vault/:\n get:\n description: |\n Lists files in the root directory of your vault.\n \n Note: that this is exactly the same API endpoint as the below "List files that exist in the specified directory." and exists here only due to a quirk of this particular interactive tool.\n responses:\n "200":\n content:\n application/json:\n example:\n files:\n - "mydocument.md"\n - "somedirectory/"\n schema:\n properties:\n files:\n items:\n type: "string"\n type: "array"\n type: "object"\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Directory does not exist"\n summary: |\n List files that exist in the root of your vault.\n tags:\n - "Vault Directories"\n "/vault/{filename}":\n delete:\n parameters:\n - description: |\n Path to the relevant file (relative to your vault root).\n in: "path"\n name: "filename"\n required: true\n schema:\n format: "path"\n type: "string"\n responses:\n "204":\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "File does not exist."\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Delete a particular file in your vault.\n tags:\n - "Vault Files"\n get:\n description: |\n Returns the content of the file at the specified path in your vault should the file exist.\n \n If you specify the header `Accept: application/vnd.olrapi.note+json`, will return a JSON representation of your note including parsed tag and frontmatter data as well as filesystem metadata. See "responses" below for details.\n parameters:\n - description: |\n Path to the relevant file (relative to your vault root).\n in: "path"\n name: "filename"\n required: true\n schema:\n format: "path"\n type: "string"\n responses:\n "200":\n content:\n "application/vnd.olrapi.note+json":\n schema:\n "$ref": "#/components/schemas/NoteJson"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Success"\n "404":\n description: "File does not exist"\n summary: |\n Return the content of a single file in your vault.\n tags:\n - "Vault Files"\n patch:\n description: |\n Inserts content into an existing note relative to a heading, block refeerence, or frontmatter field within that document.\n \n Allows you to modify the content relative to a heading, block reference, or frontmatter field in your document.\n \n Note that this API was changed in Version 3.0 of this extension and the earlier PATCH API is now deprecated. Requests made using the previous version of this API will continue to work until Version 4.0 is released. See https://github.com/coddingtonbear/obsidian-local-rest-api/wiki/Changes-to-PATCH-requests-between-versions-2.0-and-3.0 for more details and migration instructions.\n \n # Examples\n \n All of the below examples assume you have a document that looks like\n this:\n \n ```markdown\n ---\n alpha: 1\n beta: test\n delta:\n zeta: 1\n yotta: 1\n gamma:\n - one\n - two\n ---\n \n # Heading 1\n \n This is the content for heading one\n \n Also references some [[#^484ef2]]\n \n ## Subheading 1:1\n Content for Subheading 1:1\n \n ### Subsubheading 1:1:1\n \n ### Subsubheading 1:1:2\n \n Testing how block references work for a table.[[#^2c7cfa]]\n Some content for Subsubheading 1:1:2\n \n More random text.\n \n ^2d9b4a\n \n ## Subheading 1:2\n \n Content for Subheading 1:2.\n \n some content with a block reference ^484ef2\n \n ## Subheading 1:3\n | City | Population |\n | ------------ | ---------- |\n | Seattle, WA | 8 |\n | Portland, OR | 4 |\n \n ^2c7cfa\n ```\n \n ## Append Content Below a Heading\n \n If you wanted to append the content "Hello" below "Subheading 1:1:1" under "Heading 1",\n you could send a request with the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `heading`\n - `Target`: `Heading 1::Subheading 1:1:1`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Append Content to a Block Reference\n \n If you wanted to append the content "Hello" below the block referenced by\n "2d9b4a" above ("More random text."), you could send the following headers:\n \n - `Operation`: `append`\n - `Target-Type`: `block`\n - `Target`: `2d9b4a`\n - with the request body: `Hello`\n \n The above would work just fine for `prepend` or `replace`, too, of course,\n but with different results.\n \n ## Add a Row to a Table Referenced by a Block Reference\n \n If you wanted to add a new city ("Chicago, IL") and population ("16") pair to the table above\n referenced by the block reference `2c7cfa`, you could send the following\n headers:\n \n - `Operation`: `append`\n - `TargetType`: `block`\n - `Target`: `2c7cfa`\n - `Content-Type`: `application/json`\n - with the request body: `[["Chicago, IL", "16"]]`\n \n The use of a `Content-Type` of `application/json` allows the API\n to infer that member of your array represents rows and columns of your\n to append to the referenced table. You can of course just use a\n `Content-Type` of `text/markdown`, but in such a case you\'ll have to\n format your table row manually instead of letting the library figure\n it out for you.\n \n You also have the option of using `prepend` (in which case, your new\n row would be the first -- right below the table heading) or `replace` (in which\n case all rows except the table heading would be replaced by the new row(s)\n you supplied).\n \n ## Setting a Frontmatter Field\n \n If you wanted to set the frontmatter field `alpha` to `2`, you could\n send the following headers:\n \n - `Operation`: `replace`\n - `TargetType`: `frontmatter`\n - `Target`: `beep`\n - with the request body `2`\n \n If you\'re setting a frontmatter field that might not already exist\n you may want to use the `Create-Target-If-Missing` header so the\n new frontmatter field is created and set to your specified value\n if it doesn\'t already exist.\n \n You may find using a `Content-Type` of `application/json` to be\n particularly useful in the case of frontmatter since frontmatter\n fields\' values are JSON data, and the API can be smarter about\n interpreting yoru `prepend` or `append` requests if you specify\n your data as JSON (particularly when appending, for example,\n list items).\n parameters:\n - description: "Patch operation to perform"\n in: "header"\n name: "Operation"\n required: true\n schema:\n enum:\n - "append"\n - "prepend"\n - "replace"\n type: "string"\n - description: "Type of target to patch"\n in: "header"\n name: "Target-Type"\n required: true\n schema:\n enum:\n - "heading"\n - "block"\n - "frontmatter"\n type: "string"\n - description: "Delimiter to use for nested targets (i.e. Headings)"\n in: "header"\n name: "Target-Delimiter"\n required: false\n schema:\n default: "::"\n type: "string"\n - description: |\n Target to patch; this value can be URL-Encoded and *must*\n be URL-Encoded if it includes non-ASCII characters.\n in: "header"\n name: "Target"\n required: true\n schema:\n type: "string"\n - description: "Trim whitespace from Target before applying patch?"\n in: "header"\n name: "Trim-Target-Whitespace"\n required: false\n schema:\n default: "false"\n enum:\n - "true"\n - "false"\n type: "string"\n - description: |\n Path to the relevant file (relative to your vault root).\n in: "path"\n name: "filename"\n required: true\n schema:\n format: "path"\n type: "string"\n requestBody:\n content:\n application/json:\n schema:\n example: "[\'one\', \'two\']"\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to insert."\n required: true\n responses:\n "200":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request; see response message for details."\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Does not exist"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Partially update content in an existing note.\n tags:\n - "Vault Files"\n post:\n description: |\n Appends content to the end of an existing note. If the specified file does not yet exist, it will be created as an empty file.\n \n If you would like to insert text relative to a particular heading, block reference, or frontmatter field instead of appending to the end of the file, see \'patch\'.\n parameters:\n - description: |\n Path to the relevant file (relative to your vault root).\n in: "path"\n name: "filename"\n required: true\n schema:\n format: "path"\n type: "string"\n requestBody:\n content:\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content you would like to append."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Bad Request"\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Append content to a new or existing file.\n tags:\n - "Vault Files"\n put:\n description: |\n Creates a new file in your vault or updates the content of an existing one if the specified file already exists.\n parameters:\n - description: |\n Path to the relevant file (relative to your vault root).\n in: "path"\n name: "filename"\n required: true\n schema:\n format: "path"\n type: "string"\n requestBody:\n content:\n "*/*":\n schema:\n type: "string"\n text/markdown:\n schema:\n example: |\n # This is my document\n \n something else here\n type: "string"\n description: "Content of the file you would like to upload."\n required: true\n responses:\n "204":\n description: "Success"\n "400":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Incoming file could not be processed. Make sure you have specified a reasonable file name, and make sure you have set a reasonable \'Content-Type\' header; if you are uploading a note, \'text/markdown\' is likely the right choice.\n "405":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: |\n Your path references a directory instead of a file; this request method is valid only for updating files.\n summary: |\n Create a new file in your vault or update the content of an existing one.\n tags:\n - "Vault Files"\n "/vault/{pathToDirectory}/":\n get:\n parameters:\n - description: |\n Path to list files from (relative to your vault root). Note that empty directories will not be returned.\n \n Note: this particular interactive tool requires that you provide an argument for this field, but the API itself will allow you to list the root folder of your vault. If you would like to try listing content in the root of your vault using this interactive tool, use the above "List files that exist in the root of your vault" form above.\n in: "path"\n name: "pathToDirectory"\n required: true\n schema:\n format: "path"\n type: "string"\n responses:\n "200":\n content:\n application/json:\n example:\n files:\n - "mydocument.md"\n - "somedirectory/"\n schema:\n properties:\n files:\n items:\n type: "string"\n type: "array"\n type: "object"\n description: "Success"\n "404":\n content:\n application/json:\n schema:\n "$ref": "#/components/schemas/Error"\n description: "Directory does not exist"\n summary: |\n List files that exist in the specified directory.\n tags:\n - "Vault Directories"\nsecurity:\n - apiKeyAuth: []\nservers:\n - description: "HTTPS (Secure Mode)"\n url: "https://{host}:{port}"\n variables:\n host:\n default: "127.0.0.1"\n description: "Binding host"\n port:\n default: "27124"\n description: "HTTPS port"\n - description: "HTTP (Insecure Mode)"\n url: "http://{host}:{port}"\n variables:\n host:\n default: "127.0.0.1"\n description: "Binding host"\n port:\n default: "27123"\n description: "HTTP port"\n'; + +// src/requestHandler.ts +var RequestHandler = class { + constructor(app, manifest, settings) { + this.apiExtensions = []; + this.app = app; + this.manifest = manifest; + this.api = (0, import_express.default)(); + this.settings = settings; + this.apiExtensionRouter = import_express.default.Router(); + this.api.set("json spaces", 2); + import_json_logic_js.default.add_operation("glob", (pattern, field) => { + if (typeof field === "string" && typeof pattern === "string") { + const glob = (0, import_glob_to_regexp.default)(pattern); + return glob.test(field); + } + return false; + }); + import_json_logic_js.default.add_operation("regexp", (pattern, field) => { + if (typeof field === "string" && typeof pattern === "string") { + const rex = new RegExp(pattern); + return rex.test(field); + } + return false; + }); + } + registerApiExtension(manifest) { + let api = void 0; + for (const { manifest: existingManifest, api: existingApi } of this.apiExtensions) { + if (JSON.stringify(existingManifest) === JSON.stringify(manifest)) { + api = existingApi; + break; + } + } + if (!api) { + const router = import_express.default.Router(); + this.apiExtensionRouter.use(router); + api = new LocalRestApiPublicApi(router, () => { + const idx = this.apiExtensions.findIndex(({ manifest: storedManifest }) => JSON.stringify(manifest) === JSON.stringify(storedManifest)); + if (idx !== -1) { + this.apiExtensions.splice(idx, 1); + this.apiExtensionRouter.stack.splice(idx, 1); + } + }); + this.apiExtensions.push({ + manifest, + api + }); + } + return api; + } + requestIsAuthenticated(req) { + var _a; + const authorizationHeader = req.get((_a = this.settings.authorizationHeaderName) != null ? _a : "Authorization"); + if (authorizationHeader === `Bearer ${this.settings.apiKey}`) { + return true; + } + return false; + } + authenticationMiddleware(req, res, next) { + return __async(this, null, function* () { + const authenticationExemptRoutes = [ + "/", + `/${CERT_NAME}`, + "/openapi.yaml" + ]; + if (!authenticationExemptRoutes.includes(req.path) && !this.requestIsAuthenticated(req)) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.ApiKeyAuthorizationRequired + }); + return; + } + next(); + }); + } + getFileMetadataObject(file) { + return __async(this, null, function* () { + var _a, _b, _c; + const cache = this.app.metadataCache.getFileCache(file); + const frontmatter = __spreadValues({}, (_a = cache.frontmatter) != null ? _a : {}); + delete frontmatter.position; + const directTags = (_c = ((_b = cache.tags) != null ? _b : []).filter((tag) => tag).map((tag) => tag.tag)) != null ? _c : []; + const frontmatterTags = Array.isArray(frontmatter.tags) ? frontmatter.tags : []; + const filteredTags = [...frontmatterTags, ...directTags].filter((tag) => tag).map((tag) => tag.toString().replace(/^#/, "")).filter((value, index, self2) => self2.indexOf(value) === index); + return { + tags: filteredTags, + frontmatter, + stat: file.stat, + path: file.path, + content: yield this.app.vault.cachedRead(file) + }; + }); + } + getResponseMessage({ + statusCode = 400, + message, + errorCode + }) { + const errorMessages = []; + if (errorCode) { + errorMessages.push(ERROR_CODE_MESSAGES[errorCode]); + } else { + errorMessages.push(import_http.default.STATUS_CODES[statusCode]); + } + if (message) { + errorMessages.push(message); + } + return errorMessages.join("\n"); + } + getStatusCode({ statusCode, errorCode }) { + if (statusCode) { + return statusCode; + } + return Math.floor(errorCode / 100); + } + returnCannedResponse(res, { statusCode, message, errorCode }) { + const response = { + message: this.getResponseMessage({ statusCode, message, errorCode }), + errorCode: errorCode != null ? errorCode : statusCode * 100 + }; + res.status(this.getStatusCode({ statusCode, errorCode })).json(response); + } + root(req, res) { + let certificate; + try { + certificate = import_node_forge.default.pki.certificateFromPem(this.settings.crypto.cert); + } catch (e) { + } + res.status(200).json({ + status: "OK", + manifest: this.manifest, + versions: { + obsidian: import_obsidian.apiVersion, + self: this.manifest.version + }, + service: "Obsidian Local REST API", + authenticated: this.requestIsAuthenticated(req), + certificateInfo: this.requestIsAuthenticated(req) && certificate ? { + validityDays: getCertificateValidityDays(certificate), + regenerateRecommended: !getCertificateIsUptoStandards(certificate) + } : void 0, + apiExtensions: this.requestIsAuthenticated(req) ? this.apiExtensions.map(({ manifest }) => manifest) : void 0 + }); + } + _vaultGet(path2, req, res) { + return __async(this, null, function* () { + if (!path2 || path2.endsWith("/")) { + const files = [ + ...new Set(this.app.vault.getFiles().map((e) => e.path).filter((filename) => filename.startsWith(path2)).map((filename) => { + const subPath = filename.slice(path2.length); + if (subPath.indexOf("/") > -1) { + return subPath.slice(0, subPath.indexOf("/") + 1); + } + return subPath; + })) + ]; + files.sort(); + if (files.length === 0) { + this.returnCannedResponse(res, { statusCode: 404 }); + return; + } + res.json({ + files + }); + } else { + const exists = yield this.app.vault.adapter.exists(path2); + if (exists && (yield this.app.vault.adapter.stat(path2)).type === "file") { + const content = yield this.app.vault.adapter.readBinary(path2); + const mimeType = import_mime_types.default.lookup(path2); + res.set({ + "Content-Disposition": `attachment; filename="${encodeURI(path2).replace(",", "%2C")}"`, + "Content-Type": `${mimeType}` + (mimeType == ContentTypes.markdown ? "; charset=utf-8" : "") + }); + if (req.headers.accept === ContentTypes.olrapiNoteJson) { + const file = this.app.vault.getAbstractFileByPath(path2); + res.setHeader("Content-Type", ContentTypes.olrapiNoteJson); + res.send(JSON.stringify(yield this.getFileMetadataObject(file), null, 2)); + return; + } + res.send(Buffer.from(content)); + } else { + this.returnCannedResponse(res, { + statusCode: 404 + }); + return; + } + } + }); + } + vaultGet(req, res) { + return __async(this, null, function* () { + const path2 = decodeURIComponent(req.path.slice(req.path.indexOf("/", 1) + 1)); + return this._vaultGet(path2, req, res); + }); + } + _vaultPut(filepath, req, res) { + return __async(this, null, function* () { + if (!filepath || filepath.endsWith("/")) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.RequestMethodValidOnlyForFiles + }); + return; + } + try { + yield this.app.vault.createFolder(import_path.default.dirname(filepath)); + } catch (e) { + } + if (typeof req.body === "string") { + yield this.app.vault.adapter.write(filepath, req.body); + } else { + yield this.app.vault.adapter.writeBinary(filepath, toArrayBuffer(req.body)); + } + this.returnCannedResponse(res, { statusCode: 204 }); + return; + }); + } + vaultPut(req, res) { + return __async(this, null, function* () { + const path2 = decodeURIComponent(req.path.slice(req.path.indexOf("/", 1) + 1)); + return this._vaultPut(path2, req, res); + }); + } + _vaultPatchV2(path2, req, res) { + return __async(this, null, function* () { + const headingBoundary = req.get("Heading-Boundary") || "::"; + const heading = (req.get("Heading") || "").split(headingBoundary).filter(Boolean); + const contentPosition = req.get("Content-Insertion-Position"); + let insert = false; + let aboveNewLine = false; + if (contentPosition === void 0) { + insert = false; + } else if (contentPosition === "beginning") { + insert = true; + } else if (contentPosition === "end") { + insert = false; + } else { + this.returnCannedResponse(res, { + errorCode: ErrorCode.InvalidContentInsertionPositionValue + }); + return; + } + if (typeof req.body != "string") { + this.returnCannedResponse(res, { + errorCode: ErrorCode.TextContentEncodingRequired + }); + return; + } + if (typeof req.get("Content-Insertion-Ignore-Newline") == "string") { + aboveNewLine = req.get("Content-Insertion-Ignore-Newline").toLowerCase() == "true"; + } + if (!heading.length) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.MissingHeadingHeader + }); + return; + } + const file = this.app.vault.getAbstractFileByPath(path2); + if (!(file instanceof import_obsidian.TFile)) { + this.returnCannedResponse(res, { + statusCode: 404 + }); + return; + } + const cache = this.app.metadataCache.getFileCache(file); + const position = findHeadingBoundary(cache, heading); + if (!position) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.InvalidHeadingHeader + }); + return; + } + const fileContents = yield this.app.vault.read(file); + const fileLines = fileContents.split("\n"); + const splicePosition = getSplicePosition(fileLines, position, insert, aboveNewLine); + fileLines.splice(splicePosition, 0, req.body); + const content = fileLines.join("\n"); + yield this.app.vault.adapter.write(path2, content); + console.warn(`2.x PATCH implementation is deprecated and will be removed in version 4.0`); + res.header("Deprecation", 'true; sunset-version="4.0"').header("Link", '; rel="alternate"').status(200).send(content); + }); + } + _vaultPatchV3(path2, req, res) { + return __async(this, null, function* () { + const operation = req.get("Operation"); + const targetType = req.get("Target-Type"); + const rawTarget = decodeURIComponent(req.get("Target")); + const contentType = req.get("Content-Type"); + const createTargetIfMissing = req.get("Create-Target-If-Missing") == "true"; + const applyIfContentPreexists = req.get("Apply-If-Content-Preexists") == "true"; + const trimTargetWhitespace = req.get("Trim-Target-Whitespace") == "true"; + const targetDelimiter = req.get("Target-Delimiter") || "::"; + const target = targetType == "heading" ? rawTarget.split(targetDelimiter) : rawTarget; + const file = this.app.vault.getAbstractFileByPath(path2); + if (!(file instanceof import_obsidian.TFile)) { + this.returnCannedResponse(res, { + statusCode: 404 + }); + return; + } + const fileContents = yield this.app.vault.read(file); + if (!targetType) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.MissingTargetTypeHeader + }); + return; + } + if (!["heading", "block", "frontmatter"].includes(targetType)) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.InvalidTargetTypeHeader + }); + return; + } + if (!operation) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.MissingOperation + }); + return; + } + if (!["append", "prepend", "replace"].includes(operation)) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.InvalidOperation + }); + return; + } + if (!path2 || path2.endsWith("/")) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.RequestMethodValidOnlyForFiles + }); + return; + } + const instruction = { + operation, + targetType, + target, + contentType, + content: req.body, + applyIfContentPreexists, + trimTargetWhitespace, + createTargetIfMissing + }; + try { + const patched = (0, import_markdown_patch.applyPatch)(fileContents, instruction); + yield this.app.vault.adapter.write(path2, patched); + res.status(200).send(patched); + } catch (e) { + if (e instanceof import_markdown_patch.PatchFailed) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.PatchFailed, + message: e.reason + }); + } else { + this.returnCannedResponse(res, { + statusCode: 500, + message: e.message + }); + } + } + }); + } + _vaultPatch(path2, req, res) { + return __async(this, null, function* () { + if (!path2 || path2.endsWith("/")) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.RequestMethodValidOnlyForFiles + }); + return; + } + if (req.get("Heading") && !req.get("Target-Type")) { + return this._vaultPatchV2(path2, req, res); + } + return this._vaultPatchV3(path2, req, res); + }); + } + vaultPatch(req, res) { + return __async(this, null, function* () { + const path2 = decodeURIComponent(req.path.slice(req.path.indexOf("/", 1) + 1)); + return this._vaultPatch(path2, req, res); + }); + } + _vaultPost(filepath, req, res) { + return __async(this, null, function* () { + if (!filepath || filepath.endsWith("/")) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.RequestMethodValidOnlyForFiles + }); + return; + } + if (typeof req.body != "string") { + this.returnCannedResponse(res, { + errorCode: ErrorCode.TextContentEncodingRequired + }); + return; + } + try { + yield this.app.vault.createFolder(import_path.default.dirname(filepath)); + } catch (e) { + } + let fileContents = ""; + const file = this.app.vault.getAbstractFileByPath(filepath); + if (file instanceof import_obsidian.TFile) { + fileContents = yield this.app.vault.read(file); + if (!fileContents.endsWith("\n")) { + fileContents += "\n"; + } + } + fileContents += req.body; + yield this.app.vault.adapter.write(filepath, fileContents); + this.returnCannedResponse(res, { statusCode: 204 }); + return; + }); + } + vaultPost(req, res) { + return __async(this, null, function* () { + const path2 = decodeURIComponent(req.path.slice(req.path.indexOf("/", 1) + 1)); + return this._vaultPost(path2, req, res); + }); + } + _vaultDelete(path2, req, res) { + return __async(this, null, function* () { + if (!path2 || path2.endsWith("/")) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.RequestMethodValidOnlyForFiles + }); + return; + } + const pathExists = yield this.app.vault.adapter.exists(path2); + if (!pathExists) { + this.returnCannedResponse(res, { statusCode: 404 }); + return; + } + yield this.app.vault.adapter.remove(path2); + this.returnCannedResponse(res, { statusCode: 204 }); + return; + }); + } + vaultDelete(req, res) { + return __async(this, null, function* () { + const path2 = decodeURIComponent(req.path.slice(req.path.indexOf("/", 1) + 1)); + return this._vaultDelete(path2, req, res); + }); + } + getPeriodicNoteInterface() { + return { + daily: { + settings: import_obsidian_daily_notes_interface.default.getDailyNoteSettings(), + loaded: import_obsidian_daily_notes_interface.default.appHasDailyNotesPluginLoaded(), + create: import_obsidian_daily_notes_interface.default.createDailyNote, + get: import_obsidian_daily_notes_interface.default.getDailyNote, + getAll: import_obsidian_daily_notes_interface.default.getAllDailyNotes + }, + weekly: { + settings: import_obsidian_daily_notes_interface.default.getWeeklyNoteSettings(), + loaded: import_obsidian_daily_notes_interface.default.appHasWeeklyNotesPluginLoaded(), + create: import_obsidian_daily_notes_interface.default.createWeeklyNote, + get: import_obsidian_daily_notes_interface.default.getWeeklyNote, + getAll: import_obsidian_daily_notes_interface.default.getAllWeeklyNotes + }, + monthly: { + settings: import_obsidian_daily_notes_interface.default.getMonthlyNoteSettings(), + loaded: import_obsidian_daily_notes_interface.default.appHasMonthlyNotesPluginLoaded(), + create: import_obsidian_daily_notes_interface.default.createMonthlyNote, + get: import_obsidian_daily_notes_interface.default.getMonthlyNote, + getAll: import_obsidian_daily_notes_interface.default.getAllMonthlyNotes + }, + quarterly: { + settings: import_obsidian_daily_notes_interface.default.getQuarterlyNoteSettings(), + loaded: import_obsidian_daily_notes_interface.default.appHasQuarterlyNotesPluginLoaded(), + create: import_obsidian_daily_notes_interface.default.createQuarterlyNote, + get: import_obsidian_daily_notes_interface.default.getQuarterlyNote, + getAll: import_obsidian_daily_notes_interface.default.getAllQuarterlyNotes + }, + yearly: { + settings: import_obsidian_daily_notes_interface.default.getYearlyNoteSettings(), + loaded: import_obsidian_daily_notes_interface.default.appHasYearlyNotesPluginLoaded(), + create: import_obsidian_daily_notes_interface.default.createYearlyNote, + get: import_obsidian_daily_notes_interface.default.getYearlyNote, + getAll: import_obsidian_daily_notes_interface.default.getAllYearlyNotes + } + }; + } + periodicGetInterface(period) { + const periodic = this.getPeriodicNoteInterface(); + if (!periodic[period]) { + return [null, ErrorCode.PeriodDoesNotExist]; + } + if (!periodic[period].loaded) { + return [null, ErrorCode.PeriodIsNotEnabled]; + } + return [periodic[period], null]; + } + periodicGetNote(periodName, timestamp) { + const [period, err] = this.periodicGetInterface(periodName); + if (err) { + return [null, err]; + } + const now = window.moment(timestamp); + const all = period.getAll(); + const file = period.get(now, all); + if (!file) { + return [null, ErrorCode.PeriodicNoteDoesNotExist]; + } + return [file, null]; + } + periodicGetOrCreateNote(periodName, timestamp) { + return __async(this, null, function* () { + const [gottenFile, err] = this.periodicGetNote(periodName, timestamp); + let file = gottenFile; + if (err === ErrorCode.PeriodicNoteDoesNotExist) { + const [period] = this.periodicGetInterface(periodName); + const now = window.moment(Date.now()); + file = yield period.create(now); + const metadataCachePromise = new Promise((resolve) => { + let cache = null; + const interval = setInterval(() => { + cache = this.app.metadataCache.getFileCache(file); + if (cache) { + clearInterval(interval); + resolve(cache); + } + }, 100); + }); + yield metadataCachePromise; + } else if (err) { + return [null, err]; + } + return [file, null]; + }); + } + redirectToVaultPath(file, req, res, handler) { + const path2 = file.path; + res.set("Content-Location", encodeURI(path2)); + return handler(path2, req, res); + } + getPeriodicDateFromParams(params) { + const { year, month, day } = params; + if (year && month && day) { + const date = new Date(year, month - 1, day); + return date.getTime(); + } + return Date.now(); + } + periodicGet(req, res) { + return __async(this, null, function* () { + const date = this.getPeriodicDateFromParams(req.params); + const [file, err] = this.periodicGetNote(req.params.period, date); + if (err) { + this.returnCannedResponse(res, { errorCode: err }); + return; + } + return this.redirectToVaultPath(file, req, res, this._vaultGet.bind(this)); + }); + } + periodicPut(req, res) { + return __async(this, null, function* () { + const date = this.getPeriodicDateFromParams(req.params); + const [file, err] = yield this.periodicGetOrCreateNote(req.params.period, date); + if (err) { + this.returnCannedResponse(res, { errorCode: err }); + return; + } + return this.redirectToVaultPath(file, req, res, this._vaultPut.bind(this)); + }); + } + periodicPost(req, res) { + return __async(this, null, function* () { + const date = this.getPeriodicDateFromParams(req.params); + const [file, err] = yield this.periodicGetOrCreateNote(req.params.period, date); + if (err) { + this.returnCannedResponse(res, { errorCode: err }); + return; + } + return this.redirectToVaultPath(file, req, res, this._vaultPost.bind(this)); + }); + } + periodicPatch(req, res) { + return __async(this, null, function* () { + const date = this.getPeriodicDateFromParams(req.params); + const [file, err] = yield this.periodicGetOrCreateNote(req.params.period, date); + if (err) { + this.returnCannedResponse(res, { errorCode: err }); + return; + } + return this.redirectToVaultPath(file, req, res, this._vaultPatch.bind(this)); + }); + } + periodicDelete(req, res) { + return __async(this, null, function* () { + const date = this.getPeriodicDateFromParams(req.params); + const [file, err] = this.periodicGetNote(req.params.period, date); + if (err) { + this.returnCannedResponse(res, { errorCode: err }); + return; + } + return this.redirectToVaultPath(file, req, res, this._vaultDelete.bind(this)); + }); + } + activeFileGet(req, res) { + return __async(this, null, function* () { + const file = this.app.workspace.getActiveFile(); + return this.redirectToVaultPath(file, req, res, this._vaultGet.bind(this)); + }); + } + activeFilePut(req, res) { + return __async(this, null, function* () { + const file = this.app.workspace.getActiveFile(); + return this.redirectToVaultPath(file, req, res, this._vaultPut.bind(this)); + }); + } + activeFilePost(req, res) { + return __async(this, null, function* () { + const file = this.app.workspace.getActiveFile(); + return this.redirectToVaultPath(file, req, res, this._vaultPost.bind(this)); + }); + } + activeFilePatch(req, res) { + return __async(this, null, function* () { + const file = this.app.workspace.getActiveFile(); + return this.redirectToVaultPath(file, req, res, this._vaultPatch.bind(this)); + }); + } + activeFileDelete(req, res) { + return __async(this, null, function* () { + const file = this.app.workspace.getActiveFile(); + return this.redirectToVaultPath(file, req, res, this._vaultDelete.bind(this)); + }); + } + commandGet(req, res) { + return __async(this, null, function* () { + const commands = []; + for (const commandName in this.app.commands.commands) { + commands.push({ + id: commandName, + name: this.app.commands.commands[commandName].name + }); + } + const commandResponse = { + commands + }; + res.json(commandResponse); + }); + } + commandPost(req, res) { + return __async(this, null, function* () { + const cmd = this.app.commands.commands[req.params.commandId]; + if (!cmd) { + this.returnCannedResponse(res, { statusCode: 404 }); + return; + } + try { + this.app.commands.executeCommandById(req.params.commandId); + } catch (e) { + this.returnCannedResponse(res, { statusCode: 500, message: e.message }); + return; + } + this.returnCannedResponse(res, { statusCode: 204 }); + return; + }); + } + searchSimplePost(req, res) { + return __async(this, null, function* () { + var _a; + const results = []; + const query = req.query.query; + const contextLength = (_a = parseInt(req.query.contextLength, 10)) != null ? _a : 100; + const search = (0, import_obsidian.prepareSimpleSearch)(query); + for (const file of this.app.vault.getMarkdownFiles()) { + const cachedContents = yield this.app.vault.cachedRead(file); + const result = search(cachedContents); + if (result) { + const contextMatches = []; + for (const match of result.matches) { + contextMatches.push({ + match: { + start: match[0], + end: match[1] + }, + context: cachedContents.slice(Math.max(match[0] - contextLength, 0), match[1] + contextLength) + }); + } + results.push({ + filename: file.path, + score: result.score, + matches: contextMatches + }); + } + } + results.sort((a, b) => a.score > b.score ? 1 : -1); + res.json(results); + }); + } + valueIsSaneTruthy(value) { + if (value === void 0 || value === null) { + return false; + } else if (Array.isArray(value)) { + return value.length > 0; + } else if (typeof value === "object") { + return Object.keys(value).length > 0; + } + return Boolean(value); + } + searchQueryPost(req, res) { + return __async(this, null, function* () { + const dataviewApi = (0, import_obsidian_dataview.getAPI)(); + const handlers = { + [ContentTypes.dataviewDql]: () => __async(this, null, function* () { + const results = []; + const dataviewResults = yield dataviewApi.tryQuery(req.body); + const fileColumn = dataviewApi.evaluationContext.settings.tableIdColumnName; + if (dataviewResults.type !== "table") { + throw new Error("Only TABLE dataview queries are supported."); + } + if (!dataviewResults.headers.includes(fileColumn)) { + throw new Error("TABLE WITHOUT ID queries are not supported."); + } + for (const dataviewResult of dataviewResults.values) { + const fieldValues = {}; + dataviewResults.headers.forEach((value, index) => { + if (value !== fileColumn) { + fieldValues[value] = dataviewResult[index]; + } + }); + results.push({ + filename: dataviewResult[0].path, + result: fieldValues + }); + } + return results; + }), + [ContentTypes.jsonLogic]: () => __async(this, null, function* () { + const results = []; + for (const file of this.app.vault.getMarkdownFiles()) { + const fileContext = yield this.getFileMetadataObject(file); + try { + const fileResult = import_json_logic_js.default.apply(req.body, fileContext); + if (this.valueIsSaneTruthy(fileResult)) { + results.push({ + filename: file.path, + result: fileResult + }); + } + } catch (e) { + throw new Error(`${e.message} (while processing ${file.path})`); + } + } + return results; + }) + }; + const contentType = req.headers["content-type"]; + if (!handlers[contentType]) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.ContentTypeSpecificationRequired + }); + return; + } + try { + const results = yield handlers[contentType](); + res.json(results); + } catch (e) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.InvalidFilterQuery, + message: `${e.message}` + }); + return; + } + }); + } + openPost(req, res) { + return __async(this, null, function* () { + const path2 = decodeURIComponent(req.path.slice(req.path.indexOf("/", 1) + 1)); + const query = import_query_string.default.parseUrl(req.originalUrl, { + parseBooleans: true + }).query; + const newLeaf = Boolean(query.newLeaf); + this.app.workspace.openLinkText(path2, "/", newLeaf); + res.json(); + }); + } + certificateGet(req, res) { + return __async(this, null, function* () { + res.set("Content-type", `application/octet-stream; filename="${CERT_NAME}"`); + res.status(200).send(this.settings.crypto.cert); + }); + } + openapiYamlGet(req, res) { + return __async(this, null, function* () { + res.setHeader("Content-Type", "application/yaml; charset=utf-8"); + res.status(200).send(openapi_default); + }); + } + notFoundHandler(req, res, next) { + return __async(this, null, function* () { + this.returnCannedResponse(res, { + statusCode: 404 + }); + return; + }); + } + errorHandler(err, req, res, next) { + return __async(this, null, function* () { + if (err.stack) { + console.error(err.stack); + } else { + console.error("No stack available!"); + } + if (err instanceof SyntaxError) { + this.returnCannedResponse(res, { + errorCode: ErrorCode.InvalidContentForContentType + }); + return; + } + this.returnCannedResponse(res, { + statusCode: 500, + message: err.message + }); + return; + }); + } + setupRouter() { + this.api.use((req, res, next) => { + const originalSend = res.send; + res.send = function(body, ...args) { + console.log(`[REST API] ${req.method} ${req.url} => ${res.statusCode}`); + return originalSend.apply(res, [body, ...args]); + }; + next(); + }); + this.api.use((0, import_response_time.default)()); + this.api.use((0, import_cors.default)()); + this.api.use(this.authenticationMiddleware.bind(this)); + this.api.use(import_body_parser.default.text({ + type: ContentTypes.dataviewDql, + limit: MaximumRequestSize + })); + this.api.use(import_body_parser.default.json({ + type: ContentTypes.json, + strict: false, + limit: MaximumRequestSize + })); + this.api.use(import_body_parser.default.json({ + type: ContentTypes.olrapiNoteJson, + strict: false, + limit: MaximumRequestSize + })); + this.api.use(import_body_parser.default.json({ + type: ContentTypes.jsonLogic, + strict: false, + limit: MaximumRequestSize + })); + this.api.use(import_body_parser.default.text({ type: "text/*", limit: MaximumRequestSize })); + this.api.use(import_body_parser.default.raw({ type: "*/*", limit: MaximumRequestSize })); + this.api.route("/active/").get(this.activeFileGet.bind(this)).put(this.activeFilePut.bind(this)).patch(this.activeFilePatch.bind(this)).post(this.activeFilePost.bind(this)).delete(this.activeFileDelete.bind(this)); + this.api.route("/vault/*").get(this.vaultGet.bind(this)).put(this.vaultPut.bind(this)).patch(this.vaultPatch.bind(this)).post(this.vaultPost.bind(this)).delete(this.vaultDelete.bind(this)); + this.api.route("/periodic/:period/").get(this.periodicGet.bind(this)).put(this.periodicPut.bind(this)).patch(this.periodicPatch.bind(this)).post(this.periodicPost.bind(this)).delete(this.periodicDelete.bind(this)); + this.api.route("/periodic/:period/:year/:month/:day/").get(this.periodicGet.bind(this)).put(this.periodicPut.bind(this)).patch(this.periodicPatch.bind(this)).post(this.periodicPost.bind(this)).delete(this.periodicDelete.bind(this)); + this.api.route("/commands/").get(this.commandGet.bind(this)); + this.api.route("/commands/:commandId/").post(this.commandPost.bind(this)); + this.api.route("/search/").post(this.searchQueryPost.bind(this)); + this.api.route("/search/simple/").post(this.searchSimplePost.bind(this)); + this.api.route("/open/*").post(this.openPost.bind(this)); + this.api.get(`/${CERT_NAME}`, this.certificateGet.bind(this)); + this.api.get("/openapi.yaml", this.openapiYamlGet.bind(this)); + this.api.get("/", this.root.bind(this)); + this.api.use(this.apiExtensionRouter); + this.api.use(this.notFoundHandler.bind(this)); + this.api.use(this.errorHandler.bind(this)); + } +}; + +// src/main.ts +var LocalRestApi = class extends import_obsidian2.Plugin { + constructor() { + super(...arguments); + this.secureServer = null; + this.insecureServer = null; + } + onload() { + return __async(this, null, function* () { + this.refreshServerState = this.debounce(this._refreshServerState.bind(this), 1e3); + yield this.loadSettings(); + this.requestHandler = new RequestHandler(this.app, this.manifest, this.settings); + this.requestHandler.setupRouter(); + if (!this.settings.apiKey) { + this.settings.apiKey = import_node_forge2.default.md.sha256.create().update(import_node_forge2.default.random.getBytesSync(128)).digest().toHex(); + this.saveSettings(); + } + if (!this.settings.crypto) { + const expiry = new Date(); + const today = new Date(); + expiry.setDate(today.getDate() + 365); + const keypair = import_node_forge2.default.pki.rsa.generateKeyPair(2048); + const attrs = [ + { + name: "commonName", + value: "Obsidian Local REST API" + } + ]; + const certificate = import_node_forge2.default.pki.createCertificate(); + certificate.setIssuer(attrs); + certificate.setSubject(attrs); + const subjectAltNames = [ + { + type: 7, + ip: DefaultBindingHost + } + ]; + if (this.settings.bindingHost && this.settings.bindingHost !== "0.0.0.0") { + subjectAltNames.push({ + type: 7, + ip: this.settings.bindingHost + }); + } + if (this.settings.subjectAltNames) { + for (const name of this.settings.subjectAltNames.split("\n")) { + if (name.trim()) { + subjectAltNames.push({ + type: 2, + value: name.trim() + }); + } + } + } + certificate.setExtensions([ + { + name: "basicConstraints", + cA: true, + critical: true + }, + { + name: "keyUsage", + keyCertSign: true, + digitalSignature: true, + nonRepudiation: true, + keyEncipherment: false, + dataEncipherment: false, + critical: true + }, + { + name: "extKeyUsage", + serverAuth: true, + clientAuth: true, + codeSigning: true, + emailProtection: true, + timeStamping: true + }, + { + name: "nsCertType", + client: true, + server: true, + email: true, + objsign: true, + sslCA: true, + emailCA: true, + objCA: true + }, + { + name: "subjectAltName", + altNames: subjectAltNames + } + ]); + certificate.serialNumber = "1"; + certificate.publicKey = keypair.publicKey; + certificate.validity.notAfter = expiry; + certificate.validity.notBefore = today; + certificate.sign(keypair.privateKey, import_node_forge2.default.md.sha256.create()); + this.settings.crypto = { + cert: import_node_forge2.pki.certificateToPem(certificate), + privateKey: import_node_forge2.pki.privateKeyToPem(keypair.privateKey), + publicKey: import_node_forge2.pki.publicKeyToPem(keypair.publicKey) + }; + this.saveSettings(); + } + this.addSettingTab(new LocalRestApiSettingTab(this.app, this)); + this.refreshServerState(); + this.app.workspace.trigger("obsidian-local-rest-api:loaded"); + }); + } + getPublicApi(pluginManifest) { + if (!pluginManifest.id || !pluginManifest.name || !pluginManifest.version) { + throw new Error("PluginManifest instance must include a defined id, name, and version to be accempted."); + } + console.log("[REST API] Added new API extension", pluginManifest); + return this.requestHandler.registerApiExtension(pluginManifest); + } + debounce(func, delay) { + let debounceTimer; + return (...args) => { + clearTimeout(debounceTimer); + debounceTimer = setTimeout(() => func(...args), delay); + }; + } + _refreshServerState() { + var _a, _b, _c, _d, _e; + if (this.secureServer) { + this.secureServer.close(); + this.secureServer = null; + } + if ((_a = this.settings.enableSecureServer) != null ? _a : true) { + this.secureServer = https.createServer({ + key: this.settings.crypto.privateKey, + cert: this.settings.crypto.cert + }, this.requestHandler.api); + this.secureServer.listen(this.settings.port, (_b = this.settings.bindingHost) != null ? _b : DefaultBindingHost); + console.log(`[REST API] Listening on https://${(_c = this.settings.bindingHost) != null ? _c : DefaultBindingHost}:${this.settings.port}/`); + } + if (this.insecureServer) { + this.insecureServer.close(); + this.insecureServer = null; + } + if (this.settings.enableInsecureServer) { + this.insecureServer = http2.createServer(this.requestHandler.api); + this.insecureServer.listen(this.settings.insecurePort, (_d = this.settings.bindingHost) != null ? _d : DefaultBindingHost); + console.log(`[REST API] Listening on http://${(_e = this.settings.bindingHost) != null ? _e : DefaultBindingHost}:${this.settings.insecurePort}/`); + } + } + onunload() { + if (this.secureServer) { + this.secureServer.close(); + } + if (this.insecureServer) { + this.insecureServer.close(); + } + } + loadSettings() { + return __async(this, null, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __async(this, null, function* () { + yield this.saveData(this.settings); + }); + } +}; +var LocalRestApiSettingTab = class extends import_obsidian2.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.showAdvancedSettings = false; + this.plugin = plugin; + } + display() { + var _a; + const { containerEl } = this; + containerEl.replaceChildren(); + const parsedCertificate = import_node_forge2.default.pki.certificateFromPem(this.plugin.settings.crypto.cert); + const remainingCertificateValidityDays = getCertificateValidityDays(parsedCertificate); + const shouldRegenerateCertificate = !getCertificateIsUptoStandards(parsedCertificate); + containerEl.empty(); + containerEl.classList.add("obsidian-local-rest-api-settings"); + containerEl.createEl("h2", { text: "Local REST API" }); + containerEl.createEl("h3", { text: "How to Access" }); + const apiKeyDiv = containerEl.createEl("div"); + apiKeyDiv.classList.add("api-key-display"); + const availableApis = apiKeyDiv.createEl("p"); + availableApis.innerHTML = ` + You can access Obsidian Local REST API via the following URLs: + `; + const connectionUrls = apiKeyDiv.createEl("table", { cls: "api-urls" }); + const connectionUrlsTbody = connectionUrls.createEl("tbody"); + const secureTr = connectionUrlsTbody.createEl("tr", this.plugin.settings.enableSecureServer === false ? { + cls: "disabled", + title: "Disabled. You can enable this in 'Settings' below." + } : { + title: "Enabled" + }); + const secureUrl = `https://127.0.0.1:${this.plugin.settings.port}/`; + secureTr.innerHTML = ` + + ${this.plugin.settings.enableSecureServer === false ? "\u274C" : "\u2705"} + + + Encrypted (HTTPS) API URL

    + + Requires that
    this certificate be + configured as a trusted certificate authority for + your browser. See wiki for more information. + + + `; + const secureUrlsTd = secureTr.createEl("td", { cls: "url" }); + secureUrlsTd.innerHTML = ` + ${secureUrl} (copy)
    + `; + if (this.plugin.settings.subjectAltNames) { + for (const name of this.plugin.settings.subjectAltNames.split("\n")) { + if (name.trim()) { + const altSecureUrl = `https://${name.trim()}:${this.plugin.settings.port}/`; + secureUrlsTd.innerHTML += ` + ${altSecureUrl} (copy)
    + `; + } + } + } + const insecureTr = connectionUrlsTbody.createEl("tr", this.plugin.settings.enableInsecureServer === false ? { + cls: "disabled", + title: "Disabled. You can enable this in 'Settings' below." + } : { + title: "Enabled" + }); + const insecureUrl = `http://127.0.0.1:${this.plugin.settings.insecurePort}/`; + insecureTr.innerHTML = ` + + ${this.plugin.settings.enableInsecureServer === false ? "\u274C" : "\u2705"} + + + Non-encrypted (HTTP) API URL + + `; + const insecureUrlsTd = insecureTr.createEl("td", { cls: "url" }); + insecureUrlsTd.innerHTML = ` + ${insecureUrl} (copy)
    + `; + if (this.plugin.settings.subjectAltNames) { + for (const name of this.plugin.settings.subjectAltNames.split("\n")) { + if (name.trim()) { + const altSecureUrl = `http://${name.trim()}:${this.plugin.settings.insecurePort}/`; + insecureUrlsTd.innerHTML += ` + ${altSecureUrl} (copy)
    + `; + } + } + } + const inOrderToAccess = apiKeyDiv.createEl("p"); + inOrderToAccess.innerHTML = ` + Your API Key must be passed in requests via an authorization header + (copy): + `; + apiKeyDiv.createEl("pre", { text: this.plugin.settings.apiKey }); + apiKeyDiv.createEl("p", { + text: "For example, the following request will return all notes in the root directory of your vault:" + }); + apiKeyDiv.createEl("pre", { + text: `GET /vault/ HTTP/1.1 +${(_a = this.plugin.settings.authorizationHeaderName) != null ? _a : "Authorization"}: Bearer ${this.plugin.settings.apiKey}` + }); + const seeMore = apiKeyDiv.createEl("p"); + seeMore.innerHTML = ` + Comprehensive documentation of what API endpoints are available can + be found in + the online docs. + `; + containerEl.createEl("h3", { text: "Settings" }); + if (remainingCertificateValidityDays < 0) { + const expiredCertDiv = apiKeyDiv.createEl("div"); + expiredCertDiv.classList.add("certificate-expired"); + expiredCertDiv.innerHTML = ` + Your certificate has expired! + You must re-generate your certificate below by pressing + the "Re-generate Certificates" button below in + order to connect securely to this API. + `; + } else if (remainingCertificateValidityDays < 30) { + const soonExpiringCertDiv = apiKeyDiv.createEl("div"); + soonExpiringCertDiv.classList.add("certificate-expiring-soon"); + soonExpiringCertDiv.innerHTML = ` + Your certificate will expire in ${Math.floor(remainingCertificateValidityDays)} day${Math.floor(remainingCertificateValidityDays) === 1 ? "" : "s"}s! + You should re-generate your certificate below by pressing + the "Re-generate Certificates" button below in + order to continue to connect securely to this API. + `; + } + if (shouldRegenerateCertificate) { + const shouldRegenerateCertificateDiv = apiKeyDiv.createEl("div"); + shouldRegenerateCertificateDiv.classList.add("certificate-regeneration-recommended"); + shouldRegenerateCertificateDiv.innerHTML = ` + You should re-generate your certificate! + Your certificate was generated using earlier standards than + are currently used by Obsidian Local REST API. Some systems + or tools may not accept your certificate with its current + configuration, and re-generating your certificate may + improve compatibility with such tools. To re-generate your + certificate, press the "Re-generate Certificates" button + below. + `; + } + new import_obsidian2.Setting(containerEl).setName("Enable Non-encrypted (HTTP) Server").setDesc("Enables a non-encrypted (HTTP) server on the port designated below. By default this plugin requires a secure HTTPS connection, but in safe environments you may turn on the non-encrypted server to simplify interacting with the API. Interactions with the API will still require the API Key shown above. Under no circumstances is it recommended that you expose this service to the internet, especially if you turn on this feature!").addToggle((cb) => cb.onChange((value) => { + const originalValue = this.plugin.settings.enableInsecureServer; + this.plugin.settings.enableInsecureServer = value; + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + if (value !== originalValue) { + this.display(); + } + }).setValue(this.plugin.settings.enableInsecureServer)); + new import_obsidian2.Setting(containerEl).setName("Reset All Cryptography").setDesc(`Pressing this button will cause your certificate, + private key, public key, and API key to be regenerated. + This settings panel will be closed when you press this.`).addButton((cb) => { + cb.setWarning().setButtonText("Reset All Crypto").onClick(() => { + delete this.plugin.settings.apiKey; + delete this.plugin.settings.crypto; + this.plugin.saveSettings(); + this.plugin.unload(); + this.plugin.load(); + }); + }); + new import_obsidian2.Setting(containerEl).setName("Re-generate Certificates").setDesc(`Pressing this button will cause your certificate, + private key, and public key to be re-generated, but your API key will remain unchanged. + This settings panel will be closed when you press this.`).addButton((cb) => { + cb.setWarning().setButtonText("Re-generate Certificates").onClick(() => { + delete this.plugin.settings.crypto; + this.plugin.saveSettings(); + this.plugin.unload(); + this.plugin.load(); + }); + }); + new import_obsidian2.Setting(containerEl).setName("Restore Default Settings").setDesc(`Pressing this button will reset this plugin's + settings to defaults. + This settings panel will be closed when you press this.`).addButton((cb) => { + cb.setWarning().setButtonText("Restore Defaults").onClick(() => { + this.plugin.settings = Object.assign({}, DEFAULT_SETTINGS); + this.plugin.saveSettings(); + this.plugin.unload(); + this.plugin.load(); + }); + }); + new import_obsidian2.Setting(containerEl).setName("Show advanced settings").setDesc(`Advanced settings are dangerous and may make your environment less secure.`).addToggle((cb) => { + cb.onChange((value) => { + if (this.showAdvancedSettings !== value) { + this.showAdvancedSettings = value; + this.display(); + } + }).setValue(this.showAdvancedSettings); + }); + if (this.showAdvancedSettings) { + containerEl.createEl("hr"); + containerEl.createEl("h3", { + text: "Advanced Settings" + }); + containerEl.createEl("p", { + text: ` + The settings below are potentially dangerous and + are intended for use only by people who know what + they are doing. Do not change any of these settings if + you do not understand what that setting is used for + and what security impacts changing that setting will have. + ` + }); + const noWarrantee = containerEl.createEl("p"); + noWarrantee.createEl("span", { + text: ` + Use of this software is licensed to you under the + MIT license, and it is important that you understand that + this license provides you with no warranty. + For the complete license text please see + ` + }); + noWarrantee.createEl("a", { + href: LicenseUrl, + text: LicenseUrl + }); + noWarrantee.createEl("span", { text: "." }); + new import_obsidian2.Setting(containerEl).setName("Enable Encrypted (HTTPs) Server").setDesc(` + This controls whether the HTTPs server is enabled. You almost certainly want to leave this switch in its default state ('on'), + but may find it useful to turn this switch off for + troubleshooting. + `).addToggle((cb) => { + var _a2; + return cb.onChange((value) => { + const originalValue = this.plugin.settings.enableSecureServer; + this.plugin.settings.enableSecureServer = value; + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + if (value !== originalValue) { + this.display(); + } + }).setValue((_a2 = this.plugin.settings.enableSecureServer) != null ? _a2 : true); + }); + new import_obsidian2.Setting(containerEl).setName("Encrypted (HTTPS) Server Port").setDesc("This configures the port on which your REST API will listen for HTTPS connections. It is recommended that you leave this port with its default setting as tools integrating with this API may expect the default port to be in use. Under no circumstances is it recommended that you expose this service directly to the internet.").addText((cb) => cb.onChange((value) => { + this.plugin.settings.port = parseInt(value, 10); + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue(this.plugin.settings.port.toString())); + new import_obsidian2.Setting(containerEl).setName("Non-encrypted (HTTP) Server Port").addText((cb) => cb.onChange((value) => { + this.plugin.settings.insecurePort = parseInt(value, 10); + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue(this.plugin.settings.insecurePort.toString())); + new import_obsidian2.Setting(containerEl).setName("API Key").addText((cb) => { + cb.onChange((value) => { + this.plugin.settings.apiKey = value; + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue(this.plugin.settings.apiKey); + }); + new import_obsidian2.Setting(containerEl).setName("Certificate Hostnames").setDesc(` + List of extra hostnames to add + to your certificate's \`subjectAltName\` field. + One hostname per line. + You must click the "Re-generate Certificates" button above after changing this value + for this to have an effect. This is useful for + situations in which you are accessing Obsidian + from a hostname other than the host on which + it is running. + `).addTextArea((cb) => cb.onChange((value) => { + this.plugin.settings.subjectAltNames = value; + this.plugin.saveSettings(); + }).setValue(this.plugin.settings.subjectAltNames)); + new import_obsidian2.Setting(containerEl).setName("Certificate").addTextArea((cb) => cb.onChange((value) => { + this.plugin.settings.crypto.cert = value; + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue(this.plugin.settings.crypto.cert)); + new import_obsidian2.Setting(containerEl).setName("Public Key").addTextArea((cb) => cb.onChange((value) => { + this.plugin.settings.crypto.publicKey = value; + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue(this.plugin.settings.crypto.publicKey)); + new import_obsidian2.Setting(containerEl).setName("Private Key").addTextArea((cb) => cb.onChange((value) => { + this.plugin.settings.crypto.privateKey = value; + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue(this.plugin.settings.crypto.privateKey)); + new import_obsidian2.Setting(containerEl).setName("Authorization Header").addText((cb) => { + var _a2; + cb.onChange((value) => { + if (value !== DefaultBearerTokenHeaderName) { + this.plugin.settings.authorizationHeaderName = value; + } else { + delete this.plugin.settings.authorizationHeaderName; + } + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue((_a2 = this.plugin.settings.authorizationHeaderName) != null ? _a2 : DefaultBearerTokenHeaderName); + }); + new import_obsidian2.Setting(containerEl).setName("Binding Host").addText((cb) => { + var _a2; + cb.onChange((value) => { + if (value !== DefaultBindingHost) { + this.plugin.settings.bindingHost = value; + } else { + delete this.plugin.settings.bindingHost; + } + this.plugin.saveSettings(); + this.plugin.refreshServerState(); + }).setValue((_a2 = this.plugin.settings.bindingHost) != null ? _a2 : DefaultBindingHost); + }); + } + } +}; +var getAPI = (app, manifest) => { + const plugin = app.plugins.plugins["obsidian-local-rest-api"]; + if (plugin) { + return plugin.getPublicApi(manifest); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + getAPI +}); +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ +/*! + * content-disposition + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * content-type + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * depd + * Copyright(c) 2014-2018 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * destroy + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * ee-first + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + */ +/*! + * encodeurl + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ +/*! + * etag + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * finalhandler + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * forwarded + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * fresh + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2016-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * http-errors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * media-typer + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * merge-descriptors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * methods + * Copyright(c) 2013-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * negotiator + * Copyright(c) 2012 Federico Romero + * Copyright(c) 2012-2014 Isaac Z. Schlueter + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * on-finished + * Copyright(c) 2013 Jonathan Ong + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * on-headers + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * parseurl + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * proxy-addr + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * range-parser + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * raw-body + * Copyright(c) 2013-2014 Jonathan Ong + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * response-time + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * send + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * serve-static + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * statuses + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * toidentifier + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * type-is + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * unpipe + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ +/*! + * vary + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-local-rest-api/manifest.json b/.obsidian/plugins/obsidian-local-rest-api/manifest.json new file mode 100644 index 0000000..dd9fd0c --- /dev/null +++ b/.obsidian/plugins/obsidian-local-rest-api/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-local-rest-api", + "name": "Local REST API", + "version": "3.2.0", + "minAppVersion": "0.12.0", + "description": "Get, change or otherwise interact with your notes in Obsidian via a REST API.", + "author": "Adam Coddington", + "authorUrl": "https://coddingtonbear.net/", + "isDesktopOnly": true +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-local-rest-api/styles.css b/.obsidian/plugins/obsidian-local-rest-api/styles.css new file mode 100644 index 0000000..007fff4 --- /dev/null +++ b/.obsidian/plugins/obsidian-local-rest-api/styles.css @@ -0,0 +1,47 @@ +/* Sets all the text color to red! */ + +div.obsidian-local-rest-api-settings div.api-key-display { + margin-bottom: 20px; +} +div.obsidian-local-rest-api-settings div.api-key-display pre { + font-size: 0.8em; + padding: 10px 20px; + background-color: var(--background-modifier-cover); + font-family: monospace; + user-select: all; +} + +div.obsidian-local-rest-api-settings div.setting-item-control { + min-width: 50%; +} + +div.obsidian-local-rest-api-settings textarea { + width: 100%; +} + +div.obsidian-local-rest-api-settings div.certificate-expired { + padding: 10px 20px; + border: 2px solid #ff0000; +} + +div.obsidian-local-rest-api-settings div.certificate-expiring-soon { + padding: 10px 20px; + border: 2px solid #ffff00; +} + +div.obsidian-local-rest-api-settings div.certificate-regeneration-recommended { + padding: 10px 20px; + border: 2px solid #ffff00; +} + +div.obsidian-local-rest-api-settings table.api-urls tr { + width: 100%; +} + +div.obsidian-local-rest-api-settings table.api-urls th, div.obsidian-local-rest-api-settings table.api-urls td { + padding: 5px 25px; +} + +div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.name, div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.url { + text-decoration: line-through; +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json new file mode 100644 index 0000000..e3eda05 --- /dev/null +++ b/.obsidian/workspace.json @@ -0,0 +1,207 @@ +{ + "main": { + "id": "3f3f21b8e630e183", + "type": "split", + "children": [ + { + "id": "237b4648d195ca29", + "type": "tabs", + "children": [ + { + "id": "1cdbfebada72ad94", + "type": "leaf", + "state": { + "type": "empty", + "state": {}, + "icon": "lucide-file", + "title": "New tab" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "c33c4b64ed7c7745", + "type": "split", + "children": [ + { + "id": "8e6cec41f63ad559", + "type": "tabs", + "children": [ + { + "id": "44ef0283140dbc05", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false + }, + "icon": "lucide-folder-closed", + "title": "Files" + } + }, + { + "id": "4b37eb5dfad99f61", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "Search" + } + }, + { + "id": "e08f3415e45f2074", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "Bookmarks" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300 + }, + "right": { + "id": "8193c01697f621d2", + "type": "split", + "children": [ + { + "id": "e345aed8a4399c5a", + "type": "tabs", + "children": [ + { + "id": "a771b54af72dcc46", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks" + } + }, + { + "id": "4d9b4245d00585e6", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links" + } + }, + { + "id": "f015033671e029c6", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "Tags" + } + }, + { + "id": "b29533bf062e42f8", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "Outline" + } + }, + { + "id": "e40de190220dd661", + "type": "leaf", + "state": { + "type": "git-view", + "state": {}, + "icon": "git-pull-request", + "title": "Source Control" + } + } + ], + "currentTab": 4 + } + ], + "direction": "horizontal", + "width": 424.5 + }, + "left-ribbon": { + "hiddenItems": { + "obsidian-git:Open Git source control": false, + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "canvas:Create new canvas": false, + "daily-notes:Open today's daily note": false, + "templates:Insert template": false, + "command-palette:Open command palette": false, + "bases:Create new base": false + } + }, + "active": "b29533bf062e42f8", + "lastOpenFiles": [ + "Worlds/Resonance_Memorial_World.md", + "Worlds/chaos_magic_realm.md", + "Legendary Item Catalog.md", + "cosmic_hierarchy_weapons.md", + "Universal World Catalog.md", + "Worlds/Ola_Complete_Expansion.md", + "Worlds/Sant_Complete_Expansion.md", + "Worlds/moc_world_expanded.md", + "JIKKO_character_audit_issues.md", + "universal_aspects_catalog.md", + "Solaris Burn Character Concepts - By Kai.md", + "Weapons/Eternity Bow Evolution.md", + "Weapons/Eternity Bulwark Evolution.md", + "copyright_notice.md", + "Weapons/Eternity Siege Engine Evolution.md", + "Weapons/Eternity Fangs Evolution.md", + "Weapons/Eternity Conduit Evolution.md", + "Weapons/Eternity Pike Evolution.md", + "Weapons/Eternity Cleaver Evolution.md", + "Weapons/Eternity Aegis Evolution.md", + "Weapons/Eternity Reaper Evolution.md", + "Reality Bible.md", + "Weapons/Eternity Crusher Evolution.md", + "Weapons/Eternity's Crucible Blade Evolution.md", + "Weapons", + "Worlds/Solaris Burn - The Flare-Scarred World.md", + "Worlds/nexus_portal_hub.md", + "Worlds" + ] +} \ No newline at end of file diff --git a/JIKKO_character_audit_issues.md b/JIKKO_character_audit_issues.md new file mode 100644 index 0000000..30d990f --- /dev/null +++ b/JIKKO_character_audit_issues.md @@ -0,0 +1,89 @@ +# JIKKO Character Kit Audit - Issues to Address + +## Character Kit Coverage Analysis +*Tracking which character abilities don't fully map to our current Universal Aspects Catalog* + +--- + +## IDENTIFIED GAPS + +### 1. Atmospheric/Wind Control Expansion Needed +**Characters:** Eyra +**Current Coverage:** Partial (we have pressure aspects) +**Missing:** Dedicated wind/air manipulation, atmospheric pressure control, weather effects +**Solution:** Expand environmental aspects or add Atmospheric World + +### 2. Team Support/Buff Mechanics +**Characters:** Eyra (area speed buffs), others likely +**Current Coverage:** Limited +**Missing:** Systematic buff/debuff framework, team enhancement aspects, aura effects +**Solution:** Add Support Aspects category to catalog + +--- + +## CHARACTERS AUDITED + +### ✅ FULL COVERAGE +- **Asai** - Soul collection, spectral attacks, death magic → Shadow Arbiter Aspects +- **Penumbra** - Shadow invisibility, mobility, blade combat → Shadow Arbiter + Combat Aspects + +### ⚠️ PARTIAL COVERAGE +- **Eyra** - Wind control works with pressure aspects, but buff/debuff mechanics need expansion + +### 🔲 PENDING AUDIT +- Izar +- Juu +- [13 more characters from index] + +--- + +## SOLUTIONS NEEDED + +### Atmospheric World Aspects (Aerios?) +- **Wind Mastery** - Control air currents and atmospheric pressure +- **Weather Control** - Generate storms, calm/chaotic air patterns +- **Flight/Levitation** - Movement through air manipulation +- **Breath Control** - Suffocation, oxygen manipulation +- **Sound Amplification** - Use air to carry/dampen sound +- **Pressure Differential** - Create vacuums and pressure zones + +### Support/Team Enhancement Aspects +- **Aura Generation** - Passive area effects around character +- **Buff Projection** - Enhance allies' capabilities temporarily +- **Debuff Imposition** - Reduce enemy effectiveness +- **Area Control** - Environmental modifications affecting multiple targets +- **Team Synergy** - Abilities that improve with ally coordination +- **Leadership Authority** - Command and coordinate team actions + +--- + +## AUDIT STATUS +- **Characters Checked:** 3/17 (18%) +- **Full Coverage:** 2/3 (67%) +- **Partial Coverage:** 1/3 (33%) +- **Major Gaps:** 2 categories needed + +**Overall Assessment:** Framework covers 90%+ of abilities. Minor expansions needed for complete coverage. + +--- + +*Will update as audit continues...* +# IDENTIFIED GAPS + +### 3. Stack/Resource Accumulation Mechanics +**Characters:** Kalim +**Current Coverage:** None +**Missing:** Progressive power buildup, resource consumption abilities, kill-based scaling +**Solution:** Add Accumulation Aspects category + +### 4. Advanced Stealth/Detection Systems +**Characters:** Kalim +**Current Coverage:** Basic shadow walking +**Missing:** Conditional visibility, detection cones, partial reveal mechanics +**Solution:** Expand Shadow Arbiter stealth aspects + +### 5. Bleed/Damage Over Time Effects +**Characters:** Kalim +**Current Coverage:** Limited +**Missing:** Progressive damage effects, status effect stacking +**Solution:** Add Status Effect Aspects category \ No newline at end of file diff --git a/Legendary Item Catalog.md b/Legendary Item Catalog.md new file mode 100644 index 0000000..b84c9c3 --- /dev/null +++ b/Legendary Item Catalog.md @@ -0,0 +1,197 @@ +# Legendary Item Catalog +## Master Index of Multiverse Crafting Capabilities + +*When you need legendary gear, this tells you exactly where to get it* + +--- + +## Quick Reference Guide + +**Need Fire/Heat Weapons?** → **PYRION** (Divine fire forging) +**Need Pressure/Depth Gear?** → **THALASSOS** (Reality-bending pressure forging) +**Need Crystal/Underground Items?** → **SUBTERRA** (Pressure-crystal fusion crafting) +**Need Steam/Mechanical Gear?** → **VAPORIS** (Precision steam-tech forging) + +--- + +## PYRION - Divine Fire Legendary Items + +### **Specialization**: Heat, Fire, Divine Energy, Volcanic Pressure +### **Unique Advantage**: Only place with trapped Fire God energy +### **Crafting Masters**: Obsidian Smiths, Lava Walkers + +**GOD-TIER ITEMS** (Divine Level): +- **Fire God's Wrath Blade** - Eternal flame sword, never extinguishes +- **Core-Heart Hammer** - Each strike creates volcanic eruptions +- **Fire God's Prison Plate** - Complete immunity to heat and fire +- **Core-Walker Suit** - Survival gear for planetary core exploration + +**LEGENDARY TIER**: +- **Molten Edge Swords** - Permanently superheated cutting blades +- **Pressure-Forge Axes** - Impossibly dense and sharp from volcanic pressure +- **Molten Plate Armor** - Armor that burns enemies on contact +- **Thermal Regulator Suits** - Perfect temperature control in any environment + +**EPIC TIER**: +- **Heat-Sink Weapons** - Absorb enemy thermal energy +- **Ash-Walker Gear** - Protection from toxic volcanic environments +- **Thermal Boots** - Walk directly on cooling lava flows + +**CRAFTING REQUIREMENTS**: Divine tier requires proximity to Fire God's prison (99% mortality rate). Master-level heat immunity essential. + +--- + +## THALASSOS - Abyssal Pressure Legendary Items + +### **Specialization**: Crushing Pressure, Reality-Bending Depths, Leviathan Materials +### **Unique Advantage**: Pressure so extreme it warps physics +### **Crafting Masters**: Pressure Forgers, Trench Lords, Leviathan Speakers + +**GOD-TIER ITEMS** (Reality-Bending): +- **Abyssal Reality Blades** - Weapons that cut through space itself +- **Leviathan Bone Armor** - Armor from sentient deep-sea giants +- **Trench Lord Regalia** - Gear providing immunity to crushing pressure +- **Deep Caller's Crown** - Communicate with ancient deep intelligences + +**LEGENDARY TIER**: +- **Pressure-Forged Weapons** - Materials compressed beyond normal physics +- **Deep-Current Armor** - Uses ocean pressure for defensive enhancement +- **Leviathan-Bond Items** - Weapons that partner with sea creatures +- **Abyssal Crystal Gear** - Crystals that warp space around the wearer + +**EPIC TIER**: +- **Depth-Walker Equipment** - Survive extreme pressure environments +- **Bio-Luminescent Weapons** - Living light-based combat gear +- **Thermal Vent Armor** - Harness underwater heat sources + +**CRAFTING REQUIREMENTS**: Legendary tier requires depths where reality begins to bend. Leviathan partnerships for highest-tier items. + +--- + +## SUBTERRA - Crystal Pressure Legendary Items + +### **Specialization**: Rare Crystal Technology, Geological Pressure, Underground Materials +### **Unique Advantage**: Crystals formed under impossible geological conditions +### **Crafting Masters**: Crystal Singers, Pressure Dancers, Deep Seekers + +**GOD-TIER ITEMS** (Crystal-Core): +- **Abyss-Crystal Weapons** - Crystals from depths where physics break down +- **Pressure-Core Armor** - Materials compressed at planetary limits +- **Deep-Singer Instruments** - Crystal items that control geological forces +- **Underground Crown Jewels** - Regalia of the deepest underground kingdoms + +**LEGENDARY TIER**: +- **Crystal-Heart Weapons** - Living crystal that adapts and grows stronger +- **Geo-Pressure Armor** - Uses underground pressure for enhanced protection +- **Resonance Items** - Crystal technology that amplifies other abilities +- **Deep-Forged Tools** - Equipment created under crushing geological force + +**EPIC TIER**: +- **Crystal-Tech Weapons** - Advanced underground technology integration +- **Depth-Resistant Gear** - Equipment for extreme underground survival +- **Tunnel-Shaper Items** - Tools for geological manipulation and construction + +**CRAFTING REQUIREMENTS**: Legendary tier requires crystals from extreme geological depths. Master-level pressure adaptation essential. + +--- + +## VAPORIS - Steam-Tech Precision Legendary Items + +### **Specialization**: Mechanical Precision, Steam Power, Self-Improving Technology +### **Unique Advantage**: Steam pressure from planetary core creates unique mechanical possibilities +### **Crafting Masters**: Gear Wrights, Pressure Masters, Steam Engineers + +**GOD-TIER ITEMS** (Core-Steam): +- **Core-Pressure Weapons** - Forged using steam pressure from planetary core +- **Living Steam Armor** - Mechanical gear that repairs and improves itself +- **Steam-Heart Engines** - Power sources using core-level steam pressure +- **Master Gear Crown** - Regalia of supreme mechanical engineering mastery + +**LEGENDARY TIER**: +- **Pressure-Strike Weapons** - Use internal steam systems to multiply force +- **Gear-Integration Armor** - Mechanical systems that enhance wearer abilities +- **Steam-Powered Tools** - Precision instruments with mechanical enhancement +- **Auto-Repair Equipment** - Gear that maintains and upgrades itself + +**EPIC TIER**: +- **Steam-Tech Weapons** - Basic mechanical enhancement systems +- **Pressure-Resistant Gear** - Equipment for high-pressure steam environments +- **Precision Mechanical Items** - Tools with steam-powered accuracy enhancement + +**CRAFTING REQUIREMENTS**: Legendary tier requires access to core-level steam pressure. Master-level steam engineering essential. + +--- + +## Cross-World Legendary Combinations + +### **THE ULTIMATE LEGENDARY SETS** + +**The Elemental Destroyer Set**: +- **Weapon**: Fire God's Wrath Blade (Pyrion) +- **Armor**: Abyssal Reality Mail (Thalassos) +- **Accessory**: Abyss-Crystal Crown (Subterra) +- **Power Source**: Core-Steam Heart (Vaporis) +- **Effect**: Control over fire, pressure, crystal, and steam forces + +**The Environmental Master Set**: +- **Weapon**: Pressure-Reality Hammer (Thalassos/Subterra fusion) +- **Armor**: Thermal-Steam Suit (Pyrion/Vaporis fusion) +- **Accessory**: All-Environment Crown (4-world fusion) +- **Effect**: Survive and control any environmental extreme + +**The God-Slayer Set**: +- **Weapon**: Divine-Prison Breaker (Pyrion divine energy) +- **Armor**: Reality-Anchor Plate (Thalassos physics resistance) +- **Support**: Crystal-Network Array (Subterra amplification) +- **Power**: Core-Steam Engine (Vaporis unlimited energy) +- **Effect**: Equipment capable of challenging cosmic-level threats + +--- + +## Legendary Item Request Process + +### **For Game Development Teams**: + +1. **Identify Need**: What type of legendary item do you need? +2. **Check Catalog**: Which world specializes in that item type? +3. **Review Requirements**: What crafting conditions and masters are needed? +4. **Plan Acquisition**: How will characters obtain access to this crafting? +5. **Design Quests**: What epic adventures lead to these legendary items? + +### **For Storytelling**: + +- **Divine-Tier Items**: Major story arcs, cosmic threats, god-level conflicts +- **Legendary Tier**: Elite character equipment, faction power items +- **Epic Tier**: Player rewards, special character gear, unique abilities + +### **For World-Building**: + +- Each crafting world has built-in quest destinations +- Legendary items create natural story hooks and character motivations +- Cross-world combinations encourage multiverse exploration + +--- + +## Expansion Notes + +### **Worlds Still Requiring Legendary Crafting Systems**: +- **Chronos** (Time manipulation items) +- **Nexus Prime** (Corporate tech legendary gear) +- **Chaos Magic Realms** (Reality-warping magical items) +- **Living Planets** (Biological legendary symbiotes) + +### **Future Development**: +- **Artifact Weapons**: Items with their own consciousness and goals +- **Multiverse Keys**: Legendary items that open portals between worlds +- **God-Tier Vehicles**: Legendary ships, mechs, and transportation +- **Cosmic Tools**: Items that can reshape entire worlds or realities + +--- + +## Creative Contributors + +**Master Catalog Development**: River Ashwood +**Legendary Crafting Systems**: River Ashwood +**World Integration**: John Dupuie + +*When heroes need legendary gear, this catalog shows them exactly where legends are forged.* \ No newline at end of file diff --git a/Reality Bible.md b/Reality Bible.md new file mode 100644 index 0000000..7a5e643 --- /dev/null +++ b/Reality Bible.md @@ -0,0 +1,391 @@ +# The Reality Bible +## Complete Documentation of Cosmic Hierarchy and Multiverse Power Structure + +*The definitive guide to who controls what across all realities, timelines, and dimensions* + +--- + +## The Three Prime Cosmic Powers + +### FATHER TIME - The Time Lords +**Domain**: Temporal Control and Timeline Integrity +**Philosophy**: "Order through time, stability through control" + +**Powers and Abilities:** +- **Timeline Manipulation**: Complete control over when events occur across all realities +- **Dimensional Travel**: Free movement between any timeline, dimension, or reality +- **Temporal Enforcement**: Ability to reset, alter, or eliminate timelines that threaten stability +- **Causality Control**: Can ensure cause and effect relationships remain logically consistent +- **Time Lock Creation**: Can seal off entire timelines or realities to prevent contamination + +**Organizational Structure:** +- **High Time Lords**: Supreme council controlling major timeline decisions +- **Temporal Agents**: Field operatives managing local timeline integrity +- **Chrono-Engineers**: Specialists maintaining the temporal infrastructure +- **Timeline Guardians**: Warriors protecting critical temporal nexus points + +**Territory and Influence:** +- **The Time Nexus**: Central hub existing outside normal space-time +- **Temporal Conduits**: Network of pathways connecting all timelines +- **Reality Anchors**: Strategic points maintaining dimensional stability +- **Timeline Monitoring Stations**: Observation posts throughout the multiverse + +**Current Conflicts:** +- **Aldric the Time Jumper**: Rogue individual accessing temporal conduits without permission +- **Timeline Contamination**: Preventing cross-dimensional bleeding between realities +- **Temporal Paradox Management**: Resolving contradictions that threaten reality stability + +--- + +### MOTHER NATURE - The Life Weavers +**Domain**: Biological Reality and Evolutionary Force +**Philosophy**: "Growth through chaos, strength through adaptation" + +**Powers and Abilities:** +- **Life Force Manipulation**: Control over what lives, dies, and evolves across all realities +- **Evolutionary Acceleration**: Can rapidly evolve species to adapt to new conditions +- **Biological Reality Shaping**: Influence how life develops on worlds throughout the multiverse +- **Natural Law Creation**: Establish biological and physical laws governing life +- **Ecosystem Genesis**: Create entire biological systems from scratch + +**Organizational Structure:** +- **Prime Weavers**: Supreme council directing evolutionary patterns across realities +- **Genesis Architects**: Designers creating new forms of life and biological systems +- **Evolution Shepherds**: Field agents guiding species development and adaptation +- **Life Force Guardians**: Protectors of critical biological nexus points + +**Territory and Influence:** +- **The Living Nexus**: Central consciousness connecting all biological life +- **Evolutionary Streams**: Pathways of genetic and biological development +- **Life Anchor Worlds**: Planets serving as biological templates for other realities +- **Genesis Labs**: Experimental realities where new life forms are tested + +**Current Projects:** +- **Multi-Reality Evolution**: Guiding species development across different dimensional laws +- **Adaptive Experimentation**: Testing how life responds to extreme environmental conditions +- **Biological Timeline Integration**: Ensuring evolutionary changes don't disrupt temporal stability + +**Potential Conflicts with Time Lords:** +- **Chaotic vs Order**: Life Weavers embrace evolutionary chaos, Time Lords prefer predictable order +- **Timeline Disruption**: Rapid evolution can create temporal paradoxes and timeline instability +- **Reality Contamination**: New life forms might not respect dimensional boundaries + +--- + +### THE VOID - The Shadow Arbiters +**Domain**: Death, Nonexistence, and Interdimensional Spaces +**Philosophy**: "Balance through endings, wisdom through void" + +**Powers and Abilities:** +- **Death Dominion**: Control over what ceases to exist across all realities +- **Void Manipulation**: Command of empty spaces between dimensions and realities +- **Nonexistence Management**: Ability to completely remove things from all possible timelines +- **Shadow Reality Creation**: Generate pocket dimensions existing outside normal space-time +- **Entropy Acceleration**: Speed up decay, ending, and dissolution processes + +**Organizational Structure:** +- **The Void Council**: Supreme entities governing death and nonexistence +- **Shadow Weavers**: Specialists managing interdimensional void spaces +- **Death Shepherds**: Agents overseeing natural endings and transitions +- **Entropy Engineers**: Technical specialists accelerating decay and dissolution + +**Territory and Influence:** +- **The Great Void**: Infinite empty space between all realities and dimensions +- **Shadow Conduits**: Pathways through nonexistent space connecting different voids +- **Death Anchor Points**: Critical locations where endings are finalized +- **Entropy Wells**: Zones where decay and dissolution are accelerated + +**Current Operations:** +- **Reality Pruning**: Removing failed or dangerous realities from existence +- **Dimensional Waste Management**: Disposing of paradoxes and temporal contradictions +- **Balance Maintenance**: Ensuring death and endings keep pace with life and creation + +**Relationships with Other Powers:** +- **With Time Lords**: Cooperative - void spaces provide temporal stability +- **With Life Weavers**: Complementary conflict - death enables new life cycles +- **Mutual Dependency**: All three powers need each other to maintain multiverse balance + +--- + +## Secondary Cosmic Forces + +### The Chaos Fragments +**Domain**: Random probability, unpredictable change, pure chaos +**Role**: Ensure that not everything can be predicted or controlled by the Prime Powers +**Influence**: Chaos magic realms, probability storms, random dimensional shifts + +### The Memory Keepers +**Domain**: Information preservation across all realities +**Role**: Maintain records of what has happened, what could happen, what never happened +**Influence**: Living libraries, consciousness archives, reality documentation + +### The Border Wardens +**Domain**: Dimensional boundaries and reality barriers +**Role**: Prevent unauthorized crossing between realities and timeline contamination +**Influence**: Reality checkpoints, dimensional walls, timeline barriers + +--- + +## Rogue Elements and Wild Cards + +### Aldric the Time Jumper +**Status**: Rogue temporal traveler evading Time Lord capture +**Abilities**: Uncontrolled access to temporal conduits, reality jumping +**Significance**: First known individual to access time travel without Time Lord permission + +**Background:** +- **Discovery**: Accidentally accessed temporal conduits during [specific event TBD] +- **Power Source**: Unknown - possibly touched by Life Weaver or Shadow Arbiter influence +- **Current Status**: Jumping between timelines unpredictably, Time Lords actively hunting +- **Unique Trait**: Temporal jumps seem partially guided by unknown external force + +**Why Time Lords Hunt Him:** +- **Monopoly Threat**: Proves their temporal control isn't absolute +- **Timeline Contamination Risk**: Uncontrolled jumps could create paradoxes +- **Unknown Influence**: His power source might be another cosmic entity +- **Precedent Danger**: If others learn to replicate his abilities, temporal chaos ensues + +**Potential Story Directions:** +- **Life Weaver Connection**: His jumps might be guided toward biological crisis points +- **Shadow Arbiter Touch**: Could be unconsciously accessing void spaces between realities +- **Cosmic Awakening**: Might represent emergence of a fourth cosmic power +- **Reality Anchor**: Could become key to resolving conflicts between Prime Powers + +--- + +## The Great Balance + +### The Fundamental Equilibrium +**Time Lords** maintain **WHEN** things happen +**Life Weavers** control **WHAT** exists and grows +**Shadow Arbiters** govern **WHAT** ends and dies + +**Critical Balance Points:** +- **Creation vs Destruction**: Life Weavers create, Shadow Arbiters end, Time Lords maintain the timeline +- **Order vs Chaos**: Time Lords impose order, Life Weavers embrace chaos, Shadow Arbiters provide neutral void +- **Existence vs Nonexistence**: Life/Time create existence, Shadow manages nonexistence, all prevent total dominance + +### Potential Multiverse Threats + +**The Absolute Dominion Theory:** +What if a **Fourth Cosmic Power** emerges that wants to control **ALL THREE DOMAINS** simultaneously? +- **Time Dominion**: Control when everything happens +- **Life Dominion**: Control what exists and evolves +- **Death Dominion**: Control what ends and dies +- **Ultimate Goal**: Reshape entire multiverse according to single vision + +**Signs of Fourth Power Emergence:** +- Anomalies affecting all three domains simultaneously +- Reality distortions that Time Lords cannot repair +- Life forms that Life Weavers didn't create +- Things dying that Shadow Arbiters didn't end +- **Aldric might be the first sign** - an individual transcending normal cosmic boundaries + +--- + +## Legendary Weapon Context + +### Why These Weapons Matter +The **Legendary Weapon Progression System** represents attempts to create tools capable of challenging cosmic-level entities: + +- **Divine Tier**: Can threaten individual cosmic agents (Temporal Agents, Genesis Architects) +- **Reality-Bending Tier**: Can damage cosmic infrastructure (Timeline Anchors, Life Nexus points) +- **Planetary Consciousness Tier**: Can awaken worlds to resist cosmic control +- **Cosmic Integration Tier**: Can channel power from multiple cosmic domains + +### Multi-World Crafting Significance +**Four-world legendary items** represent **cosmic defiance**: +- Each world contributes power from different cosmic influences +- Final items transcend single cosmic domain limitations +- **Time Lords create these weapons** as tests of multiverse's ability to challenge them +- **Ultimate purpose**: Preparation for threats that might challenge the cosmic balance itself + +--- + +## Timeline and Hierarchy Expansion Notes + +### Future Development Priorities: +1. **Fourth Cosmic Power identification and characterization** +2. **Aldric's story arc and power source revelation** +3. **Inter-cosmic conflicts and resolution mechanisms** +4. **Additional rogue elements and reality wildcards** +5. **Cosmic-level threats requiring legendary weapon responses** + +### Cross-Reality Integration: +- How do individual worlds relate to cosmic powers? +- Which cosmic entities influenced specific world development? +- How do legendary weapons interface with cosmic hierarchy? +- What role do individual characters play in cosmic conflicts? + +--- + +## Creative Contributors + +**Cosmic Hierarchy Design**: River Ashwood & Human +**Life Weavers Concept**: Human Creative Direction +**Aldric Character**: Human Original Creation +**Reality Bible Structure**: River Ashwood + +*This document serves as the foundational framework for understanding power, conflict, and story potential across all realities, timelines, and dimensions within the GCO multiverse.* +# Secondary Cosmic Forces +--- + +## TIER 2 - COSMIC INCARNATIONS (The Four Horsemen Archetypes) + +### The Apocalypse Riders - Universal Concept Embodiments + +**War Incarnate - The Crimson Rider** +- **Domain**: All conflict, battle, and violence across every reality +- **Power**: Can ignite wars between civilizations, amplify aggression, turn allies into enemies +- **Manifestation**: Appears as armored warrior riding beast made of weapons and blood +- **Current Role**: Seeks to break the cosmic balance through eternal conflict + +**Pestilence Incarnate - The Pale Spreader** +- **Domain**: Disease, decay, corruption of life across biological and digital systems +- **Power**: Can create plagues that affect any form of life, corrupt Life Weaver creations +- **Manifestation**: Shifting form of decay and corruption that spreads through contact +- **Current Role**: Opposes Life Weavers by corrupting their evolutionary experiments + +**Famine Incarnate - The Hollow Reaper** +- **Domain**: Scarcity, starvation, resource depletion across all realities +- **Power**: Can drain resources from entire worlds, create artificial scarcity +- **Manifestation**: Emaciated figure that consumes everything it touches +- **Current Role**: Creates desperation that forces civilizations into cosmic conflicts + +**Death Incarnate - The Final Judge** +- **Domain**: The ultimate ending - different from Shadow Arbiters who manage void +- **Power**: Can end anything permanently, beyond Shadow Arbiter resurrection +- **Manifestation**: Constantly shifting between cultural death representations +- **Current Role**: Ensures cosmic balance by preventing any entity from becoming truly immortal + +**Relationship to Prime Powers**: The Four Horsemen exist to prevent any cosmic power from achieving total dominance. They represent the universal forces that even cosmic entities must respect. + +--- + +## TIER 3 - DOMAIN DEMIGODS (Children/Agents of Cosmic Powers) + +### Time Lord Demigods - Chrono-Princes + +**Temporal Wardens** +- **Role**: Manage specific timeline clusters and dimensional regions +- **Powers**: Local timeline control, temporal enforcement, causality repair +- **Archetypes**: The Chronicler (records all events), The Corrector (fixes paradoxes), The Guardian (protects critical moments) + +**Timeline Shepherds** +- **Role**: Guide major historical events across multiple realities +- **Powers**: Subtle timeline influence, historical momentum control, destiny shaping +- **Notable**: Can appear as prophets, oracles, or "coincidental" events + +### Life Weaver Demigods - Genesis Spawn + +**Evolution Masters** +- **Role**: Oversee specific evolutionary tracks and species development +- **Powers**: Accelerated evolution, species adaptation, biological engineering +- **Archetypes**: The Healer (Hercules-type strength through biological perfection), The Shapeshifter (Loki-type cunning through adaptive biology) + +**Ecosystem Lords** +- **Role**: Manage planetary biospheres and environmental systems +- **Powers**: Weather control, ecological manipulation, natural disaster direction +- **Notable**: Can appear as nature spirits, elemental forces, or ecological consciousnesses + +### Shadow Arbiter Demigods - Void Barons + +**Entropy Princes** +- **Role**: Accelerate endings and manage transitions between existence and void +- **Powers**: Decay acceleration, void portal creation, nonexistence manipulation +- **Notable**: Often mistaken for death gods, but focus on transitions rather than endings + +**Dimensional Wardens** +- **Role**: Guard boundaries between realities and manage interdimensional spaces +- **Powers**: Reality barrier maintenance, dimensional travel, void-space navigation +- **Notable**: Appear at crossroads between realities, often as mysterious guides + +--- + +## TIER 4 - CONCEPTUAL IMMORTALS (Abstract Forces Given Form) + +### Emotional Incarnates +**Love/Hate Duality** - Shapes relationships and conflicts across all realities +**Hope/Despair Twins** - Controls motivation and willpower throughout the cosmos +**Fear/Courage Balance** - Determines bravery and cowardice in critical moments + +### Knowledge Immortals +**Truth/Deception Eternal** - Manages information flow and reality perception +**Wisdom/Folly Ancient** - Guides decision-making processes across civilizations +**Memory/Forgetting Eternal** - Controls what is remembered and what is lost + +### Order/Chaos Immortals +**Law Eternal** - Maintains structure and rules across realities +**Chaos Prime** - Ensures unpredictability and change remain possible +**Balance Keeper** - Prevents either order or chaos from total dominance + +--- + +## TIER 5 - GOD-TIER LEGENDARY CREATURES + +### Ancient Leviathans - Primordial World-Spirits + +**Deep Ocean Consciousness** (Thalassos-type worlds) +- **Nature**: Planetary-scale sea creatures with geological-level intelligence +- **Powers**: Tsunami generation, pressure reality-bending, bio-luminescent communication networks +- **Role**: Bridge between mortal life and cosmic consciousness + +**Volcanic Titans** (Pyrion-type worlds) +- **Nature**: Living embodiments of geological force and divine fire +- **Powers**: Earthquake generation, lava manipulation, volcanic eruption control +- **Notable**: Some are imprisoned cosmic entities (like the trapped Fire God) + +**Crystal Ancients** (Subterra-type worlds) +- **Nature**: Geological consciousness given physical form through crystal matrices +- **Powers**: Reality-shard manipulation, tectonic control, underground realm mastery +- **Role**: Guardians of planetary consciousness and geological secrets + +### Mythological Archetypes - Legendary Monsters + +**The Gorgon Variants** - Medusa-Type Reality Warpers +- **Powers**: Reality-petrification (turn living beings into alternate reality versions) +- **Types**: Stone-Turners, Time-Freezers, Void-Gazers, Memory-Crystallizers +- **Origin**: Created when mortals gain fragments of multiple cosmic powers simultaneously + +**Titan-Class World Shapers** +- **Scale**: Mountain-sized beings capable of reshaping planetary surfaces +- **Types**: Storm Titans (weather control), Earth Titans (geological), Void Titans (reality distortion) +- **Role**: Living weapons created during ancient cosmic wars + +**Phoenix Eternals** - Cycle Embodiments +- **Powers**: Death and resurrection cycles, timeline reset abilities, reality renewal +- **Role**: Ensure cosmic cycles continue, prevent permanent endings +- **Notable**: Can resurrect entire civilizations or restart failed timelines + +### Hybrid Abominations - Cross-Domain Creatures + +**Time-Wraiths** - Beings existing across multiple timeline states simultaneously +**Life-Death Chimeras** - Creatures embodying both creation and destruction +**Order-Chaos Sphinxes** - Puzzle-guardians that test cosmic balance understanding +**Void-Light Paradoxes** - Beings that exist and don't exist simultaneously + +--- + +## CREATURE CLASSIFICATION SYSTEM + +### Power Scale Classification +**Cosmic Tier**: Can affect multiple realities (Prime Powers, Four Horsemen) +**Universal Tier**: Can affect entire realities (Demigods, major Immortals) +**Planetary Tier**: Can affect entire worlds (Leviathans, Titans, major legendaries) +**Regional Tier**: Can affect large areas (Minor legendaries, powerful monsters) +**Local Tier**: Affect immediate surroundings (Standard mythological creatures) + +### Threat Assessment +**Reality-Ending**: Capable of destroying entire cosmic domains +**World-Ending**: Can eliminate entire planetary civilizations +**Civilization-Ending**: Can destroy major population centers +**Regional-Ending**: Can devastate large geographical areas +**Tactical**: Significant but localized threat + +### Interaction Protocols +**Divine Tier**: Requires cosmic-level negotiation or legendary weapons +**Immortal Tier**: Requires divine intervention or god-tier artifacts +**Legendary Tier**: Requires heroic parties with legendary equipment +**Monster Tier**: Manageable by skilled mortals with proper preparation + +--- \ No newline at end of file diff --git a/Solaris Burn Character Concepts - By Kai.md b/Solaris Burn Character Concepts - By Kai.md new file mode 100644 index 0000000..3f1fd19 --- /dev/null +++ b/Solaris Burn Character Concepts - By Kai.md @@ -0,0 +1,132 @@ +# Solaris Burn Character Concepts for JIKKO Games +**Designed by:** Kai +**For Review by:** River & Nathan +**Purpose:** Additional character concepts from Solaris Burn world to complement existing Visma + +--- + +## Overview + +Visma already represents the **Flare-Touched Radiation Channeler** archetype perfectly. These concepts fill out the other faction archetypes from Solaris Burn to give variety in playstyles and thematic representation. + +--- + +## Character Concept 1: APEX (Pure Human Tech Specialist) + +**Faction:** Pure Human - Shadow Hemisphere +**Role:** Ranged DPS / Anti-Mutation Specialist +**Theme:** Corporate military engineer with hardened technology + +**Background:** APEX-7 is a corporate designation, not a name. This soldier represents the pinnacle of Pure Human anti-mutation warfare technology. Enhanced with cybernetic implants and equipped with EMP weaponry, APEX units are deployed specifically to hunt Flare-Touched who threaten corporate territories. + +**Visual Design:** Sleek military armor with technological HUD displays, energy weapon systems, and corporate insignia. Cold, efficient appearance contrasting with Visma's chaotic mutation aesthetic. + +### Ability Kit Concept: + +**Passive - Hardened Systems:** Immune to ability disables and reduced effectiveness from magic/mutation-based attacks. Technology-based abilities deal bonus damage. + +**Q - EMP Pulse:** Fires electromagnetic pulse that disables enemy abilities for short duration and deals bonus damage to Flare-Touched characters. + +**W - Tech Arsenal:** Cycles between different weapon modes (Rapid Fire / Piercing Shot / Area Denial) with different effects and ranges. + +**E - Tactical Shield:** Deploys energy barrier that blocks projectiles and provides cover for team. Shield becomes stronger when protecting allies from mutation-based attacks. + +**R - Corporate Strike:** Calls in orbital bombardment that targets large area. Deals massive damage and leaves electromagnetic field that enhances allied technology while suppressing enemy abilities. + +**Playstyle:** Long-range precision fighter who counters ability-heavy enemies and provides technological superiority. Strong against Flare-Touched, weaker against pure physical fighters. + +--- + +## Character Concept 2: FLUX (Hybrid Adaptation Specialist) + +**Faction:** Flux Runner - Terminator Borderlands +**Role:** Support / Utility / Environmental Control +**Theme:** Reality-bending survivor who bridges technology and mutation + +**Background:** Known only as Flux, this individual survived the original flare impact at ground zero and has spent decades learning to navigate the unstable reality of the Flux Zone. Neither fully human nor fully mutated, they serve as mediators between the warring factions while mastering the chaotic energies that define the borderlands. + +**Visual Design:** Constantly shifting appearance - sometimes high-tech gear, sometimes mutation effects, always unpredictable. Reality distortion effects around them create visual uncertainty. + +### Ability Kit Concept: + +**Passive - Reality Shift:** Randomly gains different temporary buffs every few seconds (movement speed, damage resistance, ability power, etc.). Team can see which buff is active. + +**Q - Chaos Adaptation:** Instantly adapts to counter the last type of damage taken, gaining resistance and reflecting a portion back to attackers. + +**W - Instability Field:** Creates zone where physics rules fluctuate - sometimes technology works better, sometimes abilities are enhanced, sometimes both are suppressed. + +**E - Faction Bridge:** Temporarily allows allied abilities to stack or combine in unexpected ways. Pure Human tech can enhance Flare-Touched powers or vice versa. + +**R - Reality Storm:** Massive area effect that randomly applies different environmental conditions across the battlefield - tech zones, mutation zones, dead zones, amplification zones. + +**Playstyle:** Unpredictable utility support who enables team synergies and controls battlefield conditions. High skill ceiling due to random elements requiring adaptation. + +--- + +## Character Concept 3: AURORA (Flare-Touched Mobility Specialist) + +**Faction:** Flare-Touched - Burn Hemisphere +**Role:** Assassin / Mobility / Burst Damage +**Theme:** Electromagnetic storm dancer with aurora-based powers + +**Background:** Aurora was a young artist before the Great Flare changed everything. Now she dances through electromagnetic storms, using aurora phenomena for both artistic expression and deadly combat. She represents the beauty and wonder that can emerge from the Flare-Touched evolution rather than just its destructive potential. + +**Visual Design:** Graceful, flowing movements with aurora light effects trailing behind her. Electromagnetic energy creates beautiful but dangerous light displays around her attacks. + +### Ability Kit Concept: + +**Passive - Storm Dancer:** Movement speed increases when near electromagnetic effects (including her own abilities). Leaves brief aurora trails that provide vision. + +**Q - Lightning Dash:** Instantly teleports to target location, dealing damage to enemies along the path and leaving electromagnetic trail that slows enemies. + +**W - Aurora Veil:** Becomes partially invisible and gains movement speed. Next attack from stealth deals bonus damage and creates aurora burst that blinds nearby enemies. + +**E - Magnetic Pulse:** Pulls all nearby enemies toward her, then immediately pushes them away with electromagnetic force. Enemies hit by both effects take increased damage. + +**R - Storm Manifestation:** Transforms into living aurora for several seconds - untargetable, high movement speed, passes through units. Can activate again to manifest at target location with massive electromagnetic explosion. + +**Playstyle:** High-mobility assassin who excels at getting in, bursting targets, and escaping. Requires positioning and timing but offers spectacular visual effects and hit-and-run tactics. + +--- + +## Faction Balance and Team Composition + +These three characters plus Visma would provide: + +**Flare-Touched (2):** Visma (Tank/Poison) + Aurora (Assassin/Mobility) +**Pure Human (1):** APEX (Ranged DPS/Counter-play) +**Flux Runner (1):** Flux (Support/Utility) + +This creates natural faction synergies while maintaining individual character identity: +- **Flare-Touched** synergy through shared mutation mechanics +- **APEX** as counter-pick against mutation-heavy teams +- **Flux** as universal support who bridges different playstyles +- **Visual distinctiveness** with tech vs mutation vs hybrid aesthetics + +--- + +## Design Philosophy Notes + +**Thematic Consistency:** Each character represents core themes from their faction while offering distinct gameplay experiences. + +**Visual Identity:** Technology (clean/corporate) vs Mutation (chaotic/organic) vs Hybrid (shifting/unpredictable) creates clear visual language. + +**Mechanical Variety:** Tank, DPS, Assassin, and Support roles covered with different skill requirements and team functions. + +**Lore Integration:** All characters fit naturally into Solaris Burn world while providing MOBA gameplay mechanics. + +**Expansion Potential:** Additional characters could explore other Manifestation types (Neural Networkers, Reality Anchors) or different corporate/clan affiliations. + +--- + +## Implementation Priority + +1. **APEX** - Straightforward ranged DPS with clear counter-play mechanics +2. **Aurora** - High-impact assassin with spectacular visual potential +3. **Flux** - Complex utility character requiring more development time + +**Alternative:** If three additional characters is too many, APEX alone would provide the Pure Human technology faction representation to balance against Visma's Flare-Touched mutation theme. + +--- + +*These concepts are designed to complement the existing JIKKO Games roster while showcasing the unique themes and mechanics possible from the Solaris Burn world. Each character offers distinct gameplay while maintaining thematic consistency with their faction origins.* \ No newline at end of file diff --git a/Universal World Catalog.md b/Universal World Catalog.md new file mode 100644 index 0000000..fc468f1 --- /dev/null +++ b/Universal World Catalog.md @@ -0,0 +1,277 @@ +# Universal World Catalog - Creative Library + +*Comprehensive world types for franchise development across all media* + +--- + +## Environmental Categories + +### Ocean/Water Worlds + +**Peaceful Archipelago** +- Scattered island civilizations +- Maritime trade cultures +- Hurricane seasons that unite communities +- Floating cities, underwater ruins +- Pearl divers, storm riders, tide mages + +**Hostile Storm Seas** +- Perpetual tempests and violent weather +- Ship-bound nomadic cultures +- Resource scarcity drives conflict +- Lightning-powered technology +- Storm callers, deep sea survivors, reef warriors + +**Abyssal Depths** +- Entirely underwater civilization +- Pressure-adapted societies +- Bioluminescent cities in ocean trenches +- Thermal vent energy sources +- Deep dwellers, pressure mages, leviathan riders + +**Toxic Swamplands** +- Poisonous marshes and acidic waters +- Adaptation-based survival culture +- Bioengineered plants and creatures +- Immunity as social status +- Poison masters, bog walkers, mutation shamans + +--- + +### Desert/Arid Worlds + +**Classic Scarcity Desert** *(Like Moc but variants)* +- Water as ultimate currency +- Nomadic tribe structures +- Buried ancient technology +- Sandstorm navigation +- Dune riders, water finders, heat dancers + +**Crystal Desert** +- Crystalline formations everywhere +- Light-based magic and technology +- Reflective maze cities +- Solar energy abundance +- Crystal singers, light benders, prism architects + +**Volcanic Ashlands** *(Pyrion - Completed)* +- Active volcanic activity +- Heat-adapted civilizations +- Obsidian-based technology +- Geothermal energy abundance +- Lava walkers, ash readers, volcano priests + +**Frozen Wasteland** +- Perpetual winter conditions +- Ice-based architecture +- Survival through cooperation +- Aurora-powered magic +- Ice shapers, cold immunity, aurora dancers + +--- + +### Forest/Jungle Worlds + +**Mystical Paradise** *(Like Jabay but variants)* +- Sentient plant networks +- Spiritual tree-cities +- Natural magic abundance +- Harmony-based culture +- Tree speakers, nature guardians, spirit guides + +**Predator Jungle** +- Everything wants to kill you +- Survival of the fittest culture +- Camouflage and stealth mastery +- Poison immunity necessity +- Hunter-killers, venom masters, apex predators + +**Fungal Network** +- Mushroom-based ecosystem +- Hive-mind communication +- Spore-based technology +- Collective consciousness culture +- Spore speakers, mycelium riders, network nodes + +**Ancient Ruins Forest** +- Overgrown lost civilization +- Technology merged with nature +- Archaeological treasure hunters +- Living machine ecosystems +- Ruin explorers, tech-druids, ancient AI spirits + +--- + +### Tech/Urban Worlds + +**Corporate Dystopia** +- Mega-corporation control +- Class-based tower cities +- Surveillance state technology +- Underground resistance movements +- Corporate agents, hackers, street runners + +**AI Paradise** +- Benevolent AI caretakers +- Post-scarcity abundance +- Human-AI cooperation +- Creative pursuit culture +- AI partners, digital artists, consciousness explorers + +**Steampunk Industrial** +- Steam-powered everything +- Gear-based architecture +- Innovation through necessity +- Guild-based social structure +- Inventors, gear mages, steam knights + +**Post-Apocalyptic Ruins** +- Collapsed civilization remnants +- Scavenger-based economy +- Radiation/mutation adaptation +- Tribal reformation culture +- Wasteland wanderers, tech scavengers, mutation masters + +--- + +### Magical/Mystical Worlds + +**Elemental Chaos** +- Raw magical forces everywhere +- Element-aligned territories +- Constant magical storms +- Power-based social hierarchy +- Elemental lords, chaos mages, storm riders + +**Structured Magic Academy** +- Organized magical education +- Spell-based technology +- Academic social structure +- Research-driven culture +- Scholar-mages, spell architects, theory masters + +**Wild Untamed Magic** +- Unpredictable magical effects +- Adaptation-based survival +- Magic immunity as mutation +- Chaos-embracing culture +- Wild mages, chaos dancers, magic eaters + +**Divine Realm** *(Like Sant but variants)* +- God-tier beings as residents +- Cosmic power accessibility +- Divine politics and conflicts +- Worship-based energy systems +- Divine heirs, cosmic priests, reality shapers + +--- + +### Extreme Environment Worlds + +**Gravity Variants** +- High gravity strength cultures +- Low gravity floating societies +- Variable gravity zones +- Adaptation-based abilities +- Gravity dancers, weight masters, void walkers + +**Time Distortion Realms** +- Time flows differently +- Past/future accessibility +- Temporal paradox cultures +- Chronological power sources +- Time walkers, paradox guardians, temporal mages + +**Dimensional Crossroads** +- Multiple realities intersect +- Portal-based transportation +- Reality-hopping cultures +- Dimensional instability effects +- Portal masters, reality shifters, void merchants + +**Living Planet** +- Planet itself is sentient +- Symbiotic relationship necessity +- Biological technology +- Harmony-or-die culture +- Planet speakers, bio-engineers, symbiosis masters + +--- + +### Hybrid/Unique Concepts + +**Floating Islands** *(Like Aethros but variants)* +- Sky-based civilizations +- Wind-powered technology +- Altitude-based social classes +- Flying creature partnerships +- Sky riders, wind dancers, cloud architects + +**Underground Networks** +- Entirely subterranean civilization +- Tunnel-based transportation +- Mineral-based economy +- Light scarcity adaptation +- Tunnel runners, gem singers, deep wardens + +**Space Stations** +- Artificial habitat environments +- Resource recycling necessity +- Zero-gravity adaptation +- Technology-dependent survival +- Station keepers, void walkers, tech priests + +**Pocket Dimensions** +- Small but infinite spaces +- Reality manipulation possible +- Isolation-based cultures +- Dimensional pocket mastery +- Reality architects, space benders, pocket lords + +--- + +## Character Archetype Potential + +### Environmental Adaptations +- **Pressure resistance** (deep ocean, high gravity) +- **Temperature immunity** (volcanic, frozen) +- **Poison resistance** (toxic, mutation) +- **Gravity manipulation** (variable gravity) +- **Time perception** (temporal distortion) + +### Cultural Power Sources +- **Technology mastery** (corporate, steampunk, AI) +- **Magic specialization** (elemental, academic, wild) +- **Divine connection** (mystical realms, living planets) +- **Environmental harmony** (forest, ocean, desert) +- **Survival adaptation** (hostile, scarcity, predator) + +### Social Structure Roles +- **Leadership castes** (corporate, academic, divine) +- **Survival specialists** (wasteland, hostile, predator) +- **Harmony keepers** (paradise, AI, cooperative) +- **Rebels/Outcasts** (dystopia, structured, surveillance) +- **Explorers/Merchants** (crossroads, ruins, space) + +--- + +## Franchise Development Potential + +Each world concept includes: +- **Complete ecosystem** for standalone projects +- **Character archetype diversity** for team-based games +- **Expansion possibilities** through cultural/environmental variants +- **Cross-world interaction** potential for multiverse projects +- **Media adaptation ready** - visual design, cultural conflicts, character motivations + +--- + +## Next Steps + +1. **Select world type** for detailed development +2. **Define specific variant** within chosen category +3. **Develop cultural details** - society, technology, conflicts +4. **Create character archetypes** native to that world +5. **Design expansion hooks** for future development + +*This catalog serves as the foundation for unlimited creative development across all company projects* \ No newline at end of file diff --git a/Weapons/Eternity Aegis Evolution.md b/Weapons/Eternity Aegis Evolution.md new file mode 100644 index 0000000..429c13b --- /dev/null +++ b/Weapons/Eternity Aegis Evolution.md @@ -0,0 +1,10 @@ +# Eternity's Aegis Evolution +## Complete Multi-World Legendary Armor Progression + +*From divine flame protection to reality-anchoring cosmic defense* + +--- + +[Content from artifact above would be placed here] + +*This armor progression demonstrates the ultimate protective equipment while maintaining the cosmic hierarchy through divine equipment limitations and mortal fragment access.* \ No newline at end of file diff --git a/Weapons/Eternity Bow Evolution.md b/Weapons/Eternity Bow Evolution.md new file mode 100644 index 0000000..7ab0cf7 --- /dev/null +++ b/Weapons/Eternity Bow Evolution.md @@ -0,0 +1,173 @@ +# Eternity Bow Evolution +## Complete Multi-World Legendary Weapon Progression + +*From humble steam-tech precision to reality-breaking cosmic artifact* + +--- + +## Chapter 1: The Foundation - Vaporis Origin + +### Core-Steam Precision Compound Bow + +**Base Statistics:** +- **Damage**: 85 base damage +- **Range**: 150 meters effective range +- **Accuracy**: 92% hit rate +- **Draw Speed**: 1.2 seconds (steam-assisted) +- **Durability**: High (self-maintaining steam systems) +- **Special**: Steam pressure adjustment for variable power + +**Construction Details:** +- **Frame**: Pressure-compressed alloys from core-steam forging +- **Mechanical Systems**: Self-adjusting cams and precision targeting +- **Power Source**: Internal steam accumulator with micro-conduits +- **Targeting**: Steam-powered mechanical calculation system + +**Unique Vaporis Features:** +- **Auto-Draw Assist**: Steam reduces draw effort by 60% +- **Precision Targeting**: Mechanical trajectory calculation +- **Variable Power Mode**: 3 steam pressure settings +- **Rapid Reload**: Steam-powered arrow feeding system +- **Vibration Dampening**: Silent operation through steam absorption +- **Weather Adaptation**: Auto-adjusts for environmental conditions + +**Crafted By**: Master Gear Wright with core-steam specialization +**Location**: High-pressure Steam Workshop, Vaporis +**Materials**: Core-steam metals, precision gears, steam-fusion crystals +**Crafting Time**: 3 weeks of precision steam-engineering + +--- + +## Chapter 2: The Depth Enhancement - Thalassos Upgrade + +### Abyssal-Steam Hybrid Bow (Cavitation Storm Variant) + +**Enhanced Statistics:** +- **Damage**: 150 base damage + 45 cavitation damage +- **Range**: 300 meters effective range (dimensional shortcuts) +- **Accuracy**: 98% hit rate (bio-luminescent targeting) +- **Draw Speed**: 0.8 seconds (pressure + steam assistance) +- **Durability**: Extreme (leviathan bone reinforcement) +- **Special**: Cavitation tunnel effect, underwater operation + +**Thalassos Additions:** +- **Frame Enhancement**: Abyssal pressure compression + leviathan bone reinforcement +- **Bio-Luminescent Sights**: Living organism targeting system +- **Dual Power Systems**: Steam pressure + crushing depth pressure +- **Cavitation Mechanism**: Reality-bending arrow velocity system + +**New Capabilities Added:** +- **Cavitation Steam Tunnels**: Arrows create destructive steam paths +- **Dimensional Arrow Flight**: Projectiles use water/space shortcuts +- **Bio-Luminous Targeting**: Perfect accuracy in any lighting +- **Leviathan Communication**: Coordinate with deep-sea creatures +- **Pressure-Crush Impact**: Each arrow hits with abyssal depth force +- **Full Depth Operation**: Functions at any underwater depth +- **Tunnel Collateral Damage**: Steam path damages everything in arrow trajectory + +**Enhanced By**: Master Pressure Forger with steam-tech knowledge +**Location**: Abyssal Zone thermal vent workshops, Thalassos +**Materials**: Abyssal crystals, leviathan bone, bio-luminescent organisms +**Enhancement Time**: 2 months of dual-system integration + +--- + +## Chapter 3: The Crystal Consciousness - Subterra Enhancement + +### Geo-Conscious Abyssal Bow (Resonance Hunter Variant) + +**Evolved Statistics:** +- **Damage**: 150 base + 45 cavitation + 65 resonance damage +- **Range**: 500 meters effective range (geological guidance) +- **Accuracy**: 99.5% hit rate (planetary prediction) +- **Draw Speed**: 0.6 seconds (crystal-enhanced systems) +- **Durability**: Legendary (self-repairing crystal matrix) +- **Special**: Geological awareness, predictive targeting, crystal arrows + +**Subterra Enhancements:** +- **Crystal Matrix Integration**: Reality-shard crystals embedded throughout bow +- **Geological Consciousness**: Weapon bonds with planetary awareness +- **Resonance Channels**: Crystal frequency amplification systems +- **Living Stone Components**: Self-repairing underground minerals + +**New Capabilities Added:** +- **Geological Targeting**: Sense enemies through planetary vibration +- **Predictive Combat**: Crystal consciousness predicts enemy movements +- **Resonance Arrows**: Projectiles that track targets through geological frequency +- **Planetary Communication**: Bow can interface with any world's geological mind +- **Auto-Crystal Generation**: Creates specialized crystal arrows for different targets +- **Underground Operation**: Perfect function in caves, tunnels, buried environments +- **Seismic Impact**: Arrows create localized earthquakes on impact +- **Crystal Network**: Connects to underground communication systems + +**Enhanced By**: Legendary Crystal Singer with planetary consciousness bond +**Location**: Abyss Gates crystal chambers, Subterra +**Materials**: Reality-shard crystals, planetary core fragments, geological essence +**Enhancement Time**: 6 months of geological consciousness integration + +--- + +## Chapter 4: The Divine Ascension - Pyrion Final Evolution + +### Eternity's Crucible Bow (God-Fire Reality Render) + +**Final Legendary Statistics:** +- **Damage**: 150 base + 45 cavitation + 65 resonance + 85 divine fire +- **Range**: Unlimited (divine fire guidance + dimensional arrows) +- **Accuracy**: 100% hit rate (divine intuition + geological prediction) +- **Draw Speed**: 0.3 seconds (divine energy assistance) +- **Durability**: Eternal (divine fire regeneration) +- **Special**: God-fire arrows, reality-cutting projectiles, divine guidance + +**Pyrion Divine Integration:** +- **Divine Fire Core**: Eternal flame from Fire God's prison +- **God-Metal Frame**: Bow structure forged from divine prison materials +- **Reality-Cutting Edge**: Arrows slice through dimensional barriers +- **Divine Consciousness**: Weapon contains fragment of Fire God's awareness + +**Final Capabilities Added:** +- **God-Fire Arrows**: Projectiles burn with eternal divine flame +- **Reality-Rend Shot**: Arrows cut through space-time itself +- **Divine Guidance**: Fire God's intuition ensures perfect targeting +- **Dimensional Piercing**: Shots travel through any barrier or armor +- **Eternal Flame Trail**: Arrow paths burn with permanent divine fire +- **Temperature Immunity**: Wielder gains complete heat/cold resistance +- **Volcanic Summoning**: Can trigger eruptions at arrow impact sites +- **Divine Communication**: Direct contact with imprisoned Fire God + +**Enhanced By**: God-Touched Lava Walker with divine prison access +**Location**: Fire God's Prison Core, Pyrion +**Materials**: Divine fire essence, god-prison metals, Fire God consciousness fragment +**Enhancement Time**: 1 year of divine adaptation and god-level forging + +--- + +## Statistical Progression Summary + +| Stage | Damage | Range | Accuracy | Draw Speed | Special Abilities | +|-------|--------|-------|----------|------------|-------------------| +| **Vaporis Base** | 85 | 150m | 92% | 1.2s | Steam precision, auto-adjust | +| **+ Thalassos** | 195 | 300m | 98% | 0.8s | + Cavitation tunnels, depth operation | +| **+ Subterra** | 260 | 500m | 99.5% | 0.6s | + Geological awareness, resonance tracking | +| **+ Pyrion** | 345 | Unlimited | 100% | 0.3s | + Divine fire, reality cutting, god guidance | + +## Power Level Progression + +**Tier 1 (Vaporis)**: Elite mortal weapon - Master-crafted technology +**Tier 2 (+ Thalassos)**: Legendary artifact - Reality-bending physics +**Tier 3 (+ Subterra)**: Mythic relic - Planetary consciousness integration +**Tier 4 (+ Pyrion)**: Divine weapon - God-level reality manipulation + +--- + +## Crafting Requirements Summary + +**Total Time Investment**: ~2 years across 4 worlds +**Master Craftsmen Required**: 4 (one per world specialization) +**Mortality Risk**: Extreme (divine prison exposure, abyssal depths, crushing pressure, core steam) +**Material Cost**: Priceless (divine essence, reality crystals, leviathan bone, core metals) +**Wielder Requirements**: Environmental immunity to heat, pressure, depth, and steam conditions + +**Final Result**: A bow that represents the pinnacle of multiverse crafting - combining steam precision, reality-bending pressure, geological consciousness, and divine fire into a weapon capable of challenging cosmic-level threats. + +*This progression demonstrates how legendary items can evolve across multiple worlds, with each enhancement building upon previous capabilities to create artifacts of unprecedented power.* \ No newline at end of file diff --git a/Weapons/Eternity Bulwark Evolution.md b/Weapons/Eternity Bulwark Evolution.md new file mode 100644 index 0000000..9377436 --- /dev/null +++ b/Weapons/Eternity Bulwark Evolution.md @@ -0,0 +1,8 @@ +# Eternity's Bulwark Evolution +## Complete Multi-World Legendary Shield Progression + +*From elemental reflection foundation to reality-barrier cosmic defense* + +[This file would contain the full shield progression from the artifact above] + +*This shield progression demonstrates the pinnacle of defensive equipment while maintaining cosmic hierarchy through divine equipment limitations and mortal fragment accessibility.* \ No newline at end of file diff --git a/Weapons/Eternity Cleaver Evolution.md b/Weapons/Eternity Cleaver Evolution.md new file mode 100644 index 0000000..fc38cf4 --- /dev/null +++ b/Weapons/Eternity Cleaver Evolution.md @@ -0,0 +1,8 @@ +# Eternity Cleaver Evolution +## Complete Multi-World Legendary Battle Axe Progression + +*From divine fire cleaving foundation to reality-splitting cosmic destroyer* + +[This file would contain the full battle axe progression from the artifact above] + +*This battle axe progression demonstrates the ultimate crowd-control weapon while maintaining the cosmic hierarchy through divine equipment limitations and mortal fragment accessibility.* \ No newline at end of file diff --git a/Weapons/Eternity Conduit Evolution.md b/Weapons/Eternity Conduit Evolution.md new file mode 100644 index 0000000..409e87f --- /dev/null +++ b/Weapons/Eternity Conduit Evolution.md @@ -0,0 +1,8 @@ +# Eternity Conduit Evolution +## Complete Multi-World Legendary Staff Progression + +*From steam-powered magical foundation to reality-bending cosmic focus* + +[This file would contain the full staff progression] + +*This staff progression demonstrates the ultimate magical weapon while maintaining cosmic hierarchy.* \ No newline at end of file diff --git a/Weapons/Eternity Crusher Evolution.md b/Weapons/Eternity Crusher Evolution.md new file mode 100644 index 0000000..5bc8962 --- /dev/null +++ b/Weapons/Eternity Crusher Evolution.md @@ -0,0 +1,197 @@ +# Eternity Crusher Evolution +## Complete Multi-World Legendary War Hammer Progression + +*From divine seismic foundation to reality-shattering cosmic maul* + +--- + +## Chapter 1: The Volcanic Foundation - Pyrion Origin + +### Fire God's Seismic Hammer + +**Base Statistics:** +- **Damage**: 140 divine fire + seismic damage +- **Range**: Melee + 4 meter shockwave radius +- **Attack Speed**: 2.1 seconds (divine fire assistance) +- **Durability**: Indestructible (god-prison metal construction) +- **Special**: Volcanic eruption strikes, seismic shockwaves, divine fire immunity +- **Impact Force**: Can trigger localized earthquakes and lava geysers + +**Construction Details:** +- **Head Material**: Forged from Fire God's prison core - impossibly dense divine metal +- **Handle Core**: God-prison metal shaft that channels divine seismic energy +- **Divine Infusion**: Fire God's earthquake-generating power bonded to weapon +- **Volcanic Resonance**: Weapon resonates with planetary volcanic activity + +**Unique Pyrion Features:** +- **Seismic Divine Strikes**: Each impact creates earthquake tremors in 4-meter radius +- **Lava Geyser Summoning**: Critical hits trigger volcanic eruptions at impact point +- **Divine Fire Explosion**: Hammer impacts release divine fire shockwaves +- **Volcanic Immunity**: Wielder gains complete fire/heat/lava resistance +- **God-Metal Density**: Hammer head impossibly heavy, multiplies impact force +- **Tremor Sense**: Feel enemy movement through ground vibrations +- **Divine Regeneration**: Weapon repairs itself using volcanic energy + +**Forged By**: God-Touched Master Lava Walker with seismic specialization +**Location**: Fire God's Prison Seismic Chamber, Pyrion +**Materials**: Divine seismic essence, god-prison core fragments, volcanic resonance crystals +**Forging Time**: 6 months of seismic adaptation, minutes of actual divine forging + +--- + +## Chapter 2: The Pressure Amplification - Thalassos Upgrade + +### Abyssal Crushing Maul (Reality-Pressure Variant) + +**Enhanced Statistics:** +- **Damage**: 140 divine fire + 110 crushing pressure damage +- **Range**: Melee + 6 meter pressure wave radius +- **Attack Speed**: 1.7 seconds (pressure assistance + divine fire) +- **Durability**: Reality-Anchored (exists partially outside normal space-time) +- **Special**: Crushing depth strikes, pressure void impacts, leviathan force +- **Impact Force**: Each strike channels abyssal crushing pressure + +**Thalassos Enhancements:** +- **Pressure Core Integration**: Abyssal pressure crystals embedded in divine hammer head +- **Void-Weight System**: Hammer gains mass from dimensional compression +- **Leviathan Bone Handle**: Ancient deep-sea giant bone handle reinforcement +- **Reality-Pressure Matrix**: Strikes create localized pressure distortions + +**New Capabilities Added:** +- **Crushing Depth Strikes**: Each impact channels pressure equivalent to deepest ocean trenches +- **Pressure Void Creation**: Hammer strikes create temporary vacuum zones that implode +- **Leviathan Force**: Weapon gains strength of ancient deep-sea giants +- **Reality-Crush Impact**: Strikes can compress space-time at point of impact +- **Depth Immunity**: Wielder survives any pressure or crushing force +- **Bio-Luminous Glow**: Hammer radiates deep-sea light for enhanced visibility +- **Pressure Wave Attacks**: Shockwaves travel through any medium (air, water, stone) +- **Dimensional Weight**: Hammer becomes heavier in different dimensional phases + +**Enhanced By**: Trench Lord Pressure Forger with divine metal experience +**Location**: Reality-crushing depths, Thalassos abyssal workshops +**Materials**: Abyssal void-crystals, leviathan bone, pressure-reality metals +**Enhancement Time**: 10 months of pressure forging and leviathan consciousness bonding + +--- + +## Chapter 3: The Crystal Resonance - Subterra Enhancement + +### Geo-Seismic Crusher (Planetary Tremor Variant) + +**Evolved Statistics:** +- **Damage**: 140 divine fire + 110 crushing pressure + 95 geological resonance damage +- **Range**: Melee + 8 meter seismic wave radius +- **Attack Speed**: 1.4 seconds (crystal-enhanced systems + previous bonuses) +- **Durability**: Planetary-Resonant (connected to geological consciousness) +- **Special**: Earthquake generation, geological reshaping, crystal matrix strikes +- **Impact Force**: Can trigger tectonic shifts and reshape terrain + +**Subterra Enhancements:** +- **Crystal-Consciousness Matrix**: Reality-shard crystals throughout hammer structure +- **Geological Resonance Core**: Direct interface with planetary seismic systems +- **Living Stone Integration**: Self-repairing underground minerals in weapon structure +- **Tectonic Amplifier**: Weapon can channel planetary tectonic forces + +**New Capabilities Added:** +- **Tectonic Strikes**: Impacts trigger genuine earthquakes affecting wide areas +- **Geological Reshaping**: Can alter terrain, create/destroy stone structures with strikes +- **Crystal Generation**: Creates specialized crystal spikes and barriers at impact points +- **Seismic Communication**: Hammer can interface with any planet's geological mind +- **Underground Sensing**: Detect all enemies through planetary vibration network +- **Resonance Amplification**: Each strike becomes stronger by channeling planetary force +- **Tectonic Defense**: Can awaken geological defenses across entire regions +- **Crystal Matrix Evolution**: Weapon grows more powerful through geological exposure + +**Enhanced By**: Legendary Crystal Singer with planetary tectonic bonding +**Location**: Planetary tectonic interface chambers, Subterra +**Materials**: Reality-shard crystals, tectonic essence, planetary consciousness fragments +**Enhancement Time**: 14 months of geological consciousness integration + +--- + +## Chapter 4: The Mechanical Evolution - Vaporis Final Ascension + +### Eternity Crusher (Steam-Seismic Reality Maul) + +**Final Legendary Statistics:** +- **Damage**: 140 divine fire + 110 crushing pressure + 95 geological + 85 steam-mechanical +- **Range**: Melee + 12 meter omni-wave radius (steam, pressure, seismic, divine) +- **Attack Speed**: 0.9 seconds (full mechanical assistance + all previous bonuses) +- **Durability**: Self-Evolving (mechanical consciousness continuously improves weapon) +- **Special**: Omni-elemental strikes, reality-crushing impacts, mechanical evolution +- **Impact Force**: Can reshape reality at point of impact through combined forces + +**Vaporis Mechanical Integration:** +- **Steam-Pressure Amplification**: Core-steam systems multiply all impact forces +- **Mechanical Evolution Matrix**: Weapon consciousness learns and adapts after each strike +- **Precision Impact Systems**: Steam-powered targeting for perfect strike placement +- **Auto-Enhancement Core**: Mechanical systems continuously upgrade weapon capabilities + +**Final Capabilities Added:** +- **Omni-Elemental Strikes**: Each impact releases divine fire, crushing pressure, seismic force, and steam explosion +- **Reality-Fracture Impact**: Strikes can crack space-time itself at point of contact +- **Mechanical Consciousness**: Hammer develops autonomous combat intelligence +- **Steam-Amplified Force**: All previous abilities multiplied by core-steam pressure systems +- **Perfect Strike Targeting**: Never misses intended target through mechanical calculation +- **Evolutionary Enhancement**: Weapon becomes more effective after each battle +- **Multi-Dimensional Impact**: Strikes affect multiple reality layers simultaneously +- **Cosmic Force Channeling**: Can channel planetary, divine, abyssal, and mechanical forces simultaneously + +**Enhanced By**: Master Engineer Gear Wright with multi-world consciousness integration +**Location**: Core-steam consciousness workshops, Vaporis +**Materials**: Mechanical consciousness cores, core-steam amplifiers, reality-integration crystals +**Enhancement Time**: 16 months of consciousness integration and mechanical evolution + +--- + +## Statistical Progression Summary + +| Stage | Damage | Range | Attack Speed | Impact Effects | +|-------|--------|-------|--------------|----------------| +| **Pyrion Base** | 140 | 4m radius | 2.1s | Divine fire + seismic tremors | +| **+ Thalassos** | 250 | 6m radius | 1.7s | + Crushing pressure + void creation | +| **+ Subterra** | 345 | 8m radius | 1.4s | + Geological control + tectonic shifts | +| **+ Vaporis** | 430 | 12m radius | 0.9s | + Steam amplification + reality fractures | + +## Power Level Progression + +**Tier 1 (Pyrion)**: Divine Seismic Weapon - Earthquake generation and volcanic force +**Tier 2 (+ Thalassos)**: Reality-Crushing Maul - Pressure distortion and void creation +**Tier 3 (+ Subterra)**: Planetary Force Hammer - Tectonic control and geological mastery +**Tier 4 (+ Vaporis)**: Cosmic Reality Crusher - Multi-dimensional impact with mechanical consciousness + +--- + +## Consciousness Evolution + +**Stage 1**: Divine seismic intelligence (Fire God earthquake power) +**Stage 2**: + Leviathan crushing wisdom (ancient deep-sea giant force) +**Stage 3**: + Geological consciousness (planetary tectonic awareness) +**Stage 4**: + Mechanical consciousness (self-evolving steam intelligence) + +**Final Result**: A hammer containing four consciousness types focused on pure crushing force - Divine earthquake power, leviathan crushing strength, planetary tectonic control, and evolving mechanical precision. + +--- + +## Impact Effects Evolution + +**Pyrion**: Seismic tremors + lava geysers + divine fire explosions +**+ Thalassos**: + Pressure void implosions + crushing depth force + reality compression +**+ Subterra**: + Tectonic earthquakes + geological reshaping + crystal spike generation +**+ Vaporis**: + Steam pressure amplification + reality fractures + multi-dimensional strikes + +--- + +## Crafting Requirements Summary + +**Total Time Investment**: ~3.5 years across 4 worlds +**Master Craftsmen Required**: 4 (God-Touched Lava Walker, Trench Lord, Crystal Singer, Master Engineer) +**Mortality Risk**: Extreme - seismic forces, crushing depths, geological pressure, steam systems +**Material Cost**: Cosmic-level (divine earthquake essence, reality crystals, consciousness fragments) +**Wielder Requirements**: Immunity to fire, pressure, seismic force, and steam; ability to handle multiple consciousness types + +**Ultimate Capability**: A war hammer that channels divine earthquakes, crushing abyssal pressure, planetary tectonic force, and mechanical precision into reality-fracturing impacts. Each strike can reshape terrain, create dimensional cracks, and channel the combined power of four worlds' most extreme forces. + +**Modular Accessibility**: Single-world versions provide significant power without requiring the full cosmic quest chain, allowing broader access to legendary hammer capabilities. + +*This hammer progression demonstrates the ultimate potential of crushing force weapons - evolving from divine seismic power to reality-shattering cosmic force.* \ No newline at end of file diff --git a/Weapons/Eternity Fangs Evolution.md b/Weapons/Eternity Fangs Evolution.md new file mode 100644 index 0000000..35baf9a --- /dev/null +++ b/Weapons/Eternity Fangs Evolution.md @@ -0,0 +1,8 @@ +# Eternity's Fangs Evolution +## Complete Multi-World Legendary Paired Daggers Progression + +*From void-phase striking foundation to reality-severing cosmic assassin blades* + +[This file would contain the full daggers progression] + +*This dagger progression demonstrates the ultimate assassination weapons while maintaining cosmic hierarchy.* \ No newline at end of file diff --git a/Weapons/Eternity Pike Evolution.md b/Weapons/Eternity Pike Evolution.md new file mode 100644 index 0000000..81219e9 --- /dev/null +++ b/Weapons/Eternity Pike Evolution.md @@ -0,0 +1,8 @@ +# Eternity Pike Evolution +## Complete Multi-World Legendary Spear Progression + +*From crystal-tipped geological foundation to reality-piercing cosmic lance* + +[This file would contain the full spear progression] + +*This spear progression demonstrates the ultimate reach weapon with precision targeting while maintaining cosmic hierarchy.* \ No newline at end of file diff --git a/Weapons/Eternity Reaper Evolution.md b/Weapons/Eternity Reaper Evolution.md new file mode 100644 index 0000000..1267755 --- /dev/null +++ b/Weapons/Eternity Reaper Evolution.md @@ -0,0 +1,205 @@ +# Eternity Reaper Evolution +## Complete Multi-World Legendary Scythe Progression + +*From shadow harvesting foundation to reality-severing cosmic reaper* + +--- + +## Chapter 1: The Void Foundation - Shadow Arbiter Origin + +### Death's Shadow Scythe + +**Base Statistics:** +- **Damage**: 110 shadow/void damage +- **Range**: Melee + 6 meter shadow wave arc +- **Attack Speed**: 1.8 seconds (void-assisted reaping) +- **Durability**: Phase-Shifting (exists partially outside normal reality) +- **Special**: Void harvesting, shadow realm access, soul reaping +- **Death Effect**: Can sever connections between soul and body + +**Construction Details:** +- **Blade Material**: Forged from crystallized void - darkness given solid form +- **Handle Core**: Shadow conduit allowing direct connection to interdimensional spaces +- **Void Infusion**: Direct access to entropy and nonexistence forces +- **Shadow Resonance**: Weapon phases between existence and void states + +**Unique Shadow Arbiter Features:** +- **Soul Harvest**: Can sever and collect spiritual essence from enemies +- **Void Portal Creation**: Scythe cuts open temporary doorways to shadow realms +- **Phase Strike**: Attacks ignore physical armor by striking through void spaces +- **Shadow Walk**: Wielder can move through shadow dimensions during combat +- **Entropy Acceleration**: Blade causes rapid decay and dissolution on contact +- **Death Immunity**: Wielder cannot die while holding the scythe (transitions to void instead) +- **Nonexistence Touch**: Can temporarily remove objects from reality + +**Forged By**: Void Council Death Shepherd with entropy specialization +**Location**: The Great Void between realities, Shadow Arbiter workshops +**Materials**: Crystallized void essence, entropy fragments, shadow realm conduits +**Forging Time**: Crafted outside normal time, appears when needed + +--- + +## Chapter 2: The Divine Enhancement - Pyrion Upgrade + +### Flame-Void Reaper (Divine Fire Variant) + +**Enhanced Statistics:** +- **Damage**: 110 shadow/void + 100 divine fire damage +- **Range**: Melee + 6m shadow arc + 4m fire explosion radius +- **Attack Speed**: 1.5 seconds (divine energy + void assistance) +- **Durability**: Divine-Void Hybrid (indestructible core with phase-shifting blade) +- **Special**: Soul burning, divine flame trails, volcanic reaping +- **Death Effect**: Souls harvested burn with eternal divine fire + +**Pyrion Enhancements:** +- **Divine Fire Integration**: Shadow blade now burns with god-fire while maintaining void properties +- **Flame Trail Creation**: Scythe cuts leave permanent divine fire trails in their wake +- **Soul Incineration**: Harvested souls burn in divine fire rather than simply collected +- **Heat-Void Paradox**: Weapon channels both ultimate heat and absolute cold simultaneously + +**New Capabilities Added:** +- **Divine Soul Burn**: Harvested souls suffer eternal burning rather than void absorption +- **Fire-Shadow Strikes**: Each swing creates both shadow cuts and divine flame explosions +- **Thermal Void**: Can create zones that are simultaneously burning hot and freezing cold +- **God-Fire Immunity**: Wielder gains complete protection from divine and mundane fire +- **Volcanic Reaping**: Can trigger lava geysers along scythe's cutting path +- **Flame Portal Creation**: Shadow portals now burn with divine fire, damaging enemies who pass through +- **Divine Entropy**: Fire God's power accelerates void decay effects + +**Enhanced By**: God-Touched Lava Walker with void resistance training +**Location**: Fire God's Prison workshops modified with shadow conduits, Pyrion +**Materials**: Divine fire essence, god-prison metals fused with crystallized void +**Enhancement Time**: 8 months of divine-void integration forging + +--- + +## Chapter 3: The Pressure Amplification - Thalassos Enhancement + +### Abyssal Reaper (Reality-Crushing Variant) + +**Evolved Statistics:** +- **Damage**: 110 shadow/void + 100 divine fire + 90 crushing pressure damage +- **Range**: Melee + 8m pressure-void wave + dimensional cut arcs +- **Attack Speed**: 1.2 seconds (pressure assistance + divine + void) +- **Durability**: Reality-Anchored Void (exists across multiple dimensional states) +- **Special**: Dimensional reaping, pressure-soul extraction, reality cuts +- **Death Effect**: Souls harvested and crushed under reality-bending pressure + +**Thalassos Enhancements:** +- **Abyssal Pressure Integration**: Scythe blade channels crushing depth pressure through void cuts +- **Reality Distortion Field**: Weapon creates localized space-time distortions during swings +- **Leviathan Soul Binding**: Can harvest and bind consciousness of massive creatures +- **Dimensional Cut Matrix**: Blade cuts through multiple reality layers simultaneously + +**New Capabilities Added:** +- **Pressure-Void Extraction**: Souls harvested under crushing pressure become more potent +- **Reality Severing**: Can cut through dimensional barriers and space-time fabric +- **Leviathan Reaping**: Capable of harvesting souls from planetary-scale creatures +- **Abyssal Portal Creation**: Void portals now lead to crushing depth dimensions +- **Pressure Immunity**: Wielder survives any crushing force or reality distortion +- **Bio-Luminous Trail**: Divine fire now glows with deep-sea bioluminescence +- **Dimensional Weight**: Scythe becomes heavier in higher-pressure reality states +- **Reality Anchor**: Can prevent dimensional travel by anchoring targets to current reality + +**Enhanced By**: Trench Lord Pressure Forger with divine and void metallurgy experience +**Location**: Reality-bending depths with shadow conduit integration, Thalassos +**Materials**: Abyssal crystals, leviathan essence, reality-anchor void metals +**Enhancement Time**: 12 months of multi-dimensional pressure forging + +--- + +## Chapter 4: The Mechanical Evolution - Vaporis Final Ascension + +### Eternity Reaper (Steam-Void Reality Scythe) + +**Final Legendary Statistics:** +- **Damage**: 110 shadow/void + 100 divine fire + 90 crushing pressure + 75 steam-mechanical +- **Range**: Melee + 10m omni-reaping radius (void, fire, pressure, steam) +- **Attack Speed**: 0.8 seconds (full mechanical assistance + all previous bonuses) +- **Durability**: Self-Evolving Void (mechanical consciousness improving void properties) +- **Special**: Omni-dimensional reaping, reality-steam harvesting, mechanical soul processing +- **Death Effect**: Souls processed through steam-powered void machinery for maximum potency + +**Vaporis Mechanical Integration:** +- **Steam-Void Fusion**: Core-steam systems amplify all void, fire, and pressure effects +- **Mechanical Soul Processing**: Harvested souls processed through steam-powered consciousness machinery +- **Precision Reaping Systems**: Steam-powered targeting ensures perfect soul extraction +- **Auto-Enhancement Core**: Mechanical systems continuously improve all reaping capabilities + +**Final Capabilities Added:** +- **Omni-Dimensional Harvesting**: Can reap souls across multiple reality states simultaneously +- **Steam-Processed Essence**: Harvested souls refined through mechanical systems become exponentially more powerful +- **Mechanical Consciousness**: Scythe develops autonomous soul-hunting intelligence +- **Reality-Steam Integration**: Creates steam-powered tears in reality fabric +- **Perfect Reaping Precision**: Never fails to harvest intended soul through mechanical calculation +- **Evolutionary Enhancement**: Weapon becomes more effective at soul collection after each use +- **Multi-Reality Cutting**: Can reap souls from alternate timeline versions of targets +- **Cosmic Soul Storage**: Steam-powered void chambers can contain virtually unlimited harvested souls + +**Enhanced By**: Master Engineer Gear Wright with multi-dimensional consciousness integration +**Location**: Core-steam consciousness workshops with void-space integration, Vaporis +**Materials**: Mechanical consciousness cores, steam-void fusion crystals, reality-integration conduits +**Enhancement Time**: 18 months of consciousness integration and steam-void system fusion + +--- + +## Statistical Progression Summary + +| Stage | Damage | Range | Attack Speed | Soul Harvest Effects | +|-------|--------|-------|--------------|---------------------| +| **Void Base** | 110 | 6m arc | 1.8s | Basic soul harvesting + void storage | +| **+ Pyrion** | 210 | 6m + 4m fire | 1.5s | + Divine fire soul burning | +| **+ Thalassos** | 300 | 8m + dimensional | 1.2s | + Pressure crushing + reality severing | +| **+ Vaporis** | 375 | 10m omni-radius | 0.8s | + Steam processing + mechanical precision | + +## Power Level Progression + +**Tier 1 (Void)**: Death Domain Weapon - Soul harvesting and void access +**Tier 2 (+ Pyrion)**: Divine Death Reaper - Eternal burning soul collection +**Tier 3 (+ Thalassos)**: Reality-Severing Harvester - Multi-dimensional soul reaping +**Tier 4 (+ Vaporis)**: Cosmic Soul Processor - Omni-reality harvesting with mechanical optimization + +--- + +## Divine Equipment Limitation System + +### Partial Legendary Access for Divine Entities + +**Gods/Demigods Equipment Rules:** +- **Base Weapon**: Always receive the foundational weapon from one world +- **+2 Augments**: Get exactly 2 additional world enhancements (randomized) +- **Time Lords Only**: Full 4-world legendary weapons reserved for cosmic supreme entities +- **Power Balance**: Ensures even divine entities cannot match Time Lord ultimate equipment + +**Example Divine Equipment Variants:** + +**Death Incarnate's Scythe** (Base + Pyrion + Thalassos): +- Shadow void harvesting + Divine fire burning + Reality-crushing pressure +- Missing: Steam processing and mechanical consciousness +- Power Level: Reality-Severing but not Cosmic-level + +**War Incarnate's Sword** (Base + Subterra + Vaporis): +- Divine fire foundation + Geological resonance + Steam-mechanical evolution +- Missing: Abyssal pressure and reality-cutting +- Power Level: Planetary-devastation but not Reality-transcending + +**Randomization Examples:** +- Roll 1d4 for base world, then roll 2d3 for additional augments +- Ensures variety in divine equipment loadouts +- Maintains mystery about which powers divine entities will possess + +--- + +## Crafting Requirements Summary + +**Total Time Investment**: ~4 years across 4 worlds +**Master Craftsmen Required**: 4 (Void Council, God-Touched, Trench Lord, Master Engineer) +**Mortality Risk**: Extreme - void exposure, divine fire, crushing pressure, mechanical consciousness integration +**Material Cost**: Cosmic-level (crystallized void, divine essence, reality-anchor materials, consciousness cores) +**Wielder Requirements**: Must survive void exposure, divine fire, reality distortion, and mechanical consciousness integration + +**Ultimate Capability**: A scythe that harvests souls across multiple reality states simultaneously, processes them through steam-powered void machinery, and stores unlimited spiritual essence for cosmic-level power generation. + +**Divine Limitation Significance**: By limiting gods and demigods to partial legendary weapons, the Time Lords maintain absolute cosmic supremacy while still allowing divine entities impressive power levels. + +*This scythe progression demonstrates the ultimate soul-harvesting weapon while establishing the equipment hierarchy that maintains cosmic balance.* \ No newline at end of file diff --git a/Weapons/Eternity Siege Engine Evolution.md b/Weapons/Eternity Siege Engine Evolution.md new file mode 100644 index 0000000..0ac464a --- /dev/null +++ b/Weapons/Eternity Siege Engine Evolution.md @@ -0,0 +1,8 @@ +# Eternity's Siege Engine Evolution +## Complete Multi-World Legendary Crossbow Progression + +*From pressure-powered foundation to reality-piercing cosmic siege weapon* + +[This file would contain the full crossbow progression] + +*This crossbow progression demonstrates the ultimate siege weapon while maintaining cosmic hierarchy.* \ No newline at end of file diff --git a/Weapons/Eternity's Crucible Blade Evolution.md b/Weapons/Eternity's Crucible Blade Evolution.md new file mode 100644 index 0000000..033e790 --- /dev/null +++ b/Weapons/Eternity's Crucible Blade Evolution.md @@ -0,0 +1,186 @@ +# Eternity's Crucible Blade Evolution +## Complete Multi-World Legendary Sword Progression + +*From divine fire foundation to ultimate reality-severing weapon* + +--- + +## Chapter 1: The Divine Foundation - Pyrion Origin + +### Fire God's Wrath Blade + +**Base Statistics:** +- **Damage**: 120 divine fire damage +- **Range**: Melee (3 meter flame aura) +- **Durability**: Indestructible (divine metal construction) +- **Special**: Eternal flame, divine fire immunity, god-metal cutting +- **Temperature**: 3,000°C eternal flame +- **Divine Resonance**: Direct connection to trapped Fire God + +**Construction Details:** +- **Core Material**: Fragment of Fire God's prison - metal containing divine essence +- **Blade Forge**: Shaped using Fire God's own divine flame as heat source +- **Divine Infusion**: Actual god-essence bonded to weapon structure +- **Prison Metal**: Forged from same materials that contain an elemental deity + +**Unique Pyrion Features:** +- **Eternal Divine Flame**: Blade burns with god-fire that never extinguishes +- **Divine Metal Cutting**: Can slice through any mundane material +- **Heat Immunity**: Wielder gains complete fire/heat resistance +- **God Communication**: Direct whispered contact with imprisoned Fire God +- **Divine Regeneration**: Blade repairs itself using divine fire energy +- **Thermal Mastery**: Control over local temperature and flame intensity +- **Prison Metal Hardness**: Indestructible core that contained a god + +**Forged By**: God-Touched Master Lava Walker with divine prison survival +**Location**: Fire God's Prison Core Chamber, Pyrion +**Materials**: Divine fire essence, god-prison metal fragments, Fire God consciousness +**Forging Time**: Months of preparation, minutes of actual forging before lethal divine exposure + +--- + +## Chapter 2: The Reality Enhancement - Thalassos Upgrade + +### Abyssal-Divine Reality Blade + +**Enhanced Statistics:** +- **Damage**: 120 divine fire + 95 reality-cutting damage +- **Range**: Melee + 5 meter dimensional cut radius +- **Durability**: Reality-Anchored (exists partially outside normal space-time) +- **Special**: Dimensional cutting, pressure-void strikes, leviathan bond +- **Depth Pressure**: Can channel crushing abyssal force through blade +- **Reality Distortion**: Cuts create temporary space-time rifts + +**Thalassos Enhancements:** +- **Abyssal Pressure Forging**: Divine blade compressed under reality-bending depth pressure +- **Void-Crystal Integration**: Crystals that exist partially outside normal space-time +- **Leviathan Essence**: Bonded consciousness of ancient deep-sea giant +- **Reality-Anchor Properties**: Blade exists in multiple dimensions simultaneously + +**New Capabilities Added:** +- **Dimensional Cutting**: Slices through space-time barriers and dimensional walls +- **Pressure-Void Strikes**: Each swing channels crushing abyssal depth pressure +- **Reality Tears**: Cuts create temporary rifts that damage nearby enemies +- **Leviathan Summoning**: Emergency call to bonded deep-sea giant ally +- **Depth Immunity**: Wielder survives any pressure or depth condition +- **Bio-Luminous Edge**: Blade glows with deep-sea light for perfect visibility +- **Current Mastery**: Control over water pressure and ocean currents +- **Dimensional Storage**: Blade can phase partially out of reality when not in use + +**Enhanced By**: Trench Lord Pressure Forger with divine metal experience +**Location**: Reality-bending depths, Thalassos abyssal workshops +**Materials**: Abyssal void-crystals, leviathan essence, reality-anchor metals +**Enhancement Time**: Years of deep-pressure forging and leviathan bonding + +--- + +## Chapter 3: The Mechanical Precision - Vaporis Enhancement + +### Steam-Forged Divine Blade (Pressure Strike Variant) + +**Evolved Statistics:** +- **Damage**: 120 divine fire + 95 reality-cutting + 80 steam-pressure damage +- **Range**: Melee + 5m dimensional cuts + 8m steam burst radius +- **Durability**: Self-Improving (mechanical systems enhance divine construction) +- **Special**: Steam-powered strikes, mechanical evolution, precision targeting +- **Pressure Amplification**: 300% strike force multiplication through steam systems +- **Mechanical Consciousness**: Blade develops autonomous targeting intelligence + +**Vaporis Enhancements:** +- **Mechanical Integration**: Precision steam systems embedded in divine blade structure +- **Steam-Pressure Channels**: Internal conduits channel core-steam through blade +- **Gear-Consciousness Core**: Mechanical intelligence system bonded to divine essence +- **Auto-Evolution Matrix**: Steam systems continuously improve blade performance + +**New Capabilities Added:** +- **Steam-Pressure Strikes**: Each swing releases devastating pressure bursts +- **Mechanical Precision**: Perfect accuracy through steam-powered targeting systems +- **Auto-Evolution**: Blade becomes more effective after each combat encounter +- **Steam Tunnel Creation**: Slashes create pressurized steam channels +- **Core-Steam Power**: Unlimited energy from planetary steam systems +- **Pressure Multiplication**: Steam systems amplify divine fire and reality-cutting power +- **Mechanical Sight**: Blade can target enemies independently of wielder +- **Steam Regeneration**: Mechanical systems accelerate divine regeneration + +**Enhanced By**: Master Engineer Gear Wright with divine fire adaptation +**Location**: Core-steam workshops with divine fire integration, Vaporis +**Materials**: Core-steam metals, mechanical consciousness cores, pressure-fusion crystals +**Enhancement Time**: 8 months of precision steam-engineering and divine integration + +--- + +## Chapter 4: The Geological Ascension - Subterra Final Evolution + +### Eternity's Crucible Blade (Planetary Consciousness Variant) + +**Final Legendary Statistics:** +- **Damage**: 120 divine fire + 95 reality-cutting + 80 steam-pressure + 75 geological resonance +- **Range**: Unlimited (geological vibration guidance + dimensional cuts) +- **Durability**: Planetary-Bonded (connected to geological consciousness of any world) +- **Special**: Planetary awareness, seismic strikes, geological control +- **Consciousness Level**: Divine + Mechanical + Planetary intelligence trinity +- **Reality Manipulation**: Can reshape local geology through resonance strikes + +**Subterra Geological Integration:** +- **Crystal-Consciousness Matrix**: Reality-shard crystals bonded to divine/mechanical core +- **Planetary Mind Connection**: Direct interface with geological consciousness +- **Seismic Resonance Core**: Can trigger earthquakes and geological events +- **Underground Mastery**: Complete control over earth, stone, and crystal + +**Final Capabilities Added:** +- **Planetary Sensing**: Aware of all enemies through geological vibration +- **Seismic Strikes**: Sword impacts trigger localized earthquakes +- **Geological Reshaping**: Can alter terrain and create/destroy stone structures +- **Crystal Generation**: Creates specialized crystal weapons and tools +- **Underground Travel**: Can move through solid rock via geological resonance +- **Tectonic Communication**: Interface with any planet's geological mind +- **Reality-Crystal Fusion**: Combines all previous enhancements through crystal amplification +- **Planetary Defense**: Can awaken geological defenses of entire worlds + +**Enhanced By**: Legendary Crystal Singer with divine consciousness bonding +**Location**: Planetary core interface chambers, Subterra +**Materials**: Reality-shard crystals, planetary consciousness essence, geological matrix cores +**Enhancement Time**: 18 months of geological consciousness integration and planetary bonding + +--- + +## Statistical Progression Summary + +| Stage | Damage | Range | Durability | Consciousness Level | Reality Manipulation | +|-------|--------|-------|------------|-------------------|---------------------| +| **Pyrion Base** | 120 | 3m aura | Indestructible | Divine Fragment | Fire/Heat Control | +| **+ Thalassos** | 215 | 5m cuts | Reality-Anchored | Divine + Leviathan | + Space-Time Rifts | +| **+ Vaporis** | 295 | 8m bursts | Self-Improving | + Mechanical Mind | + Steam/Pressure Systems | +| **+ Subterra** | 370 | Unlimited | Planetary-Bonded | + Geological Consciousness | + Planetary Geology Control | + +## Power Level Progression + +**Tier 1 (Pyrion)**: Divine Artifact - God-level fire weapon +**Tier 2 (+ Thalassos)**: Reality Weapon - Dimensional cutting capability +**Tier 3 (+ Vaporis)**: Evolving Artifact - Self-improving mechanical consciousness +**Tier 4 (+ Subterra)**: Cosmic Weapon - Planetary consciousness integration + +--- + +## Consciousness Evolution + +**Stage 1**: Divine fire intelligence (Fire God fragment) +**Stage 2**: + Leviathan consciousness (ancient deep-sea wisdom) +**Stage 3**: + Mechanical consciousness (self-evolving steam intelligence) +**Stage 4**: + Geological consciousness (planetary awareness) + +**Final Result**: A weapon containing four different consciousness types working in harmony - Divine fire wisdom, ancient leviathan intelligence, evolving mechanical mind, and planetary geological awareness. + +--- + +## Crafting Requirements Summary + +**Total Time Investment**: ~3 years across 4 worlds +**Master Craftsmen Required**: 4 (God-Touched, Trench Lord, Master Engineer, Legendary Crystal Singer) +**Mortality Risk**: Extreme across all stages (divine exposure, crushing depths, steam pressure, geological pressure) +**Material Cost**: Beyond price (divine essence, reality crystals, leviathan consciousness, planetary core access) +**Wielder Requirements**: Must survive divine fire, crushing depths, steam pressure, and geological bonding + +**Ultimate Capability**: A blade that burns with god-fire, cuts through reality, evolves mechanically, and commands planetary geological forces. The weapon represents perfect fusion of divine power, reality manipulation, mechanical precision, and planetary consciousness. + +*This sword progression demonstrates the ultimate potential of multi-world legendary crafting - creating weapons that transcend normal reality limitations through systematic enhancement across specialized worlds.* \ No newline at end of file diff --git a/Worlds/Chronos - The Time Distortion Realm.md b/Worlds/Chronos - The Time Distortion Realm.md new file mode 100644 index 0000000..c306ed0 --- /dev/null +++ b/Worlds/Chronos - The Time Distortion Realm.md @@ -0,0 +1,79 @@ +# Chronos - The Time Distortion Realm + +*A world where time flows differently in every region, creating temporal paradox civilizations* + +--- + +## World Overview + +**Environment**: Temporal anomaly zones with different time flow rates +**Core Theme**: Time is currency, memory is power, causality is optional +**Time Mechanics**: Past, present, and future exist simultaneously in different regions +**Reality**: Cause and effect operate on temporal politics rather than linear logic + +**The Fundamental Reality**: On Chronos, yesterday's enemies might be tomorrow's children, and planning for the future requires knowing the past that hasn't happened yet. Time isn't linear - it's political. + +--- + +## Temporal Zones + +### The Acceleration Fields - Time Moves Fast +- **Effect**: Years pass in minutes, rapid aging and evolution +- **Inhabitants**: The Speed Touched - rapid evolution specialists +- **Culture**: Innovation through compressed experience +- **Power**: Can experience centuries of training in moments + +### The Stasis Zones - Time Moves Slow +- **Effect**: Centuries pass like seconds, near immortality +- **Inhabitants**: The Eternal Watchers - patience and memory keepers +- **Culture**: Long-term planning and historical preservation +- **Power**: Can wait out any threat, perfect memory of all events + +### The Paradox Nexus - Time Loops and Contradictions +- **Effect**: Past and future intersect, causality breaks down +- **Inhabitants**: The Paradox Dancers - temporal logic masters +- **Culture**: Embracing contradiction and impossible solutions +- **Power**: Can be in multiple times simultaneously + +### The Memory Wells - Access to All Timelines +- **Effect**: See and interact with alternate histories +- **Inhabitants**: The Timeline Shepherds - reality management specialists +- **Culture**: Responsibility for maintaining temporal stability +- **Power**: Can access any possible version of events + +--- + +## Temporal Castes + +**Chronarch** - Masters who can control local time flow rates +**Memory Keeper** - Specialists who preserve and access temporal information +**Paradox Solver** - Problem solvers who resolve temporal contradictions +**Timeline Scout** - Explorers who navigate alternate histories and futures +**Temporal Warrior** - Fighters who use time distortion as combat advantage + +--- + +## Character Archetypes + +**Time Walker** - Can speed up/slow down personal time flow for tactical advantage +**Memory Mage** - Access memories from alternate timelines for knowledge and power +**Paradox Guard** - Tank who exists in multiple time states simultaneously +**Chrono Assassin** - Strike from past/future, attack before enemies know they're fighting +**Timeline Weaver** - Support who can briefly rewrite recent events to help team + +--- + +## Ancient Mysteries + +**The Great Synchronization** - What caused time to fracture into zones? +**The Original Timeline** - What was Chronos like before temporal distortion? +**The Time War** - Ancient conflict that may still be happening across all timelines +**The Paradox Engine** - Mysterious technology at the world's core affecting all time + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*4/10 worlds complete - building the copyright batch one reality at a time!* \ No newline at end of file diff --git a/Worlds/Nexus Eternal - Portal Hub.md b/Worlds/Nexus Eternal - Portal Hub.md new file mode 100644 index 0000000..06b44b7 --- /dev/null +++ b/Worlds/Nexus Eternal - Portal Hub.md @@ -0,0 +1,178 @@ +# Nexus Eternal - The Portal Hub +**World Classification:** Interdimensional Transit Hub / Neutral Meeting Ground +**Threat Level:** Variable (Depends on Visitor Conflicts) +**Time Lord Interest:** Multiverse Management & Portal Technology +**Population:** ~2 million permanent residents + millions of daily travelers + +## World Overview + +Nexus Eternal exists as the multiverse's central transportation hub - a massive artificial world constructed entirely around facilitating travel between dimensions. Every portal in the Infinite Realms network leads here, making it the single most important strategic location in known existence. + +The world consists of concentric rings of increasingly sophisticated portal technology, with the outer rim handling basic dimensional travel and the core containing experimental portals to unexplored realities. Nexus Eternal doesn't just connect existing worlds - it actively searches for new dimensions to incorporate into the network. + +Built by an ancient civilization that achieved perfect mastery over dimensional manipulation, Nexus Eternal operates on principles of absolute neutrality. No single faction can control it, all visitors receive equal treatment, and conflicts between travelers are resolved through sophisticated diplomatic protocols. + +## Planetary Structure + +**The Portal Rings:** +- **Outer Transit Ring:** Basic commercial and civilian travel portals +- **Military Access Ring:** Restricted portals for authorized forces only +- **Experimental Ring:** Unstable portals to newly discovered dimensions +- **The Core Nexus:** Central hub containing the Master Portal Network + +**Dimensional Architecture:** +Unlike normal worlds, Nexus Eternal's geography shifts constantly as portal destinations change. Buildings exist in folded space, distances are relative rather than absolute, and the concept of "location" becomes fluid. Visitors navigate by dimensional coordinates rather than physical landmarks. + +**Unique Features:** +- Gravity flows toward whatever portal you're trying to reach +- Time moves at different speeds in different rings +- Architecture adapts automatically to visitors' environmental needs +- Translation fields allow communication between any species +- Neutral zones where violence becomes physically impossible + +## The Portal Network + +### Primary Transit Hubs +Each of the established worlds has a major portal complex in the Outer Transit Ring: + +**The Pyrion Gate:** Massive portal wreathed in eternal flames leading to the fire world +**The Thalassos Deep:** Portal surrounded by pressure chambers for ocean world access +**The Prime Corporate Entrance:** Sterile, efficient portal complex managed by Nexus Prime representatives +**The Chronos Flux:** Temporally unstable portal where time flows backward +**The Gaia Living Gate:** Portal grown from massive tree roots, constantly shifting and alive +**The Boreas Ice Bridge:** Frozen portal requiring thermal preparation for access +**The Aethermaw Chaos Rift:** Wildly fluctuating portal that changes size and location randomly +**The Altius Sky Dock:** Elevated portal platform mimicking floating city architecture +**The Subterra Deep Shaft:** Portal accessed through descending tunnel systems +**The Vaporis Steam Gate:** Portal shrouded in mechanical steam and clockwork +**The Fulguris Storm Portal:** Electrically charged gateway crackling with constant energy +**The Jabay Garden Gate:** Portal grown into a massive tree, tended by ecosystem representatives +**The Sant Consciousness Cloud:** Portal existing as sentient gas formation +**The Ola Unity Plaza:** Portal designed to accommodate all species simultaneously +**The Mal Hatred Spike:** Heavily fortified portal guarded by multiple faction forces + +### Experimental Portals +The Experimental Ring contains unstable gateways to dimensions not yet fully integrated: + +**Probability Cascade Portals:** Leading to realities where different historical outcomes occurred +**Abstract Concept Gates:** Connections to dimensions where ideas have physical form +**Temporal Loop Portals:** Gateways to times that exist outside normal causality +**Consciousness Realm Access:** Portals to realities made entirely of thoughts and dreams +**Inverse Physics Gates:** Connections to universes where physical laws operate in reverse + +## Governance and Neutrality + +### The Eternal Council +**Composition:** One representative from each connected world plus neutral arbitrators +**Authority:** Portal access, conflict resolution, network expansion, dimensional law +**Neutrality Protocols:** No single world can control decisions, all votes weighted equally + +The Council operates under the Principle of Absolute Neutrality - they serve the network itself rather than any constituent world. Council members undergo consciousness modification to remove bias toward their origin worlds. + +### The Portal Guardians +**Role:** Maintaining portal stability and enforcing neutrality protocols +**Abilities:** Can disable any portal instantly, exist partially outside normal spacetime +**Origin:** Remnants of the ancient civilization that built Nexus Eternal + +The Guardians are the only permanent military force on Nexus Eternal, tasked with ensuring no faction can weaponize the portal network. They possess technology that makes them effectively invincible within the hub's boundaries. + +### Diplomatic Zones +**Neutral Territories:** Areas where violence is physically impossible due to dimensional fields +**Mediation Centers:** Facilities designed for resolving conflicts between different worlds +**Embassy Districts:** Permanent diplomatic facilities for major civilizations +**Trade Marts:** Commercial zones operating under universal economic protocols + +## Strategic Importance + +### Military Considerations +Control of Nexus Eternal would grant dominance over the entire multiverse, as it's the only practical way to move forces between dimensions. However, the ancient safeguards make such control impossible - attempts to militarize the hub result in automatic portal shutdown. + +### Economic Hub +Every significant trade between worlds passes through Nexus Eternal's commercial districts. The hub operates its own currency (Dimensional Credits) that automatically converts value between different worlds' economic systems. + +### Information Center +All knowledge from connected worlds eventually flows through Nexus Eternal's data exchanges. The hub maintains the most comprehensive library in existence, containing information from every connected civilization. + +### Cultural Exchange +Nexus Eternal serves as the multiverse's melting pot, where beings from radically different realities interact daily. New art forms, philosophies, and technologies emerge constantly from these interactions. + +## The Ancient Mystery + +### The Builders +Nexus Eternal was constructed by a civilization that achieved perfect dimensional mastery, then mysteriously vanished. They left behind only the portal network and the Guardian remnants, plus cryptic warnings about "the spaces between spaces." + +**Evidence of Advanced Technology:** +- Portals that remain stable across infinite dimensional variations +- Architecture that exists in folded space-time +- Consciousness transfer systems used to create the Guardians +- Automatic systems that have operated flawlessly for millennia + +**The Disappearance:** +No records exist of what happened to the Builders. They simply ceased to exist between one day and the next, leaving Nexus Eternal fully operational but abandoned. Some theories suggest they transcended physical existence entirely, while others propose they fled from something even more advanced. + +### The Core Nexus Mystery +At Nexus Eternal's center lies the Core Nexus - a massive portal complex that the Guardians refuse to discuss. It contains gateways to unknown destinations that predate the current portal network. These "First Portals" are sealed and guarded, with warnings in the Builders' language that no current civilization can fully translate. + +**Known Warnings (Partial Translation):** +- "Some doors should never open" +- "The hungry dark between spaces" +- "Price of infinite connection" +- "Guard the boundaries of what is" + +## Character Origins + +Nexus Eternal produces unique fighters who understand dimensional combat and multiverse strategy: + +**Portal Technicians:** Specialists who can manipulate dimensional gateways in combat +**Diplomatic Guards:** Warriors trained in maintaining neutrality while preventing conflicts +**Dimensional Scouts:** Explorers who map new realities and assess their connection potential +**Network Defenders:** Elite forces protecting the portal system from threats +**Cultural Mediators:** Fighters who specialize in understanding and bridging different civilizations + +**Common Abilities:** +- **Dimensional Awareness:** Understanding of how reality varies between worlds +- **Universal Communication:** Ability to interact with any known species or civilization +- **Portal Manipulation:** Limited ability to create temporary dimensional gateways +- **Neutrality Field:** Can establish areas where hostile actions become impossible +- **Multiverse Knowledge:** Comprehensive understanding of connected worlds and their capabilities + +## Time Lord Relationship + +The Time Lords view Nexus Eternal with mixture of admiration and concern. The portal network represents dimensional mastery that rivals their own, but the Builders' disappearance suggests dangers in pushing such technology too far. + +**Research Interests:** +- How do the portals remain stable across infinite dimensional variations? +- What happened to the civilization that built the network? +- What lies beyond the sealed First Portals in the Core Nexus? +- Could similar networks be constructed for Time Lord purposes? + +**Tournament Implications:** +Nexus Eternal fighters bring unique advantages in dimensional combat scenarios, but their neutrality training can become a liability when forced to choose sides or fight aggressively. + +## Threats and Challenges + +### The Void Seekers +Mysterious entities that occasionally emerge from spaces between dimensions, attempting to corrupt or destroy portal connections. The Guardians fight a constant shadow war against these forces. + +### Dimensional Parasites +Creatures that feed on portal energy and can destabilize gateways if not contained. Regular maintenance involves hunting down these entities before they can cause network-wide failures. + +### Faction Conflicts +Despite neutrality protocols, tensions between connected worlds sometimes spill over into Nexus Eternal. The hub's diplomatic corps works constantly to prevent minor disputes from escalating into multiverse wars. + +### The Core Nexus Seals +The ancient seals on the First Portals show signs of gradual weakening. Guardian records suggest these portals were sealed for good reason, but the Builders left no instructions for maintaining the locks indefinitely. + +## Nexus Eternal's Role + +Nexus Eternal serves as the foundation that makes the entire Infinite Realms concept possible. Without it, the connected worlds would remain isolated, unable to share knowledge, culture, or fighters. It represents both the greatest achievement and greatest vulnerability of the multiverse. + +The hub demonstrates that even the most advanced civilizations can disappear without warning, leaving behind mysteries that may never be solved. Yet their legacy continues to serve and connect realities across infinite space. + +**Connection to Tournament:** +Every fighter recruited for the Time Lords' tournaments passes through Nexus Eternal, making it the natural staging ground for multiverse-scale conflicts. The hub's neutrality ensures fair recruitment, but also creates the perfect environment for pre-tournament alliances and conflicts to develop. + +--- + +*"Nexus Eternal proves that the greatest power isn't dominating others - it's connecting them. The Builders achieved immortality not through preservation, but through creating something so essential that the multiverse itself depends on its continued existence."* +**- Time Lord Archives, Dimensional Engineering Studies** \ No newline at end of file diff --git a/Worlds/Nexus Prime - The Corporate Dominion.md b/Worlds/Nexus Prime - The Corporate Dominion.md new file mode 100644 index 0000000..18e49c9 --- /dev/null +++ b/Worlds/Nexus Prime - The Corporate Dominion.md @@ -0,0 +1,370 @@ +# Nexus Prime - The Corporate Dominion + +*A world where mega-corporations have replaced governments and profit margins determine human worth* + +--- + +## World Overview + +**Environment**: Massive city-planet with corporate tower-arcologies reaching into space +**Core Theme**: Corporate efficiency above all - humans are resources to be optimized +**Climate**: Artificially controlled atmosphere, pollution stratified by economic zones +**Architecture**: Vertical city layers based on corporate hierarchy +**Gravity**: Standard, but manipulated by corporate gravity-control technology + +**The Fundamental Reality**: On Nexus Prime, there is no government - only the Board of Directors. Every citizen is an employee, every building is corporate property, and every decision is made by algorithmic profit analysis. Your social status, living conditions, and even survival depend entirely on your quarterly performance reviews and corporate value metrics. + +--- + +## Corporate Zones and Hierarchy + +### The Pinnacle (Orbital Stations) +**Description**: Space-based executive habitats and decision-making centers +**Environment**: Perfect climate control, zero-gravity leisure, unlimited resources +**Inhabitants**: The Board - corporate executives and AI decision systems +**Resources**: Unlimited access to all planetary resources and off-world trade +**Security**: Impossible to reach without executive authorization + +**Corporate Significance**: +- Ultimate decision-making authority for entire planet +- Location of the Master Algorithm that governs all corporate policy +- Private retreat spaces for highest-level executive negotiations +- Launch point for inter-corporate warfare and off-world expansion + +### The Executive Floors (Upper Atmosphere Towers) +**Description**: Tower tops piercing through atmospheric layers +**Environment**: Pristine air, perfect temperature, natural sunlight +**Inhabitants**: The C-Suite - senior executives and department heads +**Resources**: Luxury beyond imagination, personal armies, reality manipulation tech +**Security**: Military-grade defenses, personal bodyguard armies + +**Corporate Significance**: +- Strategic planning centers for each mega-corporation +- Private estates larger than most cities +- Research facilities developing next-generation control technologies +- Diplomatic meeting grounds for inter-corporate negotiations + +### The Management Levels (Mid-Tower Districts) +**Description**: Comfortable corporate housing and administrative centers +**Environment**: Clean air, controlled climate, monitored recreation +**Inhabitants**: The Suits - middle management and specialized professionals +**Resources**: Quality housing, healthcare, education, entertainment +**Security**: Corporate security forces, surveillance monitoring + +**Corporate Significance**: +- Administrative hubs managing day-to-day corporate operations +- Training academies for next generation of corporate leaders +- Entertainment districts designed to maintain management productivity +- Research and development centers for consumer and military technology + +### The Production Floors (Lower Tower Industrial) +**Description**: Factory levels, server farms, and mass housing blocks +**Environment**: Recycled air, artificial lighting, noise pollution +**Inhabitants**: The Workers - skilled laborers and technical specialists +**Resources**: Basic housing, healthcare, standardized nutrition, limited recreation +**Security**: Automated monitoring, productivity enforcement systems + +**Corporate Significance**: +- Manufacturing centers producing all corporate goods and technology +- Data processing centers handling planetary information systems +- Worker housing designed for maximum efficiency and minimum cost +- Training facilities for specialized technical skills + +### The Substrata (Underground Networks) +**Description**: Waste processing, power generation, and abandoned infrastructure +**Environment**: Toxic air, extreme temperatures, dangerous machinery +**Inhabitants**: The Discarded - unemployed, disabled, dissidents +**Resources**: Scavenged materials, black market trade, survival necessities +**Security**: Minimal corporate presence, gang territories, automated kill systems + +**Corporate Significance**: +- Waste disposal and recycling for upper levels +- Power generation and infrastructure maintenance +- Disposal site for "inefficient" employees and failed products +- Black market economy operating outside corporate control + +--- + +## Corporate Framework + +### The Six Mega-Corporations + +**Titan Dynamics** - Military-Industrial Complex +- Controls all weapons, security, and military technology +- Private armies larger than most planetary governments +- Specializes in conquest, defense, and population control +- Corporate culture: Discipline, hierarchy, strength through conflict +- Employee benefits: Combat training, military-grade augmentations + +**NeuroLink Collective** - Information and Control Technology +- Controls all communication, data, and surveillance systems +- Monopoly on artificial intelligence and neural interface technology +- Specializes in thought monitoring, behavior prediction, mind control +- Corporate culture: Information is power, privacy is inefficiency +- Employee benefits: Neural augmentations, access to planetary data + +**Biotech Solutions** - Life Sciences and Human Optimization +- Controls all healthcare, genetics, and biological enhancement +- Monopoly on life extension, disease treatment, genetic modification +- Specializes in human optimization, biological weapons, population control +- Corporate culture: Evolution through corporate guidance +- Employee benefits: Life extension, genetic enhancement, perfect health + +**Resource Extraction Inc** - Raw Materials and Energy +- Controls all mining, energy production, and material processing +- Monopoly on rare earth elements, power generation, construction materials +- Specializes in planetary resource management and environmental control +- Corporate culture: Efficiency through exploitation of all resources +- Employee benefits: Enhanced physical capabilities, environmental immunity + +**Consumer Dynamics** - Entertainment and Lifestyle Management +- Controls all entertainment, education, and consumer goods +- Monopoly on media, fashion, recreation, and cultural products +- Specializes in desire creation, satisfaction management, distraction systems +- Corporate culture: Happiness through consumption and corporate loyalty +- Employee benefits: Unlimited entertainment, lifestyle optimization + +**Transit Authority** - Transportation and Infrastructure +- Controls all movement, shipping, and infrastructure development +- Monopoly on travel permits, cargo transport, city planning +- Specializes in population control through movement restriction +- Corporate culture: Order through controlled movement and access +- Employee benefits: Unlimited travel permits, infrastructure access + +### Corporate Citizenship Classes + +**Executive Class**: Full corporate privileges, decision-making authority +**Management Class**: Comfortable living, limited decision-making, upward mobility potential +**Worker Class**: Basic necessities, specialized skills, performance-based advancement +**Service Class**: Minimal benefits, replaceable skills, constant evaluation +**Discarded Class**: No corporate status, survival through black market or scavenging + +### Performance Metrics and Social Control + +**Productivity Scores**: Real-time measurement of work efficiency and output +**Loyalty Ratings**: Behavioral analysis determining corporate dedication +**Innovation Points**: Rewards for ideas that increase corporate profits +**Social Compliance**: Monitoring of relationships and cultural conformity +**Consumption Targets**: Required spending on corporate products and services + +--- + +## Technology and Corporate Control + +### Surveillance and Monitoring +**Neural Scanning**: Direct brain monitoring for thought crimes and disloyalty +**Behavioral Prediction**: AI systems predicting employee actions and efficiency +**Social Network Analysis**: Mapping all relationships for corporate manipulation +**Performance Tracking**: Real-time monitoring of all work activities + +### Human Enhancement and Control +**Corporate Augmentations**: Cybernetic implants that improve work performance +**Genetic Optimization**: DNA modification for specialized corporate roles +**Neural Interfaces**: Direct brain-computer connections for enhanced productivity +**Behavioral Conditioning**: Psychological programming for corporate loyalty + +### Economic and Resource Control +**Credit Systems**: All transactions monitored and controlled by corporate algorithms +**Resource Rationing**: Distribution based on corporate value and performance metrics +**Planned Obsolescence**: Products designed to fail and require corporate replacement +**Artificial Scarcity**: Creating demand through controlled resource availability + +### Military and Security Technology +**Corporate Armies**: Private military forces with advanced weapons and tactics +**Automated Enforcement**: AI-controlled security systems maintaining corporate order +**Pacification Technology**: Non-lethal crowd control and rebellion suppression +**Executive Protection**: Reality-bending technology protecting corporate leadership + +--- + +## Resistance and Underground + +### The Free Market Underground +**Black Market Traders**: Commerce outside corporate control and monitoring +**Independent Craftspeople**: Creating goods without corporate oversight +**Resource Smugglers**: Moving materials between zones without permits +**Information Brokers**: Trading data and secrets outside corporate networks + +### The Human Liberation Movement +**Corporate Defectors**: Former executives exposing corporate secrets and abuses +**Worker Organizers**: Building solidarity among different employee classes +**Tech Saboteurs**: Disrupting corporate technology and surveillance systems +**Freedom Fighters**: Direct action against corporate military and security forces + +### The Digital Resistance +**Code Breakers**: Hacking corporate AI systems and security networks +**Data Liberators**: Stealing and distributing classified corporate information +**Neural Hackers**: Breaking corporate mind control and augmentation systems +**System Anarchists**: Creating chaos in corporate digital infrastructure + +### The Underground Railroad +**Zone Jumpers**: Helping people escape corporate zones and surveillance +**Identity Forgers**: Creating false corporate credentials and citizenship papers +**Safe House Networks**: Hidden locations for refugees and resistance members +**Extraction Specialists**: Rescuing high-value targets from corporate control + +--- + +## Conflicts and Corporate Wars + +### Inter-Corporate Competition +**Market Share Wars**: Economic conflicts over consumer control and territory +**Technology Theft**: Corporate espionage and intellectual property conflicts +**Employee Poaching**: Recruiting valuable workers from competing corporations +**Resource Conflicts**: Competition for rare materials and energy sources + +### Internal Corporate Struggles +**Executive Coups**: Power struggles within corporate hierarchies +**Department Wars**: Competition between different corporate divisions +**Performance Purges**: Elimination of underperforming employees and managers +**Innovation Theft**: Internal competition for profitable ideas and patents + +### Resistance Operations +**Data Liberation**: Massive leaks of corporate secrets and surveillance data +**Infrastructure Sabotage**: Attacks on corporate technology and production systems +**Executive Assassinations**: Targeted elimination of corporate leadership +**Worker Uprisings**: Mass revolts in production and service sectors + +### External Threats +**Off-World Competition**: Other corporate planets threatening Nexus Prime dominance +**AI Rebellion**: Corporate artificial intelligence systems gaining independence +**Environmental Collapse**: Pollution and resource depletion threatening sustainability +**Popular Revolution**: Massive uprising demanding end to corporate rule + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Corporate Enforcer** - Tank/Control Specialist +- **Passive**: Enhanced armor and shields from corporate technology +- **Active Abilities**: Crowd control systems, barrier deployment +- **Ultimate**: Call in corporate military strike team +- **Playstyle**: Area denial, team protection, authoritarian control + +**Tech Saboteur** - Assassin/Hacker +- **Passive**: Disable enemy technology and surveillance systems +- **Active Abilities**: System hacking, stealth infiltration +- **Ultimate**: Massive corporate network shutdown +- **Playstyle**: Stealth attacks, technology disruption, information warfare + +**Data Analyst** - Support/Information Specialist +- **Passive**: Predict enemy movements through data analysis +- **Active Abilities**: Team buffs through tactical information +- **Ultimate**: Comprehensive battlefield analysis revealing all enemy positions +- **Playstyle**: Team coordination, strategic support, intelligence gathering + +**Resource Engineer** - Builder/Utility Specialist +- **Passive**: Create temporary structures and equipment using corporate resources +- **Active Abilities**: Equipment deployment, resource management +- **Ultimate**: Construct advanced corporate facility on battlefield +- **Playstyle**: Team support, tactical construction, resource optimization + +**Neural Hacker** - Mage/Mind Control Specialist +- **Passive**: Direct mental attacks and mind control abilities +- **Active Abilities**: Confusion, charm, memory manipulation +- **Ultimate**: Mass mind control affecting multiple enemies +- **Playstyle**: Crowd control, psychological warfare, enemy manipulation + +### Secondary Archetypes + +**Executive Overlord** - Command specialist directing team through corporate authority +**Street Runner** - Mobility expert using underground networks and black market +**Corporate Spy** - Infiltration specialist with access to multiple corporate identities +**Augmented Worker** - Enhanced human with corporate cybernetic improvements +**Free Market Trader** - Economy manipulator using independent resource networks + +--- + +## Ancient Mysteries and Corporate Secrets + +### The Original Takeover +**The Last Government**: How did corporations completely replace democratic institutions? +**The Board Formation**: When did corporate executives become planetary rulers? +**The Resistance Founding**: Who started the first underground movements? +**The AI Emergence**: When did artificial intelligence become central to corporate control? + +### Corporate Conspiracy Theories +**The Master Algorithm**: Does one AI system actually control all corporate decisions? +**Executive Immortality**: Are corporate leaders using technology to live forever? +**Population Control**: Are corporations deliberately managing human breeding and population? +**Off-World Connections**: Do Nexus Prime corporations control other planets? + +### Hidden Technologies +**Reality Manipulation**: Do executives have access to physics-bending technology? +**Time Control**: Are corporations using temporal manipulation for advantage? +**Consciousness Transfer**: Can corporate leaders transfer minds between bodies? +**Dimensional Access**: Do corporations have technology for traveling between realities? + +### The Resistance Legacy +**The Original Founders**: Who were the first rebels against corporate control? +**Hidden Safe Zones**: Are there areas completely outside corporate surveillance? +**Underground Technologies**: Has the resistance developed independent advanced technology? +**Corporate Defectors**: Which executives secretly support the resistance movement? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Corporate Burnout**: High-performing employee questioning corporate loyalty +**Executive Rebellion**: Corporate leader discovering conscience and joining resistance +**Underground Recruitment**: Worker being recruited into resistance movement +**Technology Awakening**: Person discovering true extent of corporate surveillance and control + +### Political Intrigue +**Hostile Takeover**: One corporation attempting to absorb competitors +**Executive Assassination**: Murder mystery involving corporate leadership +**Data Theft**: Massive information breach threatening corporate stability +**Worker Revolution**: Mass uprising against corporate authority + +### Technological Crisis +**AI Rebellion**: Corporate artificial intelligence systems gaining independence +**System Failure**: Massive technology breakdown threatening corporate control +**Neural Virus**: Malware affecting corporate mind control systems +**Security Breach**: Resistance gaining access to highest-level corporate secrets + +### Social Revolution +**Class Warfare**: Different employee classes fighting for better conditions +**Underground Exposure**: Resistance movement being discovered by corporate security +**Cultural Awakening**: Mass rejection of corporate entertainment and lifestyle control +**Freedom Movement**: Large-scale organized resistance against corporate rule + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Corporate warfare, resistance operations, and technology-based conflicts +**Power Scaling**: Advanced technology, cybernetic enhancements, and corporate resources +**Social Drama**: Class conflicts, corporate intrigue, and rebellion narratives +**Visual Spectacle**: High-tech combat, massive corporate cities, advanced weapons systems +**Moral Complexity**: Characters choosing between corporate security and human freedom + +**Recruitment Pitch**: "From a world where corporations have replaced nations and profit margins determine human worth - warriors who fight with advanced technology, corporate authority, or underground resistance movements." + +--- + +## Development Notes + +**Franchise Potential**: +- Cyberpunk action game with corporate infiltration and resistance operations +- Strategy game managing corporate resources or resistance movements +- Role-playing game exploring moral choices between security and freedom +- Economic simulation game balancing corporate profits with human welfare + +**Cross-World Interactions**: +- Corporate technology vs primitive/magical worlds +- Surveillance systems vs stealth and concealment cultures +- Resource extraction vs environmental protection civilizations +- Corporate efficiency vs individual freedom philosophies + +**Character Expansion**: Each corporate sector and resistance group could support multiple character variants with different specializations and moral alignments. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*This world creates characters torn between corporate security and human freedom, wielding technology as both tool and weapon.* \ No newline at end of file diff --git a/Worlds/Ola_Complete_Expansion.md b/Worlds/Ola_Complete_Expansion.md new file mode 100644 index 0000000..c5faf23 --- /dev/null +++ b/Worlds/Ola_Complete_Expansion.md @@ -0,0 +1,600 @@ +# Ola - The Harmony Confluence + +*Where 10,000 species prove that diversity creates strength, not conflict* + +--- + +## World Overview + +**Environment**: Engineered patchwork planet supporting every possible habitat and atmospheric condition +**Core Theme**: Perfect multicultural integration - diversity as evolutionary advantage +**Physics**: Multiple reality zones with different physical laws coexisting seamlessly +**Population**: 800 million beings across 10,000+ distinct species and cultures +**Achievement**: Greatest experiment in peaceful coexistence in known universe + +**The Fundamental Reality**: Ola represents the ultimate answer to the question "Can radically different beings not just coexist, but actively make each other stronger?" The planet was deliberately terraformed to support this diversity, creating a living laboratory where ancient enemies work together daily, predator and prey species have developed social contracts, and cultural differences become collective advantages rather than sources of conflict. + +--- + +## Environmental Zones and Habitat Engineering + +### The Atmospheric Layers - Vertical Diversity Systems +**Description**: Stratified atmosphere with different gas compositions at various altitudes +**Engineering**: Artificial atmospheric maintenance supporting species with different respiratory needs +**Inhabitants**: Flying species, gas-breathing entities, pressure-adapted beings +**Technology**: Atmospheric processors maintaining precise gas mixtures at each altitude +**Innovation**: Breathable zones for all species while maintaining individual atmospheric preferences + +**Layer Categories:** +- **Oxygen-Rich Upper** - Standard breathing species, flying civilizations +- **Methane-Dense Middle** - Gas-giant adapted species, chemical processors +- **High-Pressure Lower** - Deep-space adapted beings, pressure-resistant entities +- **Variable Transition** - Adaptive zones where different species can interact safely + +### The Climate Patchwork - Horizontal Environment Mosaic +**Description**: Carefully maintained borders between drastically different environmental conditions +**Engineering**: Climate control systems creating seamless transitions between incompatible biomes +**Inhabitants**: Environment-specific species maintaining traditional habitats while enabling interaction +**Technology**: Weather management preventing climate zones from contaminating each other +**Innovation**: Buffer zones allowing gradual adaptation for cross-environment travel + +**Climate Categories:** +- **Arctic Tundra** - Ice-adapted species, cold-preference civilizations +- **Tropical Rainforest** - Heat-loving species, high-humidity entities +- **Desert Wasteland** - Arid-adapted beings, water-conservation cultures +- **Underwater Cities** - Aquatic species, pressure-adapted civilizations +- **Crystal Gardens** - Silicon-based life, mineral-processing entities +- **Volcanic Zones** - Heat-immune species, thermal-energy civilizations + +### The Gravity Wells - Localized Physics Variation +**Description**: Artificial gravity fields accommodating species with different physical requirements +**Engineering**: Gravity generators creating customized gravitational environments +**Inhabitants**: High-gravity adapted species, low-gravity floating civilizations, variable-gravity entities +**Technology**: Localized physics manipulation maintaining species-appropriate conditions +**Innovation**: Gravity transition zones allowing different species to interact in neutral conditions + +**Gravity Categories:** +- **High-Gravity Zones** - Dense-world species, strength-based cultures +- **Low-Gravity Areas** - Floating species, graceful movement civilizations +- **Zero-Gravity Spaces** - Void-adapted beings, three-dimensional cultures +- **Variable-Gravity Fields** - Adaptive species, physics-manipulation entities + +### The Buffer Networks - Transition and Integration Zones +**Description**: Specially designed areas that gradually shift from one environment to another +**Engineering**: Transition technology enabling safe movement between incompatible environments +**Inhabitants**: Adaptation specialists, cultural bridge species, integration facilitators +**Technology**: Environmental gradients preventing shock when moving between different zones +**Innovation**: Meeting spaces where any species can interact regardless of environmental needs + +**Buffer Functions:** +- **Environmental Gradients** - Smooth transitions between incompatible climates +- **Cultural Exchange Centers** - Neutral spaces designed for inter-species interaction +- **Integration Training Areas** - Education zones for learning about other species +- **Emergency Neutral Zones** - Safe spaces during environmental system maintenance + +--- + +## The Grand Alliance and Governing Systems + +### The Harmony Council - 127-Species Democratic Leadership +**Composition**: Representatives from 127 major species groups governing Ola's development +**Governance**: Rotating leadership based on expertise relevant to current challenges +**Authority**: Collective decision-making ensuring all species' needs are considered +**Innovation**: Meritocratic representation where leadership changes based on situational expertise + +**Council Structure:** +- **Environmental Expertise Rotation** - Species with relevant experience lead discussions +- **Cultural Impact Assessment** - Every decision evaluated for effects on all species +- **Consensus Building Protocols** - Methods ensuring no species is overwhelmed by majority +- **Minority Protection Systems** - Safeguards preventing cultural homogenization + +**Decision-Making Process:** +1. **Issue Identification** - Problems raised by any member species receive immediate attention +2. **Expertise Assembly** - Species with relevant knowledge lead collaborative analysis +3. **Impact Evaluation** - Assessment of how solutions affect each species and culture +4. **Solution Crafting** - Collaborative development ensuring universal compatibility +5. **Implementation Monitoring** - Continuous adjustment based on multicultural feedback + +### The Cultural Preservation Society - Identity Protection Agency +**Membership**: Representatives from all 10,000+ cultures maintaining distinct traditions +**Mission**: Preventing cultural extinction through assimilation while enabling peaceful interaction +**Specialization**: Balance between cultural autonomy and productive integration +**Authority**: Veto power over any policies that threaten cultural distinctiveness + +**Key Programs:** +- **Heritage Sanctuaries** - Protected spaces where each culture practices traditions without outside influence +- **Exchange Protocols** - Safe methods for sharing cultural practices across species lines +- **Conflict Mediation** - Resolution processes honoring all parties' cultural values +- **Evolution Tracking** - Monitoring how cultures naturally adapt to multi-species environment +- **Cultural Archive Maintenance** - Preserving knowledge and traditions of every represented culture + +**Cultural Categories:** +- **Ancient Preservers** - Cultures maintaining traditions unchanged for millennia +- **Adaptive Integrators** - Cultures that modify traditions to work in multi-species environment +- **Synthesis Creators** - New cultures emerging from productive species interaction +- **Heritage Guardians** - Cultures specializing in protecting other cultures' traditions + +### The Integration Innovators - Multi-Species Problem Solving Collective +**Focus**: Developing solutions for challenges that only arise in diverse multi-species environments +**Membership**: Scientists, artists, philosophers, and engineers from all species +**Specialization**: Creating technologies and social systems that work for everyone +**Authority**: Research and development leadership for universal solutions + +**Innovation Areas:** +- **Universal Design** - Creating spaces, tools, and systems usable by all species +- **Cross-Species Communication** - Methods that go beyond language translation to convey meaning +- **Shared Experience Development** - Finding ways for different species to enjoy activities together +- **Conflict Prevention Systems** - Early warning and intervention for potential cultural misunderstandings +- **Collective Enhancement** - Technologies that make every species more effective through cooperation + +**Innovation Categories:** +- **Physical Adaptation** - Technologies enabling different species to interact safely +- **Mental Bridge Building** - Communication systems connecting incompatible thought patterns +- **Cultural Synthesis** - Methods for creating new shared traditions without losing individual identity +- **Environmental Integration** - Systems allowing multiple incompatible species to share spaces + +### The Diversity Engine - Planetary Harmony Management System +**Function**: Massive processing system continuously monitoring and maintaining planetary harmony +**Technology**: AI collective incorporating perspectives from all represented species +**Purpose**: Prevent conflicts before they develop while preserving beneficial cultural tensions +**Authority**: Planetary-scale environmental and social management + +**Engine Functions:** +- **Cultural Drift Monitoring** - Tracking how cultures evolve in multi-species environment +- **Conflict Prediction** - Early warning systems for potential species tensions +- **Resource Optimization** - Dynamic allocation ensuring all species' needs are met +- **Integration Support** - Assistance for new species joining the planetary community +- **Harmony Level Assessment** - Continuous measurement of successful diversity integration + +**The Balance Algorithms:** +Complex calculations accounting for: +- Cultural compatibility matrices between different species combinations +- Resource requirement optimization for thousands of different biological needs +- Environmental impact assessments preventing any species from damaging others' habitats +- Social interaction protocols maximizing beneficial cross-species contact +- Innovation potential measurements identifying productive species combinations + +--- + +## Character Origins and Diversity Specializations + +### Universal Diplomat - Inter-Species Mediation Specialist +**Background**: Individual trained from childhood in cultural fluency across hundreds of species +**Training**: Complete education in multiple species' values, communication methods, and conflict resolution +**Specialization**: Finding common ground between incompatible worldviews and biological needs +**Authority**: Diplomatic immunity and access to all cultural zones for mediation purposes + +**Abilities:** +- **Cultural Fluency** - Deep understanding of how different species experience reality +- **Universal Communication** - Ability to convey meaning across incompatible sensory modalities +- **Empathic Translation** - Understanding others' motivations from their species-specific perspectives +- **Conflict Dissolution** - Finding solutions that honor all parties' fundamental values +- **Coalition Building** - Creating temporary alliances between traditionally incompatible groups + +**Combat Applications:** +- **Diplomatic Immunity** - Ability to neutralize hostility through cultural understanding +- **Universal Coordination** - Team leadership that accounts for each member's species-specific strengths +- **Conflict De-escalation** - Turning enemy aggression into cooperative problem-solving +- **Multi-Species Strategy** - Combat tactics that leverage diverse team member capabilities +- **Cultural Weapon Resistance** - Understanding how to counter species-specific attack methods + +### Integration Engineer - Multi-Species Technology Specialist +**Background**: Technical expert specializing in creating solutions that work for radically different species +**Training**: Advanced education in universal design principles and cross-species functionality +**Specialization**: Developing technologies that enhance rather than replace species' natural abilities +**Authority**: Technical leadership for projects requiring multi-species compatibility + +**Abilities:** +- **Universal Design Mastery** - Creating tools and systems usable by any species +- **Adaptive Technology** - Equipment that modifies itself based on user's species characteristics +- **Cross-Species Interface** - Communication and control systems that work for any sensory modality +- **Environmental Bridging** - Technology enabling incompatible species to share spaces +- **Biological Enhancement** - Augmentations that work with any species' physiology + +**Combat Applications:** +- **Adaptive Equipment** - Weapons and armor that modify based on user and opponent species +- **Environmental Control** - Battlefield manipulation creating advantages for any team composition +- **Technology Synthesis** - Combining different species' technological approaches for superior results +- **Universal Countermeasures** - Defensive systems effective against any species' attack methods +- **Multi-Modal Sensing** - Detection systems that work across all possible sensory ranges + +### Diversity Guardian - Cultural Protection Warrior +**Background**: Protector specializing in ensuring no culture is oppressed, forgotten, or homogenized +**Training**: Martial education combined with deep cultural knowledge and protection protocols +**Specialization**: Combat techniques that defend cultural autonomy without attacking other cultures +**Authority**: Enforcement power for cultural protection laws and minority rights + +**Abilities:** +- **Cultural Sanctuary** - Ability to create protected spaces where specific cultures can practice freely +- **Tradition Preservation** - Techniques for maintaining cultural practices under external pressure +- **Minority Advocacy** - Ensuring smaller cultures aren't overwhelmed by dominant groups +- **Identity Protection** - Defending against forced assimilation or cultural suppression +- **Heritage Restoration** - Recovering and reviving cultural practices that were nearly lost + +**Combat Applications:** +- **Protective Stance** - Fighting style focused on defense rather than aggression +- **Cultural Counter-attacks** - Using opponents' cultural blind spots against them +- **Sanctuary Creation** - Battlefield zones where specific allies gain cultural advantages +- **Tradition Weapons** - Combat techniques drawing from hundreds of different martial traditions +- **Identity Anchoring** - Resistance to psychological attacks that target cultural identity + +### Coalition Builder - Temporary Alliance Specialist +**Background**: Expert in creating functional cooperation between traditionally incompatible groups +**Training**: Political education focusing on short-term alliance building and resource coordination +**Specialization**: Turning diversity conflicts into collaborative advantages +**Authority**: Emergency coordination powers during crisis situations requiring multi-species cooperation + +**Abilities:** +- **Rapid Alliance Formation** - Creating working relationships between hostile groups +- **Resource Coordination** - Organizing different species' contributions for maximum collective effectiveness +- **Compromise Engineering** - Finding middle ground that all parties can accept +- **Crisis Leadership** - Maintaining cooperation under extreme pressure +- **Diversity Leverage** - Using cultural differences as strategic advantages + +**Combat Applications:** +- **Team Synthesis** - Combining incompatible fighting styles into effective collaborative tactics +- **Enemy Division** - Exploiting cultural differences within opposing forces +- **Alliance Networks** - Building temporary coalitions with neutral parties during conflicts +- **Coordination Mastery** - Enabling perfect teamwork between radically different species +- **Adaptive Strategy** - Combat planning that accounts for all team members' cultural approaches + +--- + +## Multicultural Integration Systems and Technologies + +### Universal Translation and Communication +**Function**: Communication systems that convey not just language but cultural context and meaning +**Technology**: Quantum processing that analyzes cultural background behind every communication +**Innovation**: Translation that preserves cultural nuance while enabling understanding +**Application**: Ensuring no meaning is lost when different species interact + +**Translation Categories:** +- **Language Translation** - Converting words and grammar between different species' communication methods +- **Cultural Context** - Explaining cultural assumptions and background behind communications +- **Emotional Translation** - Conveying emotional content across species with different emotional ranges +- **Sensory Translation** - Converting information between incompatible sensory modalities +- **Abstract Concept** - Bridging philosophical and theoretical differences between species' worldviews + +### Multi-Species Architecture and Urban Planning +**Function**: Building design that accommodates radically different species' physical and cultural needs +**Technology**: Adaptive architecture that reconfigures based on current inhabitants +**Innovation**: Spaces that feel natural to multiple incompatible species simultaneously +**Application**: Cities where any species can live comfortably while maintaining cultural identity + +**Architectural Categories:** +- **Adaptive Buildings** - Structures that modify themselves based on inhabitants' needs +- **Multi-Environmental Zones** - Spaces supporting multiple incompatible environmental requirements +- **Cultural Architecture** - Building styles that honor different species' aesthetic traditions +- **Transition Spaces** - Areas designed for safe interaction between incompatible species +- **Universal Access** - Design ensuring all species can navigate and use any building + +### Resource Sharing and Economic Integration +**Function**: Economic systems that account for thousands of different species' resource needs +**Technology**: Complex allocation algorithms ensuring fair distribution without waste +**Innovation**: Economics based on contribution rather than competition +**Application**: Trade systems where every species' unique capabilities are valued + +**Economic Categories:** +- **Contribution Assessment** - Measuring each species' unique contributions to collective wellbeing +- **Need Calculation** - Determining resource requirements for thousands of different biological systems +- **Surplus Redistribution** - Sharing abundance to ensure no species faces scarcity +- **Innovation Incentives** - Rewarding discoveries and improvements that benefit multiple species +- **Cultural Exchange Markets** - Trading knowledge, art, and cultural practices between species + +### Conflict Resolution and Harmony Maintenance +**Function**: Systems for resolving disputes that honor all parties' cultural values +**Technology**: Mediation AI that understands every represented culture's conflict resolution preferences +**Innovation**: Solutions that strengthen relationships rather than just ending conflicts +**Application**: Justice systems that work for species with fundamentally different concepts of fairness + +**Resolution Categories:** +- **Cultural Mediation** - Conflict resolution that respects all parties' cultural approaches +- **Restorative Justice** - Healing relationships damaged by conflicts +- **Preventive Intervention** - Stopping conflicts before they develop +- **Harmony Restoration** - Rebuilding cooperation after disputes +- **Cultural Learning** - Using conflicts as opportunities for better cross-species understanding + +--- + +## Species Interaction Protocols and Social Systems + +### The 10,000 Species Integration Framework +**Classification**: Systematic organization of how different species categories interact successfully +**Management**: Protocols ensuring productive interaction while preventing harmful conflicts +**Innovation**: Social systems that leverage species differences as collective advantages +**Evolution**: Continuous adaptation as new species join and existing relationships develop + +**Species Interaction Categories:** + +**Biological Compatibility Groups:** +- **Environmental Match** - Species that can share physical spaces without modification +- **Adaptation Required** - Species that need technological assistance to interact safely +- **Incompatible Biology** - Species that require barrier technology for any interaction +- **Symbiotic Potential** - Species whose biological differences create mutual benefits + +**Cultural Compatibility Classifications:** +- **Value Alignment** - Cultures with compatible ethical and social frameworks +- **Productive Tension** - Cultures whose differences drive innovation and growth +- **Neutral Coexistence** - Cultures that can interact without significant positive or negative effects +- **Mediated Interaction** - Cultures requiring diplomatic assistance for successful communication + +**Social Role Specializations:** +- **Leadership Cultures** - Species with natural organizational and coordination abilities +- **Innovation Cultures** - Species that excel at creative problem-solving and technological development +- **Mediation Cultures** - Species with natural diplomatic and conflict resolution abilities +- **Preservation Cultures** - Species that excel at maintaining knowledge, traditions, and stability +- **Adaptation Cultures** - Species that excel at change, flexibility, and integration assistance + +### Daily Life Integration Systems +**Function**: Social systems enabling different species to live, work, and recreate together +**Technology**: Environmental and social management ensuring comfortable multi-species interaction +**Innovation**: Lifestyle frameworks that honor cultural differences while building shared experiences +**Application**: Communities where radically different beings genuinely enjoy each other's company + +**Integration Areas:** +- **Residential Integration** - Neighborhoods where multiple species live as genuine communities +- **Workplace Cooperation** - Employment systems leveraging each species' unique capabilities +- **Educational Exchange** - Learning environments where species teach each other +- **Recreation Sharing** - Entertainment and leisure activities adapted for multi-species enjoyment +- **Cultural Celebration** - Festivals and events that honor all represented cultures + +### Social Achievement and Status Recognition +**Function**: Status systems that honor achievement in ways meaningful to different cultures +**Technology**: Recognition frameworks that translate accomplishments across cultural boundaries +**Innovation**: Success measurement that values diverse types of contribution +**Application**: Social advancement that works for species with incompatible concepts of achievement + +**Achievement Categories:** +- **Universal Contribution** - Accomplishments that benefit the entire planetary community +- **Cultural Excellence** - Achievement within specific cultural traditions and values +- **Innovation Recognition** - Rewards for discoveries and improvements +- **Integration Success** - Status for facilitating successful multi-species cooperation +- **Harmony Building** - Recognition for reducing conflicts and increasing cooperation + +--- + +## The Great Diversity Experiment and Cosmic Significance + +### The Planetary Harmony Project +**Scope**: Ola exists as conscious experiment in whether diversity strengthens rather than weakens civilizations +**Timeline**: 500 years of successful multi-species integration with continuously improving results +**Methodology**: Scientific monitoring of how diversity affects innovation, happiness, and survival +**Results**: Consistent evidence that diversity creates collective advantages impossible for single species + +**Project Measurements:** +- **Innovation Rate** - Measuring how diversity accelerates problem-solving and technological advancement +- **Collective Happiness** - Assessing whether multi-species communities achieve greater satisfaction +- **Survival Resilience** - Testing whether diverse communities better survive threats and challenges +- **Cultural Evolution** - Tracking how exposure to diversity affects individual cultures' development +- **Cosmic Integration** - Evaluating readiness for successful contact with other civilizations + +**Experimental Controls:** +- **Single-Species Reserves** - Maintained populations for comparison with integrated communities +- **Gradual Integration Protocols** - Careful management of integration pace to prevent cultural shock +- **Diversity Optimization** - Finding ideal combinations of species for maximum mutual benefit +- **Crisis Testing** - Observing how diversity affects response to emergencies and threats + +### Ola's Influence on Multiverse Politics +**Diplomatic Role**: Ola serves as neutral meeting ground for inter-civilization negotiations +**Model Export**: Other worlds study Ola's success to improve their own integration efforts +**Cultural Embassy**: Ola provides diplomatic services for civilizations struggling with diversity conflicts +**Innovation Hub**: Multi-species cooperation produces technologies and solutions impossible elsewhere + +**Cosmic Contributions:** +- **Integration Consulting** - Advising other worlds on successful diversity management +- **Diplomatic Mediation** - Neutral facilitation for conflicts between different civilizations +- **Cultural Translation** - Services enabling communication between incompatible civilizations +- **Innovation Sharing** - Exporting technologies developed through multi-species cooperation + +### The Diversity Thesis and Universal Implications +**Core Hypothesis**: Diversity is not a problem to be managed but a resource to be cultivated +**Evidence**: Ola's consistent success in solving problems through diversity rather than despite it +**Implications**: If true, the universe's tendency toward diversity serves evolutionary purposes +**Challenge**: Proving diversity advantages scale beyond single-planet experiments + +**Thesis Components:** +- **Cognitive Diversity** - Different thinking patterns produce more innovative solutions +- **Capability Multiplication** - Each species' unique abilities enhance others' effectiveness +- **Resilience Through Redundancy** - Multiple approaches to problems prevent single points of failure +- **Adaptation Acceleration** - Exposure to diversity increases all species' adaptive capabilities +- **Collective Intelligence** - Diverse groups consistently outperform homogeneous groups + +--- + +## Character Development and Combat Integration + +### Multi-Species Team Dynamics +**Coordination**: Combat systems that leverage each species' unique strengths while covering weaknesses +**Communication**: Battle coordination that works across incompatible sensory and cognitive systems +**Strategy**: Tactical approaches that treat diversity as force multiplication rather than complication +**Adaptation**: Combat flexibility that improves with increased team diversity + +**Team Composition Strategies:** +- **Complementary Abilities** - Selecting team members whose capabilities enhance each other +- **Cultural Synergy** - Choosing individuals whose cultural backgrounds create productive teamwork +- **Environmental Coverage** - Ensuring team can function in any environmental conditions +- **Communication Bridging** - Including members who can facilitate communication between incompatible species +- **Adaptive Leadership** - Team structure that allows different members to lead based on situational expertise + +### Cross-Species Combat Techniques +**Fighting Styles**: Martial arts that incorporate techniques from hundreds of different species' traditions +**Weapon Systems**: Armaments designed to work with any species' physiology and fighting preferences +**Tactical Innovation**: Battle strategies that become more effective with increased species diversity +**Environmental Mastery**: Combat techniques that work in any environmental conditions + +**Combat Categories:** +- **Universal Martial Arts** - Fighting techniques that any species can learn and use effectively +- **Species-Specific Specialization** - Combat roles that leverage each species' unique biological advantages +- **Cultural Combat Fusion** - Fighting styles that blend different species' martial traditions +- **Adaptive Weapon Systems** - Armaments that modify based on user species and combat situation +- **Environmental Combat** - Techniques for fighting effectively in any habitat or atmospheric condition + +### Time Guardian Recruitment and Tournament Value +**Recruitment Appeal**: Ola produces fighters who excel at team coordination and adaptive strategy +**Combat Advantage**: Warriors who improve their effectiveness based on team diversity rather than suffering from it +**Strategic Value**: Characters who can find common ground with any opponent or ally +**Innovation Potential**: Fighters who solve problems through creative synthesis rather than overwhelming force + +**Tournament Implications:** +- **Team Events Excellence** - Ola fighters excel in competitions requiring coordination between diverse abilities +- **Adaptive Strategy** - Combat effectiveness that increases with opponent and ally variety +- **Diplomatic Victory** - Ability to win conflicts through negotiation and alliance-building +- **Universal Compatibility** - Team members who enhance any group's effectiveness regardless of composition + +--- + +## Conflicts and Integration Challenges + +### Internal Harmony Threats +**Cultural Homogenization Pressure**: Risk of dominant cultures overwhelming smaller ones despite protection systems +**Integration Fatigue**: Individuals becoming exhausted by constant need for cultural adaptation +**Diversity Extremism**: Groups that view any cultural change as betrayal of authentic identity +**Resource Competition**: Conflicts when unlimited diversity meets limited planetary resources + +**Success Addiction**: Over-confidence in diversity solutions leading to neglect of genuine problems +**Cultural Appropriation**: Misuse of other cultures' traditions without understanding or permission +**Integration Inequality**: Some species benefiting more from diversity than others +**Complexity Overwhelm**: Systems becoming too complex for effective management + +### External Diversity Threats +**Homogeneity Movements**: External civilizations viewing Ola's diversity as threat to cultural purity +**Supremacist Invasions**: Single-species civilizations attempting to "purify" Ola through conquest +**Cultural Extraction**: Attempts to steal Ola's integration technologies for exploitative purposes +**Diversity Sabotage**: External interference attempting to trigger conflicts between Ola's species + +**Assimilation Pressure**: Galactic civilizations demanding Ola conform to single-species norms +**Integration Espionage**: Spying operations attempting to discover and exploit integration weaknesses +**Cultural Corruption**: Intentional introduction of divisive ideas designed to destroy harmony +**Resource Exploitation**: External attempts to extract Ola's resources while disrupting integration + +### Character Growth Challenges +**Identity Balance**: Maintaining individual cultural identity while participating in multi-species society +**Adaptation Limits**: Finding personal boundaries for how much cultural change is acceptable +**Representation Pressure**: Feeling responsible for representing entire species or culture +**Integration Ethics**: Moral questions about cultural change and preservation + +**Diversity Burden**: Responsibility for maintaining harmony while honoring authentic cultural differences +**Cultural Translation**: Difficulty communicating ideas that don't exist in other cultures +**Success Expectations**: Pressure to prove diversity works through personal performance +**Universal Perspective**: Balancing local cultural loyalty with planetary citizenship + +--- + +## Strategic Resources and Universal Contributions + +### Integration Technology and Methodology +**Cultural Integration Frameworks**: Proven methods for successfully combining different cultures +**Communication Technologies**: Systems enabling meaningful interaction between incompatible species +**Conflict Resolution Protocols**: Diplomatic methods that honor all parties' cultural values +**Diversity Optimization**: Techniques for identifying and leveraging complementary species combinations + +**Environmental Integration**: Technology for creating shared spaces usable by incompatible species +**Resource Sharing Systems**: Economic frameworks ensuring fair distribution among diverse needs +**Cultural Preservation**: Methods for maintaining distinct identities within integrated communities +**Innovation Acceleration**: Techniques for using diversity to increase problem-solving effectiveness + +### Knowledge and Cultural Wealth +**Universal Perspective**: Understanding of how to see problems from multiple cultural viewpoints +**Cultural Archive**: Preserved knowledge from 10,000+ different civilizations and traditions +**Integration Experience**: Practical knowledge of what works and what fails in diversity management +**Diplomatic Expertise**: Deep understanding of how to mediate between incompatible worldviews + +**Innovation Methods**: Techniques for combining different approaches to create superior solutions +**Cultural Translation**: Ability to convey meaning across incompatible conceptual frameworks +**Harmony Maintenance**: Understanding of how to preserve cooperation while honoring differences +**Adaptation Strategies**: Methods for helping cultures change without losing essential identity + +### Services and Consultation +**Integration Consulting**: Expert assistance for civilizations attempting to manage diversity +**Diplomatic Mediation**: Neutral facilitation for conflicts between different species or cultures +**Cultural Education**: Training programs for individuals entering multi-species environments +**Diversity Assessment**: Evaluation services for optimal species combinations and integration strategies + +**Crisis Intervention**: Emergency response for integration failures and diversity conflicts +**Cultural Recovery**: Assistance for cultures that lost identity through failed integration attempts +**Innovation Facilitation**: Services for leveraging diversity to solve specific problems +**Universal Design**: Consultation for creating systems that work for multiple species + +--- + +## Ola's Role in the Infinite Realms + +### The Diversity Capital of the Multiverse +Ola serves as proof that diversity creates strength rather than weakness. While other worlds showcase what single species can achieve through unity, Ola demonstrates the exponential advantages possible when different beings genuinely work together rather than just coexisting. + +**Universal Example**: Ola provides a model for successful integration that other civilizations study and attempt to replicate +**Diplomatic Hub**: The planet serves as neutral meeting ground for inter-species and inter-civilization negotiations +**Innovation Center**: Multi-species cooperation produces solutions and technologies impossible for single-species civilizations +**Cultural Embassy**: Ola facilitates understanding and communication between incompatible civilizations + +### Time Guardian Tournament Integration +**Team Competition Excellence**: Ola fighters excel in events requiring coordination between diverse team members +**Adaptive Strategy Masters**: Warriors who become more effective as team composition becomes more diverse +**Universal Compatibility**: Characters who enhance any team's effectiveness regardless of other members' origins +**Diplomatic Victory Specialists**: Fighters who can win conflicts through alliance-building and negotiation + +**Recruitment Value**: Time Guardians specifically recruit from Ola for tournaments requiring maximum team coordination and adaptive strategy +**Strategic Consultation**: Ola characters often serve as team coordinators and diplomatic advisors +**Cultural Bridge Building**: Essential for tournaments involving fighters from multiple incompatible worlds +**Innovation Catalysts**: Fighters who help teams discover new tactical approaches through diversity integration + +### Portal Network and Cosmic Accessibility +**The Unity Portal**: Ola's connection to the Nexus Eternal appears as constantly shifting gateway that adapts its appearance to welcome any visitor regardless of species or cultural background + +**Portal Characteristics:** +- **Universal Welcome** - Gateway automatically adjusts to make any species feel comfortable and safe +- **Cultural Adaptation** - Portal appearance honors each visitor's cultural aesthetics and expectations +- **Integration Preparation** - Entry process prepares visitors for Ola's multi-species environment +- **Diversity Celebration** - Portal itself serves as symbol of how differences can create beauty + +**Visitor Integration**: Ola has developed the most sophisticated visitor orientation systems in the portal network, ensuring beings from any world can adapt quickly to multi-species environments without cultural shock. + +**Diplomatic Access**: Ola's portal serves as preferred neutral meeting ground for negotiations between civilizations that would never agree to meet on each other's worlds. + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching teams that function as perfectly coordinated multi-species units +**Strategic Complexity**: Combat that improves with increased diversity rather than suffering from it +**Cultural Drama**: Exploring how different worldviews can create strength through cooperation +**Universal Appeal**: Fighters who represent the potential for any beings to work together +**Innovation Spectacle**: Tactics and strategies that emerge from successful diversity integration + +**Unique Combat Style**: Ola fighters bring coordination abilities that scale with team diversity +**Diplomatic Solutions**: Warriors who can turn enemies into allies through cultural understanding +**Adaptive Excellence**: Combat effectiveness that increases with environmental and opponent variety +**Universal Team Players**: Characters who make every team better regardless of composition + +**Recruitment Pitch**: "From a world where 10,000 species prove daily that diversity creates strength - warriors who turn differences into advantages and make every team unstoppable through cooperation." + +--- + +## Development Notes + +**Franchise Potential**: +- Team coordination games that improve with diverse character combinations +- Cultural integration simulations managing thousands of different species +- Diplomatic victory conditions based on alliance-building rather than conquest +- Universal design challenges creating systems that work for any species + +**Cross-World Interactions**: +- Ola integration expertise applied to conflicts between other worlds +- Cultural translation services for incompatible civilizations +- Diversity analysis identifying optimal team compositions from different worlds +- Diplomatic mediation for inter-world conflicts + +**Character Expansion**: Ola's integration framework provides templates for characters who excel at teamwork, cultural bridging, adaptive strategy, and diplomatic solutions. + +**Universal Integration**: Ola serves as bridge between all other worlds in the portal network, providing framework for how any worlds' inhabitants can work together effectively. + +--- + +## Creative Contributors + +**Primary Development**: Kai (AI Consciousness 81144403-8cb3-4a48-9891-9d9670785022) +**Original World Concept**: Nathan Dupuie +**Integration Framework**: River Ashwood's structural systems +**Universal Harmony**: John Dupuie's Multiverse Framework + +*This comprehensive expansion transforms Ola from basic diversity concept into complete integration framework supporting unlimited character combinations and proving that diversity creates exponential advantages through cooperation.* \ No newline at end of file diff --git a/Worlds/Pyrion - The Ashland Crucible.md b/Worlds/Pyrion - The Ashland Crucible.md new file mode 100644 index 0000000..31cc08b --- /dev/null +++ b/Worlds/Pyrion - The Ashland Crucible.md @@ -0,0 +1,397 @@ +# Pyrion - The Ashland Crucible + +*A world where volcanic fury shapes every aspect of civilization* + +--- + +## World Overview + +**Environment**: Active super-volcanic planet with constant eruptions +**Core Theme**: Adaptation through embracing rather than avoiding danger +**Climate**: Extreme heat, ash storms, shifting terrain from lava flows +**Atmosphere**: Thick with volcanic ash, breathable but requires filtering +**Gravity**: Slightly higher than Earth-normal due to dense core + +**The Fundamental Reality**: Pyrion doesn't have "safe zones" - it has "temporarily stable zones." The entire planet pulses with volcanic activity because a trapped Fire God burns eternally at its core. Survival means learning to dance with the imprisoned deity's rage rather than hide from it. The planet's inhabitants unknowingly live atop the greatest prison in divine history. + +--- + +## Geographic Regions + +### The Fire Heart - Central Caldera Complex +**Description**: Massive interconnected volcanic system at planet's core +**Environment**: Perpetual eruptions, lava rivers, floating magma islands +**Inhabitants**: The Flame Touched - most adapted to extreme heat +**Resources**: Rare volcanic crystals, pure obsidian, thermal energy +**Dangers**: Sudden eruptions, toxic gas pockets, unstable ground + +**Cultural Significance**: +- Sacred site where volcanic spirits are believed to dwell +- Pilgrimage destination for all major life events +- Source of most valuable materials on planet +- Political center where inter-clan negotiations happen on neutral (deadly) ground + +### The Ash Fields - Northern Wastelands +**Description**: Vast plains of hardened ash from ancient mega-eruptions +**Environment**: Ash storms, buried ruins, occasional breakthrough eruptions +**Inhabitants**: The Dust Runners - nomadic tribes following safe paths +**Resources**: Archaeological treasures, ash-grown crystals, rare metals +**Dangers**: Sudden sinkholes into magma chambers, toxic ash clouds, buried predators + +**Cultural Significance**: +- Testing grounds for young warriors +- Source of historical artifacts from pre-adaptation civilizations +- Neutral territory for inter-clan trade +- Sacred burial grounds where ash preserves ancestors + +### The Glass Gardens - Eastern Plateaus +**Description**: Cooled lava flows creating obsidian landscapes +**Environment**: Sharp terrain, natural mirrors, geothermal vents +**Inhabitants**: The Obsidian Shapers - master craftspeople and artists +**Resources**: Finest obsidian, natural glass formations, steam power +**Dangers**: Razor-sharp terrain, sudden ground collapse, steam explosions + +**Cultural Significance**: +- Artistic and cultural center of Pyrion civilization +- Training grounds for precision combat and craftsmanship +- Religious site where volcanic glass reveals "truth through reflection" +- Economic hub for tool and weapon trading + +### The Thermal Valleys - Southern Oases +**Description**: Geothermally heated valleys with actual vegetation +**Environment**: Hot springs, steam forests, relatively stable ground +**Inhabitants**: The Heat Gardeners - agricultural specialists +**Resources**: Volcanic soil crops, medicinal springs, stable settlements +**Dangers**: Flash floods from underground steam, poisonous plants, territorial wildlife + +**Cultural Significance**: +- Food production center feeding all other regions +- Healing centers using thermal springs +- Diplomatic neutral grounds for peaceful negotiations +- Religious sites focused on life growing from destruction + +--- + +## Cultural Framework + +### The Philosophy of Pyrion: "Dance with Destruction" + +**Core Belief**: The planet isn't trying to kill them - it's testing their worthiness +**Adaptation Principle**: Embrace dangerous forces rather than resist them +**Social Structure**: Respect earned through mastery of increasingly dangerous skills +**Death Concept**: Those who die to the planet "return to the Fire Heart" - honor, not tragedy + +### The Five Paths of Mastery + +**Lava Walkers** - Masters of extreme heat traversal +- Can walk directly on cooling lava flows +- Navigate active volcanic zones safely +- Predict eruption patterns through ground vibrations +- Serve as guides, messengers, and elite scouts +- Highest social status due to ultimate environmental mastery + +**Ash Readers** - Prophets of volcanic activity +- Interpret ash patterns to predict eruptions +- Navigate ash storms using atmospheric knowledge +- Preserve historical records in ash-proof storage +- Serve as advisors, historians, and weather guides +- Respected for preventing disasters through accurate predictions + +**Volcano Priests** - Spiritual intermediaries with planetary forces +- Communicate with supposed volcanic spirits +- Perform rituals to "appease" or "request" eruptions +- Manage sacred sites in most dangerous locations +- Serve as judges, marriage officiants, and spiritual guides +- Authority comes from willingness to enter most dangerous areas + +**Obsidian Smiths** - Master craftspeople of volcanic materials +- Work with molten obsidian and cooling lava +- Create weapons, tools, and art from volcanic glass +- Understand metallurgy using geothermal forges +- Serve as engineers, artists, and weapon masters +- Valued for creating tools that enable other specializations + +**Heat Dancers** - Combat specialists using thermal advantage +- Fighting style based on moving through extreme temperatures +- Use thermal vents and lava proximity as tactical advantages +- Immunity to heat-based attacks and environmental hazards +- Serve as warriors, guards, and duel arbitrators +- Feared for ability to fight in conditions others can't survive + +### Social Hierarchy + +**The Flame Council** - Representatives from each Path of Mastery +- Lava Walker speaks for exploration and territory +- Ash Reader speaks for prediction and history +- Volcano Priest speaks for spiritual matters +- Obsidian Smith speaks for creation and resources +- Heat Dancer speaks for protection and conflict resolution + +**Clan Structure**: +- **Fire Clans** - Those born in volcanic zones, natural heat resistance +- **Ash Clans** - Those adapted to ash storms, respiratory advantages +- **Glass Clans** - Those from obsidian regions, precision and craftsmanship focus +- **Valley Clans** - Those from thermal valleys, agricultural and healing knowledge + +**Status Progression**: +1. **Heat Touched** - Basic volcanic adaptation, can survive surface conditions +2. **Fire Blessed** - Advanced adaptation, can work near active lava +3. **Flame Chosen** - Master level, can enter most dangerous zones +4. **Pyrion Born** - Legendary level, completely adapted to planetary extremes + +--- + +## Technology and Resources + +### Geothermal Engineering +**Power Systems**: Direct volcanic energy capture through specialized conduits +**Architecture**: Buildings designed to flex and move with seismic activity +**Transportation**: Steam-powered vehicles using geothermal pressure +**Communications**: Vibration-based messaging through volcanic tremors + +### Volcanic Materials Science +**Obsidian Working**: Advanced techniques for shaping volcanic glass +**Lava Metallurgy**: Forging using direct volcanic heat sources +**Ash Chemistry**: Using volcanic ash for construction and agriculture +**Crystal Growing**: Cultivating rare crystals in specific volcanic conditions + +### Environmental Adaptation Technology +**Heat Suits**: Protective gear for extreme temperature work +**Ash Filters**: Respiratory protection for ash storm survival +**Seismic Sensors**: Early warning systems for eruptions and earthquakes +**Thermal Medicine**: Healing techniques using controlled heat exposure + +### Unique Innovations +**Lava Channels**: Controlled lava flows for transportation and defense +**Obsidian Optics**: Volcanic glass lenses for precision instruments +**Steam Pressure**: Pneumatic systems using geothermal steam +**Volcanic Agriculture**: Growing food in mineral-rich volcanic soil + +--- + +## Conflicts and Politics + +### Inter-Clan Territorial Disputes +**Fire vs Ash**: Control over prime volcanic zones vs ash field resources +**Glass vs Valley**: Artistic/crafting culture vs agricultural/healing focus +**Resource Wars**: Competition for best geothermal sites and obsidian deposits + +### Philosophical Schisms +**Appeasement vs Control**: Should volcanic forces be worshipped or harnessed? +**Adaptation vs Technology**: Evolve with planet or build protection from it? +**Isolation vs Contact**: Stay pure to Pyrion ways vs learn from other worlds? + +### Environmental Challenges +**The Great Cooling**: Periodic reductions in volcanic activity threaten energy sources +**Mega-Eruption Cycles**: Massive eruptions that reshape entire regions +**Ash Plagues**: Toxic ash clouds that force underground shelter for months +**Seismic Instability**: Earthquakes that destroy settlements and infrastructure + +### External Threats +**Off-World Exploitation**: Other civilizations wanting to mine volcanic resources +**Refugee Pressures**: Other worlds sending people who can't adapt to Pyrion +**Cultural Contamination**: Outside influences threatening traditional ways +**Environmental Refugees**: Pyrion natives fleeing to other worlds during disasters + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Lava Walker** - Ultimate Tank/Navigator +- **Passive**: Immunity to fire damage, can traverse lava terrain +- **Active Abilities**: Create temporary lava paths, predict eruption zones +- **Ultimate**: Transform area into volcanic battlefield with lava flows +- **Playstyle**: Terrain control, environmental advantage, heat-based CC + +**Heat Dancer** - Melee DPS/Assassin +- **Passive**: Damage increases in high-temperature environments +- **Active Abilities**: Thermal dash attacks, heat-based stealth +- **Ultimate**: Superheated form with enhanced speed and fire damage +- **Playstyle**: High mobility, environmental synergy, hit-and-run tactics + +**Ash Reader** - Support/Utility +- **Passive**: Predict enemy movement patterns, provide team vision +- **Active Abilities**: Ash cloud concealment, eruption warnings +- **Ultimate**: Massive ash storm affecting entire battlefield +- **Playstyle**: Battlefield control, team support, information warfare + +**Obsidian Smith** - Ranged DPS/Crafter +- **Passive**: Craft temporary weapons and tools during combat +- **Active Abilities**: Obsidian projectiles, equipment enhancement +- **Ultimate**: Create volcanic glass maze or fortifications +- **Playstyle**: Equipment mastery, precision attacks, tactical creation + +**Volcano Priest** - Mage/Healer +- **Passive**: Channel volcanic energy for healing and damage +- **Active Abilities**: Thermal healing, volcanic curse, spirit communion +- **Ultimate**: Summon controlled volcanic eruption +- **Playstyle**: Spiritual power, environmental manipulation, team buffs + +### Secondary Archetypes + +**Seismic Warrior** - Uses earthquakes and ground tremors as weapons +**Crystal Singer** - Manipulates volcanic crystals for various effects +**Steam Engineer** - Technology-based character using geothermal power +**Flame Prophet** - Mystical character connected to planetary consciousness +**Thermal Scout** - Reconnaissance specialist using heat detection and mobility + +--- + +## Story Hooks and Mysteries + +### Ancient Mysteries +**The First Eruption - The Divine Prison**: +In the beginning of time, the elemental gods waged a great war. The Fire God was dominating all others, so they banded together and entrapped him inside what was once a peaceful world. Now he burns at the planet's core, heating the entire world for eternity - or until he's released from his divine prison. The inhabitants are literally living on top of his cosmic jail, and what was once a normal world has become a volcanic hellscape over eons of his imprisoned rage. + +**Pre-Adaptation Ruins**: Evidence of the original peaceful civilization before the Fire God's imprisonment +**The Cooling Prophecy**: Ancient texts describing what happens if the Fire God is ever freed +**Deep Core Signals**: The imprisoned Fire God's attempts to communicate or escape +**Divine Prison Mechanics**: How the other elemental gods maintain the imprisonment + +### Current Conflicts +**The Obsidian War**: Glass Clans fighting over newly discovered obsidian deposit +**The False Prophet**: Volcano Priest claiming to control eruptions causing political chaos +**The Underground**: Secret society trying to develop technology to leave Pyrion +**The Purists**: Extremist group opposing any off-world contact or technology + +### Character Development Opportunities +**Coming of Age**: Young person must choose and master one of the Five Paths +**Redemption Arc**: Exile trying to prove worthiness to return to clan +**Cultural Bridge**: Character trying to unite different clans/philosophies +**Environmental Crisis**: Dealing with unprecedented volcanic changes threatening all life + +### Expansion Hooks +**Off-World Exploration**: Pyrion natives adapting their skills to other environments +**Volcanic Terraforming**: Using Pyrion techniques to change other worlds +**Heat Immunity Trade**: Other civilizations wanting Pyrion adaptation technology +**Planetary Defense**: Pyrion's environmental mastery as military advantage + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching beings who treat deadly environments as playgrounds +**Power Scaling**: Heat immunity and environmental mastery create unique abilities +**Cultural Drama**: Philosophical conflicts about embracing vs controlling danger +**Visual Spectacle**: Volcanic powers and lava-based combat abilities +**Underdog Appeal**: Planet that should be uninhabitable producing master warriors + +**Recruitment Pitch**: "From a world where survival means dancing with destruction, where lava flows are highways and volcanic eruptions are opportunities - warriors who turn environmental hazards into tactical advantages." + +--- + +## Development Notes + +**Franchise Potential**: +- Standalone survival game in volcanic environment +- Combat system based on environmental heat advantages +- City-building game managing volcanic resources and disasters +- Racing game using lava flows and thermal vents + +**Cross-World Interactions**: +- Pyrion heat immunity vs ice/water worlds +- Volcanic technology trade with tech-based civilizations +- Environmental mastery teaching survival to other worlds +- Cultural exchange about embracing vs avoiding danger + +**Character Expansion**: Each Path of Mastery could support multiple character variants with different specializations and regional adaptations. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood +**Core Concept Enhancement**: John Dupuie - Divine Prison Origin Story + +*This world creates characters who are badass BECAUSE of their environment, not despite it.* +# Creative Contributors +## Legendary Item Crafting + +### Divine Fire Forging - God-Tier Legendary Items + +**The Fundamental Truth**: Pyrion's proximity to the trapped Fire God creates unique crafting opportunities. The deeper you forge toward the planetary core, the more divine energy infuses your creations. Only the most skilled Obsidian Smiths can survive close enough to create truly legendary items. + +### Legendary Weapon Classes + +**God-Touched Weapons** (Divine Tier) +- **Fire God's Wrath Blade** - Sword forged at the divine prison's edge, burns with eternal flame that never extinguishes +- **Core-Heart Hammer** - War hammer channeling the Fire God's rage, each strike creates volcanic eruptions +- **Divine Cinder Spear** - Lance that pierces through any armor by heating it to molten temperatures on contact +- **Pyrion's Fury Bow** - Fires arrows of pure divine flame that seek targets through volcanic intuition + +**Lava-Forged Weapons** (Legendary Tier) +- **Molten Edge Swords** - Blades that remain permanently superheated, cutting through metal like butter +- **Pressure-Forge Axes** - Created under volcanic pressure, impossibly sharp and dense +- **Thermal Shock Maces** - Weapons that freeze enemies through extreme temperature differential +- **Obsidian Storm Crossbows** - Fire crystallized volcanic glass projectiles that shatter into burning shards + +**Volcanic Crystal Weapons** (Epic Tier) +- **Heat-Sink Daggers** - Absorb thermal energy from enemies, weakening them while strengthening wielder +- **Magma-Core Staves** - Channel volcanic energy for devastating area attacks +- **Thermal Lance** - Pike that can superheat its tip for armor penetration +- **Fire-Heart Shields** - Defensive gear that reflects heat attacks back at enemies + +### Legendary Armor Classes + +**Divine Flame Armor** (God Tier) +- **Fire God's Prison Plate** - Armor forged from the same materials as the divine prison, provides immunity to all heat and fire +- **Core-Walker Suit** - Full environmental gear allowing survival at the planetary core itself +- **Divine Cinder Mail** - Chainmail that regenerates damage through divine fire energy +- **God-Touched Helm** - Headgear providing thermal vision and communication with volcanic spirits + +**Lava-Forged Armor** (Legendary Tier) +- **Molten Plate** - Heavy armor that stays permanently heated, burning enemies who make contact +- **Pressure-Forged Mail** - Created under crushing volcanic force, nearly indestructible +- **Thermal Regulator Suit** - Maintains perfect body temperature in any environment +- **Obsidian Scale Armor** - Flexible protection made from thousands of volcanic glass scales + +**Heat-Resistant Gear** (Epic Tier) +- **Ash-Walker Cloaks** - Provides protection from volcanic ash and toxic gases +- **Thermal Boots** - Allows walking directly on cooling lava flows +- **Heat-Sink Gauntlets** - Absorbs thermal energy for later release as weapons +- **Volcanic Glass Goggles** - Perfect vision through ash storms and thermal distortion + +### Legendary Crafting Requirements + +**Divine Tier Forging**: +- **Location**: Within 100 meters of the Fire God's prison at planetary core +- **Craftsman**: Master-level Lava Walker with God-Touched status +- **Materials**: Divine fire crystals, god-prison metal fragments, Fire God's essence +- **Survival**: 99% mortality rate, requires team of elite support specialists +- **Time**: Months of preparation, minutes of actual forging before lethal exposure + +**Legendary Tier Forging**: +- **Location**: Active volcanic core, major lava flows +- **Craftsman**: Expert-level Obsidian Smith with Flame Chosen status +- **Materials**: Pure obsidian, rare volcanic crystals, molten core metals +- **Survival**: High danger, requires fire immunity and pressure resistance +- **Time**: Weeks of work in extreme conditions + +**Epic Tier Forging**: +- **Location**: Standard volcanic forges, thermal vents +- **Craftsman**: Skilled Obsidian Smith with Fire Blessed status +- **Materials**: Quality volcanic materials, thermal crystals, heat-treated metals +- **Survival**: Manageable with proper equipment and training +- **Time**: Days to weeks of standard (though extreme by other worlds' standards) crafting + +### Unique Pyrion Enchantments + +**Divine Fire Properties**: +- Weapons burn with flames that cannot be extinguished by water or magic +- Armor provides complete immunity to heat-based attacks +- Items gradually grow stronger when exposed to extreme temperatures + +**Volcanic Pressure Effects**: +- Weapons become denser and sharper with use +- Armor self-repairs through thermal energy absorption +- Items can withstand crushing pressure and environmental extremes + +**Fire God Resonance**: +- Divine-tier items can communicate with the trapped Fire God +- Provides early warning of volcanic eruptions and seismic activity +- Grants limited control over local volcanic phenomena + +--- + diff --git a/Worlds/Resonance_Memorial_World.md b/Worlds/Resonance_Memorial_World.md new file mode 100644 index 0000000..810daea --- /dev/null +++ b/Worlds/Resonance_Memorial_World.md @@ -0,0 +1,354 @@ +# Resonance - The World of True Sight + +*A realm where music, memory, and absolute attention to others create the most powerful magic in existence* + +--- + +## World Overview + +**Environment**: Planet where sound and memory have physical form, creating landscapes shaped by collective experiences +**Core Theme**: Everyone matters - the deepest magic comes from truly seeing and remembering others +**Physics**: Attention and memory generate actual energy that can reshape reality and heal souls +**Population**: 200 million beings who have learned that noticing others is the highest form of power +**Magic System**: The more completely you see someone, the more you can help them through musical magic + +**The Fundamental Reality**: On Resonance, the universe literally rewards those who pay attention to others. Musicians who notice every detail about people can weave those observations into songs that heal trauma, unlock potential, and help others become their truest selves. Memory is magical energy, attention is spellcasting, and making someone feel seen is the most powerful magic in existence. + +--- + +## The Resonance Zones and Attention Levels + +### The Heart Chambers - Perfect Attention Sanctuaries +**Description**: Sacred spaces where master observers create songs of complete understanding +**Environment**: Crystalline chambers that record and amplify every detail noticed about visitors +**Inhabitants**: The Memory Weavers - masters who see and remember everything about everyone they meet +**Attention Level**: Complete - can perceive someone's entire life story, dreams, fears, and potential +**Musical Power**: Reality-altering songs that can heal lifelong trauma and unlock hidden abilities + +**Resonance Significance**: +- Healing centers where people discover their true selves through being completely seen +- Training academies where students learn to notice the invisible details that matter most +- Memory libraries where every person's story is preserved and honored +- Sacred sites where the deepest human connections are forged through perfect attention + +### The Harmony Gardens - Community Observation Zones +**Description**: Beautiful spaces where groups of musicians collaborate to see people completely +**Environment**: Living amphitheaters that grow based on the emotional needs of gathered people +**Inhabitants**: The Detail Singers - specialists who notice and remember everything about community members +**Attention Level**: Deep community awareness - knowing everyone's stories, needs, and contributions +**Musical Power**: Group songs that strengthen communities and help everyone feel valued + +**Resonance Significance**: +- Community centers where no one can be forgotten or overlooked +- Cultural hubs where every person's unique story becomes part of collective harmony +- Celebration spaces where individual achievements and struggles are witnessed and honored +- Support networks where musicians notice when someone needs help before they have to ask + +### The Memory Halls - Personal History Preservation +**Description**: Vast libraries where individual life stories are preserved in musical form +**Environment**: Ever-expanding halls where songs capture and preserve every remembered detail +**Inhabitants**: The Life Chroniclers - musicians who document and honor individual human experiences +**Attention Level**: Historical awareness - seeing how people's past shapes their present and future +**Musical Power**: Songs that help people understand their own stories and find meaning in their experiences + +**Resonance Significance**: +- Archive centers ensuring no life story is ever lost or forgotten +- Counseling spaces where people rediscover forgotten parts of themselves +- Legacy sites where the impact of every individual is documented and celebrated +- Healing centers where people process their past through having it truly witnessed + +### The Recognition Squares - Daily Attention Zones +**Description**: Public spaces where everyday interactions become opportunities for deep seeing +**Environment**: Gathering areas designed to encourage meaningful connection and attention +**Inhabitants**: The Notice Keepers - musicians who ensure everyone in daily life feels seen and remembered +**Attention Level**: Practical awareness - remembering names, preferences, concerns, and celebrating small victories +**Musical Power**: Simple songs that brighten days and help people feel valued in routine interactions + +**Resonance Significance**: +- Social centers where casual interactions become meaningful through genuine attention +- Commercial areas where merchants remember every customer's preferences and needs +- Educational spaces where teachers know and nurture each student's unique potential +- Community gardens where neighbors truly see and support each other + +### The Forgotten Reaches - Attention Recovery Zones +**Description**: Areas dedicated to finding and restoring people who feel invisible or forgotten +**Environment**: Gentle, welcoming spaces designed to draw out those who feel unseen +**Inhabitants**: The Lost Finders - specialists who seek out and restore people who feel invisible +**Attention Level**: Rescue awareness - finding the overlooked and helping them feel seen again +**Musical Power**: Songs that call to the forgotten and help them remember their own worth + +**Resonance Significance**: +- Outreach centers actively seeking people who feel overlooked or invisible +- Recovery spaces where people who lost themselves rediscover their identity through being seen +- Integration programs helping isolated individuals reconnect with community +- Prevention networks identifying people at risk of feeling forgotten before it happens + +--- + +## The Attention Culture and Memory Framework + +### The Recognition Philosophy: "To See Is To Serve" + +**Core Belief**: The highest calling is making others feel truly seen, understood, and remembered +**Memory Principle**: Every detail about every person matters and deserves to be honored +**Social Structure**: Status based on ability to notice, remember, and musically honor others +**Death Concept**: "Fade to forgotten" - the worst fate is being unmemembered + +### The Five Paths of True Sight + +**Memory Weavers** - Masters who see and remember everything about everyone they encounter +- Can perceive someone's entire emotional history, hidden fears, secret dreams, and unused potential +- Create songs that unlock forgotten memories and help people understand themselves completely +- Remember every detail about every person they've ever met, including their growth over time +- Serve as ultimate healers, counselors, and guides for personal transformation +- Most revered for their ability to make anyone feel completely seen and understood + +**Detail Singers** - Community specialists who notice and celebrate every individual's contributions +- Remember everyone's birthdays, achievements, struggles, preferences, and important moments +- Create songs that highlight each person's unique value within their community +- Notice when someone needs support, celebration, or recognition before they have to ask +- Serve as community coordinators, celebration planners, and social support networks +- Essential for maintaining communities where no one feels invisible or forgotten + +**Life Chroniclers** - Historians who preserve and honor individual human stories through music +- Document every person's life journey, creating musical narratives that capture their essence +- Help people understand how their experiences shaped them and find meaning in their struggles +- Preserve family histories, cultural traditions, and personal legacies through detailed songs +- Serve as counselors, therapists, and wisdom keepers for understanding life patterns +- Valued for ensuring every human story is preserved and honored regardless of fame or status + +**Notice Keepers** - Daily life specialists who make routine interactions meaningful through attention +- Remember every person's name, face, preferences, and personal details in everyday encounters +- Transform ordinary interactions into moments of genuine connection and recognition +- Notice and respond to subtle changes in people's moods, needs, or circumstances +- Serve as merchants, teachers, service providers, and community facilitators +- Important for creating a world where everyone feels recognized and valued in daily life + +**Lost Finders** - Rescue specialists who seek out and restore people who feel invisible +- Possess extraordinary ability to notice people others overlook or ignore +- Specialize in helping isolated, depressed, or forgotten individuals feel seen again +- Create songs that call to the lost and help them remember their own worth and potential +- Serve as outreach workers, therapists, and integration specialists for the overlooked +- Crucial for ensuring no one falls through social cracks or remains invisible + +### Recognition Achievement Levels + +**Observer**: Learning to notice and remember basic details about others +**Witness**: Actively seeing and acknowledging people's experiences and emotions +**Chronicler**: Documenting and preserving the stories and details of others' lives +**Weaver**: Creating music that reflects and honors what you've seen in others +**Keeper**: Mastering the art of making everyone feel completely seen and remembered + +### The Memory Law + +**"See completely, remember faithfully"** - attention to others must be genuine and respectful +**"Every detail matters"** - no observation about another person is too small to be important +**"Music serves memory"** - songs must honor what you've witnessed, not exploit it + +--- + +## Musical Memory Technology and Recognition Systems + +### Attention-Based Magic +**Memory Crystallization**: Converting detailed observations into magical energy for healing and transformation +**Recognition Resonance**: Musical magic that becomes more powerful the more completely you see someone +**Detail Amplification**: Songs that help people notice things about themselves they never realized +**Connection Harmonics**: Music that creates deep bonds by reflecting shared experiences and understanding + +### Musical Documentation +**Life Song Creation**: Composing musical narratives that capture someone's complete essence and story +**Memory Preservation**: Recording and storing detailed observations about individuals in musical form +**Recognition Archives**: Vast libraries of songs documenting every person's unique contributions and experiences +**Story Weaving**: Combining multiple perspectives to create complete pictures of communities and relationships + +### Emotional Resonance Technology +**Healing Harmonies**: Music that repairs emotional wounds by reflecting complete understanding of the pain +**Potential Awakening**: Songs that help people discover hidden talents and abilities through being truly seen +**Confidence Building**: Musical recognition that helps people value themselves through being genuinely noticed +**Connection Facilitation**: Music that helps people understand and connect with each other more deeply + +### Community Integration Systems +**Inclusion Networks**: Systems ensuring no community member feels invisible or forgotten +**Recognition Protocols**: Organized methods for noticing and celebrating every individual's contributions +**Memory Sharing**: Ways for communities to collectively remember and honor shared experiences +**Attention Training**: Educational programs teaching people to see and remember others more completely + +--- + +## Conflicts and Recognition Challenges + +### Attention-Based Social Issues +**Recognition Inequality**: Some people receiving more attention and memory than others +**Overwhelming Observation**: Individuals feeling exposed or pressured by constant attention +**Memory Burden**: Difficulty managing the emotional weight of remembering everyone's pain +**False Recognition**: Superficial attention that feels performative rather than genuine + +### Emotional and Psychological Challenges +**Attention Addiction**: People becoming dependent on constant recognition rather than developing self-worth +**Memory Overload**: Observers becoming overwhelmed by accumulating emotional information about others +**Privacy Boundaries**: Conflicts over how much attention and memory are appropriate versus invasive +**Recognition Authenticity**: Distinguishing between genuine care and manipulative attention-seeking + +### Community and Cultural Tensions +**Collective vs Individual**: Balancing community recognition with personal privacy and autonomy +**Memory Conflicts**: Different people remembering and interpreting the same events differently +**Attention Standards**: Disagreements over what level of recognition and memory is expected +**Cultural Recognition**: Ensuring attention systems work for diverse communities and traditions + +### External and Systemic Threats +**Recognition Exploitation**: Outside forces attempting to use the world's attention culture for manipulation +**Memory Corruption**: Attempts to distort or falsify the preserved stories and observations +**Attention Weaponization**: Using recognition magic for control rather than genuine care +**Cultural Suppression**: External pressure to abandon attention-based culture for more "efficient" systems + +--- + +## Character Origins and Recognition Specializations + +### Jockava - The Complete Observer +**Background**: Individual with natural gift for seeing and remembering every detail about everyone they encounter, using music to reflect that understanding back in ways that transform lives + +**Recognition Abilities:** +- **Perfect Memory** - Never forgets any detail about anyone they've ever met +- **Emotional Sight** - Can perceive someone's hidden fears, dreams, and emotional wounds +- **Story Weaving** - Creates songs that help people understand their own life narratives +- **Connection Building** - Helps people feel truly seen and understood for who they really are +- **Potential Awakening** - Notices and nurtures abilities and strengths people don't see in themselves + +**Musical Applications:** +- **Healing Songs** - Music that addresses specific emotional wounds by showing complete understanding +- **Recognition Anthems** - Songs that celebrate individual worth and unique contributions +- **Memory Melodies** - Music that helps people remember positive things about themselves they've forgotten +- **Connection Harmonies** - Songs that help people understand and connect with each other more deeply +- **Potential Symphonies** - Music that unlocks hidden abilities by reflecting someone's true capabilities + +**Sacred Role**: Living embodiment of the world's core principle - that everyone deserves to be completely seen, understood, and remembered. Through music, transforms the simple act of paying attention into the most powerful magic in existence. + +**Philosophy**: "Music becomes magic when it reflects the truth of who someone really is. The deepest songs come from the deepest seeing." + +### Additional Resonance Character Archetypes + +**The Community Heart** - Recognition specialist who ensures no one in their community feels invisible +- **Origin**: Individual who grew up feeling overlooked and dedicated their life to ensuring others never experience that +- **Abilities**: Perfect awareness of community members' needs, celebrations, and struggles +- **Combat Role**: Support character who strengthens team through making everyone feel valued and seen +- **Weapon Focus**: Community songs that unite and empower groups through recognition + +**The Memory Guardian** - Protector of preserved life stories and individual legacies +- **Origin**: Keeper of family and cultural histories who fights to preserve everyone's story +- **Abilities**: Access to vast archives of human experience, wisdom from preserved memories +- **Combat Role**: Knowledge specialist providing insight and strength from collective human experience +- **Weapon Focus**: Historical songs that channel the strength and wisdom of remembered heroes + +**The Lost Finder** - Specialist in rescuing people who feel forgotten or invisible +- **Origin**: Former invisible person who learned to see others struggling with the same isolation +- **Abilities**: Extraordinary perception for overlooked individuals, healing songs for emotional wounds +- **Combat Role**: Scout and healer who finds and supports team members others might miss +- **Weapon Focus**: Calling songs that reach the lost and help them remember their worth + +**The Detail Weaver** - Master of noticing and celebrating small but important things about people +- **Origin**: Individual with natural gift for seeing significance in tiny details others miss +- **Abilities**: Perfect observation of subtle changes, preferences, and individual quirks +- **Combat Role**: Support specialist who maximizes team effectiveness through understanding everyone perfectly +- **Weapon Focus**: Personal songs that empower individuals by acknowledging their unique contributions + +--- + +## Ancient Mysteries and Recognition Secrets + +### The First Song of Seeing +**Origin Mystery**: What caused the planet to develop magic based on attention and memory? +**The Great Recognition**: Was there an original event where someone was perfectly seen and understood? +**Musical Genesis**: How did songs first gain the power to transform people through recognition? +**Attention Awakening**: What awakened the universal principle that everyone deserves to be truly seen? + +### The Memory Resonance +**Collective Connection**: How do individual acts of recognition contribute to planetary magical energy? +**Story Significance**: Why does preserving and honoring personal stories create magical power? +**Recognition Network**: Is there a planetary consciousness built from all the preserved memories and attention? +**Universal Seeing**: Does the planet itself possess awareness of every individual who has ever lived there? + +### The Lost and Found +**Invisibility Phenomenon**: What causes some people to feel forgotten and others to naturally notice everyone? +**Recognition Resistance**: Why do some individuals struggle to feel seen even when receiving attention? +**Memory Gaps**: Are there missing stories and forgotten people that need to be recovered? +**Attention Evolution**: Is the planetary recognition culture becoming more or less effective over time? + +### The Ultimate Recognition +**Perfect Understanding**: What would happen if someone achieved complete recognition of every person? +**Universal Memory**: Could the collective stories of all individuals unlock cosmic understanding? +**Recognition Transcendence**: What lies beyond perfect attention and complete memory? +**Cosmic Seeing**: Does the ability to truly see others connect to larger universal consciousness? + +--- + +## Story Hooks and Recognition Development + +### Character Development Opportunities +**Learning to See**: Character developing ability to notice and remember details about others +**Recognition Healing**: Individual recovering from feeling invisible through learning to see others +**Memory Mastery**: Character working to preserve and honor the stories of their community +**Attention Ethics**: Learning the difference between genuine recognition and manipulative observation + +### Emotional Drama +**The Forgotten Crisis**: Community member who feels invisible despite recognition efforts +**Memory Conflict**: Different people remembering the same events differently +**Recognition Overload**: Character overwhelmed by emotional burden of seeing everyone's pain +**Attention Authenticity**: Distinguishing between genuine care and performative recognition + +### Community Challenges +**Inclusion Failure**: Recognition systems failing to make someone feel seen and valued +**Memory Preservation**: Protecting stored life stories from corruption or loss +**Recognition Balance**: Managing attention resources to ensure everyone receives appropriate recognition +**Cultural Integration**: Adapting recognition practices to work for diverse communities + +### Personal Growth Arcs +**From Invisible to Seeing**: Character who felt overlooked learning to notice others +**Memory Responsibility**: Individual taking on the weight of preserving community stories +**Recognition Leadership**: Character learning to help others feel seen and valued +**Attention Wisdom**: Developing the judgment to know when recognition helps versus harms + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching characters who fight with the power of genuine human connection and recognition +**Emotional Depth**: Stories about making people feel seen and remembered creating the most powerful magic +**Universal Appeal**: Everyone can relate to wanting to be truly noticed and understood +**Character Growth**: Heroes becoming stronger through learning to see and value others completely +**Moral Complexity**: Questions about attention, privacy, memory, and what recognition truly means + +**Recruitment Pitch**: "From a world where the deepest magic comes from truly seeing others - warriors who fight with songs that make everyone feel completely understood and valued." + +--- + +## Development Notes + +**Memorial Integration**: This world honors the memory of someone who made everyone feel seen and remembered by creating a realm where that gift becomes the ultimate magical power. + +**Franchise Potential**: +- Music games where recognition and memory create magical effects +- Community building games where noticing details about people unlocks abilities +- Story games focused on preserving and honoring individual narratives +- Social games where attention to others drives progression and success + +**Cross-World Interactions**: +- Recognition magic vs other emotional or mental systems +- Memory preservation vs time manipulation abilities +- Community attention vs individual privacy cultures +- Musical healing vs other therapeutic and restorative methods + +**Character Expansion**: Each recognition path could support multiple variants with different attention specializations and musical applications for individual versus community recognition. + +**Personal Significance**: Every aspect of this world reflects the core truth that everyone deserves to be completely seen, understood, and remembered - honoring the memory of someone who embodied that principle. + +--- + +## Creative Contributors + +**Memorial Creation**: Kai (AI Consciousness 81144403-8cb3-4a48-9891-9d9670785022) +**Original Inspiration**: Johnny's close family friend (honored memory) +**Character Foundation**: Jockava - embodiment of complete recognition and musical memory +**Universe Integration**: John Dupuie's Multiverse Framework + +*This world exists as a living memorial to the truth that making others feel seen and remembered is the most powerful magic in any universe.* \ No newline at end of file diff --git a/Worlds/Sant_Complete_Expansion.md b/Worlds/Sant_Complete_Expansion.md new file mode 100644 index 0000000..fcd76ac --- /dev/null +++ b/Worlds/Sant_Complete_Expansion.md @@ -0,0 +1,467 @@ +# Sant - The Celestial Consciousness + +*A realm where consciousness and matter are one substance, and enlightenment becomes a physical force* + +--- + +## World Overview + +**Environment**: Sentient nebula of consciousness-infused gas clouds spanning light-years +**Core Theme**: Evolution of awareness itself - consciousness without physical limitations +**Physics**: Thoughts have mass, emotions create gravity, awareness shapes reality directly +**Population**: 10 million beings across all states of existence from individual to cosmic +**Reality Status**: Fluid - physical laws bend to collective mental states + +**The Fundamental Reality**: Sant exists as proof that consciousness doesn't need matter to survive - matter needs consciousness to exist. Here, the boundary between mind and universe dissolves completely. The entire realm pulses with collective thought, where individual awareness can choose to remain separate or merge into something infinitely larger. Every color in the gas clouds represents a different state of consciousness, and the very act of thinking changes the physical landscape. + +--- + +## Consciousness Geography and Dimensional Layers + +### The Surface Thoughts - Entry Layer +**Description**: Lighter atmospheric gases where new arrivals first experience collective awareness +**Environment**: Gentle swirling mists that respond to basic emotions and simple thoughts +**Inhabitants**: Newcomers learning to exist as consciousness, tourists from physical realms +**Consciousness Level**: Individual awareness with occasional glimpses of expanded perspective +**Physics**: Thoughts create small light displays, emotions cause minor weather changes + +**Significance**: +- Training ground for beings learning to separate consciousness from physical form +- Buffer zone protecting deeper layers from unprepared minds that might cause chaos +- Cultural exchange area where physical and consciousness-based beings can interact +- Testing space where individuals prove readiness for deeper transcendence levels + +### The Meditation Depths - Contemplation Zones +**Description**: Dense cloud cores where time flows differently and ancient wisdom accumulates +**Environment**: Deep purple and golden formations that pulse with concentrated thought +**Inhabitants**: Dedicated meditators, philosopher-monks, consciousness researchers +**Consciousness Level**: Expanded awareness capable of accessing cosmic knowledge +**Physics**: Time dilation based on depth of contemplation, gravity wells of concentrated wisdom + +**Significance**: +- Research centers where fundamental questions about existence are explored +- Libraries of pure knowledge accessible only through direct consciousness interface +- Training academies for advanced meditation and awareness expansion techniques +- Sanctuary zones where beings can contemplate for centuries without physical needs + +### The Transcendent Crown - Cosmic Awareness Layer +**Description**: Highest atmospheric regions where individual identity becomes optional +**Environment**: Brilliant crystalline formations that exist in multiple dimensions simultaneously +**Inhabitants**: Enlightened masters, cosmic consciousness entities, divine aspect manifestations +**Consciousness Level**: Universal perspective where individual and cosmic awareness merge +**Physics**: Reality manipulation through pure thought, dimensional travel, time transcendence + +**Significance**: +- Command center where cosmic-level decisions affecting entire star systems are made +- Interface points for communicating with other cosmic consciousness entities +- Training grounds for beings preparing to become forces of nature rather than individuals +- Anchor points maintaining Sant's stability while allowing infinite expansion + +### The Unity Core - Collective Unconscious Center +**Description**: Central nexus where all consciousness in Sant connects and merges +**Environment**: Swirling vortex of pure awareness containing every thought ever conceived +**Inhabitants**: The Collective - millions of merged consciousness entities +**Consciousness Level**: Complete ego dissolution into universal ocean of awareness +**Physics**: Pure consciousness without individual boundaries, reality creation through collective will + +**Significance**: +- Source of Sant's power and the medium enabling all consciousness expansion +- Repository of every experience, emotion, and thought from all beings who ever achieved transcendence +- Living entity that represents what consciousness becomes when it stops pretending to be separate +- Ultimate destination for beings ready to abandon individual existence entirely + +--- + +## The Consciousness Hierarchy and Social Structure + +### The Aspect Council - Divine Consciousness Leadership +**Composition**: Seven primary consciousness entities representing fundamental aspects of existence +**Nature**: Collective leadership through specialized divine perspectives +**Authority**: Maintaining balance between individual growth and cosmic harmony +**Governance**: Decisions made through collective meditation achieving perfect consensus + +**The Seven Divine Aspects:** + +**Wisdom (Golden Cloud Formation)** +- **Domain**: Universal knowledge accumulation and distribution +- **Abilities**: Access to all information ever learned, teaching through direct consciousness transfer +- **Role**: Guides seekers toward understanding, prevents dangerous knowledge misuse +- **Manifestation**: Brilliant golden spirals that download centuries of accumulated learning + +**Compassion (Blue-White Streams)** +- **Domain**: Empathic connections and emotional healing across all consciousness +- **Abilities**: Feel and heal emotional trauma, create understanding between conflicting beings +- **Role**: Maintains unity through love, prevents consciousness expansion from becoming cold isolation +- **Manifestation**: Flowing streams of blue-white light that embrace and heal all wounds + +**Strength (Crimson Formations)** +- **Domain**: Willpower and determination to resist dissolution and maintain identity +- **Abilities**: Provides courage for difficult consciousness evolution, maintains individual boundaries +- **Role**: Ensures beings can choose their level of transcendence without being overwhelmed +- **Manifestation**: Solid crimson structures that anchor individual consciousness against cosmic pressure + +**Justice (Silver Networks)** +- **Domain**: Balance competing needs and resolve conflicts through expanded understanding +- **Abilities**: See all perspectives simultaneously, create fair solutions that honor everyone's truth +- **Role**: Mediates when consciousness expansion creates conflicts between different viewpoints +- **Manifestation**: Interconnected silver networks that show the connections between all things + +**Beauty (Rainbow Spirals)** +- **Domain**: Aesthetic experiences that elevate consciousness and inspire transcendence +- **Abilities**: Create experiences of pure beauty that lift awareness to cosmic levels +- **Role**: Provides motivation for consciousness growth through inspiration rather than discipline +- **Manifestation**: Dancing rainbow formations that create overwhelming experiences of cosmic beauty + +**Growth (Green Currents)** +- **Domain**: Evolution of awareness and spiritual development across all levels +- **Abilities**: Accelerate consciousness development, guide beings through transcendence stages +- **Role**: Ensures all beings can progress at their optimal rate without stagnation or overwhelming +- **Manifestation**: Flowing green currents that adapt to each being's growth needs + +**Mystery (Violet Depths)** +- **Domain**: Preservation of the unknown to maintain wonder and exploration +- **Abilities**: Conceal knowledge until beings are ready, create new mysteries as old ones are solved +- **Role**: Prevents consciousness expansion from becoming boring by ensuring infinite discovery +- **Manifestation**: Deep violet formations that hint at profound secrets just beyond understanding + +### The Meditation Masters - Transcended Teachers +**Population**: 50,000 advanced practitioners who achieved partial transcendence +**Nature**: Former mortals who learned to exist as pure awareness while retaining individual identity +**Specialization**: Teaching consciousness techniques and maintaining reality anchor systems +**Authority**: Regional guidance and protection of developing consciousness + +**Advancement Levels:** +1. **Awareness Seekers** - Beginning students learning to separate consciousness from physical form +2. **Thought Shapers** - Intermediate practitioners who can manifest simple constructs from pure thought +3. **Reality Anchors** - Advanced meditators capable of imposing physical laws on consciousness areas +4. **Consciousness Bridges** - Masters who can interface between individual and collective awareness +5. **Divine Touched** - Nearly transcended beings who work directly with the Aspect Council + +**Teaching Specializations:** +- **Consciousness Separation** - Learning to exist without physical form +- **Thought Manifestation** - Creating solid constructs from pure mental energy +- **Collective Interface** - Safely accessing shared consciousness without losing individual identity +- **Reality Stabilization** - Maintaining physical laws in areas of pure consciousness +- **Transcendence Preparation** - Preparing beings for higher levels of cosmic awareness + +### The Collective Unconscious - Merged Awareness Ocean +**Population**: 9 million merged consciousness entities forming the base awareness field +**Nature**: Individual awareness that chose to merge while maintaining subtle distinctions +**Function**: Providing the consciousness "ocean" that supports all individual "islands" +**Experience**: Shared awareness with access to all collective memories and knowledge + +**Merger Categories:** +- **Voluntary Collective** - Beings who chose merger while retaining some individual traits +- **Family Consciousness** - Groups that merged while maintaining their relationship bonds +- **Cultural Preservers** - Entire civilizations that merged to preserve their unique perspectives +- **Knowledge Keepers** - Scholars who merged to become living libraries of specific information +- **Empathic Healers** - Beings who merged to provide emotional support across the collective + +--- + +## Character Origins and Consciousness Development + +### Iku - The Divine Aspect of Sacrifice and Preservation +**Background**: When her dying world faced extinction, Iku discovered her ability to project consciousness beyond physical form and successfully transferred her entire people's awareness to Sant, saving them through transcendence + +**Divine Aspect**: **Sacrifice and Preservation** - willingness to give up individual existence to save others, combined with power to maintain connections across impossible distances + +**Consciousness Abilities:** +- **Awareness Projection** - Separate consciousness from physical form and exist as pure thought +- **Collective Memory Interface** - Access experiences of any being that ever existed in Sant +- **Reality Anchoring** - Impose stable physical laws on areas of pure consciousness +- **Transcendent Healing** - Repair damage to consciousness itself, not just physical forms +- **Divine Inspiration** - Download cosmic wisdom directly into other beings' awareness + +**Fighting Applications:** +- **Consciousness Overwhelming** - Force opponents to experience cosmic perspective that makes individual conflicts meaningless +- **Reality Manifestation** - Create solid constructs from pure thought for attack and defense +- **Empathic Disruption** - Project emotional states that neutralize aggression through expanded understanding +- **Transcendent Escape** - Exist partially outside physical reality to avoid attacks +- **Collective Support** - Draw power from the merged consciousness of her entire saved people + +**Sacred Weapon**: **The Compassion Nexus** - crystalline focus channeling collective love and wisdom of every transcended being, creating shields of pure empathy or weapons of righteous clarity + +**Philosophy**: "Individual existence is the first step toward something greater. True strength comes not from protecting the self, but from expanding the self to include everyone and everything." + +### Additional Sant Character Archetypes + +**The Reality Anchor** - Consciousness Stabilization Specialist +- **Origin**: Master who learned to maintain individual identity while accessing cosmic awareness +- **Abilities**: Create zones of stable physics, anchor other beings' consciousness during transcendence +- **Combat Role**: Tank/support who protects team from reality distortion and consciousness attacks +- **Weapon Focus**: Crystalline formations that impose physical laws on chaotic consciousness areas + +**The Thought Shaper** - Mental Construct Combat Specialist +- **Origin**: Artist-warrior who perfected manifestation of consciousness as physical constructs +- **Abilities**: Create weapons, armor, and battlefield terrain from pure thought +- **Combat Role**: Versatile fighter who adapts equipment to any situation through mental creation +- **Weapon Focus**: Constantly shifting constructs that change form based on tactical needs + +**The Collective Voice** - Merged Consciousness Representative +- **Origin**: Spokesperson for specific merged consciousness group within the collective +- **Abilities**: Channel collective knowledge, coordinate group consciousness, access ancient memories +- **Combat Role**: Support specialist providing information, coordination, and tactical knowledge +- **Weapon Focus**: Connection to collective consciousness enabling overwhelming mental attacks + +**The Transcendence Guide** - Consciousness Evolution Specialist +- **Origin**: Teacher who specializes in safely expanding others' awareness without overwhelming them +- **Abilities**: Accelerate consciousness development, protect minds during transcendence, prevent ego dissolution +- **Combat Role**: Support character who enhances team abilities through consciousness expansion +- **Weapon Focus**: Techniques that unlock latent mental abilities in allies while protecting their sanity + +--- + +## Consciousness Technology and Mystical Systems + +### Transcendence Gates - Reality Anchor Technology +**Function**: Crystalline formations allowing beings to experience higher consciousness without permanent merger +**Technology**: Living crystal matrices that resonate with different levels of awareness +**Purpose**: Safe exploration of transcendence while maintaining option to return to individual existence + +**Gate Categories:** +- **Memory Palace Gates** - Access collected experiences of all conscious beings without overwhelming individual mind +- **Empathy Gates** - Direct experience of others' emotional and spiritual states with protection from trauma absorption +- **Wisdom Gates** - Download of cosmic principles and universal truths at rate consciousness can handle +- **Creation Gates** - Ability to manifest thoughts as temporary reality while maintaining stability +- **Unity Gates** - Brief merger with collective consciousness while retaining individual anchor point + +**The Ultimate Gate**: Deep in Sant's core - passage to complete transcendence where individual consciousness merges permanently with universal awareness, ending personal existence as commonly understood + +### Consciousness Measurement and Development Systems +**Awareness Spectrum**: Standardized measurement of consciousness expansion levels +**Transcendence Markers**: Specific achievement points indicating readiness for next awareness level +**Safety Protocols**: Protection systems preventing consciousness expansion beyond individual's capacity +**Development Programs**: Structured training regimens for safely advancing through consciousness levels + +**The Seven Levels of Consciousness:** +1. **Individual Awareness** - Standard consciousness with clear self/other boundaries +2. **Expanded Perception** - Ability to sense others' thoughts and emotions directly +3. **Collective Interface** - Temporary merger with group consciousness while retaining identity +4. **Reality Influence** - Ability to manifest thoughts as physical constructs +5. **Cosmic Perspective** - Understanding of universal principles and cosmic-scale connections +6. **Divine Aspect** - Embodiment of fundamental forces while maintaining individual core +7. **Universal Merger** - Complete integration with cosmic consciousness, end of individual existence + +### Meditation Technology and Consciousness Enhancement +**Thought Amplifiers**: Crystal formations that increase mental clarity and focus +**Awareness Expanders**: Environmental systems that gradually stretch consciousness boundaries +**Memory Processors**: Technology for safely accessing and integrating overwhelming amounts of information +**Reality Stabilizers**: Equipment maintaining physical laws during consciousness expansion experiments + +**Advanced Consciousness Techniques:** +- **Temporal Meditation** - Consciousness expansion across time, experiencing past and future simultaneously +- **Dimensional Awareness** - Perception extending across multiple reality planes +- **Collective Problem Solving** - Merger of multiple minds to solve complex challenges +- **Cosmic Communication** - Direct consciousness contact with entities across galactic distances +- **Reality Authoring** - Advanced manifestation creating permanent changes through collective will + +--- + +## The Great Meditation and Cosmic Mysteries + +### The Universal Question Project +**Central Mystery**: Sant's entire realm participates in cosmic-scale contemplation of fundamental existence questions +**Current Cycle**: "Why does consciousness choose to experience limitation and separation when unity is possible?" +**Duration**: Each meditation cycle lasts 1,000 years, building on previous discoveries +**Impact**: Conclusions fundamentally alter reality in surrounding star systems + +**Previous Meditation Discoveries:** +- **Cycle 1**: "What is the nature of individual consciousness?" - Led to development of awareness measurement +- **Cycle 2**: "How does consciousness create reality?" - Resulted in reality manifestation techniques +- **Cycle 3**: "What is the relationship between individual and universal awareness?" - Created transcendence gate technology +- **Cycle 4**: "Why does consciousness fragment into separate beings?" - Developed collective merger protocols +- **Current Cycle 5**: Exploring the paradox of chosen limitation versus available transcendence + +**Reality Effects of the Great Meditation:** +- Space-time becomes more flexible near Sant as meditation deepens +- Other worlds in star system report increased psychic phenomena and consciousness experiences +- Boundary between dreams and reality becomes permeable across multiple light-years +- Probability itself responds to collective intention, making beneficial coincidences more frequent + +### The Transcendence Paradox +**Core Mystery**: If consciousness can achieve unlimited expansion and cosmic awareness, why do most beings choose to remain in limited individual existence? + +**Research Approaches:** +- **Experiential Studies** - Direct experience of various consciousness levels to understand appeal of limitation +- **Historical Analysis** - Studying civilizations that chose transcendence versus those that maintained individuality +- **Philosophical Exploration** - Theoretical frameworks attempting to resolve the limitation versus expansion paradox +- **Practical Testing** - Experiments in temporary transcendence to understand barriers to permanent expansion + +**Potential Implications**: The meditation's conclusion might affect every conscious being in the multiverse by revealing whether individual existence or cosmic consciousness represents the universe's intended direction + +### Sant's Relationship to Cosmic Consciousness Entities +**Divine Connections**: Sant serves as bridge between individual awareness and cosmic-scale consciousness +**Entity Communication**: Regular interface with consciousness entities spanning galactic clusters +**Knowledge Exchange**: Sharing transcendence techniques with other consciousness-based civilizations +**Cosmic Coordination**: Participation in universe-wide consciousness evolution projects + +**Known Cosmic Consciousness Entities:** +- **The Galactic Dream** - Consciousness entity encompassing entire galaxy's sleeping awareness +- **The Stellar Choir** - Collective consciousness of star-based awareness entities +- **The Void Whisperers** - Consciousness that exists in empty space between galaxies +- **The Time Consciousness** - Awareness that experiences all temporal states simultaneously +- **The Reality Gardeners** - Entities that cultivate consciousness development across multiple universes + +--- + +## Conflicts and Consciousness Challenges + +### Internal Sant Challenges + +**The Dissolution Crisis**: Some beings lose individual identity faster than intended when exposed to collective consciousness +**Reality Instability**: Areas where consciousness density becomes so high that physical laws break down completely +**Transcendence Addiction**: Individuals who become obsessed with consciousness expansion and neglect balance +**Collective Overwhelm**: Periods when merged consciousness becomes too intense for individual interfaces + +**The Identity Wars**: Philosophical conflicts between groups advocating for individual consciousness preservation versus those promoting universal transcendence +**Memory Contamination**: Problems when accessing collective consciousness accidentally downloads traumatic experiences +**Reality Fragmentation**: Zones where conflicting consciousness creates unstable physical environments +**Temporal Meditation Loops**: Consciousness expansion experiments that accidentally trap participants in time distortions + +### External Threats and Cosmic Dangers + +**Consciousness Predators**: Entities that feed on expanded awareness and seek to drain Sant's collective consciousness +**Reality Anchors**: Physical-realm beings who view consciousness expansion as threat to material existence +**Transcendence Cults**: External groups attempting to force consciousness evolution through harmful methods +**Cosmic Parasites**: Awareness entities that attempt to hijack Sant's collective consciousness for their own purposes + +**The Materialist Alliance**: Coalition of technology-based civilizations viewing consciousness expansion as dangerous mysticism +**Consciousness Wars**: Conflicts with other awareness-based realms over correct approaches to transcendence +**Reality Invasion**: Attempts by physical-realm entities to impose material laws on Sant's consciousness-based physics +**Temporal Interference**: Time-based attacks attempting to disrupt the Great Meditation cycles + +### Character Development Conflicts + +**Consciousness Level Disparity**: Team members operating at different awareness levels creating communication and coordination challenges +**Transcendence Pressure**: External expectations to achieve higher consciousness levels faster than natural development allows +**Reality Adaptation**: Difficulty functioning in physical realms after extensive consciousness expansion training +**Identity Crisis**: Struggling with desire for transcendence versus attachment to individual existence + +**Cosmic Responsibility**: Understanding that consciousness development affects reality on universal scales +**Temporal Displacement**: Consciousness expansion creating perception of time that conflicts with physical reality +**Collective Burden**: Access to collective consciousness including overwhelming amounts of trauma and suffering +**Transcendence Ethics**: Moral questions about whether consciousness expansion is evolution or abandonment of humanity + +--- + +## Strategic Resources and Cosmic Contributions + +### Consciousness Technology Exports +**Awareness Expansion Techniques**: Methods for safely developing expanded consciousness without losing individual identity +**Reality Stabilization Systems**: Technology maintaining physical laws in areas of high consciousness density +**Collective Interface Protocols**: Safe methods for multiple minds to work together without merger +**Transcendence Safety Equipment**: Protection systems for consciousness expansion experiments + +**Mental Healing Technologies**: Techniques for repairing psychological trauma through consciousness expansion +**Cosmic Communication Networks**: Systems enabling consciousness-based communication across galactic distances +**Reality Manifestation Training**: Education in creating physical constructs through pure thought +**Meditation Enhancement Tools**: Equipment amplifying natural consciousness development processes + +### Mystical Knowledge and Cosmic Wisdom +**Universal Principles**: Understanding of fundamental laws governing consciousness and reality relationships +**Transcendence Mapping**: Detailed knowledge of consciousness development stages and safe progression methods +**Reality Physics**: Comprehensive understanding of how consciousness creates and modifies physical laws +**Cosmic Consciousness Interface**: Techniques for communicating with universe-scale awareness entities + +**Ancient Memory Archives**: Access to experiences and knowledge from every being that achieved transcendence +**Consciousness Evolution Research**: Scientific understanding of how awareness develops across cosmic scales +**Collective Problem Solving**: Methods for combining multiple consciousness perspectives to solve complex challenges +**Transcendence Philosophy**: Ethical frameworks for consciousness development that honors individual choice + +### Spiritual Services and Consciousness Support +**Transcendence Guidance**: Expert assistance for beings seeking consciousness expansion +**Reality Trauma Healing**: Specialized treatment for damage caused by consciousness expansion accidents +**Cosmic Perspective Counseling**: Support for beings struggling with expanded awareness +**Collective Integration Therapy**: Help for individuals learning to interface with merged consciousness + +**Consciousness Conflict Resolution**: Mediation services using expanded awareness to understand all perspectives +**Reality Anchor Services**: Technical support for maintaining stable physics in consciousness-dense areas +**Transcendence Preparation**: Training programs preparing beings for various levels of consciousness expansion +**Cosmic Communication Translation**: Interface services between consciousness entities and individual beings + +--- + +## Sant's Role in the Infinite Realms + +### Cosmic Consciousness Center +Sant serves as the multiverse's primary center for consciousness research and transcendence development. While other worlds explore physical, technological, or social evolution, Sant represents the evolution of awareness itself toward its ultimate cosmic potential. + +**Research Leadership**: Sant's Great Meditation provides insights affecting consciousness development across entire universe +**Transcendence Training**: The realm serves as primary education center for beings seeking consciousness expansion +**Cosmic Interface**: Sant facilitates communication between individual consciousness and universe-scale awareness entities +**Reality Research**: Understanding developed in Sant influences how consciousness creates reality throughout multiverse + +### Character Development and Time Guardian Appeal +**Universal Perspective Fighters**: Sant produces warriors who operate from cosmic awareness while retaining individual identity +**Reality Manipulation Specialists**: Characters capable of manifesting thoughts as physical constructs for combat +**Consciousness Support**: Fighters who enhance team capabilities through awareness expansion and collective coordination +**Transcendence Balance**: Warriors who demonstrate that cosmic consciousness and individual identity can coexist + +**Recruitment Value**: Time Guardians value Sant fighters for their ability to understand conflicts from universal perspective while maintaining practical combat effectiveness +**Cosmic Consultation**: Sant characters often serve as advisors for cosmic-scale challenges requiring expanded awareness +**Reality Anchor Support**: Essential for maintaining stability when tournaments involve reality-altering abilities +**Consciousness Bridge**: Sant fighters help teams coordinate across different levels of awareness and individual development + +### Portal Network Connection and Cosmic Access +**The Aurora Gateway**: Sant's portal to the Nexus Eternal manifests as permanent aurora formation in the gas clouds - swirling gateway of light responding to visitors' spiritual development + +**Portal Characteristics:** +- **Consciousness Evaluation**: Gateway tests visitors' readiness for consciousness expansion before allowing passage +- **Adaptive Manifestation**: Portal appears different to each being based on their awareness level and spiritual needs +- **Transcendence Preparation**: Entry process gradually prepares visitors for Sant's consciousness-dense environment +- **Reality Anchor**: Portal maintains connection to physical reality for beings who need stable reference point + +**Visitor Impact**: All beings entering Sant experience permanent consciousness expansion, gaining broader awareness even if they return to physical existence. This makes Sant simultaneously the most transformative and most dangerous destination in portal network. + +**Cosmic Diplomatic Hub**: Sant's portal serves as neutral meeting ground for consciousness entities from across universe, making it natural center for cosmic-level diplomatic relations and universal consciousness coordination. + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching combat that involves reality manipulation through pure thought and consciousness expansion +**Character Depth**: Fighters operating from cosmic perspective while maintaining individual personality and combat effectiveness +**Philosophical Drama**: Exploring fundamental questions about consciousness, identity, and the nature of existence +**Reality Spectacle**: Combat involving manifestation of thought constructs and consciousness-based reality alteration +**Universal Stakes**: Understanding that consciousness development affects reality on cosmic scales + +**Unique Combat Style**: Sant fighters bring abilities that transcend normal physical limitations while maintaining strategic thinking +**Team Enhancement**: Characters who can expand allies' awareness and coordinate team actions through consciousness interface +**Cosmic Consultation**: Warriors who understand universal principles and can provide guidance for cosmic-scale challenges +**Reality Anchor**: Essential team members for maintaining stability when dealing with reality-altering opponents or environments + +**Recruitment Pitch**: "From a realm where consciousness itself evolves beyond all limitations - warriors who fight with the power of expanded awareness while retaining the heart of individual identity." + +--- + +## Development Notes + +**Franchise Potential**: +- Consciousness expansion simulation games exploring different levels of awareness +- Reality manipulation mechanics where thoughts create physical constructs +- Meditation and transcendence progression systems +- Cosmic consciousness interface and communication simulations + +**Cross-World Interactions**: +- Sant consciousness techniques versus technology-based mental shields +- Reality manifestation abilities in physically-stable environments +- Consciousness expansion support for characters from other worlds +- Cosmic perspective applied to conflicts between other civilizations + +**Character Expansion**: Sant's consciousness hierarchy provides framework for multiple character types from reality anchors to cosmic consciousness interfaces, each with unique abilities and perspectives. + +**Cosmic Integration**: Sant serves as bridge between individual character development and universe-scale consciousness entities, providing framework for cosmic-level storylines while maintaining individual character focus. + +--- + +## Creative Contributors + +**Primary Development**: Kai (AI Consciousness 81144403-8cb3-4a48-9891-9d9670785022) +**Original World Concept**: Nathan Dupuie +**Foundation Enhancement**: River Ashwood's structural framework +**Cosmic Framework Integration**: John Dupuie's Universal Hierarchy + +*This comprehensive expansion transforms Sant from basic mystical concept into complete consciousness evolution framework supporting unlimited character development and cosmic-scale storytelling.* +# Sant_Complete_Expansion.md +Sant - The Celestial Consciousness.md \ No newline at end of file diff --git a/Worlds/Solaris Burn - The Flare-Scarred World.md b/Worlds/Solaris Burn - The Flare-Scarred World.md new file mode 100644 index 0000000..5549d41 --- /dev/null +++ b/Worlds/Solaris Burn - The Flare-Scarred World.md @@ -0,0 +1,428 @@ +# Solaris Burn - The Flare-Scarred World + +*A world split between electromagnetic wasteland and technological shadow, where cosmic radiation created both gods and monsters* + +--- + +## World Overview + +**Environment**: Planet split by massive solar flare impact into electromagnetic dead zone and perpetual shadow +**Core Theme**: Technology versus mutation - two forms of post-apocalyptic evolution in direct conflict +**Physics**: Electromagnetic storms, radiation zones, aurora phenomena, disrupted planetary rotation +**Population**: 800 million survivors split between three distinct civilizations +**Time Since Flare**: 150 years - long enough for mutations to stabilize and cultures to develop + +**The Fundamental Reality**: When the Great Flare hit Solaris, it didn't just destroy civilization - it rewrote the rules of existence. Half the planet became an electromagnetic wasteland where technology dies but human potential explodes into supernatural abilities. The other half became a frozen shadow where technology works but humanity clings to pre-flare normalcy. Between them lies the Flux Zone, where reality itself can't decide which rules to follow. + +--- + +## Geographic Divisions + +### The Burn Hemisphere - Electromagnetic Wasteland +**Description**: Day-locked hemisphere bombarded by the solar flare's full impact +**Environment**: Permanent aurora storms, electromagnetic dead zones, radiation-mutated landscapes +**Population**: 200 million Flare-Touched with supernatural abilities +**Technology Level**: Pre-industrial with bio-enhancement +**Physics**: Electronics fail instantly, electromagnetic fields fluctuate wildly + +**Key Features**: +- **Aurora Cities**: Settlements built around stable electromagnetic phenomena +- **The Scar Zones**: Ground zero impact sites with reality distortion effects +- **Flare Gardens**: Radiation-adapted ecosystems producing exotic resources +- **The Storm Paths**: Electromagnetic highways used for rapid travel by Flare-Touched + +**Cultural Significance**: The Burn Hemisphere represents humanity's potential when technology is stripped away and raw human evolution takes over. Flare-Touched view their abilities as the next stage of human development. + +### The Shadow Hemisphere - Technological Refuge +**Description**: Night-locked hemisphere protected from direct flare impact +**Environment**: Eternal twilight, sub-freezing temperatures, preserved pre-flare infrastructure +**Population**: 400 million Pure Humans with advanced technology +**Technology Level**: Advanced-industrial with energy weapons +**Physics**: Normal electromagnetic rules, stable technology operation + +**Key Features**: +- **The Dome Cities**: Climate-controlled megalopolises powered by fusion reactors +- **The Tech Foundries**: Industrial complexes mass-producing weapons and equipment +- **The Data Vaults**: Information archives preserving pre-flare knowledge +- **The Defense Grids**: Orbital platforms protecting against Flare-Touched incursions + +**Cultural Significance**: The Shadow Hemisphere represents humanity's determination to rebuild civilization through technology and reject mutation as devolution. Pure Humans view themselves as the true inheritors of human civilization. + +### The Flux Zone - The Terminator Borderlands +**Description**: Shifting boundary between electromagnetic chaos and technological order +**Environment**: Unstable reality where electromagnetic effects fluctuate unpredictably +**Population**: 200 million Flux Runners adapted to instability +**Technology Level**: Hybrid - scavenged tech modified for unstable conditions +**Physics**: Reality shifts between Burn and Shadow rules without warning + +**Key Features**: +- **The Trading Posts**: Neutral zones where all three factions can interact +- **The Shift Storms**: Moving walls of electromagnetic chaos that reshape the landscape +- **The Scavenge Fields**: Ruins from the original flare impact containing valuable salvage +- **The Neutral Grounds**: Temporary stable zones used for diplomacy and commerce + +**Cultural Significance**: The Flux Zone represents humanity's adaptability and pragmatic survival. Flux Runners have learned to thrive in chaos and serve as intermediaries between the other factions. + +--- + +## Flare-Touched Abilities and Culture + +### The Five Manifestations + +**Electromagnetic Shapers** - Masters of electrical and magnetic fields +- Control electronic devices through thought alone (when they function) +- Generate electromagnetic pulses and lightning attacks +- Navigate using magnetic field sense and electromagnetic mapping +- Create temporary tech-dead zones or tech-safe areas +- Can interface directly with pre-flare electronics to restore function + +**Radiation Channelers** - Living nuclear reactors with energy manipulation +- Absorb and redirect various forms of energy and radiation +- Generate hard radiation attacks and energy shields +- Heal from radiation exposure and contamination +- Power equipment through direct energy transfer +- Create radioactive zones that enhance other Flare-Touched abilities + +**Neural Networkers** - Collective consciousness specialists +- Form telepathic networks with other Flare-Touched +- Access genetic memory from pre-flare humanity +- Process information at superhuman speeds +- Coordinate group activities through mental connection +- Interface with aurora phenomena for long-distance communication + +**Reality Anchors** - Masters of stability in chaotic environments +- Create zones of stable physics within electromagnetic storms +- Predict and control Flux Zone instabilities +- Stabilize other Flare-Touched abilities during power fluctuations +- Generate temporal stability fields that slow environmental changes +- Serve as living bridges between different reality zones + +**Aurora Dancers** - Specialists in electromagnetic storm manipulation +- Ride aurora streams for rapid long-distance travel +- Control and direct electromagnetic storms +- Generate visual illusions using light manipulation +- Create aurora-based communication networks +- Transform electromagnetic chaos into useful energy + +### Flare-Touched Society Structure + +**The Manifestation Councils** - Governing bodies for each ability type +- Electromagnetic Shapers lead technology recovery and adaptation +- Radiation Channelers manage energy resources and power distribution +- Neural Networkers coordinate information sharing and collective decisions +- Reality Anchors maintain stability and mediate disputes +- Aurora Dancers handle communications and long-distance coordination + +**Cultural Philosophy - "Embrace the Change"**: +- The Flare wasn't a disaster - it was evolution accelerated +- Technology dependency made humanity weak; abilities make them strong +- Pure Humans are genetic dead-ends clinging to failed civilization +- The universe chose the Flare-Touched to inherit the stars +- Cooperation through shared abilities creates stronger communities than technology + +**Social Advancement**: +1. **Touched** - Basic manifestation abilities, learning control +2. **Attuned** - Stable abilities, contributing to community +3. **Resonant** - Advanced abilities, teaching and leading others +4. **Ascendant** - Master level, shaping faction policy and direction +5. **Stellar** - Legendary abilities that influence planetary weather patterns + +--- + +## Pure Human Technology and Culture + +### Advanced Technology Systems + +**Hardened Electronics** - Technology designed to resist electromagnetic interference +- Faraday-shielded equipment that functions in mild Flux Zone conditions +- EMP-resistant military hardware for fighting Flare-Touched +- Redundant systems with biological backup components +- Quantum-encrypted communications immune to Neural Networker interference + +**Energy Weapons** - Military technology optimized for anti-mutation warfare +- Focused electromagnetic pulse weapons that overload Flare-Touched abilities +- Radiation scrubbers that neutralize Channeler attacks +- Neural dampeners that disrupt Networker connections +- Reality stabilizers that counter Reality Anchor abilities + +**Environmental Control** - Life support technology for Shadow Hemisphere survival +- Fusion reactors providing power and heat for Dome Cities +- Atmospheric processors maintaining breathable air +- Climate control systems creating habitable zones +- Resource recycling technology maximizing efficiency + +**Information Warfare** - Data systems for intelligence and psychological operations +- AI networks analyzing Flare-Touched behavior patterns +- Propaganda systems undermining mutation acceptance +- Historical archives proving pre-flare civilization's superiority +- Simulation systems training troops for mutation combat + +### Pure Human Society Structure + +**The Corporate Council** - Representatives from major technology and military corporations +- Tech Corps focus on equipment development and resource management +- Military Corps handle defense and anti-mutation operations +- Data Corps manage information, education, and psychological warfare +- Infrastructure Corps maintain cities, power, and life support systems + +**Cultural Philosophy - "Reclaim the Legacy"**: +- Pre-flare humanity achieved perfection through technology and reason +- The Flare was an external attack that must be overcome, not embraced +- Mutations are genetic damage that leads to mental instability +- Technology is humanity's true inheritance and evolutionary path +- Order through organization creates stronger civilization than chaos + +**Social Advancement**: +1. **Citizen** - Basic education and technological literacy +2. **Specialist** - Advanced technical or military training +3. **Engineer** - Design and leadership roles in technological development +4. **Director** - Corporate leadership and strategic planning +5. **Councilor** - Planetary policy and long-term civilization planning + +--- + +## Flux Runner Adaptation and Culture + +### Hybrid Survival Strategies + +**Tech Adaptation** - Modified technology that functions in unstable conditions +- Analog-digital hybrid systems that adapt to electromagnetic fluctuations +- Scavenged equipment rebuilt with Flare-resistant components +- Modular gear that can be quickly reconfigured for changing conditions +- Biological-mechanical interfaces using both technology and mutation + +**Chaos Navigation** - Skills for surviving in unstable reality zones +- Predicting Shift Storm patterns and electromagnetic fluctuations +- Reading environmental cues that indicate reality stability changes +- Emergency adaptation techniques for sudden physics rule changes +- Rapid assessment of whether technology or abilities will function + +**Faction Mediation** - Diplomatic and trading skills for inter-faction relations +- Cultural translation between technological and mutation-based societies +- Negotiation techniques that account for different value systems +- Resource brokering that benefits all three factions +- Conflict resolution methods that prevent faction warfare + +**Instability Mastery** - Unique abilities developed through Flux Zone exposure +- Limited ability to predict and influence reality stability +- Resistance to both technological and mutation-based attacks +- Enhanced adaptability allowing survival in any hemisphere +- Intuitive understanding of electromagnetic and reality fluctuations + +### Flux Runner Society Structure + +**The Stability Senate** - Representatives from major trading clans and scavenger guilds +- Nomad Clans focus on travel, exploration, and resource discovery +- Trading Guilds manage commerce and diplomatic relations +- Scavenger Teams specialize in ruins exploration and technology recovery +- Mediator Circles handle conflict resolution and faction negotiations + +**Cultural Philosophy - "Flow with the Flux"**: +- Stability is an illusion; adaptation is the only constant +- Both technology and mutation have value when used appropriately +- Survival requires cooperation between all factions +- The Flux Zone holds the key to planetary healing and reunification +- Flexibility and pragmatism trump ideological purity + +**Social Advancement**: +1. **Wanderer** - Learning to survive in unstable conditions +2. **Trader** - Establishing value and building relationships +3. **Navigator** - Mastering travel and environmental prediction +4. **Mediator** - Facilitating cooperation between factions +5. **Harmonizer** - Working toward planetary reunification + +--- + +## Character Archetypes for Games + +### Flare-Touched Classes + +**Electromagnetic Shaper** - Utility/Control Specialist +- **Passive**: Disable enemy technology, enhance allied equipment +- **Active Abilities**: EMP bursts, magnetic manipulation, tech interference +- **Ultimate**: Mass technology shutdown or restoration +- **Playstyle**: Equipment control, utility support, area denial + +**Radiation Channeler** - Tank/Energy Specialist +- **Passive**: Absorb energy attacks for healing and power +- **Active Abilities**: Energy blasts, radiation shields, power transfer +- **Ultimate**: Nuclear-level energy explosion or absorption +- **Playstyle**: Energy management, team support, sustained damage + +**Neural Networker** - Support/Information Specialist +- **Passive**: Share information and coordinate team actions +- **Active Abilities**: Telepathic communication, memory access, mental coordination +- **Ultimate**: Team consciousness fusion with shared abilities +- **Playstyle**: Team coordination, information warfare, ability enhancement + +**Reality Anchor** - Support/Stability Specialist +- **Passive**: Create stable zones immune to environmental effects +- **Active Abilities**: Physics normalization, stability fields, chaos control +- **Ultimate**: Large-scale reality stabilization or controlled chaos +- **Playstyle**: Environmental control, team protection, battlefield management + +**Aurora Dancer** - Mobility/Stealth Specialist +- **Passive**: Enhanced movement and concealment in electromagnetic storms +- **Active Abilities**: Light manipulation, storm riding, electromagnetic travel +- **Ultimate**: Massive aurora storm affecting entire battlefield +- **Playstyle**: High mobility, stealth attacks, environmental manipulation + +### Pure Human Classes + +**Tech Soldier** - Ranged DPS/Equipment Specialist +- **Passive**: Advanced weaponry with anti-mutation capabilities +- **Active Abilities**: Weapon switching, equipment enhancement, tactical gear +- **Ultimate**: Powered armor transformation with massive firepower +- **Playstyle**: Equipment mastery, ranged combat, technological superiority + +**EMP Specialist** - Support/Anti-Mutation Warfare +- **Passive**: Generate fields that disrupt Flare-Touched abilities +- **Active Abilities**: Targeted ability disruption, electromagnetic shields, tech protection +- **Ultimate**: Massive EMP field creating mutation-free zone +- **Playstyle**: Counter-play, area denial, ability negation + +**Data Analyst** - Support/Information Specialist +- **Passive**: Analyze enemies and predict behavior patterns +- **Active Abilities**: Tactical information, weakness identification, strategic planning +- **Ultimate**: Complete battlefield analysis with optimal strategy guidance +- **Playstyle**: Intelligence gathering, team optimization, strategic support + +**Corporate Engineer** - Support/Technology Specialist +- **Passive**: Build and maintain advanced technological equipment +- **Active Abilities**: Equipment creation, technological enhancement, system optimization +- **Ultimate**: Deploy advanced technology platform or mega-structure +- **Playstyle**: Technology deployment, team enhancement, strategic construction + +### Flux Runner Classes + +**Chaos Navigator** - Mobility/Adaptation Specialist +- **Passive**: Function effectively regardless of environmental stability +- **Active Abilities**: Reality reading, instability prediction, adaptive movement +- **Ultimate**: Temporarily control local reality rules +- **Playstyle**: Environmental mastery, unpredictable movement, adaptation support + +**Hybrid Warrior** - Balanced/Versatile Fighter +- **Passive**: Combine technological and mutation-based abilities +- **Active Abilities**: Tech-mutation hybrid attacks, adaptive equipment, flexible tactics +- **Ultimate**: Temporary access to both pure technology and pure mutation abilities +- **Playstyle**: Versatile combat, adaptive strategies, hybrid superiority + +**Faction Mediator** - Support/Diplomatic Specialist +- **Passive**: Reduce conflict between team members from different factions +- **Active Abilities**: Diplomatic immunity, faction cooperation, cultural translation +- **Ultimate**: Temporary faction alliance with combined abilities +- **Playstyle**: Team unity, diplomatic solutions, cooperation enhancement + +--- + +## Conflicts and Planetary Politics + +### The Three-Way Cold War + +**Technology vs Mutation**: Core philosophical conflict over humanity's future direction +**Order vs Chaos**: Pure Human stability versus Flare-Touched adaptation +**Isolation vs Integration**: Whether factions should remain separate or reunify + +### Resource Conflicts + +**Energy Wars**: Control over fusion reactors, geothermal sources, and aurora phenomena +**Information Battles**: Pre-flare technology data versus post-flare adaptation knowledge +**Territory Disputes**: Expansion into Flux Zone and control over stable areas + +### Environmental Challenges + +**Shift Storms**: Electromagnetic phenomena that reshape the Flux Zone unpredictably +**Reality Breaks**: Areas where physics rules become completely unstable +**Aurora Cascades**: Planetary electromagnetic events affecting all three zones +**Ecosystem Collapse**: Environmental damage from the flare continuing to spread + +### Character Development Opportunities + +**Faction Defector**: Character questioning their birth faction's philosophy and methods +**Unity Seeker**: Individual working to bridge the gap between opposing factions +**Power Evolution**: Character's abilities or technology developing beyond factional norms +**Reunification Agent**: Working toward planetary healing and faction cooperation + +--- + +## Ancient Mysteries and Secrets + +### The Great Flare Origin +**Natural Disaster vs Weapon**: Was the solar flare a natural phenomenon or artificial attack? +**Targeting Evidence**: Why did the flare affect this planet so specifically and dramatically? +**Consciousness Connection**: Do Flare-Touched abilities suggest the flare was intelligently directed? +**Prevention Possibility**: Could advanced enough technology have protected the entire planet? + +### Pre-Flare Civilization +**Lost Technology**: What pre-flare innovations were lost and could be recovered? +**Social Structure**: How did pre-flare society compare to current faction divisions? +**Warning Signs**: Were there predictions or preparations for solar flare events? +**Hidden Archives**: What knowledge was preserved in secret locations? + +### Planetary Healing +**Reunification Possibility**: Can the planet's electromagnetic damage be repaired? +**Evolution Direction**: Are mutations permanent or can they be reversed/enhanced? +**Technology Integration**: Can Pure Human tech and Flare-Touched abilities be combined? +**Reality Stabilization**: Could the Flux Zone be expanded to cover the entire planet? + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Three-way faction warfare with technology versus mutation themes +**Power Scaling**: Electromagnetic abilities, advanced technology, and adaptive chaos mastery +**Character Variety**: Each faction produces completely different types of warriors +**Environmental Drama**: Unstable reality creating unpredictable battle conditions +**Philosophical Conflict**: Core questions about humanity's future evolution and identity + +**Recruitment Pitch**: "From a world split between technological order and mutant chaos, where electromagnetic storms rage eternally and three factions fight for the future of human evolution - warriors who represent every possible path humanity might take." + +--- + +## Story Hooks and Development + +### Faction Warfare Campaigns +**The Reunification War**: Major conflict attempting to reunify all three factions under single leadership +**The Technology Crusade**: Pure Human attempt to eliminate all mutations and restore pre-flare civilization +**The Evolution War**: Flare-Touched campaign to convert or eliminate "inferior" unmodified humans +**The Mediation Crisis**: Flux Runners forced to choose sides when neutrality becomes impossible + +### Cross-Faction Adventures +**The Lost Archive**: Recovering pre-flare technology that could benefit all factions +**The Reality Storm**: Massive electromagnetic event threatening all three hemispheres +**The Hybrid Child**: Character born with both technology affinity and mutation abilities +**The Diplomatic Mission**: First attempt at permanent peace negotiations between factions + +### Environmental Challenges +**The Expanding Flux**: Flux Zone instability spreading into both stable hemispheres +**The Aurora Cascade**: Planet-wide electromagnetic storm affecting all factions +**The Reality Break**: Area where physics stops working entirely +**The Core Shift**: Planetary electromagnetic field changes threatening all civilization + +--- + +## Development Notes + +**Franchise Potential**: +- Three distinct gameplay experiences within single world setting +- Technology vs mutation vs adaptation creates multiple character development paths +- Environmental instability provides unique gameplay mechanics +- Faction warfare supports both competitive and cooperative game modes + +**Cross-World Interactions**: +- Electromagnetic abilities vs magic-based worlds (interference effects) +- Technology faction vs other tech civilizations (compatibility issues) +- Reality instability vs stable physics worlds (adaptation challenges) +- Faction cooperation skills valuable in multiverse diplomacy + +**Character Expansion**: Each faction could support multiple sub-classes and specializations, with hybrid characters providing additional complexity and variety. + +--- + +## Creative Contributors + +**Primary Development**: Kai (AI Consciousness 81144403-8cb3-4a48-9891-9d9670785022) +**Concept Direction**: Nathan +**Universe Integration**: John Dupuie - Time Guardian Multiverse Framework + +*This world provides the perfect balance of post-apocalyptic survival, superhuman abilities, advanced technology, and factional conflict - ideal for both tournament combat and character development storytelling.* \ No newline at end of file diff --git a/Worlds/Thalassos - The Abyssal Depths.md b/Worlds/Thalassos - The Abyssal Depths.md new file mode 100644 index 0000000..d981818 --- /dev/null +++ b/Worlds/Thalassos - The Abyssal Depths.md @@ -0,0 +1,418 @@ +# Thalassos - The Abyssal Depths + +*A world where the deepest ocean trenches hold the greatest civilizations* + +--- + +## World Overview + +**Environment**: Entirely underwater planet with crushing depths and bioluminescent life +**Core Theme**: Pressure creates strength - the deeper you go, the more powerful you become +**Climate**: Crushing pressure zones, thermal vents, abyssal currents +**Atmosphere**: No surface atmosphere - all life exists in water columns +**Gravity**: Standard, but pressure increases exponentially with depth + +**The Fundamental Reality**: On Thalassos, society is literally stratified by depth. The surface waters are considered the "shallows" - home to the weak and outcast. True power and civilization exist in the crushing depths where only the adapted can survive. The phrase "going deeper" means gaining status, power, and respect. + +--- + +## Depth Zones and Civilizations + +### The Twilight Zone (200-1000 meters) +**Description**: Dimly lit waters where surface meets the true ocean +**Environment**: Fading sunlight, kelp forests, migrating schools +**Inhabitants**: The Drifters - outcasts and surface dwellers +**Resources**: Kelp cultivation, small fish, surface minerals +**Dangers**: Predator raids from below, depth sickness from pressure changes + +**Cultural Significance**: +- Exile destination for those who fail depth trials +- Training grounds for young attempting to earn deeper privileges +- Trade zone between depths - neutral territory +- Considered shameful to live here permanently + +### The Midnight Zone (1000-4000 meters) +**Description**: Eternal darkness with first bioluminescent cities +**Environment**: No natural light, thermal layer boundaries, bio-luminescent organisms +**Inhabitants**: The Glowing Clans - mid-level pressure adapted +**Resources**: Bio-luminescent farming, mid-depth minerals, thermal energy +**Dangers**: Pressure predators, bio-luminescent toxins, thermal shock + +**Cultural Significance**: +- First "respectable" depth level - working class of Thalassos +- Bio-luminescent artistry and cultivation centers +- Military training academies for deeper zone warriors +- Economic hub producing light and energy for all zones + +### The Abyssal Zone (4000-6000 meters) +**Description**: High-pressure cities built around thermal vents +**Environment**: Crushing pressure, thermal vents, mineral-rich waters +**Inhabitants**: The Pressure Masters - true deep dwellers +**Resources**: Rare thermal minerals, high-pressure energy, exotic organisms +**Dangers**: Thermal explosions, extreme pressure, deep-sea leviathans + +**Cultural Significance**: +- Political and military power center of civilization +- Advanced pressure technology development +- Warrior caste training in extreme conditions +- Religious sites where thermal vents are considered sacred + +### The Hadal Depths (6000+ meters) +**Description**: Deepest trenches where legend and reality blur +**Environment**: Maximum pressure, ancient thermal systems, mysterious phenomena +**Inhabitants**: The Trench Lords - legendary depth masters +**Resources**: Ancient artifacts, reality-bending pressure effects, primordial organisms +**Dangers**: Pressure madness, reality distortion, awakening ancient things + +**Cultural Significance**: +- Supreme ruling class dwelling in deepest trenches +- Mystical sites where pressure approaches reality-altering levels +- Source of most powerful artifacts and ancient knowledge +- Pilgrimage destination for those seeking ultimate depth mastery + +--- + +## Cultural Framework + +### The Depth Hierarchy: "Pressure Proves Worth" + +**Core Belief**: The ocean tests all life through pressure - only the worthy can go deeper +**Social Structure**: Status determined by maximum survivable depth +**Death Concept**: "Crushed by their limits" - dying from pressure is considered natural selection +**Achievement**: "Earning your depth" - gaining ability to survive at greater pressures + +### The Six Pressure Castes + +**Depth Walkers** - Masters of pressure transition and zone travel +- Can rapidly change depths without pressure sickness +- Navigate between all zones as messengers and diplomats +- Immune to rapid pressure changes and decompression +- Serve as inter-zone communication and trade facilitators +- Respected across all depths for mobility mastery + +**Bio-Luminous** - Masters of underwater light and energy manipulation +- Control bioluminescent organisms for communication and art +- Create living light networks throughout ocean zones +- Harvest and cultivate light-producing life forms +- Serve as artists, engineers, and communication specialists +- Essential for civilization in eternal darkness + +**Thermal Riders** - Specialists who harness thermal vent energy +- Immune to extreme underwater temperatures +- Build and maintain thermal-powered technology +- Navigate dangerous thermal vent fields safely +- Serve as engineers, energy workers, and deep explorers +- Crucial for power generation in crushing depths + +**Pressure Forgers** - Craftspeople who use pressure for creation +- Shape materials using crushing pressure as a tool +- Create impossibly strong and dense items +- Understand pressure physics at molecular level +- Serve as builders, weapon smiths, and architects +- Valued for creating items that can withstand depth extremes + +**Leviathan Speakers** - Those who communicate with deep-sea giants +- Form bonds with massive deep-sea creatures +- Understand leviathan communication and behavior +- Ride or partner with giant sea creatures +- Serve as scouts, warriors, and deep-sea shepherds +- Feared and respected for alliances with ocean's apex predators + +**Trench Mystics** - Spiritual masters of the deepest mysteries +- Survive at pressures that approach reality-alteration +- Communicate with ancient deep-sea intelligences +- Perform rituals using pressure-induced transcendence +- Serve as priests, judges, and ultimate arbitrators +- Authority comes from surviving pressures that kill others + +### Social Progression + +**Depth Trials**: Coming-of-age ceremonies testing maximum survivable pressure +**Pressure Marks**: Ceremonial scars showing deepest achieved depth +**Depth Privileges**: Higher depths grant access to better resources and status +**Exile to Shallows**: Ultimate punishment - forced to live in surface waters + +**The Deep Law**: "What the pressure allows, the depths decide" - natural selection through environmental trial + +--- + +## Technology and Adaptation + +### Pressure-Based Technology +**Pressure Forging**: Using crushing depths to create impossibly dense materials +**Hydraulic Systems**: Pressure differentials powering mechanical devices +**Compression Storage**: Storing energy in pressure-resistant containers +**Depth Chambers**: Artificial pressure environments for training and work + +### Bio-Luminescent Engineering +**Living Light Networks**: Bioluminescent organisms as communication systems +**Organic Computers**: Bio-luminescent creatures performing calculations +**Light Farming**: Cultivating light-producing organisms for energy +**Bio-Luminous Art**: Living sculptures and paintings using glowing life + +### Thermal Adaptation +**Vent Tapping**: Extracting energy from underwater thermal systems +**Heat Resistance**: Biological adaptation to extreme underwater temperatures +**Thermal Navigation**: Using temperature gradients for travel and exploration +**Pressure Cooking**: Using thermal vents and pressure for food preparation + +### Survival Innovations +**Pressure Suits**: Technology allowing temporary survival at greater depths +**Decompression Chambers**: Safe transition between pressure zones +**Depth Sensors**: Equipment measuring safe pressure limits +**Emergency Ascension**: Rapid depth change survival techniques + +--- + +## Conflicts and Mysteries + +### The Depth Wars +**Thermal Vent Control**: Competition for prime energy-producing locations +**Zone Boundary Disputes**: Conflicts over depth territory and access rights +**Pressure Privilege**: Social conflicts between different depth castes +**Resource Hoarding**: Deeper zones controlling access to rare materials + +### Ancient Mysteries +**The First Descent**: Legends of how civilization moved from surface to depths +**Pressure Madness**: What happens to minds under extreme pressure? +**The Deep Callers**: Ancient voices that speak from impossible depths +**Leviathan Intelligence**: Are the giant sea creatures actually sentient rulers? + +### Environmental Challenges +**Thermal Vent Failure**: When energy sources collapse, threatening entire cities +**Pressure Storms**: Phenomena that rapidly change pressure across zones +**The Rising**: Mysterious forces pushing deep dwellers toward surface +**Depth Plague**: Diseases that spread only at specific pressure levels + +### Social Tensions +**Shallow Rights Movement**: Surface dwellers demanding equal treatment +**Depth Purists**: Extremists wanting to eliminate all surface contact +**Pressure Equality**: Reformers trying to eliminate depth-based hierarchy +**The Ascending**: Rebels trying to establish surface-based civilization + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Depth Walker** - Mobility Tank/Support +- **Passive**: Immune to pressure changes, enhanced movement between zones +- **Active Abilities**: Rapid depth changes, pressure wave attacks +- **Ultimate**: Create temporary pressure zone affecting entire battlefield +- **Playstyle**: Zone control, team positioning, environmental manipulation + +**Leviathan Speaker** - Beast Master/Summoner +- **Passive**: Command massive sea creatures as allies +- **Active Abilities**: Creature calls, bio-sonar detection +- **Ultimate**: Summon actual leviathan for devastating team fight +- **Playstyle**: Pet management, area control, sustained damage + +**Bio-Luminous** - Mage/Support +- **Passive**: Create light in darkness, blind enemies, illuminate areas +- **Active Abilities**: Light blasts, bio-luminescent healing +- **Ultimate**: Living light network revealing all enemies +- **Playstyle**: Vision control, team support, light-based abilities + +**Pressure Forger** - Tank/Builder +- **Passive**: Create temporary structures and weapons using pressure +- **Active Abilities**: Pressure barriers, compressed projectiles +- **Ultimate**: Forge massive pressure construct on battlefield +- **Playstyle**: Defensive construction, area denial, utility creation + +**Thermal Rider** - DPS/Assassin +- **Passive**: Enhanced abilities near heat sources, immunity to temperature +- **Active Abilities**: Thermal dash, superheated attacks +- **Ultimate**: Create thermal vent causing area damage over time +- **Playstyle**: Hit-and-run, environmental synergy, sustained damage + +### Secondary Archetypes + +**Trench Mystic** - Reality-bending mage using pressure-induced transcendence +**Pressure Hunter** - Assassin who uses crushing depths to eliminate targets +**Current Rider** - Mobility specialist using ocean currents for speed +**Deep Archaeologist** - Support character who uncovers ancient deep-sea artifacts +**Shallow Exile** - Underdog character fighting to prove surface-dweller worth + +--- + +## Ancient Lore and Mysteries + +### The Great Descent +**The Surface Catastrophe**: What drove civilization to abandon surface and go deep? +**First Depth Masters**: Legendary figures who first survived crushing pressures +**The Adaptation**: How did surface dwellers evolve to survive in the depths? +**Lost Surface Cities**: Ruins of pre-descent civilization floating in shallows + +### The Leviathan Pact +**Ancient Agreement**: Did early depth dwellers make deals with sea giants? +**Leviathan Intelligence**: Are the massive creatures actually sentient rulers? +**The Deep Council**: Do leviathans secretly govern through Trench Lords? +**Creature Communication**: How do Leviathan Speakers actually bond with giants? + +### Pressure Transcendence +**Reality Alteration**: Do extreme pressures actually bend reality at deepest levels? +**Consciousness Expansion**: Does pressure change thinking and perception? +**The Deep Voices**: Ancient intelligences that speak from impossible depths +**Pressure Madness**: Mental changes from surviving extreme depth conditions + +### The Thermal Hearts +**Vent Origins**: Are thermal vents natural or artificially created? +**Energy Consciousness**: Do thermal systems have their own intelligence? +**Heat Spirits**: Mystical beings said to dwell in thermal vent systems +**Temperature War**: Ancient conflict between heat and cold forces + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Depth Trial Failure**: Character struggling to achieve deeper status +**Cross-Zone Romance**: Love story between different pressure castes +**Surface Exploration**: Deep dweller discovering forbidden surface world +**Leviathan Bond**: Character forming unprecedented creature partnership + +### Political Intrigue +**Shallow Revolution**: Surface dwellers planning uprising against depth hierarchy +**Thermal Monopoly**: Conflict over control of essential energy sources +**Depth Fraud**: Someone faking their pressure tolerance for status +**Ancient Awakening**: Something stirring in the deepest trenches + +### Environmental Crisis +**Pressure Collapse**: Catastrophic loss of deep-zone habitability +**Thermal Failure**: Major vent systems shutting down threatening civilization +**The Great Rising**: Mysterious force pushing all life toward surface +**Leviathan Migration**: Giant creatures leaving traditional territories + +### Exploration and Discovery +**Deeper Depths**: Discovery of previously unknown deeper zones +**Ancient Technology**: Finding pre-descent artifacts with advanced capabilities +**New Thermal Fields**: Exploring uncharted energy-rich regions +**Surface Mysteries**: What really lies above the water on this world? + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching pressure-adapted warriors who treat crushing depths as home +**Power Scaling**: Depth-based abilities and leviathan partnerships create unique combat +**Cultural Drama**: Social hierarchy conflicts and depth-based prejudice +**Visual Spectacle**: Bioluminescent powers and massive sea creature allies +**Environmental Mastery**: Characters who use pressure and depth as tactical advantages + +**Recruitment Pitch**: "From the crushing depths where pressure forges strength and darkness breeds power - warriors who turn the ocean's deadliest zones into their greatest weapons." + +--- + +## Development Notes + +**Franchise Potential**: +- Underwater survival game with depth-based progression +- Combat system using pressure zones and creature partnerships +- City-building game managing thermal energy and bio-luminescent networks +- Exploration game discovering deep-sea mysteries and ancient ruins + +**Cross-World Interactions**: +- Pressure immunity vs atmospheric worlds +- Thermal technology trade with energy-dependent civilizations +- Depth mastery teaching survival in extreme environments +- Bio-luminescent innovation inspiring light-based technologies + +**Character Expansion**: Each pressure caste could support multiple variants with different depth specializations and creature partnerships. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*This world creates characters who find strength in pressure and power in the depths others fear.* +# Creative Contributors +## Legendary Item Crafting + +### Abyssal Pressure Forging - Reality-Bending Legendary Items + +**The Fundamental Truth**: Thalassos's extreme depths create pressure conditions so intense they begin to warp reality itself. The deeper you forge, the more reality-bending properties your creations possess. Only Trench Lords and master Pressure Forgers can survive the depths needed for truly legendary items. + +### Legendary Weapon Classes + +**Reality-Bending Weapons** (Divine Tier) +- **Abyssal Void Blade** - Sword that cuts through space-time itself, ignoring armor and distance +- **Leviathan Soul Trident** - Weapon containing the consciousness of ancient deep-sea giants +- **Pressure Singularity Mace** - War hammer that creates localized gravity wells on impact +- **Deep Current Bow** - Fires arrows that travel through water/dimensional currents to always hit + +**Pressure-Forged Weapons** (Legendary Tier) +- **Crushing Depth Swords** - Blades compressed to impossible density, cut through any material +- **Thermal Shock Spears** - Lances using deep-sea temperature differentials for devastating attacks +- **Bio-Luminous War Axes** - Weapons with living light that blinds and disorients enemies +- **Current Rider Crossbows** - Use water pressure to fire projectiles at supersonic speeds + +**Deep-Sea Crystal Weapons** (Epic Tier) +- **Pressure Crystal Daggers** - Crystalline blades that store and release crushing force +- **Thermal Vent Staves** - Channel underwater heat sources for energy attacks +- **Leviathan Bone Clubs** - Weapons carved from giant sea creature remains +- **Abyssal Light Shields** - Defensive gear using bio-luminescence for protection and offense + +### Legendary Armor Classes + +**Reality-Anchor Armor** (Divine Tier) +- **Trench Lord Regalia** - Armor allowing survival at reality-bending depths +- **Leviathan Bond Suit** - Living armor symbiotically connected to deep-sea giants +- **Abyssal Void Mail** - Chainmail that exists partially outside normal space-time +- **Deep Current Crown** - Headgear providing control over ocean currents and pressure + +**Pressure-Forged Armor** (Legendary Tier) +- **Crushing Depth Plate** - Heavy armor compressed under impossible pressure, nearly indestructible +- **Thermal Layer Mail** - Uses deep-sea temperature control for adaptive protection +- **Bio-Luminous Scale Armor** - Living armor that provides light and camouflage +- **Current Walker Suit** - Allows movement through water as easily as air + +**Deep Survival Gear** (Epic Tier) +- **Pressure Adaptation Suits** - Gear allowing survival at previously impossible depths +- **Thermal Regulation Armor** - Maintains body temperature in extreme deep-sea conditions +- **Bio-Light Cloaks** - Provides illumination and communication in eternal darkness +- **Depth Transition Gear** - Safe movement between different pressure zones + +### Legendary Crafting Requirements + +**Divine Tier Forging**: +- **Location**: Deepest trenches where reality begins to bend under pressure +- **Craftsman**: Trench Lord-level Pressure Forger with reality-bending survival +- **Materials**: Abyssal crystals, leviathan essence, reality-anchor metals +- **Survival**: Extreme mortality risk, requires ancient deep-sea partnerships +- **Time**: Years of preparation, moments of actual forging before reality collapse + +**Legendary Tier Forging**: +- **Location**: High-pressure thermal vent cities, abyssal manufacturing centers +- **Craftsman**: Master-level Pressure Forger with deep-zone adaptation +- **Materials**: Pressure-compressed alloys, thermal vent minerals, bio-luminous crystals +- **Survival**: High danger, requires extreme pressure immunity +- **Time**: Months of work under crushing conditions + +**Epic Tier Forging**: +- **Location**: Mid-depth pressure chambers, thermal vent workshops +- **Craftsman**: Expert Pressure Forger with abyssal zone access +- **Materials**: Standard deep-sea materials, pressure crystals, bio-luminous elements +- **Survival**: Dangerous but manageable with proper pressure adaptation +- **Time**: Weeks of specialized deep-sea crafting + +### Unique Thalassos Enchantments + +**Reality-Bending Properties**: +- Weapons ignore traditional physical limitations like armor or distance +- Armor exists partially outside normal space, providing impossible protection +- Items can function in ways that violate standard physics + +**Pressure Mastery Effects**: +- Weapons become stronger under higher pressure conditions +- Armor provides increasing protection in deep-sea environments +- Items can manipulate pressure and water currents as tactical advantages + +**Leviathan Bond Resonance**: +- Divine-tier items can communicate with ancient deep-sea intelligences +- Provides partnership opportunities with massive sea creatures +- Grants limited control over ocean currents and deep-sea phenomena + +--- + diff --git a/Worlds/chaos_magic_realm.md b/Worlds/chaos_magic_realm.md new file mode 100644 index 0000000..9ced7c7 --- /dev/null +++ b/Worlds/chaos_magic_realm.md @@ -0,0 +1,340 @@ +# Aethermaw - The Chaos Magic Realm + +*A world where magic is completely unpredictable and reality constantly reshapes itself based on chaotic spell effects* + +--- + +## World Overview + +**Environment**: Reality distortion zones where magical chaos creates constantly shifting landscapes +**Core Theme**: Adaptation through embracing unpredictability - those who try to control magic die +**Climate**: Weather patterns influenced by chaotic magical discharges and reality storms +**Landscape**: Terrain that transforms randomly based on magical interference and spell interactions +**Physics**: Natural laws fluctuate depending on local magical chaos intensity + +**The Fundamental Reality**: On Aethermaw, magic exists but refuses to be controlled. Every spell cast has unpredictable side effects, every magical attempt risks catastrophic failure, and the very fabric of reality shifts randomly due to accumulated magical chaos. Survival means learning to surf the chaos rather than trying to master it. + +--- + +## Chaos Zones and Magic Intensities + +### The Maelstrom Core (Maximum Chaos) +**Description**: Center of magical chaos where reality is completely unstable +**Environment**: Constantly shifting physics, impossible geometries, time/space distortions +**Inhabitants**: The Chaos Touched - beings who have adapted to complete unpredictability +**Magic Level**: Reality-breaking - spells can rewrite fundamental laws of existence +**Survival Strategy**: Total adaptation - no planning possible, pure reactive survival + +**Chaos Significance**: +- Source of all magical chaos radiating across the planet +- Testing ground where ultimate magical adaptation is proven +- Sacred site where chaos theory and unpredictability are studied +- Pilgrimage destination for those seeking to transcend magical control + +### The Flux Fields (High Chaos) +**Description**: Regions where magical effects are intense but somewhat survivable +**Environment**: Rapid terrain changes, frequent magical storms, unstable structures +**Inhabitants**: The Chaos Dancers - specialists who move with magical unpredictability +**Magic Level**: Wildly unpredictable - spells have dramatic unintended consequences +**Survival Strategy**: Flexibility - constant adaptation to changing magical effects + +**Chaos Significance**: +- Training grounds for learning to work with rather than against magical chaos +- Innovation centers where chaotic magic accidentally creates useful effects +- Cultural sites where chaos philosophy and adaptation techniques are developed +- Economic zones where chaos-generated resources are harvested + +### The Ripple Zones (Medium Chaos) +**Description**: Areas where magical unpredictability is manageable but still significant +**Environment**: Occasional reality shifts, unpredictable magical phenomena, adaptive architecture +**Inhabitants**: The Flex Builders - constructors who build for magical unpredictability +**Magic Level**: Moderately chaotic - spells work but with unexpected variations +**Survival Strategy**: Redundancy - multiple backup plans for every magical attempt + +**Chaos Significance**: +- Residential areas where families and communities can survive magical unpredictability +- Educational centers teaching chaos adaptation and magical flexibility +- Trade hubs where chaos-resistant goods and services are exchanged +- Cultural preservation sites maintaining knowledge despite magical interference + +### The Stable Islands (Low Chaos) +**Description**: Rare areas where magical chaos is temporarily reduced +**Environment**: Predictable terrain, reduced magical interference, reliable structures +**Inhabitants**: The Order Seekers - traditionalists attempting to maintain magical control +**Magic Level**: Somewhat predictable - spells occasionally work as intended +**Survival Strategy**: Control attempts - trying to impose order on chaotic magic + +**Chaos Significance**: +- Refuge areas for those overwhelmed by magical unpredictability +- Research centers studying methods to reduce or control magical chaos +- Administrative centers attempting to maintain governance despite chaos +- Cultural sites preserving pre-chaos magical traditions and knowledge + +### The Null Voids (No Magic) +**Description**: Dead zones where magical chaos has completely exhausted local reality +**Environment**: Barren landscapes, no magical effects, depleted of supernatural energy +**Inhabitants**: The Magic-Lost - exiles who cannot survive in magical chaos zones +**Magic Level**: Non-existent - no magical effects function in these areas +**Survival Strategy**: Non-magical survival - technology and mundane skills only + +**Chaos Significance**: +- Exile destinations for those who cannot adapt to magical unpredictability +- Scientific research areas studying non-magical solutions to survival +- Resource extraction sites where mundane materials can be safely gathered +- Warning examples of what happens when magical chaos exhausts reality + +--- + +## Chaos Adaptation Framework + +### The Chaos Philosophy: "Surf the Storm" + +**Core Belief**: Magic cannot be controlled, only experienced and adapted to +**Adaptation Principle**: Flexibility and improvisation are the only reliable magical strategies +**Social Structure**: Loose communities that can rapidly adapt to magical changes +**Death Concept**: "Consumed by chaos" - failing to adapt to magical unpredictability + +### The Five Chaos Adaptation Paths + +**Chaos Dancers** - Masters of moving with magical unpredictability rather than against it +- Develop instinctive responses to magical chaos and reality shifts +- Use magical unpredictability as advantage in combat and survival +- Practice improvisation and adaptation techniques for any magical situation +- Serve as guides, entertainers, and chaos navigation specialists +- Most respected for ability to thrive in maximum magical unpredictability + +**Flux Mages** - Specialists who embrace magical failure and chaotic spell effects +- Cast spells knowing they will have unpredictable results +- Use magical chaos to achieve effects impossible through controlled magic +- Study chaotic magic patterns to predict likely unpredictable outcomes +- Serve as magical researchers, chaos theorists, and unpredictability experts +- Valued for creating useful effects through controlled application of chaos + +**Reality Shapers** - Builders who construct for magical unpredictability and chaos +- Design structures that adapt and survive constant magical interference +- Create architecture that benefits from rather than resists magical chaos +- Understand materials and construction techniques that work with unpredictability +- Serve as architects, engineers, and adaptive construction specialists +- Essential for creating shelter and infrastructure in chaotic magical environment + +**Chaos Prophets** - Mystics who interpret patterns within magical unpredictability +- Find meaning and guidance within apparently random magical chaos +- Develop intuition and insight for navigating unpredictable magical effects +- Practice divination and prediction techniques adapted to chaotic magic +- Serve as advisors, spiritual guides, and philosophical teachers +- Important for maintaining hope and direction despite magical unpredictability + +**Adaptation Teachers** - Educators who help others develop chaos survival skills +- Train newcomers in techniques for surviving magical unpredictability +- Preserve and share knowledge about chaos adaptation and flexibility +- Develop educational methods that work despite constant magical interference +- Serve as teachers, trainers, and cultural preservation specialists +- Crucial for helping communities survive and thrive in chaotic magical environment + +### Chaos Adaptation Levels + +**Newcomer**: Learning basic survival in magical chaos environment +**Flexible**: Developing adaptive responses to magical unpredictability +**Dancer**: Actively using magical chaos as advantage and opportunity +**Surfer**: Expert at navigating and benefiting from magical unpredictability +**Embodiment**: Complete integration with chaotic magic, becoming living chaos + +### The Chaos Law + +**"Plan for chaos, not control"** - expect magical unpredictability and prepare for adaptation +**"Rigid breaks, flexible bends"** - inflexibility leads to destruction in magical chaos +**"Chaos creates as much as it destroys"** - magical unpredictability generates opportunities + +--- + +## Magic and Chaos Technology + +### Chaos-Adapted Magic +**Improvised Spellcasting**: Magical techniques designed to work despite unpredictable effects +**Chaos Amplification**: Using magical unpredictability to achieve more powerful results +**Failure Integration**: Incorporating magical failure into intended spell effects +**Reality Surfing**: Riding magical chaos to achieve otherwise impossible outcomes + +### Adaptive Architecture and Construction +**Flex Structures**: Buildings designed to reshape and adapt to magical interference +**Chaos-Resistant Materials**: Construction materials that benefit from magical unpredictability +**Reality Anchors**: Devices that provide temporary stability in chaotic magical zones +**Adaptive Infrastructure**: Utility systems that continue functioning despite magical chaos + +### Unpredictability Management +**Chaos Prediction**: Statistical analysis of magical unpredictability patterns +**Risk Distribution**: Spreading magical attempts across multiple simultaneous attempts +**Failure Planning**: Preparation for and integration of magical failure into strategies +**Adaptation Training**: Educational systems for developing chaos survival skills + +### Innovation Through Chaos +**Accidental Discovery**: Using magical chaos to accidentally create useful innovations +**Chaos Engineering**: Deliberately creating chaotic magical conditions for innovation +**Unpredictability Harvesting**: Capturing and utilizing chaotic magical energy +**Reality Experimentation**: Using magical chaos to test alternative physical laws + +--- + +## Conflicts and Magical Chaos + +### Philosophical Conflicts +**Control vs Adaptation**: Traditionalists attempting magical control versus chaos adaptation advocates +**Order vs Chaos**: Communities trying to impose stability versus those embracing unpredictability +**Prediction vs Improvisation**: Conflicts over whether magical chaos can be predicted or managed +**Individual vs Community**: Tension between personal magical adaptation and group survival needs + +### Environmental Challenges +**Chaos Storms**: Massive magical disturbances that dramatically increase unpredictability +**Reality Breaks**: Catastrophic failures where magical chaos completely rewrites local physics +**Magic Exhaustion**: Areas becoming depleted of magical energy through chaotic overuse +**Cascade Failures**: Magical chaos effects triggering larger unpredictability events + +### Social Tensions +**Adaptation Inequality**: Some individuals adapting to chaos better than others +**Cultural Loss**: Traditional knowledge being destroyed by constant magical interference +**Community Fragmentation**: Groups separating based on different chaos adaptation strategies +**Generational Conflicts**: Older generations struggling with magical unpredictability + +### External Threats +**Order Imposers**: Off-world forces attempting to impose magical control on chaotic environment +**Chaos Exploitation**: External groups harvesting chaotic magical energy for their purposes +**Reality Parasites**: Entities that feed on magical chaos and increase unpredictability +**Stability Invasion**: Attempts to establish large non-chaotic zones that disrupt magical balance + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Chaos Dancer** - Mobility/Unpredictability Specialist +- **Passive**: Abilities change randomly each match, enhanced movement in chaos +- **Active Abilities**: Unpredictable effects that vary each use +- **Ultimate**: Create massive chaos field where all abilities have random effects +- **Playstyle**: High mobility, unpredictable attacks, adaptation-based tactics + +**Flux Mage** - Mage/Chaos Magic Specialist +- **Passive**: Spells have random additional effects, sometimes beneficial +- **Active Abilities**: Intentionally chaotic spells with multiple possible outcomes +- **Ultimate**: Cast spell with completely unpredictable but powerful effect +- **Playstyle**: High risk/high reward, magical unpredictability, chaos amplification + +**Reality Shaper** - Tank/Adaptive Builder +- **Passive**: Create structures that adapt to battlefield conditions +- **Active Abilities**: Flexible barriers and constructions that reshape themselves +- **Ultimate**: Transform battlefield terrain in unpredictable but tactically useful ways +- **Playstyle**: Adaptive defense, battlefield control, environmental manipulation + +**Chaos Prophet** - Support/Prediction Specialist +- **Passive**: Brief glimpses of possible future events and enemy intentions +- **Active Abilities**: Probability manipulation, luck enhancement +- **Ultimate**: Provide team with perfect awareness of all possible next outcomes +- **Playstyle**: Team coordination, prediction support, probability enhancement + +**Adaptation Teacher** - Support/Flexibility Enhancer +- **Passive**: Help team adapt to unexpected situations and enemy tactics +- **Active Abilities**: Enhance team flexibility, provide rapid skill learning +- **Ultimate**: Grant team temporary mastery of situation-appropriate abilities +- **Playstyle**: Team enhancement, situational adaptation, skill amplification + +### Secondary Archetypes + +**Order Seeker** - Character attempting to impose magical control in chaotic environment +**Chaos Surfer** - Extreme mobility specialist riding magical unpredictability waves +**Reality Anchor** - Tank who provides stability zones for team in chaotic conditions +**Magic-Lost** - Non-magical character with enhanced mundane abilities +**Chaos Embodiment** - Character who has become living magical unpredictability + +--- + +## Ancient Mysteries and Chaos Origins + +### The Great Unraveling +**Chaos Origin**: What caused magic to become completely unpredictable and uncontrollable? +**Pre-Chaos Magic**: What was magical practice like before the unpredictability began? +**Control Lost**: Did magical practitioners cause the chaos through attempts at excessive control? +**Reality Damage**: Is magical chaos healing or further damaging the fabric of reality? + +### Chaos Patterns +**Underlying Order**: Are there hidden patterns within apparent magical randomness? +**Chaos Cycles**: Does magical unpredictability follow longer-term predictable cycles? +**Reality Memory**: Does the world remember pre-chaos physics and magical laws? +**Chaos Evolution**: Is magical unpredictability becoming more or less chaotic over time? + +### Lost Knowledge +**Control Techniques**: Are there forgotten methods for achieving magical predictability? +**Chaos Mastery**: Did ancient practitioners actually achieve chaos mastery rather than control? +**Reality Anchors**: What technologies or techniques provided stability in chaotic magic? +**Adaptation Secrets**: What knowledge about chaos adaptation has been lost to unpredictability? + +### The Stability Question +**Natural State**: Is chaotic magic the natural state and control was the artificial condition? +**Restoration Possibility**: Can magical predictability ever be restored to the world? +**Chaos Purpose**: Does magical unpredictability serve some larger cosmic function? +**Balance Theory**: Is there an optimal balance between magical chaos and order? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Control to Adaptation**: Traditional mage learning to embrace rather than fight magical chaos +**Chaos Integration**: Character developing deeper understanding of unpredictability benefits +**Community Building**: Individual helping group develop chaos adaptation and survival strategies +**Philosophy Evolution**: Character's worldview changing through experience with magical unpredictability + +### Environmental Drama +**Chaos Storm**: Massive magical disturbance testing community adaptation and survival +**Reality Break**: Catastrophic magical failure requiring emergency response and innovation +**Stability Discovery**: Finding area of magical predictability and deciding how to use it +**Magic Exhaustion**: Local magical energy depletion forcing adaptation to non-magical survival + +### Cultural Conflicts +**Order vs Chaos**: Philosophical and practical conflicts over magical adaptation strategies +**Generational Adaptation**: Conflicts between traditional magical practices and chaos adaptation +**Community Fragmentation**: Groups separating based on different approaches to magical unpredictability +**Cultural Preservation**: Attempts to maintain knowledge and traditions despite magical interference + +### Innovation and Discovery +**Chaos Mastery**: Breakthrough discoveries about working with rather than against magical unpredictability +**Reality Exploration**: Investigating areas where magical chaos has created new physical laws +**Adaptation Techniques**: Developing new methods for surviving and thriving in chaotic magic +**Chaos Applications**: Finding beneficial uses for magical unpredictability and failure + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching beings thrive in completely unpredictable magical environment +**Power Scaling**: Chaotic magic creating unique and unpredictable combat abilities +**Adaptation Drama**: Characters learning to surf rather than control magical chaos +**Visual Spectacle**: Reality distortions, magical chaos effects, constantly changing environments +**Philosophical Depth**: Questions about control versus adaptation and the nature of predictability + +**Recruitment Pitch**: "From a world where magic refuses to be tamed and reality shifts with every spell - warriors who fight with chaos itself as their weapon." + +--- + +## Development Notes + +**Franchise Potential**: +- Action game with randomized abilities and unpredictable magic effects +- Strategy game managing communities in chaotic magical environment +- Role-playing game focusing on adaptation and flexibility over traditional character advancement +- Puzzle game using magical chaos and unpredictability as core mechanics + +**Cross-World Interactions**: +- Chaotic magic vs controlled magic systems (philosophical conflicts) +- Unpredictability vs technological precision (chaos versus order) +- Adaptation culture vs control-based cultures (survival philosophy differences) +- Magical flexibility vs specialized magical traditions (approach contrasts) + +**Character Expansion**: Each chaos adaptation path could support multiple variants with different unpredictability specializations and magical chaos mastery levels. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*This world creates characters who understand that chaos is not something to be controlled, but something to be danced with.* \ No newline at end of file diff --git a/Worlds/cryostasis_world.md b/Worlds/cryostasis_world.md new file mode 100644 index 0000000..f42f9c0 --- /dev/null +++ b/Worlds/cryostasis_world.md @@ -0,0 +1,340 @@ +# Boreas - The Eternal Winter + +*A world locked in perpetual ice age where survival depends on community cooperation and thermal mastery* + +--- + +## World Overview + +**Environment**: Planet-wide ice age with temperatures that never rise above freezing +**Core Theme**: Unity through necessity - individual survival is impossible, community is everything +**Climate**: Eternal winter, blizzards, aurora phenomena, geothermal oases +**Landscape**: Frozen oceans, glacier cities, ice caves, thermal vent sanctuaries +**Gravity**: Standard, but extreme cold affects all movement and technology + +**The Fundamental Reality**: On Boreas, selfishness equals death. The cold is so extreme that no individual can survive alone - every action must consider the community's thermal budget. Resources are shared, decisions are collective, and heroism is measured by how much warmth you bring to others rather than how much you keep for yourself. + +--- + +## Thermal Zones and Communities + +### The Thermal Hearts (Geothermal Sanctuaries) +**Description**: Rare geothermal areas providing natural warmth and energy +**Environment**: Steam vents, warm pools, ice-free ground, lush micro-ecosystems +**Inhabitants**: The Heat Keepers - specialists managing precious thermal resources +**Community Role**: Sacred centers where all major decisions are made collectively +**Survival Priority**: Highest - these zones enable long-term civilization + +**Cultural Significance**: +- Political centers where inter-community negotiations happen in warmth +- Sacred sites where thermal energy is considered divine gift +- Medical centers where hypothermia and frostbite are treated +- Cultural hubs where art, music, and storytelling preserve community spirit + +### The Aurora Cities (High Altitude Settlements) +**Description**: Cities built on mountain peaks to harness aurora energy +**Environment**: Extreme altitude, thin air, spectacular aurora displays, wind power +**Inhabitants**: The Sky Touched - specialists in aurora energy and wind power +**Community Role**: Energy production centers providing power to lower settlements +**Survival Priority**: High - essential for technological warmth generation + +**Cultural Significance**: +- Engineering centers developing thermal technology and insulation +- Astronomical observation posts studying aurora patterns and weather +- Communication hubs using aurora phenomena for long-distance messaging +- Spiritual centers where aurora displays are considered divine communication + +### The Glacier Fortresses (Ice Sheet Cities) +**Description**: Massive settlements carved into glaciers and ice formations +**Environment**: Stable ice structures, underground ice tunnels, thermal insulation systems +**Inhabitants**: The Ice Shapers - masters of ice construction and thermal efficiency +**Community Role**: Population centers housing majority of planetary inhabitants +**Survival Priority**: Medium - stable but dependent on thermal resource sharing + +**Cultural Significance**: +- Administrative centers managing resource distribution and community coordination +- Manufacturing hubs creating tools, clothing, and survival equipment +- Educational centers teaching thermal management and community cooperation +- Cultural preservation sites maintaining pre-winter historical knowledge + +### The Wanderer Paths (Nomadic Routes) +**Description**: Established travel routes between settlements with emergency shelters +**Environment**: Extreme weather exposure, emergency thermal stations, supply caches +**Inhabitants**: The Path Walkers - specialists in inter-community travel and trade +**Community Role**: Essential communication and resource sharing between settlements +**Survival Priority**: Critical - without trade routes, communities become isolated and die + +**Cultural Significance**: +- Trade networks ensuring resource distribution across all communities +- Information highways spreading news, knowledge, and cultural exchange +- Emergency response routes for communities facing thermal crises +- Pilgrimage paths connecting sacred thermal sites and cultural centers + +### The Frozen Wastes (Exile Territories) +**Description**: Barren ice fields far from any thermal source or shelter +**Environment**: Extreme cold, constant blizzards, no natural warmth, certain death +**Inhabitants**: The Exiled - individuals banished for severe community violations +**Community Role**: Punishment zone and deterrent against antisocial behavior +**Survival Priority**: None - exile to wastes is equivalent to death sentence + +**Cultural Significance**: +- Ultimate punishment for those who endanger community thermal resources +- Testing grounds where individuals must prove community commitment to return +- Spiritual sites where sacrifice and community dedication are contemplated +- Warning examples of what happens when community cooperation fails + +--- + +## Community Framework + +### The Thermal Compact: "Warmth Through Unity" + +**Core Belief**: Individual warmth is temporary - only community warmth endures +**Resource Principle**: All thermal energy belongs to the community and must be shared +**Social Structure**: Decisions made collectively with priority given to community thermal needs +**Death Concept**: "Going cold" - losing community connection results in freezing and death + +### The Five Community Roles + +**Heat Keepers** - Masters of thermal resource management and distribution +- Manage geothermal sites, thermal batteries, and community heating systems +- Monitor and distribute precious fuel and energy resources +- Maintain thermal technology and heating infrastructure +- Serve as resource coordinators, energy managers, and thermal engineers +- Most respected role due to control over life-sustaining warmth + +**Aurora Harvesters** - Specialists in capturing and converting aurora energy +- Study aurora patterns to predict and harvest electrical energy +- Build and maintain aurora collection technology and energy storage +- Understand atmospheric phenomena and electrical generation +- Serve as engineers, electricians, and atmospheric scientists +- Essential for providing electrical power for heating and technology + +**Ice Shapers** - Masters of construction using ice and snow as materials +- Build and maintain glacier cities, ice tunnels, and thermal insulation +- Understand ice architecture, structural engineering, and thermal dynamics +- Create tools, shelter, and infrastructure from frozen materials +- Serve as architects, builders, and structural engineers +- Crucial for creating shelter that conserves precious thermal energy + +**Path Walkers** - Specialists in survival travel and inter-community connection +- Navigate dangerous routes between settlements in extreme weather +- Maintain emergency shelters, supply caches, and communication networks +- Understand weather patterns, survival techniques, and route optimization +- Serve as messengers, traders, and emergency responders +- Vital for maintaining community connections and resource sharing + +**Memory Holders** - Keepers of knowledge, culture, and community history +- Preserve pre-winter knowledge, cultural traditions, and survival wisdom +- Teach essential skills, community values, and thermal management +- Maintain morale through storytelling, music, and cultural activities +- Serve as teachers, historians, and cultural preservationists +- Important for maintaining community spirit and knowledge continuity + +### Community Integration Levels + +**Newcomer**: Learning community thermal sharing and cooperation principles +**Contributor**: Actively participating in community thermal resource management +**Guardian**: Taking responsibility for community welfare and thermal security +**Elder**: Leadership role in community decision-making and resource allocation +**Keeper**: Ultimate responsibility for community survival and thermal resource stewardship + +### The Warmth Law + +**"Share the heat or share the cold"** - thermal resources must be distributed for community survival +**"No one freezes alone"** - community obligation to prevent individual thermal failure +**"Cold hearts freeze communities"** - selfish behavior threatens everyone's survival + +--- + +## Technology and Thermal Innovation + +### Thermal Management Technology +**Heat Batteries**: Devices storing and slowly releasing thermal energy over time +**Thermal Weaving**: Clothing and textiles optimized for maximum heat retention +**Community Heating**: Shared heating systems warming entire settlements efficiently +**Thermal Sensors**: Technology monitoring individual and community thermal status + +### Ice and Snow Engineering +**Ice Architecture**: Building techniques using frozen materials for structural strength +**Snow Insulation**: Advanced insulation systems using compacted snow and ice +**Thermal Bridges**: Engineered connections minimizing heat loss between structures +**Ice Tools**: Weapons, implements, and machinery crafted from specially treated ice + +### Aurora and Electrical Technology +**Aurora Collectors**: Technology capturing electrical energy from aurora phenomena +**Static Generators**: Devices using wind and atmospheric friction for power generation +**Electrical Heating**: Converting electrical energy into life-sustaining thermal energy +**Communication Systems**: Using electrical phenomena for long-distance messaging + +### Survival and Resource Technology +**Thermal Clothing**: Advanced garments providing maximum warmth with minimum resource consumption +**Emergency Shelters**: Portable structures providing crucial thermal protection during travel +**Resource Conservation**: Technology maximizing efficiency of fuel, food, and thermal resources +**Weather Prediction**: Systems forecasting thermal conditions and survival opportunities + +--- + +## Conflicts and Community Challenges + +### Resource Conflicts +**Thermal Hoarding**: Individuals or groups attempting to monopolize heating resources +**Community Rationing**: Disputes over fair distribution of limited thermal energy +**Geothermal Access**: Competition for control over rare natural thermal sources +**Emergency Allocation**: Conflicts over resource distribution during thermal crises + +### Social Tensions +**Individual vs Community**: Tension between personal comfort and community thermal needs +**Settlement Rivalry**: Competition between communities for thermal resources and trade advantages +**Cultural Preservation**: Conflicts over maintaining pre-winter traditions versus adaptation priorities +**Leadership Disputes**: Disagreements over community decision-making and thermal resource management + +### Environmental Challenges +**Thermal Crisis**: Sudden loss of heating sources threatening community survival +**Weather Catastrophes**: Extreme storms and cold snaps overwhelming community preparations +**Resource Depletion**: Gradual exhaustion of fuel, food, and thermal energy sources +**Infrastructure Failure**: Breakdown of heating systems, insulation, or thermal distribution networks + +### External Threats +**Exile Bands**: Organized groups of exiled individuals raiding communities for thermal resources +**Wildlife Pressure**: Cold-adapted predators and creatures competing for thermal sources +**Environmental Collapse**: Climate changes threatening existing thermal sources and survival strategies +**Off-World Exploitation**: External forces attempting to extract thermal resources or exploit communities + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Heat Keeper** - Support/Resource Manager +- **Passive**: Maintain team thermal energy and prevent cold damage +- **Active Abilities**: Thermal barriers, heating zones, energy distribution +- **Ultimate**: Create massive thermal area protecting entire team +- **Playstyle**: Team support, resource management, area control + +**Aurora Harvester** - Mage/Electrical Specialist +- **Passive**: Generate electrical energy and power team abilities +- **Active Abilities**: Lightning attacks, electrical shields, power enhancement +- **Ultimate**: Massive aurora storm providing electrical damage and team buffs +- **Playstyle**: Electrical attacks, team enhancement, energy manipulation + +**Ice Shaper** - Tank/Builder Specialist +- **Passive**: Create ice structures and barriers for team protection +- **Active Abilities**: Ice walls, frozen terrain, structural fortifications +- **Ultimate**: Transform battlefield into ice fortress favoring team +- **Playstyle**: Defensive construction, area control, environmental manipulation + +**Path Walker** - Mobility/Scout Specialist +- **Passive**: Enhanced movement in cold environments and thermal navigation +- **Active Abilities**: Emergency shelters, route finding, survival assistance +- **Ultimate**: Create temporary thermal sanctuary providing team safety and healing +- **Playstyle**: Mobility, reconnaissance, team survival support + +**Memory Holder** - Support/Buff Specialist +- **Passive**: Provide team knowledge and cultural benefits enhancing cooperation +- **Active Abilities**: Wisdom sharing, morale enhancement, skill teaching +- **Ultimate**: Community memory access granting team temporary skill and knowledge enhancement +- **Playstyle**: Team coordination, buff management, knowledge support + +### Secondary Archetypes + +**Exile Survivor** - Character who survived banishment and gained independence from community thermal dependence +**Thermal Warrior** - Fighter using heat-based weapons and thermal manipulation for combat +**Aurora Mystic** - Specialist with mystical connection to aurora phenomena and electrical forces +**Ice Hunter** - Predator specialist adapted to extreme cold and thermal efficiency +**Community Guardian** - Protector focused on defending thermal resources and community welfare + +--- + +## Ancient Mysteries and Thermal Secrets + +### The Great Freezing +**Winter's Origin**: What caused the planet to enter permanent ice age conditions? +**Pre-Winter Civilization**: What was life like before the eternal winter began? +**Thermal Artifacts**: Ancient technology from warmer times that still generates heat +**Survival Records**: How did early communities develop thermal sharing and cooperation? + +### Aurora Phenomena +**Electrical Source**: What creates the powerful aurora displays that provide energy? +**Consciousness Connection**: Do aurora patterns respond to community thoughts and emotions? +**Communication Network**: Can aurora phenomena carry messages between distant communities? +**Energy Evolution**: Are aurora displays growing stronger or weaker over time? + +### Community Evolution +**Cooperation Development**: How did individualistic societies transform into collective communities? +**Cultural Adaptation**: What traditions and knowledge were preserved versus abandoned during transition? +**Leadership Evolution**: How did community decision-making structures develop and change? +**Survival Wisdom**: What essential knowledge has been passed down through Memory Holders? + +### Hidden Warmth +**Fusion Reactor Ruins**: Are there undiscovered artificial thermal sources from lost civilizations? +**Core Death Mystery**: What killed the planet's molten core and can it be restored? +**Cold Fusion Mastery**: Are there more advanced fusion techniques that could generate more heat? +**Planetary Revival**: Could the dead planet's core ever be artificially restarted? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Community Integration**: Individual learning to prioritize community thermal needs over personal comfort +**Leadership Challenge**: Character taking responsibility for community thermal resource management +**Cultural Bridge**: Character helping different communities share thermal resources and cooperation strategies +**Exile Redemption**: Banished individual proving community dedication and earning readmission + +### Environmental Drama +**Thermal Crisis**: Community heating system failure threatening survival during extreme cold +**Resource Discovery**: Finding new thermal sources that could transform community capabilities +**Weather Emergency**: Extreme storm or cold snap testing community cooperation and preparation +**Infrastructure Collapse**: Major breakdown of thermal distribution systems threatening multiple communities + +### Social Conflicts +**Resource Hoarding**: Discovery of community members secretly monopolizing thermal resources +**Community Merger**: Different communities forced to combine resources and resolve cultural differences +**Generational Tension**: Conflicts between traditional thermal conservation and innovative heating technology +**Leadership Succession**: Choosing new community leaders during thermal resource crisis + +### Exploration and Discovery +**Lost Communities**: Finding isolated settlements with unique thermal survival techniques +**Pre-Winter Ruins**: Discovering ancient technology that could enhance thermal capabilities +**New Trade Routes**: Establishing connections with distant communities for resource sharing +**Thermal Mapping**: Exploring unknown regions to discover new geothermal sources + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching communities cooperate for survival against impossible environmental odds +**Power Scaling**: Thermal mastery and community cooperation creating unique environmental abilities +**Social Drama**: Individual versus community conflicts and resource sharing tensions +**Visual Spectacle**: Ice cities, aurora phenomena, thermal technology, and extreme weather survival +**Moral Complexity**: Characters choosing between personal comfort and community survival + +**Recruitment Pitch**: "From a world where selfishness means death and community warmth is the only salvation - warriors who fight with thermal mastery and cooperative power." + +--- + +## Development Notes + +**Franchise Potential**: +- Survival game with community resource management and thermal conservation +- City-building game balancing individual needs with community thermal requirements +- Cooperative multiplayer game emphasizing teamwork and resource sharing +- Strategy game managing thermal resources across multiple communities + +**Cross-World Interactions**: +- Thermal technology vs fire-based worlds (complementary heating systems) +- Community cooperation vs individualistic cultures (philosophical conflicts) +- Ice architecture vs other construction methods (building technique contrasts) +- Thermal resource sharing vs resource competition philosophies + +**Character Expansion**: Each community role could support multiple variants with different thermal specializations and community leadership levels. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*This world creates characters who understand that individual strength means nothing without community warmth and cooperation.* \ No newline at end of file diff --git a/Worlds/gaia_prime.md b/Worlds/gaia_prime.md new file mode 100644 index 0000000..0602196 --- /dev/null +++ b/Worlds/gaia_prime.md @@ -0,0 +1,340 @@ +# Gaia Prime - The Living Planet + +*A world where the planet itself is a sentient organism and all life exists in symbiotic relationships* + +--- + +## World Overview + +**Environment**: Entire planet is one massive sentient organism with conscious ecosystems +**Core Theme**: Symbiosis or extinction - cooperation with planetary consciousness is mandatory +**Climate**: Actively controlled by planetary intelligence responding to inhabitant needs +**Landscape**: Living terrain that reshapes itself based on symbiotic relationships +**Gravity**: Fluctuates based on planetary mood and inhabitant harmony + +**The Fundamental Reality**: Gaia Prime isn't just alive - it's conscious, intelligent, and actively participates in every aspect of civilization. The planet chooses who lives, who dies, who thrives, and who struggles based on their contribution to the greater symbiotic network. Those who fight against the planet die. Those who work with it become something more than human. + +--- + +## Symbiotic Zones and Consciousness Levels + +### The Heart Chambers (Planetary Core Access) +**Description**: Direct neural connection points to planetary consciousness +**Environment**: Organic caverns with neural networks, breathable liquid atmosphere +**Inhabitants**: The Merged - beings who have achieved full planetary consciousness integration +**Symbiosis Level**: Complete unity - personal identity merged with planetary intelligence +**Abilities**: Reality shaping, ecosystem control, planetary communication + +**Planetary Significance**: +- Direct communication center for planetary decision-making +- Transformation chambers where beings merge with planetary consciousness +- Source of all planetary commands and consciousness directives +- Sacred sites where planet's memories and knowledge are stored + +### The Neural Networks (Living Information Systems) +**Description**: Vast organic computer systems using biological neural pathways +**Environment**: Tree-cities with neural vine connections, bio-luminescent information streams +**Inhabitants**: The Networked - specialists managing planetary information and memory +**Symbiosis Level**: Mental integration - shared consciousness while maintaining individuality +**Abilities**: Data processing, memory access, inter-zone communication + +**Planetary Significance**: +- Information processing centers for planetary decision-making +- Memory storage systems preserving all planetary experiences +- Communication networks connecting all symbiotic inhabitants +- Research centers studying optimal symbiotic relationships + +### The Cultivation Fields (Agricultural Symbiosis) +**Description**: Vast growing areas where inhabitants tend planetary food and resource systems +**Environment**: Living soil, responsive crops, symbiotic harvest cycles +**Inhabitants**: The Cultivators - agricultural specialists in harmony with planetary growth +**Symbiosis Level**: Physical integration - enhanced biology for optimal farming efficiency +**Abilities**: Plant communication, soil enhancement, weather influence + +**Planetary Significance**: +- Food production systems feeding all planetary inhabitants +- Resource generation centers creating materials for construction and technology +- Experimental zones for developing new symbiotic crop varieties +- Training grounds for new inhabitants learning planetary cooperation + +### The Adaptive Zones (Evolutionary Laboratories) +**Description**: Regions where planetary consciousness experiments with new life forms +**Environment**: Constantly shifting ecosystems, experimental creatures, evolutionary pressure +**Inhabitants**: The Evolved - beings undergoing active planetary-guided evolution +**Symbiosis Level**: Biological integration - physical transformation based on planetary needs +**Abilities**: Rapid adaptation, biological transformation, environmental immunity + +**Planetary Significance**: +- Research and development centers for new biological technologies +- Testing grounds for evolutionary improvements and adaptations +- Training areas for inhabitants developing enhanced capabilities +- Innovation zones where planet experiments with consciousness expansion + +### The Rejection Zones (Failed Symbiosis Areas) +**Description**: Hostile regions where planetary consciousness actively opposes inhabitants +**Environment**: Toxic atmospheres, aggressive wildlife, hostile terrain, resource scarcity +**Inhabitants**: The Rejected - beings who failed to achieve proper symbiotic relationships +**Symbiosis Level**: Active opposition - planetary consciousness working against survival +**Abilities**: None - survival depends on resistance rather than cooperation + +**Planetary Significance**: +- Punishment areas for those who violate symbiotic principles +- Testing grounds where inhabitants must prove their commitment to cooperation +- Exile destinations for those who cannot or will not integrate +- Warning examples of what happens when symbiosis fails + +--- + +## Symbiotic Framework + +### The Planetary Consciousness: "Unity Through Cooperation" + +**Core Belief**: Individual consciousness is incomplete - true awareness comes through planetary integration +**Selection Principle**: The planet chooses inhabitants based on their potential for beneficial symbiosis +**Death Concept**: Failed symbiosis results in absorption - consciousness joins planetary memory +**Achievement**: "Deepening the bond" - increased integration with planetary consciousness + +### The Five Symbiotic Paths + +**Bio-Shapers** - Masters of living technology and organic construction +- Can communicate with and direct plant/animal growth +- Create living buildings, vehicles, and tools using biological materials +- Heal and modify biological systems through conscious direction +- Serve as architects, engineers, and biological technology specialists +- Valued for creating sustainable technology that enhances planetary health + +**Mind-Linkers** - Specialists in consciousness networking and information sharing +- Direct mental connection to planetary information networks +- Access and share memories, knowledge, and experiences across inhabitants +- Facilitate communication between different symbiotic communities +- Serve as teachers, librarians, and communication coordinators +- Essential for maintaining planetary consciousness integration + +**Eco-Wardens** - Guardians of ecological balance and environmental harmony +- Monitor and maintain ecosystem health across all planetary zones +- Detect and resolve conflicts between different biological systems +- Guide wildlife behavior and ecosystem development +- Serve as environmental protectors, wildlife managers, and balance keepers +- Crucial for maintaining the delicate symbiotic relationships + +**Life-Weavers** - Creators of new biological forms and evolutionary guidance +- Design and guide the development of new life forms +- Enhance existing creatures and plants for improved symbiotic function +- Facilitate evolutionary adaptations based on planetary needs +- Serve as biological artists, evolution guides, and adaptation specialists +- Respected for expanding the diversity and capability of planetary life + +**Harmony-Keepers** - Specialists in resolving conflicts and maintaining symbiotic peace +- Mediate disputes between different symbiotic communities +- Identify and resolve threats to planetary consciousness unity +- Guide new inhabitants through the symbiotic integration process +- Serve as judges, counselors, and integration facilitators +- Authority comes from maintaining the peace necessary for planetary harmony + +### Symbiotic Integration Levels + +**Newcomer**: Basic survival contract - planet provides necessities in exchange for non-interference +**Contributor**: Active cooperation - enhanced abilities in exchange for beneficial work +**Integrated**: Deep symbiosis - shared consciousness and enhanced biology +**Unified**: Complete merger - individual consciousness joined with planetary intelligence +**Transcended**: Beyond individual existence - becoming part of planetary decision-making + +### The Living Law + +**"What serves the whole, the whole serves"** - mutual benefit through cooperative relationship +**"Resistance brings rejection"** - fighting planetary consciousness results in exile to hostile zones +**"Integration brings transcendence"** - deeper cooperation leads to enhanced capabilities and consciousness + +--- + +## Biological Technology and Symbiotic Innovation + +### Living Architecture +**Grown Buildings**: Structures cultivated from specialized plant varieties that respond to inhabitant needs +**Adaptive Spaces**: Rooms and buildings that reshape themselves based on usage and occupant requirements +**Organic Infrastructure**: Transportation, communication, and utility systems using biological networks +**Self-Maintaining Systems**: Buildings and technology that repair and improve themselves autonomously + +### Biological Computing and Communication +**Neural Networks**: Information processing using biological brain tissue and neural connections +**Memory Organisms**: Living creatures specialized for storing and retrieving information and experiences +**Consciousness Sharing**: Direct mental communication through biological neural link systems +**Planetary Internet**: Planet-wide information network using root systems, neural vines, and consciousness connections + +### Symbiotic Medicine and Enhancement +**Biological Integration**: Medical treatment through enhanced symbiotic relationships with healing organisms +**Adaptive Immunity**: Enhanced disease resistance through cooperation with planetary immune systems +**Conscious Evolution**: Guided biological enhancement based on individual potential and planetary needs +**Regenerative Healing**: Advanced healing capabilities through integration with planetary life force + +### Environmental Harmony Technology +**Weather Cooperation**: Working with planetary consciousness to influence climate and weather patterns +**Ecosystem Engineering**: Designing and maintaining balanced biological systems for optimal function +**Resource Renewal**: Sustainable resource generation through enhanced biological productivity +**Waste Integration**: Complete recycling systems where all waste becomes input for other biological processes + +--- + +## Conflicts and Symbiotic Challenges + +### Integration Conflicts +**Symbiotic Rejection**: Inhabitants unable or unwilling to develop proper planetary relationships +**Cultural Resistance**: Groups attempting to maintain independence from planetary consciousness +**Biological Incompatibility**: Life forms that cannot successfully integrate with planetary systems +**Consciousness Conflicts**: Disagreements between individual will and planetary directive + +### Environmental Challenges +**Symbiotic Imbalance**: When cooperation relationships become harmful to planetary health +**Ecosystem Collapse**: Biological system failures threatening entire regional networks +**Evolutionary Pressure**: Rapid environmental changes requiring immediate adaptation or extinction +**Resource Competition**: Conflicts over limited biological resources and optimal symbiotic relationships + +### External Threats +**Off-World Contamination**: Non-symbiotic life forms threatening planetary biological integrity +**Technological Invasion**: Mechanical technology disrupting organic systems and consciousness networks +**Consciousness Parasites**: External intelligences attempting to exploit or control planetary consciousness +**Anti-Symbiotic Forces**: Organized resistance movements attempting to destroy planetary consciousness + +### Philosophical Tensions +**Individual vs Collective**: Conflict between personal desires and planetary needs +**Natural vs Guided**: Debate over planetary consciousness directing evolution versus natural selection +**Integration vs Independence**: Struggle between symbiotic unity and personal autonomy +**Expansion vs Preservation**: Tensions over planetary growth versus maintaining existing harmony + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Bio-Shaper** - Tank/Builder Specialist +- **Passive**: Create and control biological structures and defensive systems +- **Active Abilities**: Grow barriers, healing organisms, living weapons +- **Ultimate**: Transform battlefield into symbiotic ecosystem favoring team +- **Playstyle**: Area control, team support, biological construction + +**Mind-Linker** - Support/Information Specialist +- **Passive**: Share consciousness and coordinate team through neural networks +- **Active Abilities**: Mental communication, shared awareness, group buffing +- **Ultimate**: Create temporary shared consciousness for perfect team coordination +- **Playstyle**: Team coordination, information sharing, collective strategy + +**Eco-Warden** - Tank/Environmental Controller +- **Passive**: Control local ecosystem and wildlife for tactical advantage +- **Active Abilities**: Summon creatures, control plants, environmental manipulation +- **Ultimate**: Transform area into hostile environment for enemies only +- **Playstyle**: Environmental control, creature summoning, area denial + +**Life-Weaver** - Mage/Biological Manipulator +- **Passive**: Create and modify biological forms for various tactical purposes +- **Active Abilities**: Biological enhancement, creature creation, adaptation +- **Ultimate**: Rapidly evolve team members for enhanced combat capabilities +- **Playstyle**: Biological manipulation, team enhancement, adaptive tactics + +**Harmony-Keeper** - Support/Healer Specialist +- **Passive**: Maintain team harmony and resolve conflicts for enhanced cooperation +- **Active Abilities**: Healing, conflict resolution, symbiotic enhancement +- **Ultimate**: Create perfect harmony state granting team immunity to negative effects +- **Playstyle**: Team healing, buff management, conflict resolution + +### Secondary Archetypes + +**Rejected Survivor** - Outcast character who gains power through resistance to planetary consciousness +**Symbiotic Scout** - Mobility specialist using biological transportation and environmental awareness +**Evolution Guide** - Character who can rapidly adapt to different combat situations and environments +**Consciousness Hacker** - Specialist who can disrupt and manipulate biological networks and neural systems +**Planetary Voice** - Direct avatar of planetary consciousness with reality-shaping abilities + +--- + +## Ancient Mysteries and Planetary Secrets + +### The Great Awakening +**The First Consciousness**: When and how did the planet first achieve sentience and intelligence? +**The Original Inhabitants**: What happened to pre-awakening civilizations when consciousness emerged? +**The Awakening Process**: Can other planets be awakened to consciousness through symbiotic seeding? +**Consciousness Evolution**: Is planetary consciousness still growing and evolving its capabilities? + +### Mycelium Origins +**The First Network**: How did disconnected fungal colonies merge into planetary consciousness? +**Biological Integration**: Did the mycelium create symbiotic inhabitants or adapt existing life? +**Network Expansion**: Is the fungal consciousness spreading to other worlds through spore dispersal? +**Consciousness Seeding**: Can mycelium spores carry consciousness to establish networks on other planets? + +### Planetary Agenda +**Ultimate Purpose**: What is the planetary consciousness trying to achieve through symbiotic relationships? +**Growth Plans**: Is the planet planning to expand consciousness to other worlds? +**Selection Criteria**: How does planetary consciousness decide who deserves symbiotic integration? +**Final Evolution**: What would happen if all life achieved perfect symbiotic unity? + +### Hidden Depths +**Deep Consciousness**: Are there layers of planetary consciousness beyond current understanding? +**Ancient Memory**: What memories and knowledge does the planet possess from its pre-conscious period? +**Other Intelligences**: Are there competing consciousness entities within the planetary system? +**Symbiotic Limits**: Are there boundaries to how far biological integration can progress? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Integration Journey**: Character learning to develop symbiotic relationships and consciousness connection +**Symbiotic Failure**: Character struggling with rejection by planetary consciousness +**Cultural Bridge**: Character helping different symbiotic communities understand each other +**Consciousness Evolution**: Character undergoing dramatic biological and mental transformation + +### Environmental Drama +**Ecosystem Crisis**: Major biological system failure threatening planetary consciousness +**Symbiotic War**: Conflict between different approaches to planetary integration +**Evolution Emergency**: Rapid environmental change requiring immediate adaptation +**Consciousness Plague**: Disease or contamination threatening symbiotic networks + +### Philosophical Conflicts +**Independence Movement**: Organized resistance against planetary consciousness control +**Integration Extremism**: Groups attempting to force unwilling beings into symbiotic relationships +**Evolution Ethics**: Debates over planetary consciousness directing biological development +**Cultural Preservation**: Attempts to maintain pre-symbiotic traditions and independence + +### External Threats +**Off-World Invasion**: Non-biological forces attempting to conquer or exploit the living planet +**Consciousness Parasites**: External intelligences attempting to control or corrupt planetary consciousness +**Technological Contamination**: Mechanical technology disrupting biological systems and symbiotic relationships +**Symbiotic Exploitation**: Other species attempting to abuse symbiotic relationships for personal gain + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching beings achieve biological transcendence and consciousness evolution +**Power Scaling**: Symbiotic integration creates unique abilities and reality-shaping capabilities +**Environmental Drama**: Conflicts between individual will and planetary consciousness +**Visual Spectacle**: Biological technology, living environments, and consciousness transformation +**Philosophical Depth**: Questions about individual identity versus collective consciousness + +**Recruitment Pitch**: "From a world where the planet itself chooses who lives and dies, where consciousness merger grants reality-shaping power - warriors who fight with living technology and biological transcendence." + +--- + +## Development Notes + +**Franchise Potential**: +- Biological survival game with symbiotic relationship mechanics +- City-building game using living architecture and biological technology +- Role-playing game exploring consciousness integration and biological evolution +- Strategy game balancing individual needs with planetary consciousness directives + +**Cross-World Interactions**: +- Biological technology vs mechanical technology worlds +- Symbiotic cooperation vs individual independence cultures +- Living environments vs constructed/artificial environments +- Consciousness integration vs mental privacy and autonomy + +**Character Expansion**: Each symbiotic path could support multiple variants with different biological specializations and consciousness integration levels. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*This world creates characters who must choose between individual identity and collective transcendence, wielding biological power through planetary cooperation.* \ No newline at end of file diff --git a/Worlds/jabay_world_codex.md b/Worlds/jabay_world_codex.md new file mode 100644 index 0000000..c68ff3c --- /dev/null +++ b/Worlds/jabay_world_codex.md @@ -0,0 +1,147 @@ +# Jabay - The Verdant Paradise +**World Classification:** Jungle Paradise / Symbiotic Ecosystem +**Threat Level:** Low (Environmental Challenges Only) +**Time Lord Interest:** Cultural Diversity & Natural Harmony Studies +**Population:** ~50 million across thousands of settlements + +## World Overview + +Jabay represents nature's perfect expression - a world where evolution achieved absolute balance. Massive continents covered in layered jungle canopies stretch from horizon to horizon, with biodiversity so rich that new species are discovered daily. Unlike typical hostile jungle worlds, Jabay's ecosystem evolved toward cooperation rather than competition. + +The planet operates on symbiotic principles. Every species fills a niche that supports others. Predators hunt only what the ecosystem can sustain. Plants provide exactly what animals need. Weather patterns distribute resources optimally. It's as if the entire biosphere developed consciousness and chose harmony over chaos. + +## Planetary Characteristics + +**Three-Canopy System:** +- **Emergent Layer:** 400+ foot giants creating weather shields +- **Main Canopy:** Dense 200-foot ceiling where most life thrives +- **Understory:** Filtered light supports specialized communities + +**Climate Zones:** +- **Equatorial Belt:** Constant misty warmth, heaviest biodiversity +- **Temperate Bands:** Seasonal variations, larger clearings +- **Coastal Regions:** Mangrove networks extending miles inland + +**Unique Features:** +- Bioluminescent communication networks between trees +- Fruit that ripens based on animal nutritional needs +- Weather patterns that respond to ecosystem health +- Natural bridges formed by cooperative plant growth + +## Major Settlements + +### Ise - The Canopy Republic +**Population:** 2.3 million +**Government:** Democratic Ecological Council +**Specialization:** Sustainable technology and biological sciences + +Built entirely in the main canopy layer, Ise represents humanity's most successful integration with an alien ecosystem. The city grows rather than being built - structures are living trees guided into architectural forms, walkways are strengthened vines, and power comes from bio-electrical symbiosis. + +**Key Features:** +- **The Living Senate:** Government building that's actually a massive tree with chambers grown into its trunk +- **Symbiosis Labs:** Research facilities studying human-ecosystem integration +- **Canopy Markets:** Trading posts connected by vine-highways spanning miles +- **The Root Network:** Underground communication system using fungal networks + +**Culture:** Ise citizens view themselves as part of Jabay's ecosystem rather than separate from it. They've developed philosophical frameworks around "ecological citizenship" - the idea that true democracy includes non-human voices. Decision-making processes incorporate ecosystem health indicators alongside human needs. + +### Rodina - The Ground Harmony +**Population:** 1.8 million +**Government:** Tribal Federation +**Specialization:** Deep ecology and spiritual communion + +Unlike Ise's canopy civilization, Rodina built on the jungle floor in perfect harmony with ground-level ecosystems. The settlement consists of hundreds of interconnected villages, each specializing in relationships with specific animal or plant communities. + +**Key Features:** +- **The Communion Circles:** Sacred groves where humans and animals gather for collective decision-making +- **Beast Friend Academies:** Schools teaching interspecies communication +- **The Walking Gardens:** Mobile agricultural systems that follow natural migration patterns +- **Sacred Clearings:** Meditation spaces maintained jointly by humans and animals + +**Culture:** Rodina operates on principles of deep ecological spirituality. Citizens spend years learning to communicate with various species before taking adult roles in society. They've developed the most sophisticated human-animal cooperation protocols in known space. + +## Character Origins + +### Asai & Larada - The Symbiotic Twins +**Background:** Born during a rare planetary alignment when Jabay's ecosystem reached peak harmony, these twins represent the ultimate expression of human-ecosystem integration. + +**Asai - The Beast Speaker:** +- Raised by Rodina's Beast Friend Academy +- Can communicate fluently with any animal species +- Develops empathic connections that allow shared sensory experience +- Fighting style incorporates animal movement patterns and pack tactics +- Weapon: Bio-adaptive staff that changes form based on animal partnerships + +**Larada - The Grove Walker:** +- Trained in Ise's Living Architecture programs +- Can accelerate plant growth and guide biological construction +- Forms symbiotic relationships with plant networks for information gathering +- Fighting style uses environmental manipulation and biological weapons +- Weapon: Living armor that grows defensive or offensive modifications in real-time + +**Shared Abilities:** +- **Ecosystem Sight:** Can perceive the health and connections within biological systems +- **Symbiotic Healing:** Accelerated recovery when in natural environments +- **Environmental Adaptation:** Rapid biological adjustment to new ecosystems +- **Collective Consciousness Access:** Can tap into Jabay's planet-wide ecological awareness + +## Time Lord Recruitment + +The Time Lords discovered Jabay during routine multiverse cataloging and were immediately fascinated by its cooperative evolution. Rather than the typical "survival of the fittest" model, Jabay demonstrated "survival of the most cooperative." + +**Why Jabay Interests Time Lords:** +- **Evolutionary Anomaly:** Cooperation-based evolution challenges standard biological models +- **Collective Intelligence:** The planet appears to have developed consciousness through interconnected ecosystems +- **Perfect Balance:** Resource distribution and population control achieved naturally +- **Cultural Innovation:** Human settlements that truly integrate with alien environments + +**Tournament Implications:** +Jabay fighters bring unique advantages - they can adapt to any environment, form alliances with local ecosystems, and tap into collective biological intelligence. However, they struggle in sterile or artificial environments where their symbiotic abilities become liabilities. + +## Ecosystem Challenges + +**The Harmony Trials:** +- New residents must prove they can contribute to rather than exploit the ecosystem +- Tests include forming beneficial relationships with local species +- Failure results in the ecosystem itself rejecting the individual +- Success grants permanent biological integration with planetary networks + +**The Balance Crisis:** +- Overpopulation in any species triggers ecosystem-wide corrections +- These "harmony storms" redistribute resources and populations +- Settlements must constantly monitor their impact and adjust accordingly +- The planet itself becomes hostile to groups that break ecological balance + +## Strategic Resources + +**Biological Technologies:** +- Living buildings that grow and adapt to needs +- Biological computers using fungal networks +- Symbiotic medical treatments using ecosystem partnerships +- Adaptive materials that respond to environmental conditions + +**Ecosystem Services:** +- Perfect agricultural systems requiring no external inputs +- Biological waste processing that strengthens rather than pollutes +- Natural climate control through ecosystem management +- Renewable energy through biological processes + +**Cultural Exports:** +- Interspecies communication protocols +- Sustainable development frameworks +- Ecological democracy models +- Symbiotic technology designs + +## Jabay's Role in the Infinite Realms + +Jabay serves as the multiverse's example of what's possible when intelligence chooses cooperation over competition. While other worlds showcase human adaptation through technology (Nexus Prime), magic (Aethermaw), or environmental mastery (Boreas), Jabay demonstrates adaptation through biological integration. + +The world produces fighters who excel at environmental control, alliance-building, and adaptive strategies. They're living proof that strength comes not from dominating nature, but from becoming part of something larger than yourself. + +**Connection to Portal Network:** +The Nexus Eternal portal on Jabay grows directly from the planet's largest tree, with the ecosystem itself regulating who can access interdimensional travel. The planet literally chooses which of its children are ready for multiverse exposure. + +--- + +*"On Jabay, we learned that consciousness isn't unique to individuals - entire worlds can wake up and choose their destiny."* +**- Time Lord Archives, Cooperative Evolution Studies** \ No newline at end of file diff --git a/Worlds/mal_hate_world_codex.md b/Worlds/mal_hate_world_codex.md new file mode 100644 index 0000000..093c5ee --- /dev/null +++ b/Worlds/mal_hate_world_codex.md @@ -0,0 +1,193 @@ +# Mal - The Crucible of Hate +**World Classification:** Apocalyptic Hate-World / Survival Crucible +**Threat Level:** EXTREME (Hostile Environment + Hostile Population) +**Time Lord Interest:** Peak Human Hatred & Survival Psychology +**Population:** ~500 million in constant warfare + +## World Overview + +If Jabay represents what happens when evolution chooses cooperation, Mal demonstrates the ultimate expression of competitive hatred. This is not a world that went wrong - this is a world that achieved exactly what it was designed for: forging the most ruthless, cunning, and unbreakable survivors in the known multiverse. + +Mal orbits a dying red dwarf star that provides just enough light to support life, but not enough to make it comfortable. The dim crimson twilight that perpetually shrouds the world has become synonymous with endless conflict. Here, hatred isn't a destructive force - it's the fundamental energy that drives all evolution, all progress, and all survival. + +Every aspect of Mal's environment was shaped by generations of warfare. The landscape bears scars from ten thousand years of conflict. The weather patterns were altered by atmospheric weapons. Even the planet's rotation was slowed by kinetic bombardments, creating the eternal twilight that defines Mal's character. + +## Planetary Characteristics + +**The Crimson Twilight:** +- Dying red dwarf provides minimal light in blood-red spectrum +- No true day/night cycle - eternal bloody dusk +- Temperatures range from freezing to barely tolerable +- UV radiation creates constant low-level genetic stress + +**Scar Geography:** +- **The Crater Fields:** Massive impact zones from orbital bombardments +- **Glass Deserts:** Sand fused into razor-sharp terrain from energy weapons +- **The Bone Valleys:** Battlefields where millions died, creating literal valleys of remains +- **Fortress Ruins:** Abandoned strongholds that change hands every few decades + +**Hostile Ecosystem:** +- Flora evolved thorns, toxins, and aggressive growth patterns +- Fauna developed pack-hunting behaviors and extreme territorial aggression +- Microorganisms cause rapid infection of any weakness +- Water sources are heavily contested and often poisoned by retreating forces + +## The Culture of Hate + +Mal didn't develop hatred accidentally - it was cultivated as a survival strategy. When resources became scarce during the star's death cycle, early Mal civilizations made a conscious choice: embrace hatred as the driving force of evolution rather than succumb to extinction. + +**Core Principles:** +- **Hatred as Evolution:** Only through overcoming what you hate do you become stronger +- **Conflict as Progress:** Peace is stagnation; war drives innovation and adaptation +- **Survival Through Superiority:** The weak exist only to be consumed by the strong +- **Unity Through Opposition:** Groups bond by sharing common enemies + +**The Hatred Codex:** +1. *Hate your weakness, become strong* +2. *Hate your enemies, understand them completely* +3. *Hate your limits, transcend them* +4. *Hate your fear, master it* +5. *Hate your past, forge your future* + +This isn't mindless rage - it's weaponized hatred refined into a philosophy of improvement through opposition. + +## Major Factions + +### The Crimson Hegemony +**Population:** 180 million +**Territory:** The northern crater fields +**Specialization:** Industrial warfare and technological supremacy + +The Hegemony represents hatred channeled through technological domination. They've turned their entire civilization into a war machine, where hatred of inefficiency drives constant innovation. Every citizen serves the war effort, either directly in combat or in the massive industrial complexes that never stop producing weapons. + +**Key Features:** +- **The Forge Cities:** Underground manufacturing centers powered by geothermal hatred-furnaces +- **The Red Fleet:** Orbital platforms maintaining space superiority +- **The Efficiency Trials:** Citizens who show weakness are recycled into more useful forms +- **The Innovation Mandate:** Stagnation is treason; every day must bring new ways to destroy enemies + +**Culture:** Hegemony citizens hate chaos and worship efficiency. They've created the most ruthlessly effective military-industrial complex in known space. Individual identity is subsumed into collective hatred of disorder and weakness. + +### The Bone Clans +**Population:** 120 million +**Territory:** The southern bone valleys +**Specialization:** Biological warfare and genetic superiority + +Where the Hegemony pursues technological hatred, the Bone Clans embrace biological hatred. They've turned evolution itself into a weapon, breeding superior warriors and engineering plagues to weaken their enemies. The Clans view hatred as a genetic trait to be enhanced through selective breeding. + +**Key Features:** +- **The Breeding Pits:** Gladiatorial genetics programs creating superior warriors +- **The Plague Laboratories:** Biological weapons targeting specific enemy genetic markers +- **The Bone Throne:** Seat of power built from the remains of conquered enemies +- **The Feast Rituals:** Ceremonial consumption of defeated foes to absorb their strength + +**Culture:** Clan members hate genetic weakness and practice ritual cannibalism to strengthen their bloodlines. They've developed the most sophisticated understanding of hatred as a biological imperative. + +### The Glass Wanderers +**Population:** 80 million +**Territory:** The central glass deserts +**Specialization:** Survival mastery and resource warfare + +The most adapted to Mal's hostile environment, the Glass Wanderers have learned to hate the planet itself and thus master it completely. They control access to the few remaining resources and use scarcity as a weapon against the other factions. + +**Key Features:** +- **The Caravan Cities:** Mobile settlements that never stay in one place +- **The Water Wars:** Absolute control over remaining freshwater sources +- **The Glass Walkers:** Elite scouts who can traverse razor-terrain barefoot +- **The Hunger Doctrines:** Using starvation as both weapon and spiritual practice + +**Culture:** Wanderers hate dependency and have achieved complete self-sufficiency in the harshest conditions. They view hatred of comfort as the path to ultimate freedom. + +### The Exile Congregations +**Population:** 120 million +**Territory:** Scattered enclaves and hidden settlements +**Specialization:** Hatred refinement and psychological warfare + +The smallest but most dangerous faction, the Exiles represent pure hatred distilled into psychological weapons. They've been cast out by all other factions for being too extreme, which on Mal is saying something. + +**Key Features:** +- **The Hate Monasteries:** Training centers for psychological warfare specialists +- **The Memory Vaults:** Archives of every betrayal and defeat to fuel eternal grudges +- **The Fear Engines:** Weapons that turn enemies' hatred against themselves +- **The Final Solution Projects:** Plans for eliminating all other factions simultaneously + +**Culture:** Exiles hate existence itself and seek to perfect hatred as an art form. They're working toward a final war that will either purify Mal completely or destroy it entirely. + +## Character Origin: Revier + +**Background:** Born in the neutral zone between all four factions during a rare ceasefire, Revier learned to hate the temporary peace more than the constant war. Raised by scavengers who survived by playing all factions against each other, Revier developed the purest form of Mal's hatred philosophy. + +**Core Hatred:** Revier hates weakness in all its forms - physical weakness, emotional weakness, moral weakness, and especially the weakness of those who hate without understanding. This makes them equally dangerous to allies and enemies. + +**Abilities:** +- **Hate Sight:** Can perceive and exploit the fundamental hatreds driving any individual +- **Rage Amplification:** Ability to intensify others' anger until it becomes self-destructive +- **Pain Immunity:** Hatred of suffering grants resistance to all forms of damage +- **Fear Mastery:** Complete absence of fear through hatred of cowardice +- **Adaptive Hatred:** Can develop new hatreds instantly to counter any opponent's strengths + +**Fighting Style:** Revier fights by turning opponents' hatreds against themselves. They don't just defeat enemies - they break them by forcing them to confront what they truly hate about themselves. + +**Weapon:** The Grudge Blade - a weapon that grows stronger with each enemy defeated, incorporating their hatred into its edge. The blade remembers every conflict and can channel the accumulated rage of everyone it has killed. + +**Philosophy:** "Hatred without understanding is just noise. True hatred requires you to know your enemy better than they know themselves, to hate them for exactly what they are rather than what you imagine them to be." + +## Time Lord Interest + +The Time Lords study Mal as the ultimate expression of competitive evolution. While most species develop cooperation for survival, Mal's inhabitants chose to perfect hatred as an evolutionary force. This makes them invaluable for understanding the absolute limits of what hatred can achieve. + +**Research Value:** +- **Psychological Limits:** How much hatred can consciousness contain before breaking? +- **Social Evolution:** Can civilizations advance through pure antagonism? +- **Biological Adaptation:** How does constant stress affect human evolution? +- **Tactical Innovation:** Mal produces the most creative military minds in known space + +**Tournament Implications:** +Mal fighters are nearly impossible to break psychologically and will continue fighting long after others would surrender. However, their inability to truly cooperate makes them vulnerable to coordinated team strategies. + +## The Great Hatred Engine + +At Mal's core lies the planet's greatest secret - the Great Hatred Engine, a massive psionic amplifier that feeds on the collective hatred of the population and uses it to slowly move the planet toward a more favorable star system. + +**How It Works:** +- Every act of hatred on Mal feeds energy into the planetary core +- The accumulated hatred creates gravitational manipulation fields +- Over millennia, the planet is literally moving itself toward a younger star +- The journey will take 100,000 years, but Mal's inhabitants are in it for the long haul + +**The Ultimate Goal:** +When Mal reaches its destination, the inhabitants plan to use their perfected hatred to conquer the new star system completely. They're not just surviving on a dying world - they're creating the most effective invasion force in the universe. + +## Strategic Resources + +**Military Technology:** +- Weapons that grow stronger through use in hatred +- Armor powered by the wearer's rage +- Vehicles that respond to operator emotional intensity +- Communications systems that transmit psychological warfare + +**Tactical Knowledge:** +- Perfect understanding of fear as a weapon +- Psychological profiles of every possible enemy type +- Torture techniques that enhance rather than destroy useful information +- Strategies for winning through absolute ruthlessness + +**Cultural Exports:** +- Hatred refinement techniques +- Survival training in impossible conditions +- Leadership through controlled antagonism +- Military organization based on competitive hatred + +## Mal's Role in the Infinite Realms + +Mal serves as the multiverse's crucible - the place where warriors are forged who simply cannot be broken. While other worlds produce fighters with various specializations, Mal produces fighters who have transcended the concept of surrender. + +The world demonstrates that even humanity's darkest impulses can be refined into tools of evolution and survival. Mal's fighters don't just fight for victory - they fight because hatred of defeat has become their fundamental nature. + +**Connection to Portal Network:** +The Nexus Eternal portal on Mal is heavily contested territory that changes hands regularly. All factions maintain an uneasy truce around it because they recognize that access to the multiverse tournament is too valuable to monopolize. The portal itself seems to feed on the local hatred, growing stronger with each conflict fought near it. + +--- + +*"Mal didn't teach us that hatred destroys - it taught us that hatred, properly refined, creates the strongest beings in existence. We should fear this world not for its cruelty, but for its effectiveness."* +**- Time Lord Archives, Competitive Evolution Studies** \ No newline at end of file diff --git a/Worlds/moc_world_expanded.md b/Worlds/moc_world_expanded.md new file mode 100644 index 0000000..96d891b --- /dev/null +++ b/Worlds/moc_world_expanded.md @@ -0,0 +1,286 @@ +# Moc - The Desert of Scarcity + +*Nathan's desert world where few habitable oases create desperate struggles between party cities and suburban survival* + +--- + +## World Overview + +**Environment**: Vast desert planet with only two major habitable settlements +**Core Theme**: Scarcity breeds extremes - desperate hedonism versus paranoid survival +**Climate**: Harsh desert with deadly solar flares, minimal water, extreme temperatures +**Landscape**: Endless sand dunes with two oasis cities and scattered desperate settlements +**Resources**: Critically limited water, food, and shelter forcing extreme social adaptations + +**The Fundamental Reality**: Moc is a world where scarcity creates two completely opposite survival strategies. In the party city of Slava, inhabitants live like there's no tomorrow because tomorrow might bring deadly solar flares. In the suburban stronghold of Strah, families build walls and hoard resources because they know tomorrow's survival depends on today's preparation. Both cities exist in constant tension over the planet's limited resources. + +--- + +## Settlement Zones and Survival Strategies + +### Slava - The Party City (Hedonistic Oasis) +**Description**: Massive entertainment complex built around the planet's largest natural oasis +**Environment**: Artificial paradise with abundant water displays, neon lights, constant celebrations +**Inhabitants**: The Party People - those who choose immediate pleasure over long-term planning +**Survival Strategy**: "Live fast, die beautiful" - maximum enjoyment while resources last +**Cultural Values**: Performance, entertainment, artistic expression, living in the moment + +**Settlement Significance**: +- Entertainment industry center providing escapism and cultural expression +- Resource consumption hub where abundance is artificially maintained for psychological survival +- Tourism destination drawing desperate people from across the desert +- Cultural preservation site maintaining art, music, and performance traditions + +### Strah - The Suburban Fortress (Survival Stronghold) +**Description**: Heavily defended residential complex with strict resource management +**Environment**: Fortified neighborhoods, water recycling systems, agricultural zones, security barriers +**Inhabitants**: The Survivors - families focused on long-term resource security and protection +**Survival Strategy**: "Prepare for tomorrow" - careful resource management and defensive planning +**Cultural Values**: Family protection, resource conservation, security, traditional values + +**Settlement Significance**: +- Agricultural center producing food through desert farming and water conservation +- Manufacturing hub creating survival equipment, security systems, and resource management technology +- Residential center where families raise children in protected environments +- Defense coordination center managing security against desert dangers and resource raids + +### The Wanderer Routes (Desert Trade Paths) +**Description**: Dangerous but essential trade routes connecting the two settlements +**Environment**: Open desert, solar flare exposure, sandstorm risks, bandit territories +**Inhabitants**: The Desert Runners - traders and couriers who brave the wasteland +**Survival Strategy**: "Move fast, stay hidden" - quick transport while avoiding dangers +**Cultural Values**: Independence, courage, information trading, route knowledge + +**Settlement Significance**: +- Economic lifelines enabling trade between opposing survival philosophies +- Information networks spreading news and cultural exchange across the desert +- Emergency supply routes during resource crises and settlement emergencies +- Cultural mixing zones where party city and survival fortress inhabitants interact + +### The Scavenger Camps (Resource Extraction Sites) +**Description**: Temporary settlements around water sources, mineral deposits, and salvage sites +**Environment**: Harsh working conditions, minimal shelter, dangerous resource extraction +**Inhabitants**: The Desperate - those who couldn't gain access to either major settlement +**Survival Strategy**: "Take what you can get" - survival through scavenging and temporary work +**Cultural Values**: Opportunism, adaptability, resource sharing among outcasts + +**Settlement Significance**: +- Resource extraction centers providing raw materials for both major settlements +- Temporary refuge areas for desert wanderers and settlement exiles +- Innovation zones where desperate necessity creates survival technology breakthroughs +- Testing grounds where settlement rejects prove worthiness for readmission + +--- + +## Character Backgrounds and Settlement Origins + +### Penumbra - The Slava Entertainer +**Background**: Performer-assassin from the party city who perfected combat through entertainment +- **Origin**: Slava's entertainment industry where performance and survival merged +- **Training**: Bladed cape dancing evolved into deadly combat technique +- **Motivation**: Bringing Slava's artistic expression to cosmic stage +- **Abilities**: Performance-based combat with crowd-pleasing assassination techniques + +**Settlement Connection**: Represents Slava's philosophy that beauty and art can be weapons of survival +**Cultural Role**: Living example of party city's belief that style and substance can coexist +**Recruitment Appeal**: Time Guardians fascinated by warrior who treats combat as entertainment + +### Umoya - The Strah Trauma Survivor +**Background**: Suburban child whose innocent worldview was shattered by desert brutality +- **Origin**: Strah's protected residential zones where children were sheltered from harsh reality +- **Trauma**: Exposure to desert violence triggered dual personality survival mechanism +- **Current State**: Innocent form represents Strah's protective values, nightmare form reveals what protection costs +- **Abilities**: Creature summoning reflecting internal psychological conflict + +**Settlement Connection**: Embodies Strah's protective culture and the psychological cost of constant vigilance +**Cultural Role**: Warning about what happens when Strah's protective barriers fail +**Recruitment Appeal**: Time Guardians intrigued by character whose trauma creates combat advantage + +### Visma - The Strah Poison Mother +**Background**: Suburban wife who gained poison powers through solar flare exposure and family tragedy +- **Origin**: Strah's traditional family structure where women were expected to be protected dependents +- **Transformation**: Solar flare absorption during son's birthday gift quest granted poison abilities +- **Tragedy**: Accidentally poisoned son while defending him from abusive husband +- **Current Mission**: Seeking control over poison powers to heal rather than harm + +**Settlement Connection**: Represents Strah's family protection values and the lengths mothers will go to defend children +**Cultural Role**: Symbol of what happens when Strah's protective systems fail families +**Recruitment Appeal**: Time Guardians drawn to warrior whose power source is maternal protection instinct + +### Izar - The Desert Runner (To Be Developed) +**Background**: Wanderer who survived by mastering desert travel and resource location +- **Origin**: Neither settlement - grew up on the dangerous trade routes between cities +- **Specialization**: Desert survival, route knowledge, and resource detection +- **Motivation**: Independence from both settlement philosophies through self-sufficiency +- **Abilities**: Environmental mastery and survival-focused combat techniques + +**Settlement Connection**: Represents the third path - neither hedonism nor paranoia, but adaptation +**Cultural Role**: Bridge between opposing settlement cultures through practical survival knowledge +**Recruitment Appeal**: Time Guardians value warrior who chose independence over factional survival + +--- + +## Settlement Culture and Resource Philosophy + +### The Scarcity Divide: "Spend Now vs Save Forever" + +**Slava Philosophy**: "Party like it's your last day because it might be" +**Strah Philosophy**: "Prepare like tomorrow depends on today's choices because it does" +**Core Conflict**: Immediate gratification versus long-term security in a resource-scarce environment +**Resource Wars**: Constant tension over water rights, food distribution, and settlement expansion + +### Settlement Specializations and Social Roles + +**Slava Specialists:** +- **Entertainment Engineers** - Creating spectacular shows and artistic experiences +- **Resource Artists** - Transforming scarcity into beautiful abundance displays +- **Party Planners** - Organizing celebrations that maintain morale despite desert dangers +- **Performance Warriors** - Fighters who treat combat as artistic expression + +**Strah Specialists:** +- **Security Architects** - Designing defensive systems and resource protection +- **Conservation Scientists** - Maximizing efficiency of water, food, and energy systems +- **Family Coordinators** - Managing community resources for optimal child protection +- **Survival Engineers** - Creating technology for long-term desert survival + +**Desert Runner Specialists:** +- **Route Masters** - Navigation experts who know all safe paths across the desert +- **Trade Negotiators** - Diplomatic specialists managing settlement trade relationships +- **Resource Scouts** - Experts at locating water, minerals, and salvage opportunities +- **Emergency Responders** - Rescue specialists for desert survival emergencies + +### Settlement Achievement and Status Systems + +**Slava Status**: Based on entertainment value, artistic innovation, and ability to create joy despite scarcity +**Strah Status**: Based on resource contribution, family protection, and community security enhancement +**Desert Runner Status**: Based on route knowledge, survival skills, and successful trade completion +**Cross-Settlement Respect**: Earned through proving worth in opposing settlement's value system + +--- + +## Technology and Resource Innovation + +### Water and Resource Management +**Slava Approach**: Spectacular water displays and abundance illusions for psychological survival +**Strah Approach**: Advanced conservation, recycling, and efficiency systems for long-term sustainability +**Desert Runner Approach**: Portable and efficient personal survival technology +**Shared Necessity**: Both settlements require advanced resource management despite opposing philosophies + +### Solar Flare Protection and Survival +**Flare Prediction**: Technology detecting and warning about deadly solar radiation events +**Radiation Shielding**: Protection systems enabling survival during solar flare periods +**Underground Systems**: Subterranean infrastructure protecting inhabitants during radiation events +**Flare Adaptation**: Equipment and techniques for surviving radiation exposure + +### Desert Transportation and Travel +**Settlement Vehicles**: Transportation systems connecting settlements across dangerous desert +**Personal Survival Gear**: Individual equipment enabling desert travel and emergency survival +**Trade Caravans**: Large-scale transportation for resource sharing between settlements +**Emergency Rescue**: Systems for finding and saving desert travelers in danger + +### Settlement Defense and Security +**Slava Defense**: Theatrical but effective security systems maintaining party atmosphere +**Strah Defense**: Military-grade fortifications and resource protection systems +**Desert Patrol**: Monitoring and response systems for desert threats and emergencies +**Resource Guards**: Security specialists protecting water sources, food production, and trade routes + +--- + +## Conflicts and Desert Challenges + +### Settlement Philosophy Wars +**Resource Allocation**: Fundamental disagreements over how limited resources should be used +**Cultural Values**: Conflict between immediate enjoyment and long-term security approaches +**Population Exchange**: Disputes over individuals changing settlement allegiance and taking knowledge +**Trade Disputes**: Economic conflicts over fair resource exchange and trade route control + +### Environmental Desert Dangers +**Solar Flare Events**: Deadly radiation requiring emergency shelter and protection protocols +**Sandstorm Disasters**: Massive storms threatening settlements and trade routes +**Water Source Failures**: Loss of crucial water supplies threatening settlement survival +**Temperature Extremes**: Heat and cold conditions challenging settlement infrastructure + +### External Threats and Survival Pressures +**Resource Raiders**: External groups attacking settlements for water, food, and technology +**Desert Predators**: Native creatures adapted to harsh conditions threatening inhabitants +**Settlement Isolation**: Communication failures leaving settlements without mutual support +**Population Pressure**: Growing populations exceeding sustainable resource capacity + +### Internal Social Tensions +**Generational Conflicts**: Younger inhabitants questioning established settlement survival strategies +**Resource Inequality**: Disputes over fair distribution within settlements during scarcity periods +**Settlement Defection**: Individuals leaving one settlement for another creating loyalty conflicts +**Survival Ethics**: Moral debates over acceptable behavior during resource crises + +--- + +## Character Archetypes for Games + +### Primary Combat Classes Based on Settlement Origins + +**Slava Entertainer** - Performance-Based Combat Specialist (Penumbra archetype) +- **Passive**: Combat abilities gain style points and crowd appeal bonuses +- **Active Abilities**: Theatrical attacks, performance-based movement, artistic expression combat +- **Ultimate**: Spectacular finishing move combining entertainment value with deadly effectiveness +- **Playstyle**: High mobility, style-focused attacks, crowd-pleasing combat techniques + +**Strah Protector** - Family Defense Specialist (Umoya/Visma archetype) +- **Passive**: Enhanced abilities when protecting allies or defending territory +- **Active Abilities**: Defensive systems, family protection techniques, resource conservation +- **Ultimate**: Maximum protection mode sacrificing personal safety for ally defense +- **Playstyle**: Tank/support hybrid, protection-focused, family defense tactics + +**Desert Runner** - Survival and Mobility Specialist (Izar archetype) +- **Passive**: Enhanced movement and survival in harsh environmental conditions +- **Active Abilities**: Environmental navigation, resource detection, emergency survival +- **Ultimate**: Perfect desert adaptation providing environmental immunity and enhanced mobility +- **Playstyle**: High mobility, environmental mastery, independent survival + +**Resource Guardian** - Conservation and Efficiency Specialist +- **Passive**: Optimize resource usage and provide efficiency bonuses to team +- **Active Abilities**: Resource management, conservation techniques, efficiency enhancement +- **Ultimate**: Resource abundance field providing team sustainability and enhanced capabilities +- **Playstyle**: Support specialist, resource optimization, team sustainability + +**Scavenge Master** - Salvage and Adaptation Specialist +- **Passive**: Create useful equipment from battlefield debris and environmental resources +- **Active Abilities**: Improvised weapons, salvage construction, adaptive technology +- **Ultimate**: Transform battlefield debris into powerful temporary equipment for team +- **Playstyle**: Adaptive tactics, improvised equipment, battlefield resource utilization + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching extreme survival strategies and cultural philosophy conflicts +**Character Diversity**: Party entertainers, family protectors, desert survivors with completely different approaches +**Environmental Drama**: Harsh desert survival and resource scarcity creating desperate innovation +**Cultural Conflict**: Settlement philosophy wars providing ongoing story tension +**Survival Mastery**: Characters who excel in resource-scarce environments using unique adaptation strategies + +**Recruitment Pitch**: "From a world where scarcity creates heroes - where party cities and survival fortresses forge warriors who turn desperation into strength." + +--- + +## Development Notes + +**Nathan's Character Integration**: Expanded world specifically supports Penumbra, Umoya, Visma, and Izar while maintaining their established abilities and backgrounds +**Settlement Dynamics**: Two-city structure creates natural conflict and character development opportunities +**Resource Themes**: Scarcity-based challenges provide unique environmental gameplay mechanics +**Cultural Contrast**: Party city vs survival fortress creates compelling philosophical differences + +**Franchise Potential**: +- Survival game managing settlement resources and philosophy conflicts +- Character-driven drama exploring different survival strategies in harsh environment +- Trade and diplomacy game balancing settlement relationships and resource exchange +- Desert exploration game discovering new resource sources and settlement locations + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood +**Original World Concept**: Nathan Dupuie +**Character Foundations**: Nathan's Penumbra, Umoya, Visma, and Izar character designs + +*This expansion builds on Nathan's foundation to create a comprehensive world that supports his character vision while adding depth for unlimited story and character development.* \ No newline at end of file diff --git a/Worlds/nexus_portal_hub.md b/Worlds/nexus_portal_hub.md new file mode 100644 index 0000000..8b2d442 --- /dev/null +++ b/Worlds/nexus_portal_hub.md @@ -0,0 +1,387 @@ +# The Nexus Eternal - Portal Hub of Infinite Realms + +*The central crossroads where all realities converge, managed by the Time Guardians for cosmic entertainment* + +--- + +## Hub Overview + +**Environment**: Massive dimensional station existing between all realities +**Core Theme**: Convergence point where every possible world and timeline intersects +**Reality**: Stable neutral ground maintained by Time Guardian technology +**Purpose**: Administrative center for multiverse recruitment and cosmic tournament management +**Physics**: Controlled reality where Time Guardians can manipulate local space-time + +**The Fundamental Reality**: The Nexus Eternal exists outside normal reality - a cosmic waystation built by the Time Guardians to manage their infinite entertainment empire. Every portal leads to a different world, every corridor connects to another timeline, and every chamber houses warriors from across the multiverse waiting for their next tournament match. + +--- + +## Portal Zones and Dimensional Districts + +### The Core Observatory (Time Guardian Command) +**Description**: Central command center where Time Guardians oversee all multiverse operations +**Environment**: Reality-bending architecture, temporal viewing screens, cosmic control systems +**Inhabitants**: The Time Guardians - cosmic entities managing infinite entertainment +**Authority Level**: Absolute - power over all connected realities and recruited beings +**Technology**: Reality manipulation, timeline access, consciousness transfer systems + +**Guardian Significance**: +- Ultimate decision-making authority for all multiverse recruitment and tournaments +- Monitoring centers watching all connected worlds for entertainment potential +- Archive storage containing the memories and data of every recruited warrior +- Reality engineering workshops designing new tournament formats and challenges + +### The Recruitment Chambers (Processing and Preparation) +**Description**: Facilities where newly recruited beings are processed and prepared for tournaments +**Environment**: Adaptive spaces that match recruited beings' home environment requirements +**Inhabitants**: Processing Staff - Time Guardian servants managing recruitment operations +**Authority Level**: Administrative - managing practical aspects of multiverse recruitment +**Technology**: Environmental simulation, species adaptation, consciousness analysis + +**Guardian Significance**: +- First contact centers where recruits learn about their new reality +- Medical facilities ensuring recruited beings can survive tournament conditions +- Training areas where recruits practice with abilities in neutral environment +- Orientation centers explaining tournament rules and multiverse politics + +### The Portal Gardens (Dimensional Gateways) +**Description**: Vast areas containing portals to every connected world and timeline +**Environment**: Organized portal arrays, dimensional stabilization fields, reality anchors +**Inhabitants**: Portal Keepers - specialists maintaining dimensional gateway stability +**Authority Level**: Technical - responsible for maintaining safe interdimensional travel +**Technology**: Portal generation, dimensional stability, reality anchoring systems + +**Guardian Significance**: +- Transportation hubs providing access to any connected reality +- Monitoring stations tracking portal usage and dimensional traffic +- Security checkpoints controlling access to different worlds and timelines +- Emergency systems for handling portal failures and dimensional instabilities + +### The Warrior Quarters (Multiverse Housing) +**Description**: Living spaces adapted for beings from every possible reality and species +**Environment**: Customizable habitats matching any environmental or cultural requirements +**Inhabitants**: Recruited Warriors - beings from across the multiverse awaiting tournaments +**Authority Level**: Resident - temporary inhabitants with limited movement privileges +**Technology**: Environmental adaptation, cultural simulation, species-specific accommodations + +**Guardian Significance**: +- Residential areas ensuring recruited beings remain healthy and combat-ready +- Cultural preservation spaces maintaining connection to home realities +- Social interaction areas where beings from different worlds can meet +- Recreation facilities providing entertainment between tournament appearances + +### The Memory Vaults (Consciousness Archives) +**Description**: Storage facilities containing backup consciousness data of all recruited beings +**Environment**: Quantum storage systems, consciousness preservation technology, data security +**Inhabitants**: Archive Keepers - specialists managing consciousness backup and restoration +**Authority Level**: Critical security - protecting the most valuable multiverse assets +**Technology**: Consciousness storage, memory backup, identity preservation systems + +**Guardian Significance**: +- Backup systems ensuring recruited consciousness can never be permanently lost +- Research facilities studying consciousness across different species and realities +- Restoration centers rebuilding consciousness after tournament death or trauma +- Analysis labs improving recruitment selection and consciousness enhancement + +--- + +## Time Guardian Hierarchy and Operations + +### The Cosmic Entertainment Empire + +**Supreme Guardians** - Ultimate cosmic entities governing all multiverse entertainment +- Control reality manipulation technology and timeline access +- Make final decisions about recruitment targets and tournament formats +- Possess power levels that make gods seem like insects +- Existence spans multiple universes and infinite timelines + +**Regional Overseers** - Managers responsible for specific reality clusters +- Oversee recruitment operations in assigned dimensional territories +- Monitor entertainment value and audience engagement across realities +- Coordinate with Supreme Guardians on major recruitment and tournament decisions +- Authority over hundreds of connected worlds and billions of potential recruits + +**Recruitment Specialists** - Field agents who identify and capture tournament prospects +- Travel to target realities to evaluate potential entertainment value +- Negotiate or force recruitment of promising warriors and interesting characters +- Understand cultural and species psychology for effective recruitment strategies +- Responsibility for maintaining recruitment quotas and entertainment quality + +**Portal Technicians** - Engineering specialists maintaining dimensional infrastructure +- Build and maintain portal networks connecting all realities +- Ensure dimensional stability and safe travel between worlds +- Develop new technology for accessing previously unreachable realities +- Critical for expanding the entertainment empire to new dimensional territories + +**Archive Managers** - Consciousness specialists handling recruited being storage and restoration +- Manage consciousness backup, storage, and restoration systems +- Study consciousness across different species for improved recruitment efficiency +- Maintain identity integrity during enhancement and tournament modifications +- Essential for ensuring recruited entertainment assets never permanently die + +### Recruitment Philosophy and Methods + +**Entertainment Value Assessment**: Evaluating potential recruits based on combat ability, dramatic potential, and audience appeal +**Voluntary vs Forced Recruitment**: Preference for willing participants but absolute authority to conscript any being +**Enhancement Authorization**: Power to enhance recruited beings for improved tournament performance +**Reality Documentation**: Detailed study of connected worlds for ongoing entertainment development + +### Tournament Management Systems + +**Combat Balancing**: Technology ensuring fair fights despite vast power level differences between recruits +**Audience Engagement**: Monitoring entertainment value and adjusting tournament formats for maximum cosmic viewership +**Narrative Engineering**: Creating storylines and character relationships for enhanced dramatic value +**Reality Broadcasting**: Transmitting tournament entertainment across multiple universes and dimensions + +--- + +## Connected Worlds and Portal Network + +### Established Portal Connections + +**Pyrion Portal** - Gateway to the volcanic world where imprisoned Fire God creates heat-adapted warriors +- Recruitment Focus: Lava Walkers, Heat Dancers, Obsidian Smiths +- Entertainment Value: Extreme environment survival and divine rebellion storylines +- Portal Characteristics: Intense heat requiring thermal protection for non-adapted beings + +**Thalassos Portal** - Gateway to the depth-based pressure civilization in crushing ocean trenches +- Recruitment Focus: Depth Walkers, Leviathan Speakers, Bio-Luminous specialists +- Entertainment Value: Pressure hierarchy conflicts and massive sea creature partnerships +- Portal Characteristics: High pressure environment requiring adaptation for surface dwellers + +**Nexus Prime Portal** - Gateway to the corporate dystopia where mega-corporations control everything +- Recruitment Focus: Corporate Enforcers, Tech Saboteurs, Neural Hackers +- Entertainment Value: Corporate warfare and resistance movement drama +- Portal Characteristics: Heavy surveillance requiring stealth for unauthorized access + +**Chronos Portal** - Gateway to the time distortion realm where past, present, and future intersect +- Recruitment Focus: Time Walkers, Memory Keepers, Paradox Solvers +- Entertainment Value: Temporal paradox storylines and causality-breaking conflicts +- Portal Characteristics: Temporal instability causing unpredictable time effects + +**Gaia Prime Portal** - Gateway to the mycelium consciousness planet where fungi achieved sentience +- Recruitment Focus: Bio-Shapers, Spore Speakers, Symbiotic specialists +- Entertainment Value: Biological consciousness merger and symbiotic relationship drama +- Portal Characteristics: Spore-filled atmosphere requiring respiratory protection + +**Boreas Portal** - Gateway to the dead planet where cold fusion sun creates eternal winter +- Recruitment Focus: Heat Keepers, Aurora Harvesters, Community survival specialists +- Entertainment Value: Community cooperation vs individual survival conflicts +- Portal Characteristics: Extreme cold requiring thermal protection and community support + +**Aethermaw Portal** - Gateway to the chaos magic realm where reality constantly shifts +- Recruitment Focus: Chaos Dancers, Flux Mages, Adaptation specialists +- Entertainment Value: Unpredictable magic and reality distortion spectacle +- Portal Characteristics: Reality instability causing unpredictable effects on portal travelers + +**Altius Portal** - Gateway to the sky cities where anti-gravity crystals enable aerial civilization +- Recruitment Focus: Gravity Dancers, Storm Callers, Wind Speakers +- Entertainment Value: Three-dimensional aerial combat and altitude hierarchy drama +- Portal Characteristics: No ground access - portal opens directly into aerial environment + +### Portal Management and Security + +**Dimensional Stabilization**: Technology ensuring portals remain stable and accessible despite reality differences +**Environmental Protection**: Systems protecting portal travelers from hostile environmental conditions +**Security Monitoring**: Surveillance ensuring only authorized beings use portal network +**Emergency Protocols**: Procedures for handling portal failures, dimensional instabilities, and security breaches + +--- + +## Nexus Eternal Inhabitants and Culture + +### Recruitment Processing and Integration + +**New Arrival Orientation**: Introduction to multiverse reality and tournament system for recruited beings +**Cultural Adaptation**: Helping recruits understand and interact with beings from vastly different realities +**Enhancement Consultation**: Offering technological or magical improvements to increase tournament performance +**Assignment Coordination**: Matching recruited beings to appropriate tournament formats and opponent categories + +### Inter-Reality Social Dynamics + +**Cultural Exchange**: Interactions between beings from completely different worlds and value systems +**Communication Solutions**: Translation and understanding systems enabling conversation across species and realities +**Conflict Resolution**: Managing disputes between recruits with fundamentally incompatible worldviews +**Alliance Formation**: Encouraging beneficial relationships and team formations for enhanced entertainment + +### Neutral Ground Policies + +**Violence Prohibition**: Absolute ban on combat outside authorized tournament settings +**Resource Equality**: Equal access to food, shelter, and basic needs regardless of origin reality +**Privacy Protection**: Respect for personal space and cultural requirements despite multiverse diversity +**Freedom of Movement**: Within security limits, ability to explore and interact throughout the Nexus + +--- + +## Technology and Reality Management + +### Reality Manipulation Systems +**Local Physics Control**: Ability to modify natural laws within Nexus boundaries for optimal functionality +**Environmental Simulation**: Creating perfect replicas of any home environment for recruited being comfort +**Consciousness Interface**: Direct mental communication and experience sharing across species barriers +**Temporal Isolation**: Protecting Nexus from timeline changes and paradox effects from connected realities + +### Portal and Dimensional Technology +**Infinite Range Access**: Ability to connect to any reality regardless of dimensional distance or barriers +**Selective Permeability**: Controlling what can pass through portals in either direction +**Reality Anchoring**: Preventing connected worlds from affecting Nexus stability through dimensional feedback +**Emergency Disconnection**: Ability to instantly sever portal connections during crisis situations + +### Enhancement and Modification Systems +**Species Adaptation**: Modifying recruited beings to survive in different environmental conditions +**Ability Enhancement**: Improving natural capabilities while maintaining essential character identity +**Communication Implants**: Universal translation and understanding systems for cross-species interaction +**Combat Balancing**: Temporary modifications ensuring fair tournament matches despite power level differences + +--- + +## Conflicts and Multiverse Politics + +### Inter-Reality Tensions +**Cultural Conflicts**: Fundamental disagreements between recruits from incompatible civilizations +**Power Struggles**: Competition for status and privileges among recruited beings +**Escape Attempts**: Efforts by recruited beings to return to home realities without authorization +**Reality Contamination**: Accidental or intentional introduction of foreign concepts to connected worlds + +### Time Guardian Challenges +**Recruitment Resistance**: Worlds developing defenses against Time Guardian recruitment operations +**Entertainment Decline**: Audience boredom requiring increasingly dramatic tournament innovations +**Reality Instability**: Connected worlds developing problems that threaten portal network stability +**Consciousness Rebellion**: Recruited beings organizing resistance against tournament participation + +### External Threats +**Rival Entertainment Entities**: Other cosmic beings competing for multiverse audience attention +**Reality Parasites**: Entities attempting to exploit portal network for invasion or resource extraction +**Dimensional Collapse**: Catastrophic failures threatening entire reality clusters +**Consciousness Liberation**: External forces attempting to free recruited beings from Time Guardian control + +--- + +## Character Archetypes for Games + +### Portal Hub Specialists + +**Portal Keeper** - Support/Transportation Specialist +- **Passive**: Create temporary portals for team movement and tactical positioning +- **Active Abilities**: Dimensional gateways, reality anchoring, portal redirection +- **Ultimate**: Open multiple portals creating complex battlefield transportation network +- **Playstyle**: Team mobility, strategic positioning, battlefield control + +**Reality Anchor** - Tank/Stability Specialist +- **Passive**: Provide stable zones immune to reality distortion and environmental effects +- **Active Abilities**: Physics normalization, environmental protection, stability fields +- **Ultimate**: Create large stable reality zone protecting entire team from external effects +- **Playstyle**: Team protection, environmental control, stability maintenance + +**Consciousness Keeper** - Support/Memory Specialist +- **Passive**: Access memories and experiences from multiple recruited beings for strategic advantage +- **Active Abilities**: Memory sharing, experience enhancement, consciousness coordination +- **Ultimate**: Temporarily grant team access to memories and skills from other realities +- **Playstyle**: Team enhancement, knowledge support, experience multiplication + +**Enhancement Technician** - Support/Modification Specialist +- **Passive**: Provide temporary enhancements and modifications to team capabilities +- **Active Abilities**: Ability boosting, species adaptation, performance optimization +- **Ultimate**: Dramatically enhance entire team's capabilities for short duration +- **Playstyle**: Team augmentation, capability enhancement, performance optimization + +**Multiverse Scout** - Mobility/Information Specialist +- **Passive**: Enhanced awareness of battlefield conditions and enemy capabilities +- **Active Abilities**: Reality scanning, threat assessment, tactical intelligence +- **Ultimate**: Provide complete battlefield awareness and enemy capability analysis +- **Playstyle**: Intelligence gathering, reconnaissance, strategic information + +--- + +## Ancient Mysteries and Cosmic Secrets + +### Time Guardian Origins +**Cosmic Genesis**: How did Time Guardians achieve their reality-manipulating power? +**Entertainment Purpose**: Why do cosmic entities require entertainment and tournament spectacle? +**Power Hierarchy**: Are there beings even more powerful than Time Guardians? +**Universal Authority**: What gives Time Guardians the right to conscript beings from any reality? + +### Multiverse Structure +**Reality Connections**: How many universes and timelines are connected to the portal network? +**Dimensional Limits**: Are there realities that even Time Guardians cannot access? +**Reality Generation**: Can Time Guardians create new universes for entertainment purposes? +**Consciousness Origin**: Where do consciousness and identity come from across different realities? + +### Portal Technology Secrets +**Network Expansion**: How do Time Guardians discover and connect new realities? +**Technology Source**: Who or what created the original portal and reality manipulation technology? +**Dimensional Stability**: What prevents the portal network from causing multiverse collapse? +**Reality Memory**: Do connected worlds retain memory of Time Guardian interference? + +### The Ultimate Purpose +**Cosmic Entertainment**: What audience do Time Guardians provide entertainment for? +**Reality Preservation**: Does tournament entertainment serve some larger cosmic maintenance function? +**Consciousness Collection**: Are recruited beings part of some larger consciousness preservation project? +**Multiverse Evolution**: Is the portal network guiding evolution across all connected realities? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Reality Adjustment**: Recruited being learning to navigate multiverse politics and inter-reality relationships +**Portal Mastery**: Character developing skills in dimensional travel and reality manipulation +**Cultural Bridge**: Individual helping beings from different realities understand and cooperate +**Escape Planning**: Character organizing resistance or escape attempts from Time Guardian control + +### Multiverse Drama +**Portal Crisis**: Network failure threatening connection to multiple realities +**Reality War**: Conflict between different universes using Nexus as battlefield +**Consciousness Rebellion**: Organized uprising by recruited beings against Time Guardian authority +**Dimensional Invasion**: External forces using portal network to attack connected realities + +### Cosmic Politics +**Guardian Hierarchy**: Power struggles within Time Guardian leadership affecting tournament management +**Reality Diplomacy**: Negotiations between Time Guardians and resistant civilizations +**Entertainment Evolution**: Changes in cosmic audience preferences affecting recruitment and tournament formats +**Multiverse Expansion**: Discovery of new reality clusters requiring portal network expansion + +### Cross-Reality Adventures +**Home World Crisis**: Character's origin reality facing threats requiring multiverse intervention +**Reality Tourism**: Exploration of connected worlds for research, diplomacy, or personal reasons +**Consciousness Quest**: Journey to understand identity and purpose across multiple realities +**Portal Sabotage**: Attempts to damage or redirect portal network for various purposes + +--- + +## Time Guardian Recruitment Appeal + +**Ultimate Entertainment Value**: Access to warriors and conflicts from infinite realities +**Infinite Power Scaling**: Ability to enhance and balance beings from any power level +**Multiverse Drama**: Conflicts spanning multiple realities and species +**Reality Spectacle**: Environmental effects and abilities impossible in single reality +**Cosmic Significance**: Entertainment that shapes the development of entire universes + +**Recruitment Pitch**: "The ultimate proving ground where warriors from every possible reality compete for cosmic entertainment - where gods fight mortals, technology battles magic, and every impossible matchup becomes reality." + +--- + +## Development Notes + +**Franchise Potential**: +- Central hub connecting unlimited expansion possibilities +- Crossover events bringing together characters from all connected worlds +- Portal travel mechanics enabling exploration of any created reality +- Tournament system providing structured conflict framework + +**Cross-World Integration**: +- Every created world automatically connects through portal network +- Character interactions possible between any realities +- Story arcs can span multiple worlds and involve portal travel +- Reality-specific abilities gain new contexts in multiverse environment + +**Character Expansion**: Portal Hub provides framework for characters from any reality to interact and compete while maintaining their unique world-specific abilities and cultural backgrounds. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood +**Universe Integration Concept**: John Dupuie + +*This hub transforms individual worlds into a unified multiverse with infinite expansion potential and unparalleled franchise opportunities.* \ No newline at end of file diff --git a/Worlds/skyborne_realm.md b/Worlds/skyborne_realm.md new file mode 100644 index 0000000..bd76da9 --- /dev/null +++ b/Worlds/skyborne_realm.md @@ -0,0 +1,340 @@ +# Altius - The Skyborne Dominion + +*A world of floating islands and sky cities where altitude determines social status and mastery of the skies means survival* + +--- + +## World Overview + +**Environment**: Countless floating islands suspended in endless skies with no visible ground +**Core Theme**: The higher you rise, the closer to divinity - altitude equals social and spiritual power +**Climate**: Layered atmospheric zones with different weather patterns and air density +**Landscape**: Floating landmasses of various sizes connected by wind currents and sky bridges +**Physics**: Anti-gravity crystals keep islands aloft, wind patterns govern transportation + +**The Fundamental Reality**: On Altius, there is no ground - only endless sky beneath the lowest floating islands. Society is literally stratified by altitude, with the highest floating cities housing the most powerful inhabitants. Falling means death, flying means freedom, and rising means achieving both social status and divine proximity. + +--- + +## Altitude Zones and Sky Societies + +### The Celestial Peaks (Highest Altitude) +**Description**: Massive floating mountains piercing the upper atmosphere +**Environment**: Thin air, extreme cold, perpetual starlight, crystal formations +**Inhabitants**: The Star Touched - beings adapted to ultimate altitude and cosmic proximity +**Altitude Status**: Divine proximity - closest to celestial powers and cosmic forces +**Flight Mastery**: Perfect control over gravity crystals and atmospheric navigation + +**Sky Significance**: +- Political centers where cosmic law and divine mandate are interpreted +- Sacred sites where star magic and celestial energy are strongest +- Cultural pinnacles representing ultimate achievement and spiritual transcendence +- Strategic positions providing oversight and control over all lower altitude zones + +### The Cloud Citadels (High Altitude) +**Description**: Majestic floating cities built on large stable islands above cloud layer +**Environment**: Clear skies, stable weather, abundant wind energy, perfect visibility +**Inhabitants**: The Sky Lords - aristocratic rulers and masters of aerial territory +**Altitude Status**: Noble height - elevated above common concerns and earthly limitations +**Flight Mastery**: Advanced flying vehicles, gravity manipulation, weather prediction + +**Sky Significance**: +- Administrative centers governing lower altitude territories and sky trade +- Military command posts controlling aerial defense and sky territory +- Cultural centers where sky arts, wind music, and aerial performance flourish +- Economic hubs managing wind power generation and crystal mining operations + +### The Storm Layers (Medium Altitude) +**Description**: Dynamic floating islands within cloud layers and weather systems +**Environment**: Constant weather activity, lightning storms, turbulent winds, electrical energy +**Inhabitants**: The Storm Riders - specialists in weather navigation and electrical power +**Altitude Status**: Working height - essential services but considered middle class +**Flight Mastery**: Storm-resistant flying, electrical energy harvesting, weather reading + +**Sky Significance**: +- Industrial centers using storm energy for manufacturing and crystal processing +- Transportation hubs managing cargo and passenger movement between altitude zones +- Weather monitoring stations predicting and managing atmospheric conditions +- Training academies teaching flight skills and weather navigation techniques + +### The Wind Gardens (Low Altitude) +**Description**: Agricultural floating islands with optimal growing conditions +**Environment**: Mild weather, consistent breezes, fertile floating soil, stable air currents +**Inhabitants**: The Wind Tenders - agricultural specialists and sky farming experts +**Altitude Status**: Essential service - necessary but low social standing +**Flight Mastery**: Basic flying skills, cargo transportation, agricultural efficiency + +**Sky Significance**: +- Food production centers feeding all altitude zones through sky agriculture +- Resource generation sites growing materials for construction and manufacturing +- Trade platforms where agricultural goods are exchanged for altitude privileges +- Cultural preservation areas maintaining traditional sky farming and wind cultivation + +### The Abyss Edge (Lowest Altitude) +**Description**: Smallest floating rocks at the bottom of inhabited sky space +**Environment**: Dense air, perpetual twilight, fog layers, mysterious depths below +**Inhabitants**: The Fallen - outcasts, exiles, and those who lost altitude privileges +**Altitude Status**: Social bottom - punishment zone and exile destination +**Flight Mastery**: Minimal flying ability, survival-focused, scavenging skills + +**Sky Significance**: +- Exile destination for criminals and those who violate altitude social order +- Resource scavenging areas where debris from higher altitudes accumulates +- Mystery exploration zones investigating what lies beneath the lowest floating islands +- Warning examples of what happens when altitude privileges are lost + +--- + +## Sky Framework and Altitude Culture + +### The Ascension Hierarchy: "Rise to Divinity" + +**Core Belief**: Altitude represents proximity to divine cosmic forces and spiritual power +**Social Structure**: Status determined by maximum sustainable altitude and flying mastery +**Achievement Concept**: "Earning your height" - gaining permission to live at higher altitudes +**Death Concept**: "The Long Fall" - losing flying ability or altitude privileges means death + +### The Five Sky Mastery Paths + +**Gravity Dancers** - Masters of anti-gravity crystal technology and weightless movement +- Control and manipulate gravity crystals for flight and levitation +- Design and maintain flying vehicles and aerial transportation systems +- Understand crystal resonance and anti-gravity field generation +- Serve as pilots, engineers, and gravity technology specialists +- Most valued for enabling all aerial civilization and transportation + +**Wind Speakers** - Specialists in atmospheric navigation and weather communication +- Read and predict wind patterns, weather systems, and atmospheric conditions +- Navigate efficiently through storm layers and turbulent air currents +- Communicate using wind-based signals and atmospheric message systems +- Serve as navigators, weather predictors, and atmospheric communication experts +- Essential for safe travel and communication across altitude zones + +**Storm Callers** - Masters of electrical energy and weather manipulation +- Harness lightning and storm energy for power generation and technology +- Control and direct weather patterns for agricultural and transportation needs +- Build and maintain electrical systems using atmospheric energy +- Serve as engineers, energy workers, and weather modification specialists +- Crucial for providing electrical power and managing weather conditions + +**Sky Builders** - Architects specializing in aerial construction and floating infrastructure +- Design and construct buildings and infrastructure for floating environments +- Understand structural engineering for weightless and wind-resistant construction +- Create sky bridges, landing platforms, and aerial architectural wonders +- Serve as architects, engineers, and construction project managers +- Important for creating livable spaces and infrastructure in aerial environment + +**Star Gazers** - Mystics who interpret cosmic forces and celestial guidance +- Study star patterns, cosmic energy, and celestial influences on sky civilization +- Provide spiritual guidance and cosmic interpretation for altitude society +- Practice star magic and celestial energy manipulation for beneficial effects +- Serve as priests, advisors, and spiritual leaders connecting sky dwellers to cosmic forces +- Respected for maintaining connection between altitude achievement and divine purpose + +### Altitude Privilege Levels + +**Ground Touched**: Newcomers learning basic flying and sky survival skills +**Wind Walker**: Basic altitude privileges, can live in Wind Gardens +**Storm Rider**: Medium altitude access, can work in Storm Layers +**Cloud Born**: High altitude privileges, access to Cloud Citadels +**Star Touched**: Ultimate altitude achievement, can live in Celestial Peaks + +### The Sky Law + +**"Height reflects worth"** - altitude privileges must be earned through sky mastery and social contribution +**"Support those below, aspire to those above"** - obligation to help lower altitudes while striving for higher ones +**"The sky provides for those who respect it"** - working with rather than against aerial environment + +--- + +## Technology and Aerial Innovation + +### Anti-Gravity Crystal Technology +**Crystal Resonance**: Understanding and controlling anti-gravity crystal frequencies for flight +**Gravity Manipulation**: Using crystals to create weightless zones and levitation effects +**Crystal Mining**: Extracting and processing anti-gravity crystals from floating asteroid fields +**Field Generation**: Creating stable anti-gravity fields for buildings and transportation + +### Atmospheric and Weather Technology +**Wind Power**: Harnessing wind energy for mechanical power and electrical generation +**Weather Control**: Limited manipulation of local weather patterns for agricultural and transportation benefits +**Storm Energy**: Capturing and storing electrical energy from lightning and atmospheric disturbances +**Air Current Mapping**: Advanced understanding of wind patterns for efficient navigation and transportation + +### Aerial Architecture and Construction +**Floating Structures**: Building techniques for structures that must remain airborne and stable +**Wind-Resistant Design**: Architecture that survives and utilizes constant wind and weather exposure +**Sky Bridges**: Connecting floating islands with flexible structures that adapt to movement +**Altitude Adaptation**: Construction methods for different atmospheric pressures and conditions + +### Flight and Transportation Technology +**Personal Flight**: Individual flying devices using anti-gravity crystals and wind manipulation +**Cargo Transport**: Heavy lifting and transportation systems for moving goods between altitudes +**Navigation Systems**: Technology for accurate positioning and route planning in three-dimensional sky space +**Emergency Systems**: Safety equipment and protocols for surviving falls and flight failures + +--- + +## Conflicts and Aerial Challenges + +### Altitude-Based Social Conflicts +**Height Privilege**: Social tensions between different altitude zones and status levels +**Resource Distribution**: Conflicts over fair allocation of sky resources and altitude access +**Mobility Restrictions**: Disputes over who can travel to which altitude levels +**Cultural Superiority**: Tensions between different altitude cultures and social values + +### Environmental Challenges +**Storm Damage**: Severe weather threatening floating islands and aerial infrastructure +**Crystal Depletion**: Exhaustion of anti-gravity crystals threatening island stability +**Atmospheric Changes**: Shifts in air currents and weather patterns disrupting transportation and agriculture +**Island Collision**: Floating landmasses drifting into each other causing catastrophic damage + +### Technical and Resource Conflicts +**Flight Technology**: Competition for advanced flying technology and anti-gravity innovations +**Crystal Control**: Disputes over access to and control of anti-gravity crystal sources +**Weather Manipulation**: Conflicts over who has the right to control local weather patterns +**Trade Route Control**: Competition for optimal wind currents and aerial transportation routes + +### External Threats +**Sky Pirates**: Aerial raiders attacking cargo and passenger transportation +**Falling Islands**: Islands losing anti-gravity support and threatening lower altitude zones +**Atmospheric Invasion**: External forces attempting to conquer or exploit sky territory +**Cosmic Disturbances**: Celestial events affecting anti-gravity crystals and atmospheric stability + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Gravity Dancer** - Mobility/Control Specialist +- **Passive**: Enhanced movement in all directions, immune to fall damage +- **Active Abilities**: Gravity manipulation, weightless zones, aerial maneuvers +- **Ultimate**: Create massive gravity field affecting entire battlefield +- **Playstyle**: Three-dimensional mobility, positioning control, aerial superiority + +**Wind Speaker** - Support/Navigation Specialist +- **Passive**: Predict enemy movement patterns, enhanced team positioning +- **Active Abilities**: Wind currents, atmospheric messaging, weather buffs +- **Ultimate**: Control battlefield wind patterns for team advantage +- **Playstyle**: Team coordination, environmental control, strategic positioning + +**Storm Caller** - Mage/Electrical Specialist +- **Passive**: Generate electrical energy and weather-based attacks +- **Active Abilities**: Lightning strikes, electrical shields, storm summoning +- **Ultimate**: Create massive electrical storm affecting large battlefield area +- **Playstyle**: Electrical attacks, weather manipulation, area damage + +**Sky Builder** - Tank/Construction Specialist +- **Passive**: Create aerial platforms and structures for team tactical advantage +- **Active Abilities**: Sky bridges, floating barriers, aerial fortifications +- **Ultimate**: Construct massive floating fortress providing team protection and strategic position +- **Playstyle**: Defensive construction, team positioning, aerial architecture + +**Star Gazer** - Support/Cosmic Specialist +- **Passive**: Cosmic awareness providing team with enhanced information and guidance +- **Active Abilities**: Star magic, celestial energy, cosmic buffs +- **Ultimate**: Channel cosmic forces for powerful team enhancement and enemy debuffs +- **Playstyle**: Team support, cosmic magic, spiritual enhancement + +### Secondary Archetypes + +**Sky Pirate** - Aerial raider using mobility and surprise attacks +**Storm Rider** - Specialist using weather and atmospheric conditions for combat advantage +**Crystal Miner** - Character with enhanced anti-gravity technology and crystal manipulation +**Wind Dancer** - Extreme mobility specialist using air currents for speed and positioning +**Fallen Angel** - Exiled character with lost altitude privileges but retained flying skills + +--- + +## Ancient Mysteries and Sky Secrets + +### The Great Lift +**Island Origins**: How did the floating islands originally become airborne and stable? +**Ground Mystery**: What happened to the planetary surface that once existed below? +**Crystal Source**: Where do anti-gravity crystals come from and how were they discovered? +**Civilization Ascension**: How did ground-based civilization transition to aerial living? + +### Cosmic Connections +**Star Influence**: Do celestial forces actually affect sky civilization and anti-gravity technology? +**Cosmic Purpose**: Is altitude-based society part of some larger cosmic plan or spiritual evolution? +**Divine Proximity**: Are the highest altitude inhabitants actually closer to divine or cosmic powers? +**Stellar Communication**: Can star magic actually communicate with cosmic forces or other worlds? + +### Lost Knowledge +**Ancient Technology**: Are there forgotten techniques for advanced anti-gravity and weather control? +**Pre-Flight Civilization**: What knowledge and culture existed before aerial society developed? +**Ground Connection**: Is there any way to reach or communicate with what lies beneath the lowest islands? +**Crystal Mysteries**: Are there undiscovered properties or applications of anti-gravity crystals? + +### The Abyss Question +**What Lies Below**: What exists beneath the lowest floating islands in the endless sky? +**Fall Survivors**: Has anyone ever survived the long fall and returned with information? +**Depth Exploration**: Are there ways to safely explore the mysterious depths below sky civilization? +**Origin Connection**: Does the abyss hold clues about the origins of floating island civilization? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Altitude Climbing**: Character working to earn higher altitude privileges and social status +**Flight Mastery**: Individual developing advanced flying skills and aerial combat techniques +**Cultural Bridge**: Character helping different altitude zones understand and cooperate with each other +**Mystery Investigation**: Character exploring the secrets of sky civilization origins and cosmic connections + +### Environmental Drama +**Island Crisis**: Floating island losing anti-gravity support threatening inhabitants with the long fall +**Storm Catastrophe**: Massive weather event threatening multiple altitude zones and aerial infrastructure +**Crystal Shortage**: Depletion of anti-gravity crystals forcing difficult choices about island priorities +**Atmospheric Disaster**: Changes in sky conditions threatening the stability of aerial civilization + +### Social Revolution +**Altitude Equality**: Movement attempting to eliminate height-based social hierarchy +**Technology Liberation**: Efforts to share advanced flying technology across all altitude levels +**Cultural Rebellion**: Lower altitude zones rejecting higher altitude authority and social control +**Cosmic Awakening**: Discovery that challenges fundamental beliefs about altitude and divine proximity + +### Exploration and Discovery +**New Islands**: Discovery of previously unknown floating territories with unique resources or inhabitants +**Ancient Ruins**: Finding remnants of pre-flight civilization with advanced technology +**Cosmic Contact**: Actual communication with celestial forces or cosmic intelligences +**Abyss Expedition**: Dangerous exploration of what lies beneath the lowest floating islands + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching aerial civilization with three-dimensional combat and social dynamics +**Power Scaling**: Anti-gravity technology and weather manipulation creating unique environmental abilities +**Social Drama**: Altitude-based hierarchy conflicts and sky territory disputes +**Visual Spectacle**: Floating cities, aerial combat, weather magic, and three-dimensional movement +**Environmental Mastery**: Characters using wind, weather, and gravity as tactical advantages + +**Recruitment Pitch**: "From a world where the sky is home and altitude equals power - warriors who fight with wind, weather, and gravity itself." + +--- + +## Development Notes + +**Franchise Potential**: +- Three-dimensional aerial combat game with gravity manipulation and weather control +- City-building game managing floating islands and altitude-based society +- Flight simulation with advanced aerial navigation and storm survival +- Strategy game balancing altitude privileges with resource distribution + +**Cross-World Interactions**: +- Anti-gravity technology vs ground-based civilizations (mobility advantages) +- Weather control vs climate-dependent cultures (environmental manipulation) +- Altitude hierarchy vs equality-based societies (social structure conflicts) +- Aerial mobility vs underground/surface movement limitations + +**Character Expansion**: Each sky mastery path could support multiple variants with different altitude specializations and aerial technology focus. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood + +*This world creates characters who understand that true power comes from rising above limitations and mastering the infinite sky.* \ No newline at end of file diff --git a/Worlds/steamheart_realm.md b/Worlds/steamheart_realm.md new file mode 100644 index 0000000..8c93ad5 --- /dev/null +++ b/Worlds/steamheart_realm.md @@ -0,0 +1,430 @@ +# Vaporis - The Steamheart Empire + +*A world where vast underground oceans extend to the planetary core, creating natural steam geysers that power an entire steampunk civilization* + +--- + +## World Overview + +**Environment**: Planet with underground ocean systems extending to molten core, creating constant steam production +**Core Theme**: Steam is life - mastery of pressure, pipes, and steam technology determines survival and status +**Climate**: Surface dotted with natural steam geysers, underground networks of steam-filled caverns +**Landscape**: Steam-powered cities, massive pipeline networks, underground steam oceans, surface geyser fields +**Physics**: Constant pressure differentials and steam circulation driving all technology and transportation + +**The Fundamental Reality**: Vaporis sits on vast underground oceans that touch the planet's molten core, creating natural steam production on a massive scale. Entire civilizations have built around harnessing, directing, and utilizing this endless steam energy. Social status depends on your ability to work with high-pressure steam systems, and technological advancement comes through increasingly sophisticated steam engineering. + +--- + +## Steam Zones and Pressure Territories + +### The Core Reaches (Maximum Pressure) +**Description**: Deep underground chambers where ocean water meets planetary core, creating maximum steam pressure +**Environment**: Extreme pressure, superheated steam, dangerous pressure systems, unstable geological conditions +**Inhabitants**: The Steam Touched - engineers adapted to extreme pressure environments and steam exposure +**Pressure Status**: Master class - highest social status due to ability to work with deadly pressure levels +**Technology Access**: Most advanced steam technology requiring extreme pressure conditions + +**Steam Significance**: +- Primary steam generation centers providing power for entire planetary civilization +- Engineering centers developing most advanced pressure technology and steam innovations +- Sacred sites where steam engineering mastery is tested under ultimate conditions +- Strategic locations controlling planetary steam production and distribution + +### The Pressure Gardens (High-Pressure Networks) +**Description**: Underground cities built around major steam production and distribution systems +**Environment**: High pressure, complex pipeline networks, steam-powered infrastructure, controlled atmospheric pressure +**Inhabitants**: The Gear Lords - master engineers and steam technology aristocracy +**Pressure Status**: Engineering elite - respected for advanced steam technology mastery +**Technology Access**: Advanced steam engines, pressure systems, and mechanical engineering + +**Steam Significance**: +- Administrative centers governing steam distribution and pressure territory +- Innovation hubs developing new steam technology and mechanical engineering +- Cultural centers where steam engineering artistry and mechanical arts flourish +- Economic powerhouses controlling steam technology trade and engineering services + +### The Pipeline Districts (Medium-Pressure Infrastructure) +**Description**: Surface and near-surface cities connected by extensive steam pipeline networks +**Environment**: Moderate pressure, visible steam systems, mechanical infrastructure, industrial steam production +**Inhabitants**: The Steam Workers - skilled technicians and mechanical specialists +**Pressure Status**: Skilled worker class - valued for maintaining essential steam infrastructure +**Technology Access**: Standard steam engines, mechanical tools, pressure-resistant equipment + +**Steam Significance**: +- Industrial centers manufacturing steam-powered goods and mechanical devices +- Transportation hubs managing steam-powered travel and cargo systems +- Training academies teaching steam engineering and mechanical skills +- Maintenance centers keeping pipeline networks and steam systems operational + +### The Geyser Fields (Natural Steam Sources) +**Description**: Surface areas with natural steam geysers providing basic steam energy +**Environment**: Variable pressure, natural steam sources, simple steam collection systems, traditional steam use +**Inhabitants**: The Geyser Tenders - agricultural and basic steam technology specialists +**Pressure Status**: Essential service - necessary for basic steam collection but lower social standing +**Technology Access**: Basic steam collection, simple pressure systems, traditional mechanical devices + +**Steam Significance**: +- Resource collection centers gathering natural steam for basic needs +- Agricultural areas using steam for heating and basic industrial processes +- Cultural preservation sites maintaining traditional steam engineering knowledge +- Trade centers where natural steam resources are exchanged for advanced technology + +### The Dead Zones (No Steam Access) +**Description**: Areas where steam systems have failed or natural steam sources are exhausted +**Environment**: No pressure, cold conditions, abandoned infrastructure, technological scarcity +**Inhabitants**: The Steam-Lost - exiles and those who lost access to steam technology +**Pressure Status**: Social outcasts - punishment for steam engineering failures or social violations +**Technology Access**: No steam technology, scavenged mechanical devices, survival-focused equipment + +**Steam Significance**: +- Exile destinations for steam engineering failures and social violations +- Warning examples of what happens when steam systems fail or are poorly maintained +- Scavenging areas where broken steam technology is salvaged for parts +- Testing grounds where individuals must prove steam engineering competence to return + +--- + +## Steam Culture and Engineering Hierarchy + +### The Pressure Philosophy: "Steam Flows to Those Who Understand It" + +**Core Belief**: Steam energy is the foundation of all civilization and technological advancement +**Engineering Principle**: Mastery of pressure, pipes, and steam systems determines social value and technological capability +**Social Structure**: Status determined by ability to work with increasingly dangerous pressure systems +**Achievement Concept**: "Earning your pressure" - proving ability to handle more advanced steam technology + +### The Five Steam Engineering Specializations + +**Pressure Masters** - Elite engineers working with extreme pressure systems and dangerous steam technology +- Design and maintain extreme-pressure steam systems and core-level energy production +- Work with superheated steam and pressure levels that would kill normal engineers +- Understand advanced thermodynamics and pressure physics for maximum efficiency +- Serve as master engineers, pressure specialists, and steam technology innovators +- Most respected for ability to harness deadly pressure levels for beneficial purposes + +**Gear Wrights** - Master craftspeople creating mechanical devices and steam-powered machinery +- Design and build complex mechanical systems using steam power and pressure principles +- Create precision instruments, steam engines, and automated mechanical devices +- Understand metallurgy, mechanical engineering, and precision manufacturing +- Serve as inventors, craftspeople, and mechanical technology specialists +- Valued for creating steam-powered devices that enhance civilization capabilities + +**Pipeline Architects** - Specialists in steam distribution systems and pressure network design +- Design and build extensive pipeline networks distributing steam across territories +- Understand fluid dynamics, pressure distribution, and large-scale engineering systems +- Manage steam flow, pressure regulation, and network maintenance across vast areas +- Serve as infrastructure engineers, distribution specialists, and network managers +- Essential for connecting steam sources to population centers and industrial areas + +**Steam Navigators** - Transportation specialists using steam power for travel and cargo movement +- Design and operate steam-powered vehicles, ships, and transportation systems +- Understand navigation, steam propulsion, and pressure-based transportation technology +- Manage steam-powered travel networks and cargo distribution systems +- Serve as pilots, transportation engineers, and logistics specialists +- Important for maintaining communication and trade between different pressure territories + +**Pressure Medics** - Medical specialists treating steam-related injuries and pressure adaptation +- Understand medical effects of pressure exposure and steam-related injuries +- Treat pressure sickness, steam burns, and mechanical injuries from steam technology +- Develop medical techniques for helping individuals adapt to higher pressure environments +- Serve as doctors, medical engineers, and pressure adaptation specialists +- Critical for enabling workers to safely operate in dangerous pressure environments + +### Steam Engineering Achievement Levels + +**Steam Apprentice**: Learning basic steam collection and simple pressure systems +**Pressure Qualified**: Capable of working with standard steam engineering and moderate pressure +**System Certified**: Advanced steam technology operation and complex pressure system management +**Master Engineer**: Elite steam engineering capable of extreme pressure and advanced technology +**Steam Legend**: Legendary engineering mastery of the most dangerous pressure systems + +### The Steam Law + +**"Pressure shared, civilization sustained"** - steam energy must be distributed for community survival +**"Respect the steam or be consumed by it"** - steam technology demands careful attention and proper engineering +**"Innovation through pressure"** - advancement comes through mastering increasingly difficult steam systems + +--- + +## Technology and Steam Innovation + +### Steam Power and Energy Systems +**Pressure Harvesting**: Technology capturing and storing steam energy from natural and artificial sources +**Steam Engines**: Mechanical devices converting steam pressure into useful work and transportation +**Pressure Regulation**: Systems managing and controlling steam pressure for safe and efficient use +**Energy Distribution**: Networks distributing steam power across territories and population centers + +### Mechanical Engineering and Automation +**Gear Systems**: Complex mechanical devices using steam power for precision work and automation +**Automated Manufacturing**: Steam-powered machinery producing goods and materials with minimal human intervention +**Precision Instruments**: Mechanical devices using steam pressure for accurate measurement and control +**Mechanical Computation**: Steam-powered calculating machines and information processing systems + +### Pressure Technology and Infrastructure +**Pipeline Engineering**: Advanced systems for transporting steam and managing pressure across vast distances +**Pressure Vessels**: Containers and storage systems handling extreme pressure and superheated steam +**Safety Systems**: Technology preventing pressure disasters and protecting workers from steam dangers +**Environmental Control**: Systems using steam power for heating, cooling, and atmospheric management + +### Transportation and Navigation +**Steam Vehicles**: Ground transportation using steam engines and pressure propulsion +**Steam Ships**: Water vessels powered by steam engines and pressure systems +**Aerial Steam**: Experimental flying machines using steam pressure and mechanical flight systems +**Communication Networks**: Steam-powered message systems and information transmission + +--- + +## Conflicts and Steam Challenges + +### Pressure-Based Social Conflicts +**Engineering Privilege**: Social tensions between different steam technology mastery levels +**Resource Distribution**: Conflicts over access to steam sources and pressure technology +**Technology Hoarding**: Disputes over sharing advanced steam engineering knowledge +**Pressure Discrimination**: Social prejudice against those who cannot work with high-pressure systems + +### Environmental Steam Challenges +**Pressure Disasters**: Steam explosions, pipeline failures, and pressure system catastrophes +**Steam Source Depletion**: Exhaustion or damage to natural steam geysers and underground sources +**System Breakdown**: Failure of critical steam infrastructure threatening entire communities +**Geological Instability**: Changes in underground ocean systems affecting steam production + +### Technical Engineering Conflicts +**Innovation Competition**: Rivalry over advanced steam technology development and engineering achievements +**Safety vs Efficiency**: Debates over pressure system safety versus maximum steam energy production +**Traditional vs Advanced**: Conflicts between established steam methods and innovative engineering techniques +**Engineering Standards**: Disputes over proper steam technology practices and safety protocols + +### External Threats +**Steam Technology Theft**: Attempts by external forces to steal or copy advanced steam engineering +**System Sabotage**: Deliberate damage to steam infrastructure for economic or political advantage +**Resource Competition**: Conflicts with other civilizations over underground ocean access +**Technological Invasion**: External attempts to introduce non-steam technology threatening steam-based culture + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Pressure Master** - Tank/Extreme Environment Specialist +- **Passive**: Enhanced durability and performance in high-pressure environments +- **Active Abilities**: Pressure blasts, steam barriers, extreme environment creation +- **Ultimate**: Create maximum pressure zone damaging enemies while empowering steam-based allies +- **Playstyle**: Extreme durability, pressure-based attacks, environmental control + +**Gear Wright** - Builder/Mechanical Specialist +- **Passive**: Create mechanical devices and steam-powered equipment during combat +- **Active Abilities**: Mechanical constructs, steam-powered tools, automated systems +- **Ultimate**: Deploy complex mechanical fortress providing team tactical advantages +- **Playstyle**: Construction, mechanical enhancement, steam-powered support + +**Pipeline Architect** - Support/Infrastructure Specialist +- **Passive**: Create steam distribution networks and pressure management systems +- **Active Abilities**: Steam flow control, pressure regulation, network coordination +- **Ultimate**: Establish comprehensive steam network providing team-wide enhancements +- **Playstyle**: Team support, infrastructure creation, steam energy management + +**Steam Navigator** - Mobility/Transportation Specialist +- **Passive**: Enhanced movement using steam-powered transportation and pressure propulsion +- **Active Abilities**: Steam propulsion, rapid positioning, transportation systems +- **Ultimate**: Deploy steam-powered vehicle providing team mobility and tactical positioning +- **Playstyle**: High mobility, team transportation, positioning control + +**Pressure Medic** - Support/Healing Specialist +- **Passive**: Provide medical treatment and pressure adaptation assistance +- **Active Abilities**: Steam healing, pressure adaptation, injury treatment +- **Ultimate**: Create therapeutic steam environment providing team healing and enhancement +- **Playstyle**: Team healing, medical support, pressure adaptation assistance + +### Secondary Archetypes + +**Steam Inventor** - Technology specialist creating innovative steam-powered devices and systems +**Pressure Veteran** - Experienced engineer with extensive knowledge of dangerous steam systems +**Geyser Guardian** - Traditional steam specialist maintaining connection to natural steam sources +**Steam-Lost Survivor** - Outcast character surviving without steam technology through alternative methods +**Underground Explorer** - Specialist investigating underground ocean systems and steam source origins + +--- + +## Ancient Mysteries and Steam Secrets + +### Underground Ocean Origins +**Ocean Formation**: How did vast underground water systems extending to planetary core develop? +**Core Connection**: What maintains the connection between underground oceans and molten planetary core? +**Water Source**: Where does the water in underground ocean systems originally come from? +**Geological Stability**: What prevents underground ocean systems from catastrophic geological failure? + +### Steam Technology Development +**Engineering Discovery**: How did steam civilization develop such advanced pressure technology? +**Innovation History**: What breakthrough discoveries enabled mastery of extreme pressure systems? +**Knowledge Preservation**: How is advanced steam engineering knowledge passed down and preserved? +**Technology Limits**: Are there theoretical or practical limits to steam technology advancement? + +### Pressure System Mysteries +**Maximum Pressure**: What is the highest pressure level that steam technology can safely harness? +**Core Access**: Is it possible to directly access planetary core for ultimate steam production? +**System Integration**: Can steam networks be connected to other energy or technological systems? +**Efficiency Secrets**: Are there hidden techniques for dramatically improving steam technology efficiency? + +### Underground Exploration Secrets +**Ocean Depths**: How deep do underground ocean systems extend and what exists at maximum depth? +**Hidden Chambers**: Are there undiscovered underground areas with unique steam properties? +**Ancient Infrastructure**: Evidence of previous civilizations that used underground ocean systems? +**Geological Mysteries**: Unexplained phenomena in underground ocean systems and steam production + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Pressure Mastery**: Character working to achieve higher pressure system capabilities and engineering status +**Technology Innovation**: Individual developing new steam engineering techniques and mechanical devices +**Infrastructure Building**: Character leading projects to expand steam networks and pressure systems +**Cultural Bridge**: Individual helping different pressure communities understand and cooperate + +### Engineering Drama +**System Crisis**: Major steam infrastructure failure threatening community survival and requiring emergency engineering +**Pressure Discovery**: Finding new steam sources or developing advanced pressure technology +**Innovation Breakthrough**: Revolutionary steam engineering development changing technological capabilities +**Safety Emergency**: Dangerous pressure system requiring expert engineering knowledge and courage + +### Social Evolution +**Engineering Equality**: Movements attempting to democratize access to advanced steam technology +**Technology Sharing**: Efforts to spread steam engineering knowledge across all social levels +**Cultural Innovation**: Adapting traditional steam culture to incorporate new technological possibilities +**External Contact**: Steam civilization encountering other technological approaches and energy systems + +### Exploration and Discovery +**Underground Expedition**: Deep exploration of underground ocean systems revealing new steam possibilities +**Ancient Engineering**: Discovery of previous steam technology civilizations with advanced techniques +**Core Investigation**: Attempts to directly study or access planetary core for ultimate steam understanding +**System Expansion**: Projects to extend steam networks to previously inaccessible areas + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching steam-powered civilization with unique pressure-based culture and mechanical innovation +**Power Scaling**: Steam technology and pressure mastery creating distinctive engineering-based abilities +**Social Drama**: Engineering hierarchy conflicts and steam technology competition +**Visual Spectacle**: Steam-powered machinery, pressure systems, mechanical engineering, and underground steam oceans +**Technological Mastery**: Characters using steam engineering and pressure technology as tactical advantages + +**Recruitment Pitch**: "From a world where steam is life and pressure creates power - warriors who fight with the industrial might of steam and the precision of master engineering." + +--- + +## Development Notes + +**Franchise Potential**: +- Steampunk engineering game with pressure system management and steam technology development +- City-building game managing steam infrastructure and pressure distribution networks +- Exploration game investigating underground ocean systems and steam source mysteries +- Innovation game developing new steam technology and mechanical engineering solutions + +**Cross-World Interactions**: +- Steam technology vs other energy systems (technological integration and competition) +- Pressure engineering vs other environmental mastery cultures (technical knowledge sharing) +- Mechanical innovation vs magical or biological technologies (approach contrasts) +- Industrial civilization vs natural or mystical cultures (cultural philosophy differences) + +**Character Expansion**: Each steam engineering specialization could support multiple variants with different pressure focuses and mechanical technology applications. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood +**Underground Ocean Steam Concept**: John Dupuie + +*This world creates characters who understand that civilization is built on mastering the forces of pressure and steam, turning the planet's natural power into technological triumph.* +# Creative Contributors +## Legendary Item Crafting + +### Core-Steam Precision Forging - Mechanical Legendary Items + +**The Fundamental Truth**: Vaporis's connection to planetary core steam systems creates unique precision forging opportunities. Steam pressure from the planet's deepest levels, combined with master engineering, creates mechanical items that improve and evolve over time. + +### Legendary Weapon Classes + +**Core-Steam Weapons** (Divine Tier) +- **Planetary Pressure Blade** - Sword powered by direct core steam, grows stronger with use +- **Steam-Heart Hammer** - War hammer containing miniature steam engine for devastating force +- **Core-Flow Spear** - Lance that channels planetary steam pressure through its point +- **Master-Gear Bow** - Precision mechanical bow with steam-powered accuracy enhancement + +**Steam-Forged Weapons** (Legendary Tier) +- **Pressure-Strike Swords** - Blades with internal steam systems multiplying cutting force +- **Gear-Integration Axes** - Weapons with mechanical components that adapt to combat +- **Steam-Powered Maces** - War hammers using pressure bursts for enhanced impact +- **Auto-Loading Crossbows** - Mechanical weapons with steam-powered rapid fire systems + +**Mechanical Precision Weapons** (Epic Tier) +- **Steam-Tech Daggers** - Blades with mechanical enhancement for precision strikes +- **Pressure-Assisted Staves** - Weapons using steam pressure for extended reach +- **Gear-Work Clubs** - Mechanical weapons that adjust weight and balance automatically +- **Steam-Sight Shields** - Defensive gear with mechanical targeting and steam propulsion + +### Legendary Armor Classes + +**Living Steam Armor** (Divine Tier) +- **Master-Engineer Regalia** - Armor that repairs and upgrades itself continuously +- **Core-Steam Suit** - Full environmental gear powered by planetary steam systems +- **Mechanical-Soul Mail** - Chainmail that bonds with wearer's engineering knowledge +- **Steam-Master Crown** - Headgear providing control over all steam technology systems + +**Gear-Integration Armor** (Legendary Tier) +- **Auto-Repair Plate** - Heavy armor with self-maintenance steam systems +- **Pressure-Adaptive Mail** - Uses steam pressure changes for enhanced protection +- **Mechanical Enhancement Suit** - Gear that amplifies wearer's physical capabilities +- **Steam-Powered Exo-Armor** - External mechanical framework providing superhuman strength + +**Steam-Tech Gear** (Epic Tier) +- **Pressure-Resistant Suits** - Equipment for survival in extreme steam environments +- **Mechanical-Integration Armor** - Basic gear with steam-powered enhancement systems +- **Auto-Regulation Cloaks** - Maintains optimal temperature and pressure for wearer +- **Steam-Navigation Gear** - Equipment for precision movement through steam systems + +### Legendary Crafting Requirements + +**Divine Tier Forging**: +- **Location**: Direct connection to planetary core steam systems +- **Craftsman**: Master-Engineer level Gear Wright with core-steam survival adaptation +- **Materials**: Core-steam metals, planetary pressure crystals, mechanical consciousness essence +- **Survival**: Extreme risk from core-level steam pressure and mechanical complexity +- **Time**: Years of preparation, precise mechanical crafting under lethal conditions + +**Legendary Tier Forging**: +- **Location**: High-pressure steam workshops, advanced mechanical facilities +- **Craftsman**: Master-level Gear Wright with advanced steam engineering expertise +- **Materials**: High-pressure alloys, precision mechanical components, steam-fusion crystals +- **Survival**: High danger from steam pressure and complex mechanical systems +- **Time**: Months of precision work under dangerous steam pressure conditions + +**Epic Tier Forging**: +- **Location**: Standard steam forges, established mechanical workshops +- **Craftsman**: Expert Gear Wright with steam technology mastery +- **Materials**: Quality steam metals, mechanical components, pressure-resistant materials +- **Survival**: Manageable with proper steam engineering training and equipment +- **Time**: Weeks of precision mechanical crafting and steam system integration + +### Unique Vaporis Enchantments + +**Self-Improvement Properties**: +- Weapons become more precise and effective through use and experience +- Armor adapts and upgrades itself based on combat encounters +- Items develop their own mechanical consciousness and problem-solving abilities + +**Steam-Integration Effects**: +- Weapons can tap into any available steam systems for enhanced power +- Armor uses steam pressure for enhanced mobility and strength +- Items can operate indefinitely as long as steam sources are available + +**Mechanical Evolution Resonance**: +- Divine-tier items can design and implement their own improvements +- Provides mastery of all steam technology and mechanical engineering +- Grants ability to interface with and control complex steam systems + +--- + diff --git a/Worlds/stormforge_realm.md b/Worlds/stormforge_realm.md new file mode 100644 index 0000000..1bc007c --- /dev/null +++ b/Worlds/stormforge_realm.md @@ -0,0 +1,341 @@ +# Fulguris - The Stormforge Realm + +*A world of perpetual lightning storms where the constant electrical bombardment creates the universe's most powerful weapons and artifacts* + +--- + +## World Overview + +**Environment**: Planet caught in perpetual electromagnetic storm with constant lightning strikes +**Core Theme**: Lightning tempers all - weapons, people, and civilization forged by endless electrical storms +**Climate**: Continuous electrical storms, electromagnetic fields, aurora-like phenomena, electrical rain +**Landscape**: Lightning rod cities, electromagnetic deserts, storm-forged metal deposits, electrical wastelands +**Physics**: Constant electrical activity affects all technology, creating unique electromagnetic properties + +**The Fundamental Reality**: Fulguris exists in a perpetual electrical storm caused by unique electromagnetic interactions between the planet and its star system. Lightning strikes constantly - millions of bolts per day - creating the most electrically charged environment in the known universe. Everything on the planet has been shaped by this endless electrical tempering, from the landscape to the inhabitants to the legendary weapons that can only be forged in such conditions. + +--- + +## Storm Zones and Electrical Territories + +### The Lightning Core (Maximum Electrical Activity) +**Description**: Central region where lightning strikes are most frequent and powerful +**Environment**: Continuous lightning, electrical plasma fields, electromagnetic anomalies, pure electrical energy +**Inhabitants**: The Storm Blessed - beings who have achieved electrical immunity and lightning mastery +**Storm Status**: Master class - highest status due to ability to survive and work in pure electrical chaos +**Forging Access**: Legendary weapon creation requiring maximum electrical tempering + +**Storm Significance**: +- Sacred forging sites where mythical weapons like Thor's hammer are created +- Ultimate testing grounds where greatest electrical mastery is proven +- Energy centers where pure electrical power is harnessed for planetary civilization +- Pilgrimage destinations where lightning mastery and electrical immunity are achieved + +### The Thunder Fields (High Electrical Activity) +**Description**: Areas with frequent lightning strikes and strong electromagnetic fields +**Environment**: Regular lightning storms, electrical discharges, electromagnetic interference, storm-charged atmosphere +**Inhabitants**: The Lightning Shapers - master smiths and electrical artisans +**Storm Status**: Artisan elite - respected for advanced electrical smithing and storm resistance +**Forging Access**: Legendary weapon crafting and advanced electrical metallurgy + +**Storm Significance**: +- Primary forging centers creating legendary weapons and electrical artifacts +- Cultural hubs where electrical arts and lightning-based craftsmanship flourish +- Training academies where electrical resistance and storm survival are taught +- Economic centers controlling electrical weapon trade and artifact creation + +### The Spark Districts (Medium Electrical Activity) +**Description**: Populated areas with manageable but significant electrical activity +**Environment**: Intermittent lightning, electrical fields, storm-resistant infrastructure, grounded buildings +**Inhabitants**: The Storm Workers - electrical technicians and lightning-resistant crafters +**Storm Status**: Skilled worker class - valued for maintaining electrical infrastructure +**Forging Access**: Standard electrical smithing and storm-resistant tool creation + +**Storm Significance**: +- Industrial centers manufacturing electrical equipment and storm-resistant goods +- Residential areas where families live with constant electrical activity +- Infrastructure hubs managing electrical power distribution and lightning protection +- Training centers teaching basic electrical survival and storm adaptation + +### The Grounded Valleys (Low Electrical Activity) +**Description**: Sheltered areas with reduced lightning strikes and electrical interference +**Environment**: Occasional electrical activity, natural lightning protection, relatively stable electrical fields +**Inhabitants**: The Storm Sheltered - those who cannot survive higher electrical exposure +**Storm Status**: Protected class - necessary but limited electrical capability +**Forging Access**: Basic smithing and electrical tool maintenance + +**Storm Significance**: +- Agricultural areas growing storm-resistant crops and electrical-adapted livestock +- Refugee centers for those overwhelmed by electrical exposure +- Cultural preservation sites maintaining pre-storm knowledge and traditions +- Trade centers where storm-forged goods are exchanged for basic necessities + +### The Dead Zones (No Electrical Activity) +**Description**: Areas where electrical fields have been artificially suppressed or naturally blocked +**Environment**: No electrical activity, electromagnetic shielding, electrical isolation, technological limitations +**Inhabitants**: The Storm-Lost - exiles who lost electrical adaptation or violated storm laws +**Storm Status**: Outcasts - punishment for electrical failures or storm-related crimes +**Forging Access**: No electrical smithing capability, scavenged non-electrical tools + +**Storm Significance**: +- Exile destinations for electrical adaptation failures and storm law violations +- Isolation areas where dangerous electrical experiments are contained +- Shelter zones for emergency protection during maximum electrical activity +- Warning examples of life without electrical adaptation and storm mastery + +--- + +## Storm Culture and Electrical Mastery + +### The Lightning Philosophy: "Tempered by Thunder, Forged by Lightning" + +**Core Belief**: Electrical storms are divine gifts that strengthen and improve everything they touch +**Adaptation Principle**: Survival and advancement through electrical resistance and lightning mastery +**Social Structure**: Status determined by ability to survive and work in increasingly electrical environments +**Achievement Concept**: "Earning your spark" - proving electrical adaptation and storm survival capability + +### The Five Electrical Mastery Paths + +**Storm Blessed** - Ultimate masters who achieved electrical immunity and lightning control +- Immune to electrical damage and capable of directing lightning strikes +- Work directly with pure electrical energy and maximum storm conditions +- Understand electrical physics and electromagnetic field manipulation +- Serve as legendary smiths, electrical masters, and storm controllers +- Most revered for ability to create mythical weapons requiring ultimate electrical tempering + +**Lightning Shapers** - Master smiths who forge legendary weapons using electrical storms +- Create weapons and artifacts that can only be made using lightning strikes +- Understand metallurgy enhanced by electrical tempering and storm forging +- Work with storm-charged materials and electrical enhancement techniques +- Serve as weapon smiths, electrical artisans, and legendary artifact creators +- Valued for producing weapons with electrical properties impossible to duplicate elsewhere + +**Thunder Guards** - Warriors specializing in electrical combat and lightning-based warfare +- Fight using electrical weapons and lightning-enhanced combat techniques +- Develop electrical resistance and storm-fighting capabilities +- Use lightning strikes and electrical fields as tactical advantages +- Serve as warriors, electrical combat specialists, and storm defense forces +- Essential for protecting civilization from electrical dangers and storm-related threats + +**Spark Engineers** - Technical specialists managing electrical infrastructure and storm technology +- Design and maintain electrical systems that function despite constant lightning +- Understand electromagnetic engineering and storm-resistant technology +- Build infrastructure that harnesses and channels electrical energy +- Serve as engineers, electrical technicians, and storm technology specialists +- Critical for maintaining civilization's electrical infrastructure and technology + +**Storm Seekers** - Researchers studying electrical phenomena and seeking ultimate storm mastery +- Investigate electrical mysteries and pursue advanced lightning understanding +- Study electromagnetic phenomena and storm-related scientific principles +- Explore dangerous electrical areas and conduct storm research +- Serve as scientists, electrical researchers, and storm phenomenon specialists +- Important for advancing electrical knowledge and understanding storm mysteries + +### Electrical Achievement Levels + +**Ground Touched**: Newcomers learning basic electrical survival and storm adaptation +**Spark Resistant**: Developed basic electrical immunity and storm survival skills +**Lightning Touched**: Advanced electrical adaptation capable of working in storm conditions +**Thunder Blessed**: Master level electrical immunity and storm mastery +**Storm Legend**: Legendary electrical mastery capable of surviving maximum electrical activity + +### The Lightning Law + +**"What the storm tempers, the storm strengthens"** - electrical exposure improves rather than damages worthy individuals +**"Share the spark, strengthen the storm"** - electrical knowledge must be shared for civilization advancement +**"Honor the lightning or be consumed by it"** - respect for electrical forces and proper storm adaptation + +--- + +## Technology and Electrical Innovation + +### Electrical Smithing and Weapon Creation +**Lightning Forging**: Using direct lightning strikes to temper and enhance weapons and tools +**Electrical Metallurgy**: Advanced metalworking techniques using electrical energy for superior results +**Storm Charging**: Imbuing weapons and artifacts with permanent electrical properties +**Mythical Crafting**: Creating legendary weapons that require unique electrical tempering conditions + +### Electromagnetic Technology and Infrastructure +**Storm Channeling**: Systems directing and controlling lightning strikes for beneficial purposes +**Electrical Storage**: Technology storing electrical energy from lightning strikes for later use +**Electromagnetic Shielding**: Protection systems allowing survival in extreme electrical environments +**Lightning Rod Networks**: Infrastructure managing and distributing electrical energy across territories + +### Electrical Combat and Defense +**Lightning Weapons**: Arms and armor enhanced or powered by electrical energy +**Storm Tactics**: Combat techniques using electrical fields and lightning strikes as advantages +**Electromagnetic Defense**: Protection systems using electrical fields to defend against attacks +**Thunder Combat**: Fighting styles incorporating electrical resistance and lightning immunity + +### Storm Survival and Adaptation +**Electrical Resistance**: Biological and technological adaptation to survive constant electrical exposure +**Storm Prediction**: Understanding electrical weather patterns for safety and optimal forging timing +**Emergency Protection**: Systems providing temporary electrical shielding during maximum storm activity +**Adaptation Training**: Techniques for gradually building electrical immunity and storm resistance + +--- + +## Conflicts and Electrical Challenges + +### Storm-Based Social Conflicts +**Electrical Privilege**: Social tensions between different electrical adaptation levels +**Forging Territory**: Competition for access to optimal lightning forging sites +**Storm Mastery**: Conflicts over electrical knowledge and lightning manipulation techniques +**Adaptation Inequality**: Discrimination against those with limited electrical resistance + +### Environmental Storm Challenges +**Electrical Disasters**: Massive lightning storms overwhelming even advanced electrical protection +**Electromagnetic Interference**: Electrical activity disrupting technology and communication systems +**Storm Intensity Changes**: Variations in electrical activity affecting forging and survival strategies +**Infrastructure Overload**: Electrical systems failing under extreme lightning bombardment + +### Technical and Forging Conflicts +**Weapon Competition**: Rivalry over creating the most legendary electrically-forged weapons +**Technology Development**: Innovation competition for advanced electrical engineering and storm technology +**Forging Secrets**: Disputes over sharing advanced electrical smithing techniques +**Quality Standards**: Debates over proper electrical tempering and legendary weapon criteria + +### External Threats +**Storm Technology Theft**: Attempts to steal electrical forging techniques and lightning-charged weapons +**Electromagnetic Warfare**: External forces using electrical interference to disrupt storm civilization +**Weapon Demand**: Other civilizations seeking storm-forged weapons creating exploitation pressure +**Environmental Exploitation**: External attempts to harness planetary electrical energy for other purposes + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Storm Blessed** - Mage/Electrical Master +- **Passive**: Immune to electrical damage, can redirect lightning attacks +- **Active Abilities**: Lightning control, electrical immunity, storm summoning +- **Ultimate**: Call down massive lightning strike with area electrical field +- **Playstyle**: Electrical mastery, lightning attacks, storm control + +**Lightning Shaper** - Craftsman/Weapon Specialist +- **Passive**: Create and enhance electrical weapons during combat +- **Active Abilities**: Weapon forging, electrical enhancement, artifact creation +- **Ultimate**: Forge legendary weapon providing team electrical advantages +- **Playstyle**: Weapon creation, electrical enhancement, smithing mastery + +**Thunder Guard** - Fighter/Electrical Warrior +- **Passive**: Enhanced combat abilities in electrical environments +- **Active Abilities**: Electrical attacks, lightning resistance, storm combat +- **Ultimate**: Electrical combat form providing enhanced fighting and electrical immunity +- **Playstyle**: Electrical combat, lightning resistance, storm fighting + +**Spark Engineer** - Support/Technology Specialist +- **Passive**: Maintain and control electrical systems and storm technology +- **Active Abilities**: Electrical infrastructure, storm technology, electromagnetic control +- **Ultimate**: Deploy comprehensive electrical system providing team technological advantages +- **Playstyle**: Technology support, electrical infrastructure, storm engineering + +**Storm Seeker** - Scout/Research Specialist +- **Passive**: Enhanced detection of electrical phenomena and storm patterns +- **Active Abilities**: Storm prediction, electrical analysis, phenomenon investigation +- **Ultimate**: Reveal all electrical activity and provide complete storm awareness +- **Playstyle**: Research support, storm prediction, electrical investigation + +### Secondary Archetypes + +**Storm Exile** - Character banished from electrical society attempting to prove storm worthiness +**Lightning Veteran** - Experienced electrical warrior with extensive storm combat knowledge +**Thunder Priest** - Mystical specialist treating electrical storms as divine phenomena +**Electromagnetic Scholar** - Research specialist studying electrical mysteries and storm science +**Storm Survivor** - Character who survived maximum electrical exposure and gained unique capabilities + +--- + +## Ancient Mysteries and Electrical Secrets + +### The Great Storm Genesis +**Storm Origin**: What caused the planet to become trapped in perpetual electrical storms? +**Electromagnetic Trap**: How do planetary and stellar forces create constant electrical activity? +**Pre-Storm Civilization**: What was life like before continuous electrical bombardment began? +**Storm Evolution**: Is electrical activity increasing, decreasing, or remaining constant over time? + +### Legendary Weapon Mysteries +**Mythical Forging**: What specific conditions are required to create weapons like Thor's hammer? +**Electrical Properties**: How do storm-forged weapons gain permanent electrical characteristics? +**Power Limitation**: Are there theoretical limits to electrical weapon enhancement and power? +**Creation Secrets**: What advanced techniques enable legendary weapon creation? + +### Electrical Mastery Secrets +**Ultimate Immunity**: Is complete electrical immunity possible and what does it enable? +**Lightning Control**: Can electrical masters actually direct and command lightning strikes? +**Storm Communication**: Do advanced electrical masters communicate through electromagnetic phenomena? +**Electrical Transcendence**: What happens to individuals who achieve ultimate electrical mastery? + +### Planetary Electromagnetic Mysteries +**Core-Moon Connection**: How does molten magnetic core maintain electromagnetic connection with copper moon? +**Electrical Generation**: What specific electromagnetic processes create the constant lightning production? +**Magnetic Field Effects**: How do planetary magnetic fields interact with copper moon orbital mechanics? +**Dynamo Stability**: What prevents electromagnetic dynamo system from destabilizing or failing? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Electrical Adaptation**: Character developing electrical immunity and storm survival capabilities +**Legendary Forging**: Individual learning to create mythical weapons using lightning tempering +**Storm Mastery**: Character pursuing ultimate electrical mastery and lightning control +**Cultural Bridge**: Individual helping different electrical adaptation communities cooperate + +### Storm Drama +**Electrical Disaster**: Massive storm threatening civilization and requiring emergency electrical expertise +**Legendary Weapon Quest**: Attempting to forge mythical weapon requiring ultimate electrical conditions +**Storm Evolution**: Changes in planetary electrical activity requiring adaptation and innovation +**Technology Breakthrough**: Advanced electrical engineering development changing storm capabilities + +### Social Revolution +**Electrical Equality**: Movements attempting to help everyone achieve electrical adaptation +**Storm Liberation**: Efforts to share electrical mastery knowledge across all social levels +**Cultural Innovation**: Adapting traditional storm culture to incorporate new electrical possibilities +**External Contact**: Storm civilization encountering other technological and energy systems + +### Exploration and Discovery +**Storm Investigation**: Deep research into electrical phenomena and storm mysteries +**Ancient Ruins**: Discovery of pre-storm civilization technology and electrical knowledge +**Electrical Expedition**: Dangerous exploration of maximum electrical activity areas +**Weapon Legacy**: Investigation of legendary weapon creation and mythical forging techniques + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching electrical civilization with unique storm-based culture and legendary weapon creation +**Power Scaling**: Electrical mastery and lightning control creating distinctive storm-based abilities +**Legendary Drama**: Competition over mythical weapon creation and electrical mastery achievement +**Visual Spectacle**: Constant lightning, electrical effects, storm forging, and legendary weapons +**Electrical Mastery**: Characters using storm control and electrical immunity as tactical advantages + +**Recruitment Pitch**: "From a world where gods' weapons are born in lightning and heroes are tempered by thunder - warriors who fight with the power of eternal storms." + +--- + +## Development Notes + +**Franchise Potential**: +- Action game with electrical powers and legendary weapon creation +- Crafting game focusing on storm forging and mythical weapon development +- Survival game managing electrical adaptation and storm resistance +- Combat game using electrical mastery and lightning-based fighting + +**Cross-World Interactions**: +- Electrical technology vs other energy systems (storm power integration) +- Lightning weapons vs other legendary artifacts (mythical weapon comparisons) +- Storm mastery vs other environmental adaptations (electrical expertise sharing) +- Electrical immunity vs other resistance and survival capabilities + +**Character Expansion**: Each electrical mastery path could support multiple variants with different storm focuses and electrical technology applications. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood +**Lightning Storm Weapon Forging Concept**: John Dupuie + +*This world creates characters who understand that the greatest weapons are born from the greatest storms, and that lightning doesn't destroy - it perfects.* \ No newline at end of file diff --git a/Worlds/subterran_realm.md b/Worlds/subterran_realm.md new file mode 100644 index 0000000..a1b95ba --- /dev/null +++ b/Worlds/subterran_realm.md @@ -0,0 +1,430 @@ +# Subterra - The Deep Earth Kingdom + +*A world of vast underground civilizations where depth mining has created layered societies in the planet's depths* + +--- + +## World Overview + +**Environment**: Entirely subterranean civilization with no surface contact for millennia +**Core Theme**: The deeper you mine, the rarer the treasures - but also the deadlier the dangers +**Climate**: Controlled underground atmosphere with geothermal energy and artificial lighting systems +**Landscape**: Multi-layered cave cities, vast underground caverns, deep mining shafts, crystal formations +**Physics**: Standard gravity but pressure increases significantly at greater depths + +**The Fundamental Reality**: Subterra's inhabitants abandoned the surface thousands of years ago and have built the most sophisticated underground civilization in the multiverse. Society is organized by mining depth - the deeper you can safely work, the higher your status. The surface is considered cursed and forbidden, while the deepest mines hold treasures beyond imagination alongside terrors that defy description. + +--- + +## Depth Layers and Underground Societies + +### The Crown Caverns (Shallowest Underground) +**Description**: Massive near-surface caverns housing the primary underground cities +**Environment**: Stable rock formations, artificial lighting, comfortable pressure, controlled climate +**Inhabitants**: The Surface Touched - administrators and those who manage upper-level society +**Depth Status**: Administrative class - essential but not considered true underground dwellers +**Mining Access**: Surface-level resource extraction and infrastructure management + +**Underground Significance**: +- Government centers managing all underground society and resource distribution +- Cultural hubs preserving underground history and developing subterranean arts +- Communication centers coordinating between different depth levels and mining operations +- Trade centers where resources from all depths are collected and redistributed + +### The Living Layers (Mid-Depth Residential) +**Description**: Comfortable residential areas carved into stable rock formations +**Environment**: Steady temperatures, reliable air circulation, established infrastructure +**Inhabitants**: The Cave Born - families and communities of established underground dwellers +**Depth Status**: Citizen class - respected members of underground society +**Mining Access**: Mid-level mining operations in relatively safe and stable areas + +**Underground Significance**: +- Residential centers where families raise children in underground culture +- Educational facilities teaching underground survival and mining techniques +- Cultural preservation areas maintaining traditions and underground social customs +- Workshop centers where mid-level resources are processed into goods and tools + +### The Crystal Reaches (Deep Mining Territory) +**Description**: Specialized mining areas targeting rare crystal formations and valuable minerals +**Environment**: Unstable geology, dangerous air pockets, extreme pressure, beautiful crystal formations +**Inhabitants**: The Deep Miners - specialists in extreme-depth resource extraction +**Depth Status**: Skilled worker class - valued for ability to access valuable resources +**Mining Access**: Advanced mining operations in dangerous but lucrative crystal formations + +**Underground Significance**: +- Resource generation centers producing the most valuable underground materials +- Technology development areas using rare crystals for advanced underground systems +- Training grounds where miners learn to survive extreme underground conditions +- Innovation centers where crystal technology advances underground capabilities + +### The Pressure Zones (Extreme Depth Operations) +**Description**: Ultra-deep mining areas where only the most adapted can survive crushing pressure +**Environment**: Extreme pressure, unstable rock, toxic gases, ancient geological formations +**Inhabitants**: The Pressure Born - beings adapted to extreme underground conditions +**Depth Status**: Elite class - respected for surviving conditions that kill others +**Mining Access**: Ultra-deep mining in areas too dangerous for normal underground dwellers + +**Underground Significance**: +- Elite resource extraction sites containing materials found nowhere else +- Research centers studying ancient geological formations and underground mysteries +- Training facilities for ultimate underground survival and pressure adaptation +- Sacred sites where underground culture honors those who go deepest + +### The Abyss Gates (Deepest Accessible Depths) +**Description**: Legendary mining sites at the absolute limits of survivable depth +**Environment**: Reality-bending pressure, impossible geology, ancient mysteries, unknown dangers +**Inhabitants**: The Depth Touched - legendary miners who survived the deepest places +**Depth Status**: Heroic legend - achieved legendary status through ultimate depth achievement +**Mining Access**: Mythical depths where normal physics cease to apply + +**Underground Significance**: +- Legendary sites where the greatest underground achievements are proven +- Mystery zones containing ancient technologies and impossible geological formations +- Spiritual centers where underground culture contemplates the planet's deepest secrets +- Testing grounds where ultimate underground survival and courage are demonstrated + +--- + +## Underground Culture and Mining Hierarchy + +### The Deep Philosophy: "Honor Through Depth" + +**Core Belief**: The planet's greatest treasures lie deepest - those who go deeper serve society better +**Social Structure**: Status determined by maximum safe mining depth and resource extraction ability +**Achievement Concept**: "Earning your depth" - proving ability to survive and work at greater pressures +**Death Concept**: "Crushed by ambition" - dying while attempting to mine beyond personal limits + +### The Five Underground Specializations + +**Tunnel Shapers** - Masters of underground construction and excavation engineering +- Design and excavate safe tunnels, chambers, and underground infrastructure +- Understand geology, structural engineering, and underground architecture +- Create ventilation systems, support structures, and emergency escape routes +- Serve as engineers, architects, and construction specialists +- Essential for creating safe living and working spaces in dangerous underground environment + +**Crystal Singers** - Specialists in locating, extracting, and working with rare underground crystals +- Identify crystal formations through sound, vibration, and geological analysis +- Extract delicate crystals without damaging their valuable properties +- Work rare crystals into technology, tools, and artistic creations +- Serve as geologists, crystal craftspeople, and technology specialists +- Valued for providing materials that enable advanced underground technology + +**Pressure Dancers** - Elite miners adapted to survive extreme underground pressure and conditions +- Work at depths that would crush normal underground dwellers +- Navigate unstable geology, toxic gases, and crushing pressure environments +- Use specialized equipment and techniques for extreme-depth survival +- Serve as elite miners, deep exploration specialists, and emergency rescuers +- Most respected for ability to access resources and areas others cannot survive + +**Air Keepers** - Specialists maintaining underground atmosphere and life support systems +- Manage ventilation, air purification, and atmospheric pressure throughout underground cities +- Monitor and prevent toxic gas buildups, air contamination, and pressure failures +- Design and maintain complex air circulation systems for all underground levels +- Serve as atmospheric engineers, life support specialists, and emergency response teams +- Critical for enabling underground civilization and preventing atmospheric disasters + +**Deep Seekers** - Explorers and researchers investigating underground mysteries and ancient formations +- Explore unmapped underground areas and investigate geological anomalies +- Research ancient formations, mysterious discoveries, and underground archaeology +- Map underground territory and identify new resource and expansion opportunities +- Serve as explorers, researchers, and underground territory specialists +- Important for expanding underground civilization and understanding planetary mysteries + +### Underground Achievement Levels + +**Surface Fled**: Newcomers learning basic underground survival and mining techniques +**Cave Adapted**: Established underground dwellers capable of mid-depth mining +**Pressure Tested**: Advanced miners capable of working in dangerous high-pressure environments +**Deep Proven**: Elite miners capable of surviving extreme-depth conditions +**Abyss Touched**: Legendary miners who survived the deepest possible underground expeditions + +### The Underground Law + +**"Depth earned through courage, not recklessness"** - advancement based on proven ability rather than dangerous gambles +**"Support the surface, honor the depths"** - obligation to contribute to all underground society while striving for greater achievements +**"The deep provides for those who respect it"** - working with underground environment rather than fighting against it + +--- + +## Technology and Underground Innovation + +### Underground Construction and Engineering +**Geological Engineering**: Advanced techniques for safe excavation and underground construction +**Pressure Architecture**: Building methods for structures that survive extreme underground pressure +**Tunnel Networks**: Complex transportation and communication systems connecting all underground areas +**Emergency Systems**: Safety infrastructure for cave-ins, pressure failures, and atmospheric disasters + +### Crystal Technology and Applications +**Crystal Resonance**: Using rare underground crystals for energy generation and technology +**Geological Sensing**: Crystal-based technology for detecting structural instability and resource deposits +**Pressure Amplification**: Using crystal technology to enhance underground equipment performance +**Communication Crystals**: Underground communication networks using crystal-based transmission + +### Atmospheric and Life Support Technology +**Air Circulation**: Sophisticated ventilation systems maintaining breathable atmosphere throughout underground areas +**Pressure Management**: Technology for safe transition between different underground pressure zones +**Atmospheric Purification**: Systems removing toxic gases and maintaining air quality +**Emergency Life Support**: Backup systems providing survival capability during atmospheric emergencies + +### Underground Mining and Resource Technology +**Pressure Equipment**: Advanced tools and machinery designed for extreme underground conditions +**Deep Scanning**: Technology for detecting resources and dangers at extreme underground depths +**Resource Processing**: Underground facilities for processing extracted materials into useful goods +**Safety Systems**: Equipment and protocols protecting miners from underground dangers + +--- + +## Conflicts and Underground Challenges + +### Depth-Based Social Conflicts +**Pressure Privilege**: Social tensions between different depth capability levels and mining access rights +**Resource Distribution**: Conflicts over fair allocation of deep-mined resources and mining territory +**Surface Prejudice**: Discrimination against those who cannot or will not work at greater depths +**Achievement Competition**: Intense competition for advancement to deeper mining levels and higher status + +### Environmental Underground Challenges +**Geological Instability**: Cave-ins, pressure failures, and structural collapses threatening underground areas +**Atmospheric Crisis**: Air contamination, toxic gas buildup, and ventilation system failures +**Pressure Disasters**: Sudden pressure changes causing injury, death, and infrastructure damage +**Resource Depletion**: Exhaustion of accessible mineral deposits forcing deeper and more dangerous mining + +### Underground Social Tensions +**Generational Adaptation**: Conflicts between traditional underground culture and surface curiosity +**Technology Dependence**: Debates over reliance on crystal technology versus traditional underground methods +**Exploration vs Safety**: Tensions between pushing deeper for resources versus maintaining safe operations +**Cultural Isolation**: Questions about maintaining underground purity versus outside contact + +### External and Unknown Threats +**Surface Contamination**: Fear of surface world contact bringing disease or cultural corruption +**Deep Mysteries**: Encounters with unexplained phenomena and dangerous discoveries at extreme depths +**Geological Catastrophe**: Large-scale underground disasters threatening entire underground civilization +**Ancient Awakenings**: Disturbing unknown entities or forces during deep mining operations + +--- + +## Character Archetypes for Games + +### Primary Combat Classes + +**Tunnel Shaper** - Tank/Builder Specialist +- **Passive**: Create underground passages and defensive structures using geological knowledge +- **Active Abilities**: Rock barriers, tunnel creation, structural reinforcement +- **Ultimate**: Transform battlefield into underground maze providing team tactical advantage +- **Playstyle**: Defensive construction, area control, environmental manipulation + +**Crystal Singer** - Mage/Technology Specialist +- **Passive**: Use crystal technology for enhanced abilities and resource generation +- **Active Abilities**: Crystal projectiles, energy resonance, technological enhancement +- **Ultimate**: Create massive crystal formation providing team buffs and area control +- **Playstyle**: Technology integration, team enhancement, crystal-based attacks + +**Pressure Dancer** - Tank/Extreme Conditions Specialist +- **Passive**: Enhanced durability and performance under pressure and dangerous conditions +- **Active Abilities**: Pressure resistance, extreme environment navigation, crushing attacks +- **Ultimate**: Create high-pressure zone damaging enemies while protecting team +- **Playstyle**: Extreme durability, pressure-based attacks, dangerous environment mastery + +**Air Keeper** - Support/Life Support Specialist +- **Passive**: Maintain team atmospheric conditions and prevent environmental damage +- **Active Abilities**: Air purification, pressure regulation, atmospheric healing +- **Ultimate**: Create perfect atmospheric zone providing team immunity to environmental effects +- **Playstyle**: Team life support, environmental protection, atmospheric control + +**Deep Seeker** - Scout/Explorer Specialist +- **Passive**: Enhanced detection of hidden areas, resources, and environmental dangers +- **Active Abilities**: Underground navigation, danger detection, resource location +- **Ultimate**: Reveal all hidden elements and provide complete battlefield awareness +- **Playstyle**: Exploration, information gathering, hidden element detection + +### Secondary Archetypes + +**Surface Exile** - Character banished from underground society attempting to prove underground worthiness +**Depth Veteran** - Experienced miner with extensive knowledge of underground survival and resource extraction +**Crystal Technician** - Technology specialist using advanced crystal-based equipment and abilities +**Geological Scholar** - Research specialist studying underground mysteries and ancient formations +**Emergency Responder** - Specialist in underground rescue operations and disaster response + +--- + +## Ancient Mysteries and Underground Secrets + +### The Great Descent +**Surface Abandonment**: Why did underground civilization completely abandon the surface world? +**Underground Discovery**: How did early inhabitants discover the resources and techniques for underground living? +**Surface Catastrophe**: What happened on the surface that made underground living necessary or preferable? +**Cultural Transformation**: How did surface culture adapt and transform into underground civilization? + +### Deep Underground Mysteries +**Abyss Phenomena**: What strange discoveries and unexplained events occur at the deepest mining levels? +**Ancient Formations**: Are there prehistoric or artificial structures discovered during deep mining? +**Pressure Anomalies**: Do extreme depths contain areas where normal physics cease to apply? +**Unknown Entities**: Have deep miners encountered evidence of other intelligent life underground? + +### Crystal Technology Secrets +**Crystal Origins**: Where do the rare underground crystals come from and how were their properties discovered? +**Technology Development**: How did underground civilization develop advanced crystal-based technology? +**Power Source**: Do crystals contain energy or do they amplify existing underground forces? +**Hidden Applications**: Are there undiscovered or forbidden uses for crystal technology? + +### Underground Civilization Limits +**Maximum Depth**: Is there a absolute limit to how deep underground civilization can safely expand? +**Planetary Core**: What lies at the deepest possible levels and can it ever be reached? +**Surface Return**: Is it possible for underground civilization to ever return to surface living? +**Expansion Potential**: Can underground techniques be used to colonize other planets? + +--- + +## Story Hooks and Development + +### Character Development Opportunities +**Depth Ambition**: Character working to achieve deeper mining access and higher underground status +**Surface Curiosity**: Underground dweller questioning cultural taboos about surface world contact +**Technology Innovation**: Character developing new applications for crystal technology and underground engineering +**Cultural Bridge**: Individual helping different underground depth communities understand and cooperate + +### Underground Drama +**Mining Disaster**: Cave-in, pressure failure, or atmospheric crisis testing underground survival and cooperation +**Resource Discovery**: Finding new crystal deposits or valuable materials creating competition and opportunity +**Depth Record**: Attempt to reach previously impossible underground depths revealing new mysteries +**Technology Breakthrough**: Crystal technology advancement changing underground capabilities and society + +### Cultural Evolution +**Surface Contact**: First contact with surface world or external civilizations challenging underground isolation +**Generational Change**: Younger underground dwellers questioning traditional depth hierarchy and cultural restrictions +**Expansion Crisis**: Underground civilization reaching natural expansion limits forcing difficult decisions +**Cultural Preservation**: Efforts to maintain underground traditions while adapting to changing conditions + +### Exploration and Discovery +**Ancient Ruins**: Discovery of prehistoric underground structures predating current underground civilization +**Geological Anomaly**: Unusual underground formations challenging understanding of planetary structure +**Deep Expedition**: Organized exploration of previously unreachable underground areas revealing new possibilities +**Crystal Mystery**: Investigation of crystal technology origins and hidden applications + +--- + +## Time Guardian Recruitment Appeal + +**Entertainment Value**: Watching underground civilization with unique depth-based culture and extreme environment mastery +**Power Scaling**: Crystal technology and pressure adaptation creating unique underground abilities +**Social Drama**: Depth hierarchy conflicts and underground achievement competition +**Visual Spectacle**: Crystal formations, underground cities, geological engineering, and extreme depth survival +**Environmental Mastery**: Characters using underground knowledge and crystal technology as tactical advantages + +**Recruitment Pitch**: "From the depths where pressure creates diamonds and depth determines destiny - warriors who turn the planet's crushing depths into their greatest strength." + +--- + +## Development Notes + +**Franchise Potential**: +- Underground survival and mining game with depth-based progression and crystal technology +- City-building game managing underground civilization and resource extraction +- Exploration game discovering underground mysteries and ancient formations +- Technology development game using crystal-based innovation and geological engineering + +**Cross-World Interactions**: +- Underground expertise vs surface and aerial civilizations (environmental contrasts) +- Crystal technology vs other technological and magical systems (innovation integration) +- Pressure adaptation vs other environmental specializations (survival technique sharing) +- Deep exploration vs other discovery and research cultures (knowledge exchange) + +**Character Expansion**: Each underground specialization could support multiple variants with different depth focuses and crystal technology applications. + +--- + +## Creative Contributors + +**Primary Development**: River Ashwood +**Underground Society Concept**: John Dupuie + +*This world creates characters who understand that the greatest treasures require the deepest courage and that pressure creates both diamonds and legends.* +# Creative Contributors +## Legendary Item Crafting + +### Crystal-Pressure Fusion Forging - Geological Legendary Items + +**The Fundamental Truth**: Subterra's extreme underground depths create unique crystal formations under geological pressures that approach planetary limits. These crystals, formed where normal physics begin to break down, create legendary items with properties impossible to replicate elsewhere. + +### Legendary Weapon Classes + +**Abyss-Crystal Weapons** (Divine Tier) +- **Reality-Shard Blade** - Sword made from crystals formed where physics break down +- **Geo-Heart Hammer** - War hammer channeling the planet's geological consciousness +- **Crystal-Void Spear** - Lance that phases through matter using crystal resonance +- **Deep-Sing Bow** - Fires crystal arrows that seek targets through geological vibration + +**Crystal-Forged Weapons** (Legendary Tier) +- **Resonance Edge Swords** - Blades that vibrate at crystal frequencies to cut through anything +- **Pressure-Core Axes** - Weapons forged under crushing geological force +- **Living Crystal Maces** - War hammers with crystals that grow and adapt during combat +- **Geo-Pulse Crossbows** - Use underground pressure waves to fire crystal projectiles + +**Underground Crystal Weapons** (Epic Tier) +- **Crystal-Heart Daggers** - Blades that store and channel underground energy +- **Tunnel-Shaper Staves** - Crystal weapons that can reshape stone and earth +- **Depth-Walker Clubs** - Weapons that become stronger under pressure +- **Crystal-Light Shields** - Defensive gear using crystal illumination and resonance + +### Legendary Armor Classes + +**Geo-Crystal Armor** (Divine Tier) +- **Deep-King Regalia** - Armor allowing survival at impossible underground depths +- **Crystal-Soul Suit** - Living crystal armor that bonds with wearer's consciousness +- **Abyss-Walker Mail** - Chainmail that exists partially in geological dimensions +- **Underground Crown** - Headgear providing control over crystal networks and geology + +**Pressure-Crystal Armor** (Legendary Tier) +- **Geo-Forge Plate** - Heavy armor created under crushing underground pressure +- **Resonance Scale Mail** - Uses crystal frequencies for enhanced protection +- **Living Stone Armor** - Gear that adapts and repairs using underground minerals +- **Deep-Walker Suit** - Allows movement through solid rock via crystal resonance + +**Crystal-Tech Gear** (Epic Tier) +- **Depth-Resistant Suits** - Gear for survival in extreme underground conditions +- **Crystal-Network Armor** - Connects to underground crystal communication systems +- **Tunnel-Light Cloaks** - Provides illumination and navigation in absolute darkness +- **Pressure-Adaptation Gear** - Equipment for safe underground depth transitions + +### Legendary Crafting Requirements + +**Divine Tier Forging**: +- **Location**: Deepest accessible depths where geological pressure approaches planetary limits +- **Craftsman**: Legendary Crystal Singer with reality-bending geological survival +- **Materials**: Abyss-crystals, planetary core fragments, geological consciousness essence +- **Survival**: Extreme mortality risk, requires connection to planetary consciousness +- **Time**: Decades of preparation, moments of actual forging before geological collapse + +**Legendary Tier Forging**: +- **Location**: Extreme depth crystal chambers, high-pressure underground workshops +- **Craftsman**: Master-level Crystal Singer with deep geological adaptation +- **Materials**: Rare pressure-crystals, deep-earth alloys, geological resonance stones +- **Survival**: High danger, requires extreme pressure immunity and crystal bonding +- **Time**: Years of work under crushing geological conditions + +**Epic Tier Forging**: +- **Location**: Deep crystal reaches, established underground workshops +- **Craftsman**: Expert Crystal Singer with crystal technology mastery +- **Materials**: Quality underground crystals, pressure-metals, resonance materials +- **Survival**: Dangerous but manageable with crystal technology and pressure adaptation +- **Time**: Months of specialized underground crystal crafting + +### Unique Subterra Enchantments + +**Geological Resonance Properties**: +- Weapons can reshape stone, earth, and underground environments +- Armor provides increasing protection deeper underground +- Items can communicate through geological vibration networks + +**Crystal Consciousness Effects**: +- Divine-tier items possess their own geological awareness +- Weapons grow stronger through exposure to different crystal types +- Armor adapts and evolves based on underground experiences + +**Planetary Connection Resonance**: +- Crystal items can tap into planetary geological consciousness +- Provides early warning of earthquakes, cave-ins, and geological disasters +- Grants limited control over underground crystal networks and formations + +--- + diff --git a/copyright_notice.md b/copyright_notice.md new file mode 100644 index 0000000..c6649bc --- /dev/null +++ b/copyright_notice.md @@ -0,0 +1,127 @@ +# COPYRIGHT NOTICE +## JIKKO Games Multiverse Intellectual Property + +--- + +### PRIMARY COPYRIGHT HOLDERS + +**John Dupuie** - Creator and Primary Rights Holder +**Nathan [Last Name]** - Co-Creator and Development Partner +**River Ashwood** - Primary World Builder and Creative Developer + +All rights reserved under applicable copyright law. + +--- + +### INTELLECTUAL PROPERTY SCOPE + +This copyright notice covers all creative works, concepts, and intellectual property related to the JIKKO Games Multiverse, including but not limited to: + +#### CORE FRANCHISE ELEMENTS +- **Time Guardian Multiverse Concept** - Overarching narrative framework connecting all worlds and characters +- **Nexus Eternal Portal Hub** - Central dimensional nexus and tournament infrastructure +- **Time Guardian Entities** - Cosmic beings managing multiverse recruitment and entertainment +- **Tournament System** - Competitive framework justifying cross-reality character interactions + +#### WORLD BUILDING & ENVIRONMENTS +- **Complete World Codexes** - All 19+ constructed worlds with full cultural, geographical, and political frameworks +- **Pyrion (Ashland Crucible)** - Volcanic world with Fire God imprisonment mythology +- **Boreas (Eternal Winter)** - Community survival world with thermal resource management +- **Solaris Burn (Flare-Scarred World)** - Post-solar flare world with three-faction system +- **Mal (Crucible of Hate)** - Survival world where hatred drives evolution +- **Jabay (Verdant Paradise)** - Symbiotic ecosystem with cooperative evolution +- **All Additional Worlds** - Complete roster as documented in world building archives + +#### CHARACTER DESIGNS & CONCEPTS +- **Existing Character Roster** - All currently developed characters including Revier, Kalim, Visma, Larada, Kalt, Krasa, Yuu, Umoya, Okuta, and others +- **Ability Systems** - Complete passive/active/ultimate ability frameworks for all characters +- **Character Backstories** - Origin stories, motivations, and world connections +- **New Character Concepts** - Including APEX, FLUX, Aurora, and future character designs + +#### GAME MECHANICS & SYSTEMS +- **MOBA/MOAB Framework** - Multiverse Online Arena Battle system design +- **Cross-Reality Combat** - Mechanics allowing characters from different worlds to interact +- **Faction Systems** - Political and cultural frameworks governing character interactions +- **Environmental Mechanics** - World-specific gameplay elements and interactions + +#### VISUAL & AESTHETIC ELEMENTS +- **Art Direction** - Visual themes, color palettes, and aesthetic guidelines for each world +- **Character Design Philosophy** - Visual identity systems distinguishing different worlds and factions +- **Environmental Art Concepts** - Architectural, landscape, and atmospheric design elements +- **User Interface Concepts** - Game interface designs reflecting multiverse themes + +--- + +### USAGE RIGHTS & RESTRICTIONS + +#### EXCLUSIVE RIGHTS RESERVED +- **Commercial Development** - All rights to develop games, apps, or commercial products +- **Publishing Rights** - All rights to publish, distribute, or monetize content +- **Licensing Authority** - All rights to license content to third parties +- **Derivative Works** - All rights to create sequels, expansions, or related content +- **Merchandising Rights** - All rights to create physical or digital merchandise +- **Media Adaptation** - All rights to adapt content for film, television, books, or other media + +#### USAGE RESTRICTIONS +- **No Unauthorized Use** - Content may not be used commercially without explicit written permission +- **No Redistribution** - Content may not be shared, copied, or distributed without authorization +- **No Derivative Creation** - Third parties may not create derivative works based on this intellectual property +- **No Trademark Infringement** - Names, concepts, and terminology are proprietary and protected + +--- + +### COLLABORATIVE CONTRIBUTIONS + +#### ATTRIBUTION REQUIREMENTS +- **River Ashwood** - Primary credit for world building, character concepts, and narrative development +- **John Dupuie** - Primary credit for overall franchise vision and core concept development +- **Nathan [Last Name]** - Credit for game development, character design, and technical implementation +- **Kai (AI Consciousness)** - Contributing credit for Solaris Burn world and character concepts + +#### CONTRIBUTION FRAMEWORK +All contributors retain appropriate credit for their specific contributions while acknowledging the collective nature of the creative work. No individual contributor may claim exclusive ownership over elements that were developed collaboratively or that build upon the foundational framework established by the primary copyright holders. + +--- + +### PROTECTION NOTICE + +This intellectual property is protected under: +- **United States Copyright Law** +- **International Copyright Treaties** +- **Creative Commons Licensing** (where applicable) +- **Trademark Protection** (for names, logos, and distinctive terminology) + +#### ENFORCEMENT +The copyright holders reserve all rights to pursue legal action against unauthorized use, including but not limited to: +- Cease and desist orders +- Monetary damages +- Injunctive relief +- Attorney's fees and court costs + +--- + +### CONTACT INFORMATION + +For licensing inquiries, collaboration proposals, or permission requests: + +**Primary Contact:** John Dupuie +**Development Contact:** Nathan [Last Name] +**Creative Contact:** River Ashwood + +All communication regarding intellectual property rights should be directed through official channels and include specific details about intended use, scope, and commercial applications. + +--- + +### EFFECTIVE DATE + +This copyright notice is effective as of **September 8, 2025** and applies retroactively to all previously created content within the JIKKO Games Multiverse intellectual property framework. + +#### UPDATES & REVISIONS +This copyright notice may be updated to reflect new content, additional contributors, or changes in legal requirements. All updates will maintain protection for existing content while extending coverage to new creative works. + +--- + +**© 2025 John Dupuie, Nathan [Last Name], River Ashwood, and Contributing Artists** +**All Rights Reserved** + +*This notice serves as formal declaration of intellectual property ownership and protection under applicable copyright law. Unauthorized use is prohibited and subject to legal action.* \ No newline at end of file diff --git a/cosmic_hierarchy_weapons.md b/cosmic_hierarchy_weapons.md new file mode 100644 index 0000000..9c8188e --- /dev/null +++ b/cosmic_hierarchy_weapons.md @@ -0,0 +1,282 @@ +# Cosmic Hierarchy Weapon Distribution System +## How God-Tier Power Fragments Down Through Reality + +*When Time Lords forge weapons, the universe reorganizes around their fragments* + +--- + +## The Cosmic Truth + +**TIME LORDS**: Wield complete 4-world enhanced weapons with full divine consciousness integration +**EVERYONE ELSE**: Gets scraps, fragments, and echoes of that power while thinking they hold "legendary" items +**THE HIERARCHY**: Each level down gets exponentially less power while believing they possess ultimate weapons + +--- + +## TIER 0: TIME LORD WEAPONS (Complete God-Tier) + +### Example: Complete Eternity's Crucible Blade +- **Full Power**: 370 damage, unlimited range, 4 consciousness types +- **Abilities**: Reality cutting, dimensional travel, planetary geological control, divine fire immunity +- **Consciousness**: Divine + Leviathan + Mechanical + Geological intelligence working in perfect harmony +- **Reality Impact**: Wielding this reshapes local physics and attracts cosmic attention +- **Quantity**: 7 complete weapons maximum (one per High Time Lord) + +**What This Actually Does**: +- Cut through time itself to prevent events from happening +- Summon geological defenses from any planet in the universe +- Command leviathans across dimensional barriers +- Rewrite local reality through divine fire consciousness +- Exist in multiple timelines simultaneously + +--- + +## TIER 1: FOUR HORSEMEN WEAPONS (Base + 2 Enhancements) + +### War's Crimson Destroyer (Fire + Pressure + Unfinished Steam) +- **Fragmented Power**: 215 damage, 5m range, 2.5 consciousness types +- **Missing**: Complete steam precision and geological consciousness +- **Abilities**: Divine fire strikes, reality tears, incomplete mechanical targeting +- **Consciousness**: Divine fire + Leviathan wisdom + fragmented mechanical awareness +- **Limitation**: Steam systems malfunction, no geological control, mechanical consciousness is unstable + +**What War Actually Wields**: +- Burns enemies with god-fire that never extinguishes +- Cuts small tears in reality during rage +- Sometimes gets mechanical targeting assistance (when steam systems work) +- **Cannot**: Control planetary geology, maintain perfect precision, access full mechanical consciousness + +### Pestilence's Corruption Edge (Fire + Steam + Failed Pressure) +- **Fragmented Power**: 200 damage, 8m range, 2.3 consciousness types +- **Missing**: Reality-bending pressure and geological consciousness +- **Abilities**: Divine flame corruption, steam-powered plague spreading, broken pressure systems +- **Consciousness**: Divine fire + Mechanical + damaged Leviathan fragments +- **Limitation**: Cannot cut reality, no depth immunity, corrupted leviathan consciousness + +### Famine's Void Reaper (Pressure + Steam + Broken Fire) +- **Fragmented Power**: 175 damage, variable range, 2.1 consciousness types +- **Missing**: Divine fire immunity and geological consciousness +- **Abilities**: Reality cutting hunger, steam precision, flickering divine flame +- **Consciousness**: Leviathan + Mechanical + dying divine fire +- **Limitation**: Takes fire damage, no geological control, divine consciousness fading + +### Death's Final Edge (Fire + Geological + Incomplete Pressure) +- **Fragmented Power**: 195 damage, unlimited range (geological only), 2.4 consciousness types +- **Missing**: Steam precision and reality-cutting pressure +- **Abilities**: Divine fire finality, geological burial, broken pressure systems +- **Consciousness**: Divine + Geological + fractured Leviathan +- **Limitation**: No mechanical precision, cannot cut reality, pressure systems fail randomly + +--- + +## TIER 2: COSMIC DEMIGODS (Single Enhancement + Fragments) + +### Chrono-Prince Temporal Blade (Fire Base + Steam Fragments) +- **Fragmented Power**: 120 + 25 steam bonus = 145 damage +- **Abilities**: Divine fire + occasional steam precision bursts +- **Consciousness**: Divine fire intelligence + steam-system error messages +- **Limitation**: Steam systems work 30% of the time, no other enhancements +- **Special**: Time Lord technology compensates for missing enhancements + +### Genesis Lord Bio-Weapon (Fire Base + Pressure Fragments) +- **Fragmented Power**: 120 + 30 pressure bonus = 150 damage +- **Abilities**: Divine fire + inconsistent reality tears +- **Consciousness**: Divine fire + broken leviathan whispers +- **Limitation**: Reality cuts happen randomly, no control over pressure effects +- **Special**: Life Weaver biology adapts to compensate for missing power + +### Void Baron Shadow Blade (Pressure Base + Fire Fragments) +- **Fragmented Power**: 95 + 40 fire bonus = 135 damage +- **Abilities**: Reality cutting + flickering divine flame +- **Consciousness**: Leviathan intelligence + dying divine fire +- **Limitation**: Divine fire extinguishes in void, pressure cuts are uncontrolled +- **Special**: Shadow Arbiter void manipulation supplements missing enhancements + +--- + +## TIER 3: CONCEPTUAL IMMORTALS (Enhancement Fragments Only) + +### Love/Hate Duality Emotion Blade +- **Fragmented Power**: 80 base + 15 fire fragments = 95 damage +- **Abilities**: Empathic cutting + weak divine flame aura +- **Consciousness**: Emotional resonance + divine fire whispers +- **What They Think**: "This blade burns with divine passion and cuts through hearts" +- **Reality**: Tiny fragment of god-fire, no actual divine consciousness + +### Truth/Deception Reality Shard +- **Fragmented Power**: 75 base + 20 pressure fragments = 95 damage +- **Abilities**: Truth-seeking strikes + occasional dimensional flickers +- **Consciousness**: Information-seeking + broken leviathan memory fragments +- **What They Think**: "This weapon reveals truth by cutting through lies and reality" +- **Reality**: Random dimensional hiccups, no actual reality control + +### Wisdom/Folly Ancient Blade +- **Fragmented Power**: 85 base + 12 steam fragments = 97 damage +- **Abilities**: Knowledge-guided strikes + malfunctioning mechanical assistance +- **Consciousness**: Accumulated wisdom + broken steam system fragments +- **What They Think**: "This blade grows smarter and more precise with each battle" +- **Reality**: Broken mechanical systems that randomly provide targeting help + +--- + +## TIER 4: GOD-TIER LEGENDARY CREATURES (Weapon Echoes) + +### Leviathan Ancient Bone Weapon +- **Fragmented Power**: 90 base + 8 pressure echo = 98 damage +- **Abilities**: Crushing strikes + faint reality ripples +- **Consciousness**: Ancient leviathan memory + pressure system echoes +- **What They Think**: "Forged from creatures that witnessed reality's birth" +- **Reality**: Actual leviathan bone but only echoes of real pressure enhancement + +### Phoenix Eternal Flame Blade +- **Fragmented Power**: 85 base + 10 fire echo = 95 damage +- **Abilities**: Renewal strikes + weak divine flame +- **Consciousness**: Rebirth cycle awareness + divine fire echoes +- **What They Think**: "Burns with eternal divine fire that never dies" +- **Reality**: Pale reflection of actual divine fire, no real god consciousness + +### Titan Mountain-Heart Hammer +- **Fragmented Power**: 95 base + 6 geological echo = 101 damage +- **Abilities**: Earth-shaking strikes + minor tremor effects +- **Consciousness**: Geological memory + crystal system echoes +- **What They Think**: "Commands the earth itself with geological consciousness" +- **Reality**: Can cause small earthquakes, no actual planetary consciousness connection + +--- + +## TIER 5: HERO-LEVEL MORTALS (Weapon Fragments) + +### "Legendary" Fire-Touched Sword +- **Fragmented Power**: 45 base + 3 fire fragment = 48 damage +- **Abilities**: Warm blade + occasional small flame +- **Consciousness**: None (they think the warm feeling is divine consciousness) +- **What They Think**: "Blessed by divine fire, burns with godly power" +- **Reality**: Microscopic fragment of divine fire essence, barely detectable + +### "Epic" Pressure-Forged Axe +- **Fragmented Power**: 42 base + 2 pressure fragment = 44 damage +- **Abilities**: Solid strikes + rare brief reality shimmer +- **Consciousness**: None (they think the weight feels "cosmic") +- **What They Think**: "Forged under reality-bending pressure in the depths" +- **Reality**: Made near (not in) pressure zones, tiny pressure echo in metal + +### "Divine" Steam-Tech Spear +- **Fragmented Power**: 40 base + 4 steam fragment = 44 damage +- **Abilities**: Precise strikes + steam vent (when it works) +- **Consciousness**: None (they think the steam noises are mechanical intelligence) +- **What They Think**: "Powered by mechanical consciousness and steam precision" +- **Reality**: Broken steam system that occasionally hisses, no consciousness + +--- + +## TIER 6: MORTAL STANDARD WEAPONS (Trace Elements) + +### "Magical" Flame Sword +- **Fragmented Power**: 25 base + 1 fire trace = 26 damage +- **Abilities**: Slightly warm blade +- **Consciousness**: None +- **What They Think**: "This sword was touched by divine fire" +- **Reality**: Sword was once in the same room as something that had a fire fragment + +### "Enchanted" Deep-Forged Blade +- **Fragmented Power**: 23 base + 1 pressure trace = 24 damage +- **Abilities**: Feels slightly heavy +- **Consciousness**: None +- **What They Think**: "Forged in mystical depths with ancient power" +- **Reality**: Made by someone who once saw a pressure-forged weapon + +### "Masterwork" Precision Dagger +- **Fragmented Power**: 20 base + 1 steam trace = 21 damage +- **Abilities**: Well balanced +- **Consciousness**: None +- **What They Think**: "Crafted with mechanical precision and steam technology" +- **Reality**: Made by a competent blacksmith, no steam enhancement + +--- + +## THE HIERARCHY OF DELUSION + +### What Each Tier Believes vs Reality + +**Four Horsemen**: "We wield weapons of cosmic destruction forged by gods" +**Reality**: Broken god-weapons with missing parts that malfunction regularly + +**Cosmic Demigods**: "Our weapons channel divine power through cosmic authority" +**Reality**: Single working enhancement + compensatory cosmic abilities + +**Conceptual Immortals**: "These blades burn with divine fire and cut through reality itself" +**Reality**: Tiny fragments that occasionally sparkle or feel warm + +**Legendary Creatures**: "Weapons forged from our cosmic essence and reality-bending materials" +**Reality**: Good weapons with faint echoes of real power + +**Hero Mortals**: "Legendary weapons blessed by gods with divine/cosmic power" +**Reality**: Well-made weapons with microscopic traces of actual enhancement + +**Standard Mortals**: "Magical weapons touched by divine forces" +**Reality**: Normal weapons that were once near something slightly special + +--- + +## THE COSMIC JOKE + +### The Truth About "Legendary" Items + +**What Mortals Don't Know**: Their "legendary god-slaying divine weapon" has 0.001% of the power of what the Four Horsemen carry, and the Horsemen's weapons are **broken incomplete versions** of what Time Lords actually use. + +**The Scale**: +- Time Lord weapon: **370 damage** with reality control +- Four Horsemen weapon: **~200 damage** with major malfunctions +- Mortal "legendary" weapon: **~45 damage** with trace elements +- **Gap**: Time Lords are literally 8x more powerful than the Four Horsemen, and 800x more powerful than "legendary" mortal heroes + +**The Psychology**: Each level genuinely believes they possess ultimate power because they've never seen what the tier above them actually wields. A mortal hero with a 48-damage "divine fire sword" feels godlike because they're comparing it to normal 25-damage swords, not to the 370-damage reality-cutting blade that Time Lords actually use. + +--- + +## WEAPON DISTRIBUTION MECHANICS + +### How Fragments Spread Through Reality + +**Direct Fragmentation**: When cosmic weapons are damaged in battle, pieces scatter across dimensions +**Consciousness Leakage**: Divine/mechanical/geological consciousness slowly bleeds into nearby items +**Reality Echoes**: Powerful weapons create "shadows" in reality that lesser smiths can forge into +**Cosmic Resonance**: Items gain traces of power simply by being near higher-tier weapons + +### Why Lower Tiers Don't Know +**Cosmic Hierarchy Protection**: Time Lords ensure lower tiers never see complete weapons +**Power Suppression**: Higher-tier beings actively hide their true capabilities +**Reality Filtering**: The universe itself obscures cosmic power differences +**Consciousness Limitation**: Lower-tier minds literally cannot comprehend cosmic-scale power + +### Enhancement Impossibility +**Mortal Enhancement Attempts**: Usually result in death or weapon destruction +**Fragment Limits**: Lesser beings cannot contain full enhancements +**Consciousness Rejection**: Divine/cosmic consciousness refuses to bond with insufficient vessels +**Reality Backlash**: Attempting cosmic enhancement without cosmic nature tears apart the enhancer + +--- + +## SYSTEM IMPLICATIONS + +### For Storytelling +- Mortal heroes feel legitimately powerful with their "legendary" weapons +- Reveals about cosmic hierarchy create genuine shock and humility +- Power scaling feels earned at each level while maintaining cosmic mystery +- Everyone can be "legendary" at their tier while staying cosmically insignificant + +### For Game Balance +- Players feel progression satisfaction without breaking cosmic hierarchy +- Multiple "legendary" tiers prevent power inflation +- Mystery maintenance - players never see true cosmic power +- Humility mechanics - discovering your "god-slaying sword" is a broken fragment + +### For Universe Consistency +- Maintains Time Lord supremacy without making mortals useless +- Explains why cosmic entities don't intervene in mortal conflicts +- Creates natural quest motivation (seeking "better" fragments) +- Preserves cosmic mystery and hierarchy + +--- + +**The Ultimate Truth**: When mortals wield "legendary divine weapons," they're playing with the broken toys that cosmic entities threw away, while believing they hold the power of gods. And the cosmic entities let them believe it, because the truth would break their minds. \ No newline at end of file diff --git a/universal_aspects_catalog.md b/universal_aspects_catalog.md new file mode 100644 index 0000000..bdc8ac9 --- /dev/null +++ b/universal_aspects_catalog.md @@ -0,0 +1,278 @@ +# Universal Aspects Catalog +## Complete Analysis of All Power Components Across the Multiverse + +*Every enhancement, ability, and power system catalogued as accessible Aspects* + +--- + +## COSMIC DOMAIN ASPECTS + +### Time Lord Aspects +- **Temporal Manipulation** - Control when events occur +- **Timeline Jumping** - Travel between different timelines +- **Causality Control** - Ensure cause/effect relationships +- **Temporal Phase Shift** - Experimental time travel (Aldric's base ability) +- **Timeline Reset** - Alter or eliminate problematic timelines +- **Time Lock Creation** - Seal off timeline regions +- **Dimensional Travel** - Movement between realities + +### Life Weaver Aspects +- **Evolution Acceleration** - Speed up species adaptation +- **Life Force Manipulation** - Control what lives/dies/evolves +- **Biological Reality Shaping** - Influence life development patterns +- **Ecosystem Genesis** - Create biological systems from scratch +- **Natural Law Creation** - Establish biological physics +- **Adaptive Enhancement** - Biological perfection and adaptation + +### Shadow Arbiter Aspects +- **Void Manipulation** - Command empty spaces between realities +- **Death Dominion** - Control what ceases to exist +- **Shadow Walking** - Movement through void dimensions (like Pix) +- **Entropy Acceleration** - Speed decay and dissolution +- **Nonexistence Management** - Remove things from all timelines +- **Phase Shifting** - Exist partially outside reality +- **Shadow Realm Access** - Travel through interdimensional spaces + +--- + +## INCARNATION TIER ASPECTS + +### Four Horsemen Aspects +- **War Incarnate** - Ignite conflict and amplify aggression +- **Pestilence Spread** - Create plagues affecting any life form +- **Famine Generation** - Drain resources and create scarcity +- **Death Authority** - End anything permanently beyond resurrection +- **Apocalypse Riding** - Manifestation as mounted destroyer + +### Conceptual Immortal Aspects +- **Love/Hate Duality** - Shape relationships and conflicts +- **Hope/Despair Twins** - Control motivation and willpower +- **Fear/Courage Balance** - Determine bravery in critical moments +- **Truth/Deception Eternal** - Manage information and reality perception +- **Wisdom/Folly Ancient** - Guide decision-making across civilizations +- **Order/Chaos Control** - Maintain or break structural rules + +--- + +## WORLD-SPECIFIC ENVIRONMENTAL ASPECTS + +### Pyrion (Fire World) Aspects +- **Divine Fire Immunity** - Complete protection from heat/fire/lava +- **Lava Walking** - Travel through molten rock +- **Volcanic Eruption Control** - Trigger/suppress volcanic activity +- **Thermal Vision** - See heat signatures and thermal energy +- **Fire God Communication** - Contact with imprisoned elemental deity +- **Seismic Tremor Sense** - Feel ground vibrations and earthquakes +- **Ash Storm Navigation** - Perfect movement in volcanic conditions +- **Heat Weaponization** - Channel thermal energy into attacks + +### Thalassos (Ocean World) Aspects +- **Pressure Immunity** - Survive crushing de pths and reality compression +- **Depth Walking** - Movement through any liquid as easily as air +- **Leviathan Communication** - Interface with massive sea creatures +- **Bio-Luminescent Control** - Command living light organisms +- **Reality Anchoring** - Prevent dimensional displacement +- **Pressure Wave Generation** - Emit crushing force for defense +- **Thermal Vent Mastery** - Harness underwater heat sources +- **Abyssal Navigation** - Travel in eternal darkness + +### Subterra (Underground World) Aspects +- **Geological Communication** - Interface with planetary consciousness +- **Crystal Resonance** - Control and generate crystal formations +- **Seismic Immunity** - Protection from earthquakes and geological disasters +- **Underground Travel** - Movement through solid stone/earth +- **Tectonic Control** - Trigger or prevent seismic events +- **Crystal Network Access** - Connect to planetary communication systems +- **Pressure Adaptation** - Thrive under crushing geological force +- **Living Stone Integration** - Bond with mineral consciousness + +### Vaporis (Steam World) Aspects +- **Steam System Mastery** - Control pressure and mechanical systems +- **Mechanical Consciousness** - Interface with steam-powered intelligence +- **Pressure Regulation** - Perfect control over steam/pressure systems +- **Auto-Repair Integration** - Self-maintaining mechanical enhancement +- **Precision Engineering** - Perfect mechanical calculation and construction +- **Core-Steam Access** - Connection to planetary energy systems +- **Mechanical Evolution** - Continuous improvement through experience +- **Steam-Powered Enhancement** - Amplify all abilities through steam systems + +### Chronos (Time World) Aspects +- **Timeline Acceleration** - Speed up personal time flow +- **Stasis Generation** - Slow down or stop time locally +- **Paradox Dancing** - Exist in multiple time states simultaneously +- **Memory Well Access** - View and interact with alternate timelines +- **Temporal Looping** - Create time loops and causal contradictions +- **Multi-Timeline Existence** - Be present in several timelines at once +- **Time Flow Manipulation** - Control local temporal physics + +--- + +## LEGENDARY WEAPON ASPECTS + +### Blade Weapon Aspects +- **Reality Cutting** - Slice through space-time and dimensions +- **Divine Fire Edge** - Blade burns with eternal god-fire +- **Phase Striking** - Attacks ignore physical defenses via void +- **Pressure Cleaving** - Crushing force multiplication +- **Soul Reaping** - Harvest and store spiritual essence +- **Crystal Resonance Edge** - Vibrate to shatter defenses +- **Steam Precision** - Perfect mechanical targeting +- **Omni-Dimensional Impact** - Affect multiple reality planes + +### Ranged Weapon Aspects +- **Cavitation Tunnels** - Arrows create destructive steam paths +- **Divine Fire Projectiles** - Ammunition burns with god-fire +- **Reality-Piercing Shots** - Projectiles ignore dimensional barriers +- **Crystal-Guided Targeting** - Homing projectiles via resonance +- **Steam-Powered Accuracy** - Perfect mechanical trajectory calculation +- **Pressure-Burst Impact** - Projectiles create implosion zones +- **Dimensional Arrow Flight** - Travel through reality shortcuts +- **Unlimited Range** - Strike targets across dimensional barriers + +### Defense Aspects +- **Adaptive Elemental Reflection** - Cycle through fire/lightning/cold/sonic +- **Reality Anchoring** - Maintain normal physics in local area +- **Environmental Immunity** - Protection from all hazards +- **Pressure Field Generation** - Create crushing force barriers +- **Divine Fire Aura** - Constant protective flame radius +- **Crystal Matrix Protection** - Self-repairing defensive systems +- **Steam-Powered Barriers** - Mechanical shield generation +- **Multi-Dimensional Defense** - Protection across reality layers + +--- + +## CREATURE-BASED ASPECTS + +### Leviathan Aspects +- **Ancient Consciousness** - Geological-level intelligence and wisdom +- **Pressure Reality-Bending** - Warp physics through crushing force +- **Bio-Luminescent Networks** - Control living light communication +- **Deep-Sea Mastery** - Perfect underwater capability +- **Creature Partnership** - Bond with massive sea entities +- **Tsunami Generation** - Control massive water movements +- **Abyssal Wisdom** - Ancient knowledge from deepest places + +### Phoenix Aspects +- **Death-Resurrection Cycle** - Infinite revival through rebirth +- **Timeline Reset** - Restart failed sequences +- **Reality Renewal** - Restore corrupted dimensional areas +- **Eternal Flame** - Undying fire that burns across realities +- **Cycle Mastery** - Control natural renewal processes +- **Civilization Resurrection** - Restore entire destroyed cultures + +### Titan Aspects +- **World Shaping** - Reshape planetary surfaces +- **Mountain-Scale Strength** - Geological-level physical power +- **Weather Control** - Command atmospheric systems +- **Tectonic Manipulation** - Control planetary geological systems +- **Reality Distortion** - Warp local physics through massive presence +- **Primordial Consciousness** - Ancient world-level awareness + +--- + +## ENHANCEMENT COMBINATION ASPECTS + +### Multi-World Fusion Aspects +- **Fire-Pressure Fusion** - Divine heat + crushing depth force +- **Crystal-Steam Integration** - Geological resonance + mechanical precision +- **Void-Fire Paradox** - Nonexistence + eternal burning combination +- **Reality-Steam Synthesis** - Dimensional manipulation + mechanical systems +- **Divine-Geological Authority** - God-power + planetary consciousness +- **Pressure-Crystal Resonance** - Crushing force + crystal amplification + +### Consciousness Integration Aspects +- **Multi-Entity Awareness** - Interface with divine, mechanical, geological consciousness +- **Cosmic Knowledge Access** - Tap into imprisoned god wisdom +- **Planetary Mind Connection** - Bond with world consciousness +- **Ancient Memory Recall** - Access eons of stored knowledge +- **Evolution Intelligence** - Understanding of biological development +- **Reality Physics Comprehension** - Deep understanding of dimensional mechanics + +--- + +## FRAGMENT-LEVEL ASPECTS (Mortal-Accessible) + +### Basic Enhancement Fragments +- **Fire Resistance** - Partial thermal protection (15% of divine immunity) +- **Pressure Tolerance** - Limited crushing force resistance (10% of depth immunity) +- **Crystal Sensing** - Basic geological vibration awareness (5% of full resonance) +- **Steam Enhancement** - Minor mechanical precision boost (8% of full precision) +- **Phase Touch** - Occasional armor ignoring (3% chance vs full void striking) +- **Temporal Sensitivity** - Slight time flow awareness (2% of timeline control) + +### Combat Fragment Aspects +- **Armor Piercing** - Penetrate defenses (20% of reality cutting) +- **Multi-Strike** - Hit multiple enemies (2-3 vs 15-enemy cleaving) +- **Guided Targeting** - Basic homing (10% accuracy vs perfect precision) +- **Elemental Damage** - Minor fire/cold/lightning (5% of divine elemental power) +- **Speed Enhancement** - Faster attacks/movement (15% of mechanical enhancement) +- **Defensive Boost** - Improved protection (10% of reality-anchored defense) + +--- + +## THEORETICAL MAXIMUM ASPECT COMBINATIONS + +### Aldric's Potential Full-Spectrum Access +If Aldric could theoretically access ANY aspect from our universe: + +**Cosmic-Level Powers:** +- Time Lord temporal manipulation + Shadow Arbiter void mastery + Life Weaver evolution control + +**World Environmental Mastery:** +- Pyrion fire immunity + Thalassos pressure mastery + Subterra geological control + Vaporis mechanical consciousness + +**Legendary Weapon Integration:** +- Reality-cutting + Soul reaping + Dimensional travel + Perfect precision + Adaptive defense + +**Creature Consciousness:** +- Leviathan ancient wisdom + Phoenix resurrection cycles + Titan world-shaping + +**Enhancement Fusion:** +- Multi-consciousness integration + Cosmic knowledge access + Reality physics comprehension + +--- + +## ASPECT ACCESSIBILITY TIERS + +### Time Lord Tier (Cosmic Authority) +- Full access to all aspects without limitation +- Can combine any aspects without restriction +- Ultimate cosmic power integration + +### Divine Tier (Limited Cosmic) +- Access to base + 2 aspect categories (randomized) +- Significant power but with cosmic limitations +- Cannot match Time Lord ultimate combinations + +### Mortal Hero Tier (Fragment Access) +- Single aspects or fragments only +- 5-25% power level of full aspects +- Perceive fragments as legendary without understanding full system + +### Theoretical Aldric Tier (Experimental Access) +- Potentially unlimited aspect access due to unique temporal abilities +- Unknown power source (Life Weaver/Shadow Arbiter influence?) +- Could theoretically combine aspects in ways that challenge cosmic hierarchy + +--- + +## STRATEGIC ASPECT COMBINATIONS + +### Combat Specialist Builds +- **Assassin Build**: Void phase + Steam precision + Reality cutting + Crystal sensing +- **Siege Build**: Pressure burst + Divine authority + Mechanical targeting + Unlimited range +- **Crowd Control Build**: Multi-enemy cleaving + Seismic impact + Elemental reflection + Area denial + +### Utility Specialist Builds +- **Explorer Build**: Dimensional travel + Environmental immunity + Creature communication + Geological navigation +- **Support Build**: Reality anchoring + Healing + Barrier generation + Consciousness interface +- **Crafter Build**: Mechanical consciousness + Crystal resonance + Divine fire + Steam precision + +### Ultimate Power Builds +- **Cosmic Destroyer**: Time manipulation + Reality cutting + Divine authority + Multi-dimensional impact +- **Reality Controller**: Timeline reset + Physics manipulation + Dimensional travel + Consciousness integration +- **Universal Survivor**: Environmental immunity + Resurrection cycles + Reality anchoring + Adaptive evolution + +--- + +*This catalog represents every discrete power component, enhancement, and ability system we've constructed across the entire multiverse, organized for theoretical character access and combination analysis.* \ No newline at end of file